TypeScript SDK for creating, signing, and sending Solana transactions with solana.fury.bot.
npm install fury-sdkTo start using the SDK, you need to initialize it with your API and RPC URLs.
import { FurySDK } from 'fury-sdk'; const sdk = new FurySDK({ apiUrl: 'https://solana.fury.bot', // Replace with your actual API URL rpcUrl: 'https://your-rpc-url.com', // Replace with your preferred RPC URL rateLimitDelay: 1000, // Optional: delay between requests in milliseconds debug: true // Optional: enable debug logging });The Wallet object is used to represent a Solana wallet and is required for most operations. It contains the private key and optionally an amount for certain operations.
interface Wallet { privateKey: string; // Base58 encoded private key amount?: string; // Optional: amount in SOL or tokens }You can get buy and sell quotes for a specific token.
// Get a buy quote for 0.1 SOL const buyQuote = await sdk.getBuyQuote('TOKEN_ADDRESS', 0.1); console.log('Buy quote:', buyQuote.result?.getSummary()); // Get a sell quote for 1,000,000 tokens const sellQuote = await sdk.getSellQuote('TOKEN_ADDRESS', 1000000); console.log('Sell quote:', sellQuote.result?.getSummary());You can buy tokens with a single wallet or in a batch with multiple wallets.
Single Wallet Buy
import { TokenBuyConfig } from 'fury-sdk'; const buyerWallet: Wallet = { privateKey: 'YOUR_PRIVATE_KEY' }; const config: TokenBuyConfig = { tokenAddress: 'TOKEN_ADDRESS', solAmount: 0.01, // Amount in SOL protocol: 'pumpfun', // or 'moonshot', 'raydium' slippageBps: 100, // 1% slippage jitoTipLamports: 5000 // Optional Jito tip }; const result = await sdk.buyTokenSingle(buyerWallet, config);Batch Wallet Buy
const buyerWallets: Wallet[] = [ { privateKey: 'PRIVATE_KEY_1' }, { privateKey: 'PRIVATE_KEY_2' } ]; const result = await sdk.buyTokenBatch(buyerWallets, config);You can sell tokens with a single wallet or in a batch with multiple wallets.
Single Wallet Sell
import { TokenSellConfig } from 'fury-sdk'; const sellerWallet: Wallet = { privateKey: 'YOUR_PRIVATE_KEY' }; const config: TokenSellConfig = { tokenAddress: 'TOKEN_ADDRESS', sellPercent: 50, // Sell 50% of the token balance protocol: 'pumpfun', // or 'moonshot', 'raydium' slippageBps: 100, // 1% slippage jitoTipLamports: 5000 // Optional Jito tip }; const result = await sdk.sellTokenSingle(sellerWallet, config);Batch Wallet Sell
const sellerWallets: Wallet[] = [ { privateKey: 'PRIVATE_KEY_1' }, { privateKey: 'PRIVATE_KEY_2' } ]; const result = await sdk.sellTokenBatch(sellerWallets, config);You can create new tokens on different platforms like pump, bonk, moon, cook, boop.
import { TokenCreateConfig, Platform } from 'fury-sdk'; const wallets: Wallet[] = [ { privateKey: 'CREATOR_PRIVATE_KEY' }, { privateKey: 'BUYER_1_PRIVATE_KEY' }, { privateKey: 'BUYER_2_PRIVATE_KEY' } ]; const config: TokenCreateConfig = { platform: 'bonk' as Platform, metadata: { name: 'My Test Token', symbol: 'MTT', description: 'A test token created with FurySDK', image: 'https://example.com/token.png' }, wallets: wallets.map(w => getWalletAddress(w.privateKey)), amounts: [0.01, 0.01, 0.01] }; const result = await sdk.createTokenSingle(wallets, config);Consolidate SOL from multiple source wallets into a single receiver wallet.
const sourceWallets: Wallet[] = [ { privateKey: 'SOURCE_1_PRIVATE_KEY' }, { privateKey: 'SOURCE_2_PRIVATE_KEY' } ]; const receiverWallet: Wallet = { privateKey: 'RECEIVER_PRIVATE_KEY' }; const percentage = 80; // Consolidate 80% of SOL from each source wallet const result = await sdk.consolidateSOL(sourceWallets, receiverWallet, percentage);Distribute SOL from a sender wallet to multiple recipient wallets.
const senderWallet: Wallet = { privateKey: 'SENDER_PRIVATE_KEY' }; const recipientWallets: Wallet[] = [ { privateKey: 'RECIPIENT_1_PRIVATE_KEY', amount: '0.01' }, { privateKey: 'RECIPIENT_2_PRIVATE_KEY', amount: '0.02' } ]; const result = await sdk.distributeSOL(senderWallet, recipientWallets);For larger batches, you can use batchDistributeSOL.
Mix SOL from a sender wallet to one or more recipient wallets.
const senderWallet: Wallet = { privateKey: 'SENDER_PRIVATE_KEY' }; const recipients: Wallet[] = [ { privateKey: 'RECIPIENT_1_PRIVATE_KEY', amount: '0.02' }, { privateKey: 'RECIPIENT_2_PRIVATE_KEY', amount: '0.015' } ]; const result = await sdk.batchMixSOL(senderWallet, recipients);Transfer SOL or a specific token from a sender wallet to a receiver address.
Transfer SOL
const senderWallet: Wallet = { privateKey: 'SENDER_PRIVATE_KEY' }; const receiverAddress = 'RECEIVER_PUBLIC_KEY'; const result = await sdk.transferSOL(senderWallet, receiverAddress, '0.1'); // Transfer 0.1 SOLTransfer Tokens
const tokenAddress = 'TOKEN_MINT_ADDRESS'; const result = await sdk.transferToken(senderWallet, receiverAddress, tokenAddress, '100'); // Transfer 100 tokensBurn tokens from a wallet, permanently removing them from circulation.
Single Token Burn
const wallet: Wallet = { privateKey: 'YOUR_PRIVATE_KEY' }; const tokenAddress = 'TOKEN_MINT_ADDRESS'; const burnAmount = '100'; // Amount of tokens to burn // Validate burn inputs first const validation = sdk.validateTokenBurn(wallet, tokenAddress, burnAmount); if (!validation.valid) { console.error('Burn validation failed:', validation.error); return; } const result = await sdk.burnToken(wallet, tokenAddress, burnAmount);Batch Token Burn
const burnOperations = [ { tokenAddress: 'TOKEN_MINT_ADDRESS_1', amount: '50' }, { tokenAddress: 'TOKEN_MINT_ADDRESS_2', amount: '25' } ]; const result = await sdk.batchBurnToken(wallet, burnOperations);This repository includes several example files that demonstrate the SDK's functionality. To run them:
-
Clone the repository.
-
Install the dependencies:
npm install
-
Each example file can be run directly using
ts-node. For example, to run the buy example:npx ts-node buy-example.ts
Make sure to replace the placeholder private keys and token addresses in the example files with your own.