s6nqou
pump-anchor
TypeScript

Pump.fun Anchor SDK: IDL & CPI only Solana program (smart contract)

Last updated Jun 19, 2026
16
Stars
5
Forks
1
Issues
0
Stars/day
Attention Score
7
Language breakdown
TypeScript 76.9%
Rust 22.7%
JavaScript 0.4%
Files click to expand
README

pump Pump.fun Anchor SDK

NPM Version

An unofficial Pump.fun Solana program SDK written in Rust and Anchor.

Features

  • Typescript Anchor IDL
- building pump transactions with code completion and minimum account inputs required - fetching and parsing accounts data like global accounts and bonding_curve accounts - listening to on-chain pump events for observing new pump creations, pump swaps, etc.
  • Rust API
- building your own on-chain program on top of pump via CPI methods - building pump transactions with structured accounts and arguments

Usage

Typescript Client

Install npm package pump-anchor-idl:

npm install --save pump-anchor-idl

Example

import { Program } from "@coral-xyz/anchor";
import idl from "pump-anchor-idl";

const pumpProgram = new Program(idl, anchorProvider);

const FEERECIPIENTADDRESS = new PublicKey( "CebN5WGQ4jvEPvsVU4EoHEpgzq1VV7AbicfhtW4xC9iM" );

async function pumpBuy(wallet: Keypair, mint: PublicKey, amount: BN, maxSolCost: BN) { const tokenAccount = getAssociatedTokenAddressSync(mint, wallet.publicKey, true); const createTokenAccountInstruction = createAssociatedTokenAccountInstruction( wallet.publicKey, tokenAccount, wallet.publicKey, mint, );

return await pumpProgram.methods .buy(amount, maxSolCost) .accounts({ mint, associatedUser: tokenAccount, feeRecipient: FEERECIPIENTADDRESS, program: pumpProgram.programId, }) .preInstructions([createTokenAccountInstruction]) .signers([wallet]) .rpc(); }

Rust Client or On-chain Program

Add dependencies in Cargo.toml:

[dependencies]
pump = { git = "https://github.com/s6nqou/pump-anchor", package = "pump", features = ["cpi"] }

for on-chain program

anchor-lang = { version = "0.30.1" }

for client

anchor-client = { version = "0.30.1" }

Example: Cross-program invocations (CPI)

pub fn custompumpbuy(ctx: Context<CustomPumpBuy>, amount: u64, maxsolcost: u64) -> Result<()> {
    pump::cpi::buy(
        CpiContext::new(
            ctx.accounts.pumpprogram.toaccount_info(),
            pump::cpi::accounts::Buy {
                global: ctx.accounts.global.toaccountinfo(),
                feerecipient: ctx.accounts.feerecipient.toaccountinfo(),
                mint: ctx.accounts.mint.toaccountinfo(),
                bondingcurve: ctx.accounts.bondingcurve.toaccountinfo(),
                associatedbondingcurve: ctx.accounts.associatedbondingcurve.toaccountinfo(),
                associateduser: ctx.accounts.associateduser.toaccountinfo(),
                user: ctx.accounts.user.toaccountinfo(),
                systemprogram: ctx.accounts.systemprogram.toaccountinfo(),
                tokenprogram: ctx.accounts.tokenprogram.toaccountinfo(),
                rent: ctx.accounts.rent.toaccountinfo(),
                eventauthority: ctx.accounts.eventauthority.toaccountinfo(),
                program: ctx.accounts.pumpprogram.toaccount_info(),
            },
        ),
        amount,
        maxsolcost,
    )?;
}

Example: Rust Anchor Client

See anchor_client crate doc.

Versions

  • anchor-lang = 0.30.1

© 2026 GitRepoTrend · s6nqou/pump-anchor · Updated daily from GitHub