{"version":3,"file":"pumpswap.cjs","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":["PublicKey","Program","pumpAmmJson","getPumpAmmProgram","canonicalPumpPoolPda","getAssociatedTokenAddressSync","TOKEN_2022_PROGRAM_ID","NATIVE_MINT","TOKEN_PROGRAM_ID","coinCreatorVaultAuthorityPda","coinCreatorVaultAtaPda","userVolumeAccumulatorPda","GLOBAL_CONFIG_PDA","PUMP_AMM_EVENT_AUTHORITY_PDA","GLOBAL_VOLUME_ACCUMULATOR_PDA","SystemProgram","BN"],"mappings":"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"}