@renec-foundation/sdk-easytoken
v0.0.1
Published
``` npm install @renec-foundation/sdk-easytoken // or yarn add @renec-foundation/sdk-easytoken ```
Downloads
2
Maintainers
Readme
Installation
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:
- Renec Adapter:
@renec-foundation/wallet-adapter-react
: https://www.npmjs.com/package/@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>
...
- 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
// the errors could be
}
};
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;