{"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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"}