Pump API
Constructor
Allows the SDK to be initiated with custom data.
How to use:
import { getFullnodeUrl } from '@mysten/sui/client';
import {
MemezPumpSDK,
MemezStableSDK,
PACKAGES,
SHARED_OBJECTS,
Network,
} from '@interest-protocol/memez-fun-sdk';
// Default settings (Testnet)
const memezPumpTestnet = new MemezPumpSDK();
// Default settings (Testnet)
const memezStableTestnet = new MemezStableSDK();
// Custom setup
const memezPump = new MemezPumpSDK({
fullNodeUrl: getFullnodeUrl('mainnet'),
network: Network.Mainnet,
packages: PACKAGES[Network.Mainnet],
sharedObjects: SHARED_OBJECTS[Network.Mainnet],
});
Arguments
fullNodeUrl {string} - Url to initiate the Sui Client RPC
network {Enum} - Enum denoting if its mainnet or testnet
packages {Object} - Record of the deployed Memezfun packages on mainnet and testnet
sharedObjects {object} - Record of the shared object ids on mainnet and testnet
newPumpPool
Creates a pool using the Pump invariant.
How to use:
const recipient = keypair.toSuiAddress();
const tx = new Transaction();
const [creationSuiFee, devPurchase] = 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,
devPurchaseData: {
developer: recipient,
firstPurchase: devPurchase,
},
migrationWitness: MIGRATOR_WITNESSES.testnet.TEST,
totalSupply: TOTAL_SUPPLY,
useTokenStandard: true,
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.
useTokenStandard {boolean} - Whether to use the token standard for the MemezPool.
devPurchaseData {object} - An object containing the quote Coin to to perform the first buy tx and the address of the person who can claim the coins.
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.
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
const tx = new Transaction();
const suiCoin = tx.splitCoins(tx.gas, [tx.pure.u64(103n * POW_9)]);
const { memeCoin, tx: tx2 } = await memezPumpTestnet.pump({
pool: TEST_POOL_ID,
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.
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
const tx = new Transaction();
const pool = await memezTestnet.getPumpPool(TEST_POOL_ID);
const memeCoin = await getCoinOfValue({
tx,
coinType: pool.memeCoinType,
coinValue: 990500n * 10n,
});
const { quoteCoin, tx: tx2 } = await memezPumpTestnet.dump({
pool: TEST_POOL_ID,
memeCoin,
tx,
});
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.
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.
pumpToken
Swaps quote coin for the meme token using the Token Standard.
How to use
const tx = new Transaction();
const quoteCoin = tx.splitCoins(tx.gas, [tx.pure.u64(105n * POW_9)]);
const { memeToken, tx: tx2 } = await memezPumpTestnet.pumpToken({
pool: TEST_POOL_ID,
quoteCoin,
tx,
});
const { tx: tx3 } = await memezPumpTestnet.keepToken({
memeCoinType: MEME_COIN_TYPE,
token: memeToken,
tx: tx2,
});
await executeTx(tx3);
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 Sui coin to sell for the meme coin.
minAmountOut {string | number | bigint} - The minimum amount meme coin expected to be received.
Return
tx {object} - Sui client Transaction class to chain move calls.
memeToken {object} - The meme token bought.
memeCoinType {string} - The type of the meme coin.
dumpToken
Swaps the meme token for quote coin.
How to use
const tx = new Transaction();
const { quoteCoin, tx: tx2 } = await memezPumpTestnet.dumpToken({
pool: TEST_POOL_ID,
memeToken:
'0x0a256522091a350e3cc3ac86982608803bce754ede1199785227bfc822603b71',
tx,
});
tx2.transferObjects([quoteCoin], tx.pure.address(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.
memeToken {object} - The meme token to sell for Sui coin.
minAmountOut {string | number | bigint} - The minimum amount 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: TEST_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.
keepToken
Utility function to return the Token to the sender.
How to use
const { tx: tx3 } = await memezPumpTestnet.keepToken({
memeCoinType: MEME_COIN_TYPE,
token: memeToken,
tx: tx2,
});
Arguments
tx {object} - Sui client Transaction class to chain move calls.
token {string | object} - The objectId of the meme token to keep.
Return
tx {object} - Sui client Transaction class to chain move calls.
memeCoin {object} - The meme coin bought by the developer during deployment.
toCoin
Converts a meme token to a meme coin. This is for pools that use the Token Standard. It can only be done after the pool migrates.
Implementation
How to use
const { memeCoin, tx } = await memezPumpTestnet.toCoin({
pool: TEST_POOL_ID,
memeToken: TOKEN_ID,
});
tx.transferObjects([memeCoin], tx.pure.address(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.
memeToken {object} - The meme token to convert to a meme coin.
Return
tx {object} - Sui client Transaction class to chain move calls.
memeCoin {object} - The meme coin converted from token.
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. At the moment, we only have a test migrator as Memez is deployed on testnet.
How to use
const { tx, migrator } = await memezPumpTestnet.migrate({
pool: TEST_POOL_ID,
});
const migratorSDK = new MigratorSDK();
const { tx: tx2 } = migratorSDK.migrate({
tx,
migrator,
memeCoinType: MEME_COIN_TYPE,
});
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
import { memezTestnet, POW_9, TEST_POOL_ID } from '../utils.script';
const { memeAmountOut, swapFeeIn } = await memezPumpTestnet.quotePump({
pool: TEST_POOL_ID,
amount: 15n * POW_9,
});
console.log({ memeAmountOut, swapInFee });
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.
swapFeeIn {bigint} - The swap fee paid in Sui.
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, swapFeeIn, burnFee } = await memezPumpTestnet.quoteDump({
pool: TEST_POOL_ID,
amount: 1_500_000n * POW_9,
});
console.log({ amountOut, swapFeeIn, burnFee });
Arguments
pool {string | object} - The objectId of the MemezPool or the full parsed pool.
amount {string | number | bigint} - The amount of Mem coin being sold.
Return
quoteAmountOut {bigint} - The amount of quote coin that will be received.
swapFeeIn {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
});
log(pumpData);
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.
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?