Build and extend the core Pump SDK — an offline-first TypeScript SDK that constructs Solana TransactionInstructions for token creation, buying, selling, migration, and creator fee collection across three on-chain programs (Pump, PumpAMM, PumpFees).
Build, extend, and maintain the core Pump SDK — an offline-first TypeScript SDK that constructs Solana TransactionInstructions for token creation, buying, selling, migration, and creator fee collection across three on-chain programs (Pump, PumpAMM, PumpFees) plus the Mayhem program.
The SDK is published as @nirholas/pump-sdk (npm) and powers the Pump protocol — a Solana-based token launchpad with bonding curve pricing, automatic AMM migration after graduation, tiered fees, and creator fee sharing. The codebase uses Anchor for IDL-based instruction building and supports both Token (SPL) and Token-2022 token programs.
src/sdk.ts — PumpSdk class with all instruction builders and account decoderssrc/onlineSdk.ts — OnlinePumpSdk class extending offline SDK with live RPC fetchessrc/index.ts — barrel re-export module defining the public API surfacesrc/state.ts — TypeScript interfaces for all on-chain account statesrc/pda.ts — Program Derived Address derivation for all programssrc/idl/pump.ts, src/idl/pump_amm.ts, src/idl/pump_fees.ts — Anchor IDL definitionsPumpSdk): Builds instructions without a live connection. Uses Anchor Program instances initialized with a dummy keypair and connection. Exported as a singleton PUMP_SDK.OnlinePumpSdk): Wraps PumpSdk with a real Connection for fetching account state via getMultipleAccountsInfo. Provides "BothPrograms" methods that aggregate data across bonding curve (Pump) and AMM (PumpAMM) programs.PUMP_PROGRAM_ID, PUMP_AMM_PROGRAM_ID, PUMP_FEE_PROGRAM_ID, plus MAYHEM_PROGRAM_ID for mayhem-mode tokens.Every instruction method returns TransactionInstruction[] (not transactions), allowing callers to compose them into transactions freely. Methods follow a naming convention:
*Instruction — single instruction*Instructions — multiple instructions (e.g., ATA creation + buy)The SDK decodes raw AccountInfo<Buffer> into typed interfaces using the Anchor coder:
decodeGlobal, decodeBondingCurve, decodeFeeConfig, decodeSharingConfig, etc.decodeBondingCurveNullable) handle missing or undersized accounts gracefully.maxSolCost = solAmount + (solAmount × slippage × 10 / 1000)
minSolReceived = solAmount - (solAmount × slippage × 10 / 1000)
TransactionInstruction[] from instruction builders, never full Transaction objectsgetMultipleAccountsInfo to batch RPC calls (2–3 accounts per call)tokenProgram parameterextendAccountInstruction) for bonding curves that need more spacesrc/errors.ts for validation failuresOnlinePumpSdksdk.ts and onlineSdk.ts{ 0: true } as a flags argument — this is intentional, not a bugBONDING_CURVE_NEW_SIZE = 151 — accounts may need extension before certain operationsBondingCurve.complete === true means the token has graduated to AMM — bonding curve operations will failcreateInstruction (v1) is deprecated in favor of createV2Instruction (Token-2022)