UNPKG

clanker-sdk

Version:

SDK for deploying tokens on Base using Clanker

214 lines (168 loc) • 5.31 kB
# Clanker SDK The official TypeScript SDK for deploying tokens using Clanker. ## Installation ```bash npm install clanker-sdk viem # or yarn add clanker-sdk viem # or pnpm add clanker-sdk viem ``` npm run create-clanker node --loader ts-node/esm examples/deploy.ts ## Quick Start There are two ways to deploy tokens using the Clanker SDK: ### 1. Using the CLI Run the following command to use our interactive CLI tool: ```bash npm run create-clanker ``` This will guide you through the token deployment process step by step. ### 2. Using the TypeScript SDK 1. Create a `.env` file with your configuration: ```env PRIVATE_KEY=<your_private_key_here> ``` 2. Create a deployment script: ```typescript // deploy-script.ts import { Clanker } from 'clanker-sdk'; import { createPublicClient, createWalletClient, http, PublicClient } from 'viem'; import { privateKeyToAccount } from 'viem/accounts'; import { base } from 'viem/chains'; import * as dotenv from 'dotenv'; // Load environment variables dotenv.config(); // Validate environment variables const PRIVATE_KEY = process.env.PRIVATE_KEY as `0x${string}`; if (!PRIVATE_KEY) { throw new Error("Missing PRIVATE_KEY environment variable."); } // Initialize wallet with private key const account = privateKeyToAccount(PRIVATE_KEY); const publicClient = createPublicClient({ chain: base, transport: http(), }) as PublicClient; const wallet = createWalletClient({ account, chain: base, transport: http(), }); // Initialize Clanker SDK const clanker = new Clanker({ wallet, publicClient, }); async function deployToken() { console.log("\nšŸš€ Deploying Token\n"); // Deploy the token with full configuration const tokenConfig = { name: "My Token", symbol: "TKN", image: "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", metadata: { description: "Token with custom configuration including vesting and rewards", socialMediaUrls: [ { platform: "x", url: "https://twitter.com/mytoken" }, { platform: "telegram", url: "https://t.me/mytoken" }, ], auditUrls: ["https://example.com/audit"], }, context: { interface: "Clanker SDK", platform: "Clanker", messageId: "Deploy Example", id: "TKN-1", }, pool: { quoteToken: "0x4200000000000000000000000000000000000006", // WETH on Base initialMarketCap: "10", // 10 ETH initial market cap }, vault: { percentage: 10, // 10% of tokens vested durationInDays: 30, // 30-day vesting period }, devBuy: { ethAmount: 0, // No initial buy }, rewardsConfig: { creatorReward: 75, // 75% creator reward creatorAdmin: account.address, creatorRewardRecipient: account.address, interfaceAdmin: "0x1eaf444ebDf6495C57aD52A04C61521bBf564ace", interfaceRewardRecipient: "0x1eaf444ebDf6495C57aD52A04C61521bBf564ace", }, }; try { const tokenAddress = await clanker.deployToken(tokenConfig); console.log("Token deployed successfully!"); console.log("Token address:", tokenAddress); console.log("View on BaseScan:", `https://basescan.org/token/${tokenAddress}`); } catch (error) { if (error instanceof Error) { console.error("Deployment failed:", error.message); } else { console.error("Deployment failed with unknown error"); } process.exit(1); } } deployToken().catch(console.error); ``` 3. Run the deployment script: ```bash bun deploy-script.ts ``` ## Configuration Options ### Basic Token Configuration - `name`: Token name - `symbol`: Token symbol - `image`: IPFS URI for token image - `metadata`: Token metadata (description, social links, etc.) - `context`: Deployment context information (interface, platform, etc.) ### Pool Configuration - `pool.quoteToken`: Quote token address (defaults to WETH on Base) - `pool.initialMarketCap`: Initial market cap in quote token units ### Dev Buy Configuration - `devBuy.ethAmount`: Amount of ETH for initial buy ### Vault Configuration - `vault.percentage`: Percentage of tokens to be vested (0-30%) - `vault.durationInDays`: Duration of the vesting period in days ### Rewards Configuration - `rewardsConfig.creatorReward`: Creator reward percentage (0-80) - `rewardsConfig.creatorAdmin`: Creator admin address - `rewardsConfig.creatorRewardRecipient`: Creator reward recipient address - `rewardsConfig.interfaceAdmin`: Interface admin address - `rewardsConfig.interfaceRewardRecipient`: Interface reward recipient address ## Examples See the [examples](./examples) directory for more deployment scenarios: - `deploy-token-simple.ts`: Basic token deployment - `deploy-token.ts`: Advanced token deployment with all options - `deploy-full-sdk.ts`: Full SDK usage example # SDK Development ## Setup The SDK uses bun for development. Install bun following their instructions here: [https://bun.sh](https://bun.sh). Once bun is installed, the project is ready for development ```bash # Install dependencies bun i # Run Examples # bun <path_to_example> bun examples/v4/availableRewards.ts # Run Tests bun test # Lint bun lint ``` Publishing the package ```bash # Log into npm bunx npm login # Dry run publishing bun publish-package --dry-run # Publish bun publish-package ``` ## License MIT