Pump SDK
April 4, 2025 · View on GitHub
The SDK is structured as follows:
PumpAmmSdkis the high level SDK, useful for UI integrations.PumpAmmInternalSdkis the low level SDK, useful for programmatic integrations, allowing full customization of instructions.PumpAmmAdminSdkis the SDK which allows access to admin-protected instructions.
Create pool
To create a (base, quote) pool, you need to call:
const createPoolInstructions = await pumpAmmSdk.createPoolInstructions(index, creator, baseMint, quoteMint, baseIn, quoteIn).
On UI, you can use const initialPoolPrice = pumpAmmSdk.createAutocompleteInitialPoolPrice(initialBase, initialQuote) to display
the initial pool price based on the initial base and quote inputs.
Deposit
For depositing into a (quote, base) pool:
- when the
baseinput changes, you need to callconst {quote, lpToken} = await pumpAmmSdk.depositAutocompleteQuoteAndLpTokenFromBase(pool, base, slippage)in order to autocomplete the correspondingquoteandlpTokenvalues in the UI. - when the
quoteinput changes, you need to callconst {base, lpToken} = await pumpAmmSdk.depositAutocompleteBaseAndLpTokenFromQuote(pool, quote, slippage)in order to autocomplete the correspondingbaseandlpTokenvalues in the UI.
No matter which input is changed, when hitting deposit, you need to call
const depositInstructions = await pumpAmmSdk.depositInstructions(pool, lpToken, slippage, user)
to build the AMM deposit instruction, because lpToken is the only fixed input required by the deposit instruction.
Swap
By default, the UI will display a (quote, base) pool like this:
Quote on first line, base on second line, with an ⬇️ from quote to base.
By default, you swap quote tokens for base tokens.
The arrow swapDirection can be either quoteToBase (⬇️, default)
or baseToQuote (⬆️).
(USDC, SOL) pool:
- USDC (quote)
- ⬇️
- SOL (base)
- If
quoteinput changes, you callconst base = await pumpAmmSdk.swapAutocompleteBaseFromQuote(pool, quote, slippage, swapDirection). - If
baseinput changes, you callconst quote = await pumpAmmSdk.swapAutocompleteQuoteFromBase(pool, base, slippage, swapDirection).
No matter which input is changed, when hitting swap, you can call
const swapInstructions = await pumpAmmSdk.swapBaseInstructions(pool, base, slippage, swapDirection, user) or
const swapInstructions = await pumpAmmSdk.swapBaseInstructions(pool, quote, slippage, swapDirection, user) to
build the AMM swap instructions.
The swapDirection can be toggled in the UI either by making the arrow point upward or by swapping the base and quote
tokens positions.
(USDC, SOL) pool
- USDC (quote)
- ⬆️
- SOL (base)
Withdraw
For withdrawing from a (base, quote) pool, you can use:
const withdrawInstructions = await pumpAmmSdk.withdrawInstructions(pool, lpToken, slippage, user).
In the UI, you can use const {base, quote} = pumpAmmSdk.withdrawAutocompleteBaseAndQuoteFromLpToken(pool, lpToken, slippage)
to autocomplete the base and quote displayed amounts based on the lpToken input.