Interest Protocol
  • 👋Welcome to Interest Protocol
  • Overview
    • Sui💧
      • Contracts
        • Memez
        • Libs 📚
      • Suicoins
        • Swap
        • Dollar-Cost Averaging (DCA)
        • Airdrop
          • Suiplay Airdrop
        • Incinerator
        • Send
        • Merger
        • Suicoins Terminal
      • Memez.gg
        • Coins on Memez.GG
        • Memez.Fun
          • SDK
            • Pump API
            • Interfaces
          • Configuration
          • Migrators
          • Bonding Curve
          • Fees
      • IPX Coin Standard
    • Movement
      • Interest Protocol Decentralized Exchange (DEX)
        • Key Features
        • Core Innovations
      • sr-AMM
      • Token
        • Tokenomics
        • Utility
      • GTM
    • Audits
    • Security
    • Deprecated
      • Coin X Oracle 🔮
        • Pyth Network
        • Switchboard
      • Sui Tears 💧
        • Airdrop
          • Airdrop
          • Airdrop Utils
          • Linear Vesting Airdrop
        • Capabilities
          • Access Control
          • Owner
          • Quest
          • Timelock
        • Collections
          • Bitmap
          • Coin Decimals
        • DeFi
          • Oracle
          • Farm
          • Fund
          • Linear Vesting Wallet
          • Linear Clawback Vesting Wallet
          • Vesting
        • Governance
          • DAO
          • DAO Admin
          • DAO Treasury
        • Utils
          • ASCII
          • Comparator
          • Merkle Proof
          • Vectors
        • Math
          • Fixed Point 64
          • Fixed Point Roll
          • Fixed Point Wad
          • Int
          • Math64
          • Math128
          • Math256
      • CLAMM🐚
        • Hooks
      • Whitepapers
  • Glossary
Powered by GitBook
On this page
  • Constructor
  • newPumpPool
  • pump
  • dump
  • pumpToken
  • dumpToken
  • devClaim
  • keepToken
  • toCoin
  • migrate
  • quotePump
  • quoteDump
  • getPumpData

Was this helpful?

Export as PDF
  1. Overview
  2. Sui💧
  3. Memez.gg
  4. Memez.Fun
  5. SDK

Pump API

PreviousSDKNextInterfaces

Last updated 2 months ago

Was this helpful?

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

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.

The swap fee is taken from the coin being sold. In this case Quote.

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.

The swap fee is taken from the coin being sold. In this case the Meme coin.

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.

This is for pools created with the token standard.

The swap fee is taken from the coin being sold. In this case Quote.

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.

This is for pools created with the token standard.

The swap fee is taken from the coin being sold. In this case the Meme 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.

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.

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.

The swap fee is taken from the coin in. In this case Sui.

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.

The swap fee is taken from the coin in. In this case, 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.

network {Enum} -

packages {Object} -

sharedObjects {object} -

I

I

E

Imp

The migrator is a hot potato that needs to be consumed. Please use the to consume and migrate to a DEX. At the moment, we only have a test migrator as Memez is deployed on testnet.

Example
Pump SDK Implementation
Stable SDK Implementation
Enum denoting if its mainnet or testnet
Record of the deployed Memezfun packages on mainnet and testnet
Record of the shared object ids on mainnet and testnet
Example
mplementation
Check out the IPX Treasury standard
Example
Implementation
Example
mplementation
Example
Implementation
Example
Implementation
Example
Implementation
xample
Implementation
Example
lementation
Example
Implementation
Migrator SDK
Example
Implementation
Example
Implementation
Example
Implementation