A decentralized exchange (DEX) built on TON blockchain.
The Soku Dex SDK provides an interface for interacting with decentralized exchange contracts on the TON blockchain. This document covers all exported classes, types, and utilities.
npm i --save @soku-dex/sdk
You can check latest API docs here
import { LiquidityPool } from '../sdk';
import { TonClient } from '@ton/ton';
const client = new TonClient({ endpoint: 'https://toncenter.com/api/v2/jsonRPC' });
const pool = await LiquidityPool.create({
network: 'testnet',
client,
sender: yourSender,
curve: 'balanced',
tokenType0: 'jetton',
tokenType1: 'jetton',
tokenMaster0: jettonMaster0,
tokenMaster1: jettonMaster1,
dryRun: false
});
console.log('Pool deployed at:', pool.address);
import { Dex } from '../sdk';
const dex = new Dex(client, dexAddress);
// Simulate the swap first
const simulation = await dex.simulateDexSwap(1000, true);
console.log('Expected output:', simulation.amountOut);
console.log('Fees:', simulation.fees);
// Build the swap payload
const swapPayload = Dex.buildJettonSwap(
simulation.amountOut,
destinationAddress,
toNano('0.1') // forward TON amount
);
import { LiquidityPool } from '../sdk';
const pool = new LiquidityPool(client, poolAddress);
const state = await pool.getLatest();
console.log('Pool balance:', state.balance);
console.log('Pool data:', state.data);
import { LiquidityPool, TOKEN_TYPES } from '../sdk';
// Create a TON/Jetton pool
const pool = await LiquidityPool.create({
network: 'mainnet',
client,
sender,
curve: 'unbalanced',
tokenType0: 'ton', // Native TON
tokenType1: 'jetton', // Jetton token
tokenMaster1: jettonMaster, // Only needed for jetton
dryRun: false
});