SMART CONTRACT & SDK ยท INTEGRATION HUB

Third-Party Protocol Integration

Programmatically instantiate liquidity pools, query live bonding curves, and deploy Move tokens directly from your own smart contracts and decentralized applications.

๐Ÿ›ก๏ธ

Battle-Tested Move

Full Move 2024 edition compatibility with formal verification safety.

โšก

Instant Execution

Initialize pools and receive LP position certificates atomically in a single PTB.

๐Ÿ’ฐ

Minimal Fees

0.8 SUI pool creation fee with free add/remove liquidity operations.

๐ŸŒ

Walrus Integration

Native decentralized storage for metadata, logo icons, and audit certificates.

Move Smart Contract Integration

Invoke the Factory directly from your custom Move package.

module my_protocol::pool_creator {
    use pumpsui_factory::factory::{Self, Factory};
    use pumpsui_factory::lp_coin::LP;
    use sui::coin::Coin;
    use sui::sui::SUI;
    use sui::clock::Clock;
    use sui::tx_context::{Self, TxContext};
    use sui::transfer;

    public entry fun create_pool_for_token<TokenA, TokenB>(
        factory: &mut Factory,
        token_a: Coin<TokenA>,
        token_b: Coin<TokenB>,
        payment: Coin<SUI>,
        clock: &Clock,
        ctx: &mut TxContext
    ) {
        let (pool_id, lp_tokens) = factory::create_pool_from_contract<TokenA, TokenB>(
            factory,
            payment,      // 0.8 SUI pool creation fee
            token_a,
            token_b,
            clock,
            ctx
        );
        
        // Transfer LP position certificate to transaction sender
        transfer::public_transfer(lp_tokens, tx_context::sender(ctx));
    }
}

TypeScript & Modern Sui SDK

Construct a Programmable Transaction Block using @mysten/sui/transactions.

import { Transaction } from '@mysten/sui/transactions';

const FACTORY_ID = "0x7fde6f522facdf8708aca3152edc5725f5c00ee5e3341b8baac28cb17962cb3e"; // Sui Mainnet

export async function createPoolPTB(tokenAType: string, tokenBType: string, sender: string) {
  const tx = new Transaction();
  
  const [feeCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(800_000_000)]); // 0.8 SUI
  
  const [poolId, lpCoin] = tx.moveCall({
    target: `${FACTORY_ID}::factory::create_pool_from_contract`,
    typeArguments: [tokenAType, tokenBType],
    arguments: [
      tx.object(FACTORY_ID),
      feeCoin,
      tx.object(tokenACoinId),
      tx.object(tokenBCoinId),
      tx.object('0x6'), // Sui Clock object
    ],
  });
  
  tx.transferObjects([lpCoin], tx.pure.address(sender));
  return tx;
}

On-Chain Deployments

Verified package IDs and shared Factory object coordinates.

NetworkFactory Shared Object IDMove Package ID
Mainnet0x7fde6f522facdf8708aca3152edc5725f5c00ee5e3341b8baac28cb17962cb3e0x9a67f826e3d9ad2cdc7d735466435a9d6da0428705a3eb0840be271f2e62dcb6
Testnet0xda14593db0d4258202871d40ffb73c0e0bee1d9064d1b076a666946e3eb0a0200x47be8b5d9f9fbac048c54ca8ce2766bb1fa8f8d459a0ff1f19af615efe9f5415

Continue to Integration Quickstart

Walk through step-by-step pool deployment and contract verification.