UNPKG

@pump-fun/pump-swap-sdk

Version:

Official SDK for interacting with Pump Swap AMM protocol on Solana

2,404 lines (2,400 loc) 93.2 kB
// src/sdk/pumpAmmAdmin.ts import BN3 from "bn.js"; import { TOKEN_2022_PROGRAM_ID as TOKEN_2022_PROGRAM_ID2 } from "@solana/spl-token"; // src/sdk/pda.ts import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; import { getAssociatedTokenAddressSync, NATIVE_MINT, TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; var PUMP_AMM_PROGRAM_ID = "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"; var PUMP_AMM_PROGRAM_ID_PUBKEY = new PublicKey(PUMP_AMM_PROGRAM_ID); var PUMP_PROGRAM_ID = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"; var PUMP_PROGRAM_ID_PUBKEY = new PublicKey(PUMP_PROGRAM_ID); var CANONICAL_POOL_INDEX = 0; var PUMP_MINT = new PublicKey( "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" ); function globalConfigPda(programId = PUMP_AMM_PROGRAM_ID_PUBKEY) { return PublicKey.findProgramAddressSync( [Buffer.from("global_config")], programId ); } function poolPda(index, owner, baseMint, quoteMint, programId = PUMP_AMM_PROGRAM_ID_PUBKEY) { return PublicKey.findProgramAddressSync( [ Buffer.from("pool"), new BN(index).toArrayLike(Buffer, "le", 2), owner.toBuffer(), baseMint.toBuffer(), quoteMint.toBuffer() ], programId ); } function pumpPoolAuthorityPda(mint, pumpProgramId = PUMP_PROGRAM_ID_PUBKEY) { return PublicKey.findProgramAddressSync( [Buffer.from("pool-authority"), mint.toBuffer()], pumpProgramId ); } function canonicalPumpPoolPda(mint, programId = PUMP_AMM_PROGRAM_ID_PUBKEY, pumpProgramId = PUMP_PROGRAM_ID_PUBKEY) { const [pumpPoolAuthority] = pumpPoolAuthorityPda(mint, pumpProgramId); return poolPda( CANONICAL_POOL_INDEX, pumpPoolAuthority, mint, NATIVE_MINT, programId ); } // src/sdk/util.ts import BN2 from "bn.js"; import { AnchorProvider, Program } from "@coral-xyz/anchor"; // src/idl/pump_amm.json var pump_amm_default = { address: "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", metadata: { name: "pump_amm", version: "0.1.0", spec: "0.1.0", description: "Created with Anchor" }, instructions: [ { name: "admin_set_coin_creator", docs: [ "Overrides the coin creator for a canonical pump pool" ], discriminator: [ 242, 40, 117, 145, 73, 96, 105, 104 ], accounts: [ { name: "admin_set_coin_creator_authority", signer: true, relations: [ "global_config" ] }, { name: "global_config" }, { name: "pool", writable: true }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "coin_creator", type: "pubkey" } ] }, { name: "admin_update_token_incentives", discriminator: [ 209, 11, 115, 87, 213, 23, 124, 204 ], accounts: [ { name: "admin", writable: true, signer: true, relations: [ "global_config" ] }, { name: "global_config", pda: { seeds: [ { kind: "const", value: [ 103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103 ] } ] } }, { name: "global_volume_accumulator", writable: true, pda: { seeds: [ { kind: "const", value: [ 103, 108, 111, 98, 97, 108, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114 ] } ] } }, { name: "mint" }, { name: "global_incentive_token_account", writable: true, pda: { seeds: [ { kind: "account", path: "global_volume_accumulator" }, { kind: "account", path: "token_program" }, { kind: "account", path: "mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "token_program" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "start_time", type: "i64" }, { name: "end_time", type: "i64" }, { name: "seconds_in_a_day", type: "i64" }, { name: "day_number", type: "u64" }, { name: "token_supply_per_day", type: "u64" } ] }, { name: "buy", discriminator: [ 102, 6, 61, 18, 1, 218, 235, 234 ], accounts: [ { name: "pool" }, { name: "user", writable: true, signer: true }, { name: "global_config" }, { name: "base_mint", relations: [ "pool" ] }, { name: "quote_mint", relations: [ "pool" ] }, { name: "user_base_token_account", writable: true }, { name: "user_quote_token_account", writable: true }, { name: "pool_base_token_account", writable: true, relations: [ "pool" ] }, { name: "pool_quote_token_account", writable: true, relations: [ "pool" ] }, { name: "protocol_fee_recipient" }, { name: "protocol_fee_recipient_token_account", writable: true, pda: { seeds: [ { kind: "account", path: "protocol_fee_recipient" }, { kind: "account", path: "quote_token_program" }, { kind: "account", path: "quote_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "base_token_program" }, { name: "quote_token_program" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" }, { name: "coin_creator_vault_ata", writable: true, pda: { seeds: [ { kind: "account", path: "coin_creator_vault_authority" }, { kind: "account", path: "quote_token_program" }, { kind: "account", path: "quote_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "coin_creator_vault_authority", pda: { seeds: [ { kind: "const", value: [ 99, 114, 101, 97, 116, 111, 114, 95, 118, 97, 117, 108, 116 ] }, { kind: "account", path: "pool.coin_creator", account: "Pool" } ] } }, { name: "global_volume_accumulator", writable: true, pda: { seeds: [ { kind: "const", value: [ 103, 108, 111, 98, 97, 108, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114 ] } ] } }, { name: "user_volume_accumulator", writable: true, pda: { seeds: [ { kind: "const", value: [ 117, 115, 101, 114, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114 ] }, { kind: "account", path: "user" } ] } } ], args: [ { name: "base_amount_out", type: "u64" }, { name: "max_quote_amount_in", type: "u64" }, { name: "track_volume", type: { defined: { name: "OptionBool" } } } ] }, { name: "claim_token_incentives", discriminator: [ 16, 4, 71, 28, 204, 1, 40, 27 ], accounts: [ { name: "user" }, { name: "user_ata", writable: true, pda: { seeds: [ { kind: "account", path: "user" }, { kind: "account", path: "token_program" }, { kind: "account", path: "mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "global_volume_accumulator", pda: { seeds: [ { kind: "const", value: [ 103, 108, 111, 98, 97, 108, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114 ] } ] } }, { name: "global_incentive_token_account", writable: true, pda: { seeds: [ { kind: "account", path: "global_volume_accumulator" }, { kind: "account", path: "token_program" }, { kind: "account", path: "mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "user_volume_accumulator", writable: true, pda: { seeds: [ { kind: "const", value: [ 117, 115, 101, 114, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114 ] }, { kind: "account", path: "user" } ] } }, { name: "mint", relations: [ "global_volume_accumulator" ] }, { name: "token_program" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" }, { name: "payer", writable: true, signer: true } ], args: [] }, { name: "close_user_volume_accumulator", discriminator: [ 249, 69, 164, 218, 150, 103, 84, 138 ], accounts: [ { name: "user", writable: true, signer: true }, { name: "user_volume_accumulator", writable: true, pda: { seeds: [ { kind: "const", value: [ 117, 115, 101, 114, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114 ] }, { kind: "account", path: "user" } ] } }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [] }, { name: "collect_coin_creator_fee", discriminator: [ 160, 57, 89, 42, 181, 139, 43, 66 ], accounts: [ { name: "quote_mint" }, { name: "quote_token_program" }, { name: "coin_creator" }, { name: "coin_creator_vault_authority", pda: { seeds: [ { kind: "const", value: [ 99, 114, 101, 97, 116, 111, 114, 95, 118, 97, 117, 108, 116 ] }, { kind: "account", path: "coin_creator" } ] } }, { name: "coin_creator_vault_ata", writable: true, pda: { seeds: [ { kind: "account", path: "coin_creator_vault_authority" }, { kind: "account", path: "quote_token_program" }, { kind: "account", path: "quote_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "coin_creator_token_account", writable: true }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [] }, { name: "create_config", discriminator: [ 201, 207, 243, 114, 75, 111, 47, 189 ], accounts: [ { name: "admin", writable: true, signer: true, address: "8LWu7QM2dGR1G8nKDHthckea57bkCzXyBTAKPJUBDHo8" }, { name: "global_config", writable: true, pda: { seeds: [ { kind: "const", value: [ 103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103 ] } ] } }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "lp_fee_basis_points", type: "u64" }, { name: "protocol_fee_basis_points", type: "u64" }, { name: "protocol_fee_recipients", type: { array: [ "pubkey", 8 ] } }, { name: "coin_creator_fee_basis_points", type: "u64" }, { name: "admin_set_coin_creator_authority", type: "pubkey" } ] }, { name: "create_pool", discriminator: [ 233, 146, 209, 142, 207, 104, 64, 188 ], accounts: [ { name: "pool", writable: true, pda: { seeds: [ { kind: "const", value: [ 112, 111, 111, 108 ] }, { kind: "arg", path: "index" }, { kind: "account", path: "creator" }, { kind: "account", path: "base_mint" }, { kind: "account", path: "quote_mint" } ] } }, { name: "global_config" }, { name: "creator", writable: true, signer: true }, { name: "base_mint" }, { name: "quote_mint" }, { name: "lp_mint", writable: true, pda: { seeds: [ { kind: "const", value: [ 112, 111, 111, 108, 95, 108, 112, 95, 109, 105, 110, 116 ] }, { kind: "account", path: "pool" } ] } }, { name: "user_base_token_account", writable: true }, { name: "user_quote_token_account", writable: true }, { name: "user_pool_token_account", writable: true, pda: { seeds: [ { kind: "account", path: "creator" }, { kind: "account", path: "token_2022_program" }, { kind: "account", path: "lp_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "pool_base_token_account", writable: true, pda: { seeds: [ { kind: "account", path: "pool" }, { kind: "account", path: "base_token_program" }, { kind: "account", path: "base_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "pool_quote_token_account", writable: true, pda: { seeds: [ { kind: "account", path: "pool" }, { kind: "account", path: "quote_token_program" }, { kind: "account", path: "quote_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "token_2022_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "base_token_program" }, { name: "quote_token_program" }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "index", type: "u16" }, { name: "base_amount_in", type: "u64" }, { name: "quote_amount_in", type: "u64" }, { name: "coin_creator", type: "pubkey" } ] }, { name: "deposit", discriminator: [ 242, 35, 198, 137, 82, 225, 242, 182 ], accounts: [ { name: "pool", writable: true }, { name: "global_config" }, { name: "user", signer: true }, { name: "base_mint", relations: [ "pool" ] }, { name: "quote_mint", relations: [ "pool" ] }, { name: "lp_mint", writable: true, relations: [ "pool" ] }, { name: "user_base_token_account", writable: true }, { name: "user_quote_token_account", writable: true }, { name: "user_pool_token_account", writable: true }, { name: "pool_base_token_account", writable: true, relations: [ "pool" ] }, { name: "pool_quote_token_account", writable: true, relations: [ "pool" ] }, { name: "token_program", address: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" }, { name: "token_2022_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "lp_token_amount_out", type: "u64" }, { name: "max_base_amount_in", type: "u64" }, { name: "max_quote_amount_in", type: "u64" } ] }, { name: "disable", discriminator: [ 185, 173, 187, 90, 216, 15, 238, 233 ], accounts: [ { name: "admin", signer: true, relations: [ "global_config" ] }, { name: "global_config", writable: true }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "disable_create_pool", type: "bool" }, { name: "disable_deposit", type: "bool" }, { name: "disable_withdraw", type: "bool" }, { name: "disable_buy", type: "bool" }, { name: "disable_sell", type: "bool" } ] }, { name: "extend_account", discriminator: [ 234, 102, 194, 203, 150, 72, 62, 229 ], accounts: [ { name: "account", writable: true }, { name: "user", signer: true }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [] }, { name: "init_user_volume_accumulator", discriminator: [ 94, 6, 202, 115, 255, 96, 232, 183 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "user" }, { name: "user_volume_accumulator", writable: true, pda: { seeds: [ { kind: "const", value: [ 117, 115, 101, 114, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114 ] }, { kind: "account", path: "user" } ] } }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [] }, { name: "sell", discriminator: [ 51, 230, 133, 164, 1, 127, 131, 173 ], accounts: [ { name: "pool" }, { name: "user", writable: true, signer: true }, { name: "global_config" }, { name: "base_mint", relations: [ "pool" ] }, { name: "quote_mint", relations: [ "pool" ] }, { name: "user_base_token_account", writable: true }, { name: "user_quote_token_account", writable: true }, { name: "pool_base_token_account", writable: true, relations: [ "pool" ] }, { name: "pool_quote_token_account", writable: true, relations: [ "pool" ] }, { name: "protocol_fee_recipient" }, { name: "protocol_fee_recipient_token_account", writable: true, pda: { seeds: [ { kind: "account", path: "protocol_fee_recipient" }, { kind: "account", path: "quote_token_program" }, { kind: "account", path: "quote_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "base_token_program" }, { name: "quote_token_program" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" }, { name: "coin_creator_vault_ata", writable: true, pda: { seeds: [ { kind: "account", path: "coin_creator_vault_authority" }, { kind: "account", path: "quote_token_program" }, { kind: "account", path: "quote_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "coin_creator_vault_authority", pda: { seeds: [ { kind: "const", value: [ 99, 114, 101, 97, 116, 111, 114, 95, 118, 97, 117, 108, 116 ] }, { kind: "account", path: "pool.coin_creator", account: "Pool" } ] } } ], args: [ { name: "base_amount_in", type: "u64" }, { name: "min_quote_amount_out", type: "u64" } ] }, { name: "set_coin_creator", docs: [ "Sets Pool::coin_creator from Metaplex metadata creator or BondingCurve::creator" ], discriminator: [ 210, 149, 128, 45, 188, 58, 78, 175 ], accounts: [ { name: "pool", writable: true }, { name: "metadata", pda: { seeds: [ { kind: "const", value: [ 109, 101, 116, 97, 100, 97, 116, 97 ] }, { kind: "const", value: [ 11, 112, 101, 177, 227, 209, 124, 69, 56, 157, 82, 127, 107, 4, 195, 205, 88, 184, 108, 115, 26, 160, 253, 181, 73, 182, 209, 188, 3, 248, 41, 70 ] }, { kind: "account", path: "pool.base_mint", account: "Pool" } ], program: { kind: "const", value: [ 11, 112, 101, 177, 227, 209, 124, 69, 56, 157, 82, 127, 107, 4, 195, 205, 88, 184, 108, 115, 26, 160, 253, 181, 73, 182, 209, 188, 3, 248, 41, 70 ] } } }, { name: "bonding_curve", pda: { seeds: [ {