Pump API
Constructor
Allows the SDK to be initiated with custom data.
How to use:
import { getFullnodeUrl } from '@mysten/sui/client';
import {
MemezPumpSDK,
Network,
} from '@interest-protocol/memez-fun-sdk';
const payload = {
network: Network.MAINNET,
fullNodeUrl: getFullnodeUrl(Network.MAINNET),
};
const memezPump = new MemezPumpSDK(payload);
Arguments
fullNodeUrl {string} - Url to initiate the Sui Client RPC.
network {Enum} - Enum denoting if its mainnet or testnet
newPumpPool
Creates a pool using the Pump invariant.
How to use:
const recipient = keypair.toSuiAddress();
const tx = new Transaction();
const [creationSuiFee, firstPurchase] = tx.splitCoins(tx.gas, [
tx.pure.u64(30_000_000n),
tx.pure.u64(1_000_000_000n),
]);
const { metadataCap } = await memezPumpTestnet.newPool({
tx,
configurationKey,
metadata: {
X: 'https://x.com/Meme',
Website: 'https://meme.xyz/',
GitHub: 'https://github.com/meme',
videoUrl: 'https://memez.gg',
},
creationSuiFee,
memeCoinTreasuryCap: TREASURY_CAP,
firstPurchase,
developer: recipient,
migrationWitness: MIGRATOR_WITNESSES.testnet.TEST,
totalSupply: TOTAL_SUPPLY,
quoteCoinType: SUI_TYPE_ARG,
});
tx.transferObjects([metadataCap], tx.pure.address(recipient));
await executeTx(tx);
Arguments
tx {object} - Sui client Transaction class to chain move calls.
creationSuiFee {object} - The Sui fee to create a MemezPool.
memeCoinTreasuryCap {string} - The meme coin treasury cap.
totalSupply {string | number | bigint} - The total supply of the meme coin.
isProtected {boolean} - Whether to use pool requires a server signature authorization for users to buy coins.
developer {string} - The address that can claim the dev meme coin purchase and collect post bonding fees on Bluefin.
firstPurchase {object} - A Sui coin object to place the first meme coin purchase.
metadata {object} - A record of the social metadata of the meme coin.
configurationKey {string} - The configuration key to use for the MemezPool.
migrationWitness {string} - The migration witness to use for the MemezPool.
stakeholders {string[]} - The addresses of the stakeholders. It can be empty or undefined.
quoteCoinType {string} - The quote coin type to use for the MemezPool.
burnTax {number} - The amount of meme coin that will be burnt during sales in basis points.
virtualLiquidity {string | number | bigint} - The initial virtual liquidity in the pool.
targetQuoteLiquidity {string | number | bigint} - The amount of Sui the pool needs to collect to migrate the coin.
liquidityProvision {number} - The percentage of meme coin that will be added as liquidity after migration. It is expressed in basis points.
Return
tx {object} - Sui client Transaction class to chain move calls.
metadataCap {object} - The metadata object.
pump
Swaps quote coin for a meme coin in a pool.
How to use
import { coinWithBalance, Transaction } from '@mysten/sui/transactions';
import { getEnv } from '../utils.script';
(async () => {
const tx = new Transaction();
const { pumpSdk, executeTx, testnetPoolId, keypair } = await getEnv();
const quoteCoin = coinWithBalance({
balance: 100,
type: '0x2::sui::SUI',
});
const { memeCoin, tx: tx2 } = await pumpSdk.pump({
pool: testnetPoolId,
quoteCoin,
tx,
});
tx2.transferObjects([memeCoin], keypair.toSuiAddress());
await executeTx(tx2);
})();
Arguments
tx {object} - Sui client Transaction class to chain move calls.
pool {string | object} - The objectId of the MemezPool or the full parsed pool.
quoteCoin {object} - The quote coin to sell for the meme coin.
referrer {string | null} - The address of the referrer.
signature {string | null} - The server signature. It is required for protected pools.
minAmountOut {string | number | bigint} - The minimum amount of meme coin expected to be received.
Return
tx {object} - Sui client Transaction class to chain move calls.
memeCoin {object} - The meme coin bought.
dump
Swaps meme coin for quote coin in a pool.
How to use
import { coinWithBalance, Transaction } from '@mysten/sui/transactions';
import { getEnv } from '../utils.script';
(async () => {
const tx = new Transaction();
const { pumpSdk, executeTx, testnetPoolId, keypair } = await getEnv();
const pool = await pumpSdk.getPumpPool(testnetPoolId);
const memeCoin = coinWithBalance({
balance: 100n,
type: pool.memeCoinType,
})(tx);
const { quoteCoin, tx: tx2 } = await pumpSdk.dump({
pool: testnetPoolId,
memeCoin,
tx,
referrer:
'0x894261575b948c035d002adc3ca4d73c683c01a1bfafac183870940bf9afef1a',
});
tx2.transferObjects([quoteCoin], keypair.toSuiAddress());
await executeTx(tx2);
})();
Arguments
tx {object} - Sui client Transaction class to chain move calls.
pool {string | object} - The objectId of the MemezPool or the full parsed pool.
memeCoin {object} - The meme coin to sell for Sui coin.
referrer {string | null} - The address of the referrer.
minAmountOut {string | number | bigint} - The minimum amount of sui coin expected to be received.
Return
tx {object} - Sui client Transaction class to chain move calls.
quoteCoin {object} - The Quote coin bought.
devClaim
Allows the developer to claim the first purchased coins. It can only be done after the pool migrates.
How to use
const { memeCoin, tx } = await memezTestnet.devClaim({
pool: POOL_ID,
});
tx.transferObjects([memeCoin], keypair.toSuiAddress());
await executeTx(tx);
Arguments
tx {object} - Sui client Transaction class to chain move calls.
pool {string | object} - The objectId of the MemezPool or the full parsed pool.
Return
tx {object} - Sui client Transaction class to chain move calls.
memeCoin {object} - The meme coin bought by the developer during deployment.
migrate
Migrates the pool to DEX based on the MigrationWitness.
The migrator is a hot potato that needs to be consumed. Please use the Migrator SDK to consume and migrate to a DEX.
How to use
const { tx, migrator } = await pumpSdk.migrate({
pool: testnetPoolId,
});
const fee = tx.splitCoins(tx.gas, [0n]);
const { tx: tx2, suiCoin } = await xPumpMigratorSdk.migrate({
tx,
migrator,
memeCoinType: pool.memeCoinType,
feeCoinType: SUI_TYPE_ARG,
feeCoin: fee,
ipxMemeCoinTreasury: pool.ipxMemeCoinTreasury,
quoteCoinType: pool.quoteCoinType,
});
tx2.transferObjects([suiCoin], keypair.toSuiAddress());
await executeTx(tx2);
Arguments
tx {object} - Sui client Transaction class to chain move calls.
pool {string | object} - The objectId of the MemezPool or the full parsed pool.
Return
tx {object} - Sui client Transaction class to chain move calls.
migrator {object} - The hot potato migrator containing the balances.
quotePump
Quotes the amount of meme coin received after selling the quote coin.
How to use
const { memeAmountOut, quoteFee, memeFee } = await memezPumpSdk.quotePump({
pool: POOL_ID,
amount: 15n * POW_9,
});
Arguments
pool {string | object} - The objectId of the MemezPool or the full parsed pool.
amount {string | number | bigint} - The amount of Sui being sold.
Return
memeAmountOut {bigint} - The amount of meme coin that will be received.
quoteFee {bigint} - The swap fee paid in the Quote coin.
memeFee {bigint} - The swap fee paid in Meme coin.
quoteDump
Quotes the amount of quote coin received after selling the meme coin.
How to use
import { memezTestnet, POW_9, TEST_POOL_ID } from '../utils.script';
const { amountOut, quoteFee, memeFee, burnFee } = await memezPumpTestnet.quoteDump({
pool: TEST_POOL_ID,
amount: 1_500_000n * POW_9,
});
Arguments
pool {string | object} - The objectId of the MemezPool or the full parsed pool.
amount {string | number | bigint} - The amount of Meme coin being sold.
Return
quoteAmountOut {bigint} - The amount of quote coin that will be received.
quoteFee {bigint} - The swap fee paid in the Quote coin.
memeFee {bigint} - The swap fee paid in Meme coin.
burnFee {bigint} - Burn fee in meme coin.
getPumpData
Returns the Pump configuration for a specific integrator using a configuration key.
How to use
import { CONFIG_KEYS } from '../../memez';
import { log, memezTestnet } from '../utils.script';
const pumpData = await memezPumpTestnet.getPumpData({
configurationKey: CONFIG_KEYS.testnet.DEFAULT,
totalSupply: 1e9 * 1e9,
quoteCoinType: QUOTE_COIN_TYPE
});
Arguments
configurationKey {string} - The struct tag of a configuration key. E.g. package::module::Key
totalSupply {string | bigint | number} - The total supply of the meme coin. E.g. 1 Sui would be 1e9.
quoteCoin {string} - The total supply of the meme coin. E.g. 1 Sui would be 1e9.
Return
burnTax - The tax value of the burner in bps.
virtualLiquidity - The starting virtual liquidity in the pool in Sui.
targetQuoteLiquidity - The amount of quote required for the pool to migrate.
liquidityProvision - The amount of Meme coin that will be supplied to a DEX after migration.
Last updated
Was this helpful?