@pump-fun/pump-swap-sdk
Version:
Official SDK for interacting with Pump Swap AMM protocol on Solana
100 lines (99 loc) • 2.82 kB
JavaScript
// 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 lpMintPda(pool, programId = PUMP_AMM_PROGRAM_ID_PUBKEY) {
return PublicKey.findProgramAddressSync(
[Buffer.from("pool_lp_mint"), pool.toBuffer()],
programId
);
}
function lpMintAta(lpMint, owner) {
return getAssociatedTokenAddressSync(
lpMint,
owner,
true,
TOKEN_2022_PROGRAM_ID
);
}
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
);
}
function pumpAmmEventAuthorityPda(programId = PUMP_AMM_PROGRAM_ID_PUBKEY) {
return PublicKey.findProgramAddressSync(
[Buffer.from("__event_authority")],
programId
);
}
function globalVolumeAccumulatorPda(programId = PUMP_AMM_PROGRAM_ID_PUBKEY) {
return PublicKey.findProgramAddressSync(
[Buffer.from("global_volume_accumulator")],
programId
);
}
function userVolumeAccumulatorPda(user, programId = PUMP_AMM_PROGRAM_ID_PUBKEY) {
return PublicKey.findProgramAddressSync(
[Buffer.from("user_volume_accumulator"), user.toBuffer()],
programId
);
}
export {
CANONICAL_POOL_INDEX,
PUMP_AMM_PROGRAM_ID,
PUMP_AMM_PROGRAM_ID_PUBKEY,
PUMP_MINT,
PUMP_PROGRAM_ID,
PUMP_PROGRAM_ID_PUBKEY,
canonicalPumpPoolPda,
globalConfigPda,
globalVolumeAccumulatorPda,
lpMintAta,
lpMintPda,
poolPda,
pumpAmmEventAuthorityPda,
pumpPoolAuthorityPda,
userVolumeAccumulatorPda
};