Prerequisites

Required Tools

  • Node.js 18+ - JavaScript runtime
  • pnpm (recommended) or npm/yarn - Package manager
  • Git - Version control
  • Wallet with Base ETH - For deployments and transactions

Quick Start Options

Install the SDK

pnpm add @b3dotfun/sdk

Project Setup

# Create a new project
mkdir my-bondkit-app
cd my-bondkit-app
pnpm init

# Install dependencies
pnpm add @b3dotfun/sdk typescript
pnpm add -D @types/node tsx

# Create TypeScript config
npx tsc --init

Environment Configuration

Basic Setup

Create a .env file in your project root:
# Required for server-side operations
WALLET_PRIVATE_KEY=0x...

# Optional: Custom RPC endpoint (defaults to public)
RPC_URL=https://base-mainnet.g.alchemy.com/v2/YOUR_KEY

# Optional: API configuration
BONDKIT_API_ENDPOINT=https://api.b3.fun

Security Best Practices

Never commit private keys to version control!
  • Add .env to your .gitignore
  • Use environment variables in production
  • Consider using a key management service
  • Use separate wallets for development and production

Client Initialization

Basic Setup

import { BondkitTokenFactory } from "@b3dotfun/sdk/bondkit";
import { base } from "viem/chains";

// For server-side usage with private key
const factory = new BondkitTokenFactory(
  base.id, 
  process.env.WALLET_PRIVATE_KEY
);

// For client-side usage with wallet provider
const clientFactory = new BondkitTokenFactory(base.id);
await clientFactory.connect(window.ethereum);

Advanced Configuration

import { 
  BondkitTokenFactory, 
  BondkitToken,
  getConfig 
} from "@b3dotfun/sdk/bondkit";
import { createWalletClient, custom } from "viem";
import { base } from "viem/chains";

// Custom wallet client setup
const walletClient = createWalletClient({
  chain: base,
  transport: custom(window.ethereum)
});

// Initialize with custom configuration
const config = getConfig(base.id);
const factory = new BondkitTokenFactory(base.id);

// Connect with custom wallet client
await factory.connect(walletClient.transport);

// Work with existing token
const token = new BondkitToken(
  "0x123...", // token address
  process.env.WALLET_PRIVATE_KEY
);

TypeScript Configuration

Recommended tsconfig.json for BondKit projects:
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "lib": ["ES2020", "DOM"],
    "moduleResolution": "node",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true,
    "allowJs": true,
    "noEmit": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

Testing Your Setup

Create a test file test-bondkit.ts:
import { BondkitTokenFactory } from "@b3dotfun/sdk/bondkit";
import { base } from "viem/chains";

async function testConnection() {
  try {
    const factory = new BondkitTokenFactory(base.id);
    const implementationAddress = await factory.getImplementationAddress();
    
    console.log("✅ BondKit SDK connected successfully!");
    console.log("Implementation address:", implementationAddress);
  } catch (error) {
    console.error("❌ Connection failed:", error);
  }
}

testConnection();
Run the test:
npx tsx test-bondkit.ts

Next Steps

Troubleshooting