UNPKG

pumpfun-swap-sdk

Version:

SDK for interacting with the PumpFun AMM on Solana

150 lines (120 loc) 3.42 kB
# PumpFun Swap SDK A TypeScript SDK for interacting with the PumpFun Automated Market Maker (AMM) on Solana. ## Features - Create and manage liquidity pools - Deposit and withdraw liquidity - Swap tokens with slippage protection - Admin functionality for pool management ## Installation ```bash npm install pumpfun-swap-sdk ``` ## Usage ```typescript import { PumpAmmSdk, Direction } from "pumpfun-swap-sdk"; import { Connection, PublicKey } from "@solana/web3.js"; import { BN } from "@coral-xyz/anchor"; // Initialize SDK with Solana connection const connection = new Connection("https://api.mainnet-beta.solana.com"); const pumpAmmSdk = new PumpAmmSdk(connection); // Create a pool const index = 0; const creator = new PublicKey("your-wallet-public-key"); const baseMint = new PublicKey("base-token-mint"); const quoteMint = new PublicKey("quote-token-mint"); const baseIn = new BN("1000000000"); // 1 token with 9 decimals const quoteIn = new BN("1000000000"); // 1 token with 9 decimals const createPoolInstructions = await pumpAmmSdk.createPoolInstructions( index, creator, baseMint, quoteMint, baseIn, quoteIn ); // Get initial pool price for UI const initialPoolPrice = await pumpAmmSdk.createAutocompleteInitialPoolPrice( baseIn, quoteIn ); // Build and send transaction const { transactionFromInstructions, sendAndConfirmTransaction } = require("pumpfun-swap-sdk"); const transaction = transactionFromInstructions(createPoolInstructions); const signature = await sendAndConfirmTransaction(transaction); ``` ## Deposit For depositing into a pool: ```typescript // When base input changes const { quote, lpToken } = await pumpAmmSdk.depositAutocompleteQuoteAndLpTokenFromBase( pool, base, slippage ); // When quote input changes const { base, lpToken } = await pumpAmmSdk.depositAutocompleteBaseAndLpTokenFromQuote( pool, quote, slippage ); // Execute deposit const depositInstructions = await pumpAmmSdk.depositInstructions( pool, lpToken, slippage, user ); const transaction = transactionFromInstructions(depositInstructions); const signature = await sendAndConfirmTransaction(transaction); ``` ## Swap The SDK supports bi-directional swaps using the `Direction` enum: ```typescript // Quote to Base swap (⬇️) const baseAmount = await pumpAmmSdk.swapAutocompleteBaseFromQuote( pool, quoteAmount, slippage ); // Base to Quote swap (⬆️) const quoteAmount = await pumpAmmSdk.swapAutocompleteQuoteFromBase( pool, baseAmount, slippage ); // Execute swap const swapInstructions = await pumpAmmSdk.swapBaseInstructions( pool, baseAmount, slippage, Direction.QuoteToBase, user ); const transaction = transactionFromInstructions(swapInstructions); const signature = await sendAndConfirmTransaction(transaction); ``` ## Withdraw ```typescript // Get expected output amounts const { base, quote } = await pumpAmmSdk.withdrawAutoCompleteBaseAndQuoteFromLpToken( pool, lpToken, slippage ); // Execute withdrawal const withdrawInstructions = await pumpAmmSdk.withdrawInstructions( pool, lpToken, slippage, user ); const transaction = transactionFromInstructions(withdrawInstructions); const signature = await sendAndConfirmTransaction(transaction); ``` ## License MIT ## Links - [GitHub Repository](https://github.com/yourusername/pumpfun-swap-sdk) - [Documentation](https://docs.pumpfun.com)