UNPKG

pumpdotfun-sdk-sp

Version:

A simple SDK for interacting with pumpdotfun

1 lines 7.52 kB
{"version":3,"file":"pumpswap.mjs","sources":["../../../src/pumpswap.ts"],"sourcesContent":["import { BN, Program, Provider } from \"@coral-xyz/anchor\";\nimport {\n pumpAmmJson,\n PumpAmm,\n canonicalPumpPoolPda,\n PUMP_AMM_EVENT_AUTHORITY_PDA,\n userVolumeAccumulatorPda,\n getPumpAmmProgram,\n GLOBAL_VOLUME_ACCUMULATOR_PDA,\n GLOBAL_CONFIG_PDA,\n coinCreatorVaultAuthorityPda,\n coinCreatorVaultAtaPda,\n} from \"@pump-fun/pump-swap-sdk\";\nimport { Connection, PublicKey, SystemProgram } from \"@solana/web3.js\";\nimport { estimateTokenReceived } from \"./util.js\";\nimport {\n getAssociatedTokenAddressSync,\n NATIVE_MINT,\n TOKEN_2022_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n} from \"@solana/spl-token\";\n\nexport const PUMPSWAP_PROTOCOL_FEE_RECIPIENT = new PublicKey(\n \"7hTckgnGnLQR6sdH7YkqFTAA7VwTfYFaZ6EhEsU3saCX\"\n);\nexport class PumpSwapBondingSDK {\n public program: Program<PumpAmm>;\n public offlineProgram: Program<PumpAmm>;\n public connection: Connection;\n constructor(provider?: Provider) {\n this.program = new Program<PumpAmm>(pumpAmmJson as PumpAmm, provider);\n this.offlineProgram = getPumpAmmProgram(null as any);\n\n this.connection = this.program.provider.connection;\n }\n\n async getBondingBuyInstructions(\n buyer: PublicKey,\n creator: PublicKey,\n mint: PublicKey,\n buyAmountToken: bigint,\n maxSolAmount: bigint\n ) {\n const poolId = canonicalPumpPoolPda(mint);\n const baseTokenATA = getAssociatedTokenAddressSync(\n mint,\n buyer,\n true,\n TOKEN_2022_PROGRAM_ID\n );\n const quoteTokenATA = getAssociatedTokenAddressSync(\n NATIVE_MINT,\n buyer,\n true,\n TOKEN_PROGRAM_ID\n );\n\n const coinCreatorVaultAuthority = coinCreatorVaultAuthorityPda(creator);\n\n const coinCreatorVaultAta = coinCreatorVaultAtaPda(\n coinCreatorVaultAuthority,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID\n );\n\n const poolBaseTokenAccount = getAssociatedTokenAddressSync(\n mint,\n poolId,\n true,\n TOKEN_2022_PROGRAM_ID\n );\n\n const poolQuoteTokenAccount = getAssociatedTokenAddressSync(\n NATIVE_MINT,\n poolId,\n true,\n TOKEN_PROGRAM_ID\n );\n\n const protocolFeeRecipientAta = getAssociatedTokenAddressSync(\n NATIVE_MINT,\n PUMPSWAP_PROTOCOL_FEE_RECIPIENT,\n true,\n TOKEN_PROGRAM_ID\n );\n const userVolumeAccumulator = userVolumeAccumulatorPda(buyer);\n console.log({\n pool: poolId.toBase58(),\n user: buyer.toBase58(),\n globalConfig: GLOBAL_CONFIG_PDA.toBase58(),\n baseMint: mint.toBase58(),\n quoteMint: NATIVE_MINT.toBase58(),\n userBaseTokenAccount: baseTokenATA.toBase58(),\n userQuoteTokenAccount: quoteTokenATA.toBase58(),\n poolBaseTokenAccount: poolBaseTokenAccount.toBase58(),\n poolQuoteTokenAccount: poolQuoteTokenAccount.toBase58(),\n protocolFeeRecipient: PUMPSWAP_PROTOCOL_FEE_RECIPIENT.toBase58(),\n protocolFeeRecipientTokenAccount: protocolFeeRecipientAta.toBase58(),\n quoteTokenProgram: TOKEN_PROGRAM_ID.toBase58(),\n baseTokenProgram: TOKEN_2022_PROGRAM_ID.toBase58(),\n program: this.program.programId.toBase58(),\n coinCreatorVaultAuthority: coinCreatorVaultAuthority.toBase58(),\n coinCreatorVaultAta: coinCreatorVaultAta.toBase58(),\n eventAuthority: PUMP_AMM_EVENT_AUTHORITY_PDA.toBase58(),\n globalVolumeAccumulator: GLOBAL_VOLUME_ACCUMULATOR_PDA.toBase58(),\n userVolumeAccumulator: userVolumeAccumulator.toBase58(),\n systemProgram: SystemProgram.programId,\n })\n return await this.offlineProgram.methods\n .buy(\n new BN(buyAmountToken),\n new BN(maxSolAmount),\n false\n )\n .accountsPartial({\n pool: poolId,\n user: buyer,\n globalConfig: GLOBAL_CONFIG_PDA,\n baseMint: mint,\n quoteMint: NATIVE_MINT,\n userBaseTokenAccount: baseTokenATA,\n userQuoteTokenAccount: quoteTokenATA,\n poolBaseTokenAccount: poolBaseTokenAccount,\n poolQuoteTokenAccount: poolQuoteTokenAccount,\n protocolFeeRecipient: PUMPSWAP_PROTOCOL_FEE_RECIPIENT,\n protocolFeeRecipientTokenAccount: protocolFeeRecipientAta,\n quoteTokenProgram: TOKEN_PROGRAM_ID,\n baseTokenProgram: TOKEN_2022_PROGRAM_ID,\n program: this.program.programId,\n coinCreatorVaultAuthority: coinCreatorVaultAuthority,\n coinCreatorVaultAta: coinCreatorVaultAta,\n eventAuthority: PUMP_AMM_EVENT_AUTHORITY_PDA,\n globalVolumeAccumulator: GLOBAL_VOLUME_ACCUMULATOR_PDA,\n userVolumeAccumulator,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n }\n}\n"],"names":["pumpAmmJson"],"mappings":"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"}