UNPKG

pumpdotfun-sdk-sp

Version:

A simple SDK for interacting with pumpdotfun

81 lines (77 loc) 4.51 kB
'use strict'; var anchor = require('@coral-xyz/anchor'); var index = require('./node_modules/@pump-fun/pump-swap-sdk/dist/esm/index.cjs'); var web3_js = require('@solana/web3.js'); var splToken = require('@solana/spl-token'); const PUMPSWAP_PROTOCOL_FEE_RECIPIENT = new web3_js.PublicKey("7hTckgnGnLQR6sdH7YkqFTAA7VwTfYFaZ6EhEsU3saCX"); class PumpSwapBondingSDK { program; offlineProgram; connection; constructor(provider) { this.program = new anchor.Program(index.pumpAmmJson, provider); this.offlineProgram = index.getPumpAmmProgram(null); this.connection = this.program.provider.connection; } async getBondingBuyInstructions(buyer, creator, mint, buyAmountToken, maxSolAmount) { const poolId = index.canonicalPumpPoolPda(mint); const baseTokenATA = splToken.getAssociatedTokenAddressSync(mint, buyer, true, splToken.TOKEN_2022_PROGRAM_ID); const quoteTokenATA = splToken.getAssociatedTokenAddressSync(splToken.NATIVE_MINT, buyer, true, splToken.TOKEN_PROGRAM_ID); const coinCreatorVaultAuthority = index.coinCreatorVaultAuthorityPda(creator); const coinCreatorVaultAta = index.coinCreatorVaultAtaPda(coinCreatorVaultAuthority, splToken.NATIVE_MINT, splToken.TOKEN_PROGRAM_ID); const poolBaseTokenAccount = splToken.getAssociatedTokenAddressSync(mint, poolId, true, splToken.TOKEN_2022_PROGRAM_ID); const poolQuoteTokenAccount = splToken.getAssociatedTokenAddressSync(splToken.NATIVE_MINT, poolId, true, splToken.TOKEN_PROGRAM_ID); const protocolFeeRecipientAta = splToken.getAssociatedTokenAddressSync(splToken.NATIVE_MINT, PUMPSWAP_PROTOCOL_FEE_RECIPIENT, true, splToken.TOKEN_PROGRAM_ID); const userVolumeAccumulator = index.userVolumeAccumulatorPda(buyer); console.log({ pool: poolId.toBase58(), user: buyer.toBase58(), globalConfig: index.GLOBAL_CONFIG_PDA.toBase58(), baseMint: mint.toBase58(), quoteMint: splToken.NATIVE_MINT.toBase58(), userBaseTokenAccount: baseTokenATA.toBase58(), userQuoteTokenAccount: quoteTokenATA.toBase58(), poolBaseTokenAccount: poolBaseTokenAccount.toBase58(), poolQuoteTokenAccount: poolQuoteTokenAccount.toBase58(), protocolFeeRecipient: PUMPSWAP_PROTOCOL_FEE_RECIPIENT.toBase58(), protocolFeeRecipientTokenAccount: protocolFeeRecipientAta.toBase58(), quoteTokenProgram: splToken.TOKEN_PROGRAM_ID.toBase58(), baseTokenProgram: splToken.TOKEN_2022_PROGRAM_ID.toBase58(), program: this.program.programId.toBase58(), coinCreatorVaultAuthority: coinCreatorVaultAuthority.toBase58(), coinCreatorVaultAta: coinCreatorVaultAta.toBase58(), eventAuthority: index.PUMP_AMM_EVENT_AUTHORITY_PDA.toBase58(), globalVolumeAccumulator: index.GLOBAL_VOLUME_ACCUMULATOR_PDA.toBase58(), userVolumeAccumulator: userVolumeAccumulator.toBase58(), systemProgram: web3_js.SystemProgram.programId, }); return await this.offlineProgram.methods .buy(new anchor.BN(buyAmountToken), new anchor.BN(maxSolAmount), false) .accountsPartial({ pool: poolId, user: buyer, globalConfig: index.GLOBAL_CONFIG_PDA, baseMint: mint, quoteMint: splToken.NATIVE_MINT, userBaseTokenAccount: baseTokenATA, userQuoteTokenAccount: quoteTokenATA, poolBaseTokenAccount: poolBaseTokenAccount, poolQuoteTokenAccount: poolQuoteTokenAccount, protocolFeeRecipient: PUMPSWAP_PROTOCOL_FEE_RECIPIENT, protocolFeeRecipientTokenAccount: protocolFeeRecipientAta, quoteTokenProgram: splToken.TOKEN_PROGRAM_ID, baseTokenProgram: splToken.TOKEN_2022_PROGRAM_ID, program: this.program.programId, coinCreatorVaultAuthority: coinCreatorVaultAuthority, coinCreatorVaultAta: coinCreatorVaultAta, eventAuthority: index.PUMP_AMM_EVENT_AUTHORITY_PDA, globalVolumeAccumulator: index.GLOBAL_VOLUME_ACCUMULATOR_PDA, userVolumeAccumulator, systemProgram: web3_js.SystemProgram.programId, }) .instruction(); } } exports.PUMPSWAP_PROTOCOL_FEE_RECIPIENT = PUMPSWAP_PROTOCOL_FEE_RECIPIENT; exports.PumpSwapBondingSDK = PumpSwapBondingSDK; //# sourceMappingURL=pumpswap.cjs.map