Skip to main content

SDK Easy Token

The RENEC EasyToken SDK aims to support the community effort to easily create new token on RENEC blockchain.

Installation#

Link: https://www.npmjs.com/package/@renec-foundation/sdk-easytoken

npm install @renec-foundation/sdk-easytoken
// or
yarn add @renec-foundation/sdk-easytoken

How to use#

Setup#

You need to wrap your application with WalletProvider to use the library. You can either use:

  1. Renec Adapter: @renec-foundation/wallet-adapter-react:

_app.tsx

import { Provider as WalletProvider } from "@renec-foundation/wallet-adapter-react";
import "@renec-foundation/wallet-adapter-react/src/style.css";
...
/**
* params:
* isMainnet: this can either be true("mainnet") or false("testnet")
* autoConnect: default value is true. This indicates when using WalletMultiButton component, it will try to automatically ask user to connect to wallet.
*/
...
<WalletProvider
isMainnet={true}
autoConnect={true}
>
{children}
</WalletProvider>
...
  1. Solana Adapter: @solana/wallet-adapter-react: https://www.npmjs.com/package/@solana/wallet-adapter-react (refer to this guide https://github.com/solana-labs/wallet-adapter/blob/master/APP.md)

*In case you are using Next.js with Renec Adapter*#

Add this to your next.config.js to load '@renec-foundation/wallet-adapter-react'

const nextConfig = {
transpilePackages: ["@renec-foundation/wallet-adapter-react"],
};
module.exports = nextConfig;

Usage#

import {
WalletMultiButton,
Provider as WalletProvider,
} from "@renec-foundation/wallet-adapter-react";
import { useConnection, useWallet } from "@solana/wallet-adapter-react";
import { useEasyToken } from "../hooks";
import { CreateToken } from "../types";
// For NextJS
// --------
import dynamic from "next/dynamic";
const MultiConnectButton = dynamic(
async () =>
(await import("@renec-foundation/wallet-adapter-react")).WalletMultiButton,
{ ssr: false }
);
// --------
const Demo = () => {
const wallet = useWallet();
const { connection } = useConnection();
const { initializerToken, mintToken } = useEasyToken(
wallet,
connection,
"en"
);
const walletAddress = useMemo(() => wallet.publicKey?.toBase58(), [wallet]);
const handleInitToken = async () => {
const data: CreateToken = {
chainName: "renec",
tokenName: "TEST",
tokenSymbol: "TEST",
description: "Test Token",
destinationAddress: walletAddress, // Your wallet address
logo: null, // Submit logo
previewUrl: "https://picsum.photos/200/300",
website: "https://example.com",
supply: 1_000_000,
decimals: 9,
canMint: true,
};
const initResult = await initializerToken({ data, isMainnet: true });
if (initResult.txSucceeded) {
// ... do something when succeeded
} else {
// ... handle error to display in your UI
}
};
const handleMintToken = async () => {
const mintAccountAddress = "7tebQ6zbBXdNBfjpXDpBb5j4PYEju9rgnxQmE9oG38BL"; // token address
const decimals = 9; // normally should be 9
const amount = 1000; // amount to mint
const mintResult = await mintToken({
mintAccountAddress,
decimals,
amount,
});
if (mintResult.txSucceeded) {
// ... do something when succeeded
} else {
// ... handle error in your UI
}
};
return (
<WalletProvider isMainnet={true} autoConnect={true}>
<WalletMultiButton />
<button onClick={handleInitToken}>Init Token</button>
<button onClick={handleMintToken}>Mint Token</button>
</WalletProvider>
);
};
export default Demo;

Feedback#

Please do not hesitate to share your thoughts with us if you have any feedback via email at product@renec.foundation or through other communication channels.