provide liquidity

This section contains SDK example for providing liquidity in DEX

Provide liquidity for a pool

Jetton/Jetton pool deposit

import TonWeb from "tonweb";
import { DEX } from "@ston-fi/sdk";

const USER_WALLET_ADDRESS = ""; // ! replace with your address
const JETTON_0_ADDRESS = "EQA2kCVNwVsil2EM2mB0SkXytxCqQjS4mttjDpnXmwG9T6bO"; // STON
const JETTON_1_ADDRESS = "EQBX6K9aXVl3nXINCyPPL86C4ONVmQ8vK360u6dykFKXpHCa"; // GEMSTON

const router = new DEX.v1.Router({
  tonApiClient: new TonWeb.HttpProvider(),
});

const txsParams = await Promise.all([
  // deposit 5 STON to the STON/GEMSTON pool and get at least 1 nano LP token
  router.buildProvideLiquidityJettonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    sendTokenAddress: JETTON_0_ADDRESS,
    sendAmount: new TonWeb.utils.BN("500000000"),
    otherTokenAddress: JETTON_1_ADDRESS,
    minLpOut: new TonWeb.utils.BN("1"),
    queryId: 12345,
  }),
  // deposit 2 GEMSTON to the STON/GEMSTON pool and get at least 1 nano LP token
  router.buildProvideLiquidityJettonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    sendTokenAddress: JETTON_1_ADDRESS,
    sendAmount: new TonWeb.utils.BN("200000000"),
    otherTokenAddress: JETTON_0_ADDRESS,
    minLpOut: new TonWeb.utils.BN("1"),
    queryId: 123456,
  }),
]);

// To execute the transaction, you need to send a transaction to the blockchain.
// This code will be different based on the wallet you are using to send the tx from
// logging is used for demonstration purposes
txsParams.map((txParams) => console.log({
  to: txParams.to,
  amount: txParams.gasAmount,
  payload: txParams.payload,
}));

TON/Jetton pool deposit

import TonWeb from "tonweb";
import { DEX, pTON } from "@ston-fi/sdk";

const USER_WALLET_ADDRESS = ""; // ! replace with your address
const JETTON_0_ADDRESS = "EQA2kCVNwVsil2EM2mB0SkXytxCqQjS4mttjDpnXmwG9T6bO"; // STON
const pTON_ADDRESS = pTON.v1.address;

const router = new DEX.v1.Router({
  tonApiClient: new TonWeb.HttpProvider(),
});

const txsParams = await Promise.all([
  // deposit 1 TON to the STON/TON pool and get at least 1 nano LP token
  router.buildProvideLiquidityTonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    proxyTonAddress: pTON_ADDRESS,
    sendAmount: new TonWeb.utils.BN("100000000"),
    otherTokenAddress: JETTON_0_ADDRESS,
    minLpOut: new TonWeb.utils.BN("1"),
    queryId: 12345,
  }),
  // deposit 5 STON to the STON/TON pool and get at least 1 nano LP token
  router.buildProvideLiquidityJettonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    sendTokenAddress: JETTON_0_ADDRESS,
    sendAmount: new TonWeb.utils.BN("500000000"),
    otherTokenAddress: pTON_ADDRESS,
    minLpOut: new TonWeb.utils.BN("1"),
    queryId: 123456,
  }),
]);

// To execute the transaction, you need to send a transaction to the blockchain.
// This code will be different based on the wallet you are using to send the tx from
// logging is used for demonstration purposes
txsParams.map((txParams) => console.log({
  to: txParams.to,
  amount: txParams.gasAmount,
  payload: txParams.payload,
}));

Last updated