LogoLogo
ston-fi/docs
ston-fi/docs
  • User section
    • About
    • STON.fi Protocol
    • Fees
    • Glossary
    • Procedure for Adding Tokens to the Default List
    • Whitepaper
  • Developer section
    • Architecture
    • SDK
      • DEX v1 guide
        • reference
        • swap
        • provide liquidity
        • refund liquidity
        • burn liquidity tokens
      • DEX v2 guide
        • swap
        • provide liquidity
        • refund liquidity
        • burn liquidity tokens
        • withdraw fee from vault
      • Farm guide
        • stake in farm
        • claim farm rewards
        • unstake from farm
        • destroy farm NFT
      • Transaction sending guide
        • via ton
        • via tonweb
        • via tonconnect
      • v0.5 > v1.0.0 migration guide
      • v0.5 (deprecated)
        • DEX guide
          • swap
          • provide liquidity
          • refund liquidity
          • burn liquidity tokens
        • Farm guide
          • stake in farm
          • claim farm rewards
          • unstake from farm
          • destroy farm NFT
        • Transaction sending guide
          • via ton
          • via tonweb
          • via tonconnect
      • v0.4 > v0.5 migration guide
      • v0.4 (deprecated)
        • perform a swap operation
        • provide liquidity
        • refund liquidity
        • burn liquidity tokens
        • using get methods
        • create a custom router revision
    • API reference v1
      • Router
      • Pool
      • LpAccount
      • LpWallet
    • API reference v2
      • Router
      • Pool
      • LpAccount
      • LpWallet
      • Vault
      • Swap examples
      • LpProvide examples
      • Vault examples
      • Op Codes
    • DEX API
    • OMNISTON
      • Resolvers (How to become a resolver)
      • Swap overview
      • Swap extra
      • Swap grpc
      • React
      • Nodejs
      • Referral fees
    • Quickstart Guides
      • Swap Guide
      • Omniston Guide
  • Help
    • Contact Us
Powered by GitBook
On this page
  • Jetton/Jetton pool deposit (two sides)
  • Jetton/Jetton pool deposit (single sides)
  • TON/Jetton pool deposit (two sides)
  • TON/Jetton pool deposit (single sides)
Export as PDF
  1. Developer section
  2. SDK
  3. DEX v2 guide

provide liquidity

This section contains SDK example for providing liquidity in DEX

PreviousswapNextrefund liquidity

Last updated 13 days ago

If you are simulating a liquidity provision with the endpoint and your LP account already holds some tokens (e.g., "lp_account_token_a_balance": "more than 0" or "lp_account_token_b_balance": "more than 0"), setting token_a_units or token_b_units in request might lead to an inaccurate min_lp_units in the simulation result. This could result in permanent loss of funds. We strongly encourage you to before proceeding.

Provide liquidity for a pool

Jetton/Jetton pool deposit (two sides)

import { TonClient, toNano } from "@ton/ton";
import { DEX } from "@ston-fi/sdk";

const USER_WALLET_ADDRESS = ""; // ! replace with your address
const JETTON_0_ADDRESS = "kQDLvsZol3juZyOAVG8tWsJntOxeEZWEaWCbbSjYakQpuYN5"; // TestRED
const JETTON_1_ADDRESS = "kQB_TOJSB7q3-Jm1O8s0jKFtqLElZDPjATs5uJGsujcjznq3"; // TestBLUE

const client = new TonClient({
  endpoint: "https://testnet.toncenter.com/api/v2/jsonRPC",
});

const router = client.open(
  DEX.v2_1.Router.CPI.create(
    "kQALh-JBBIKK7gr0o4AVf9JZnEsFndqO0qTCyT-D-yBsWk0v" // CPI Router v2.1.0
  )
);

const txParams = await Promise.all([
  // deposit 1 TestRED to the TestRED/TestBLUE pool and get at least 1 nano LP token
  router.getProvideLiquidityJettonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    sendTokenAddress: JETTON_0_ADDRESS,
    sendAmount: toNano("1"),
    otherTokenAddress: JETTON_1_ADDRESS,
    minLpOut: "1",
    queryId: 12345,
  }),
  // deposit 1 TestBLUE to the TestRED/TestBLUE pool and get at least 1 nano LP token
  router.getProvideLiquidityJettonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    sendTokenAddress: JETTON_1_ADDRESS,
    sendAmount: toNano("1"),
    otherTokenAddress: JETTON_0_ADDRESS,
    minLpOut: "1",
    queryId: 123456,
  }),
]);

Jetton/Jetton pool deposit (single sides)

const USER_WALLET_ADDRESS = ""; // ! replace with your address
const JETTON_0_ADDRESS = "kQDLvsZol3juZyOAVG8tWsJntOxeEZWEaWCbbSjYakQpuYN5"; // TestRED
const JETTON_1_ADDRESS = "kQB_TOJSB7q3-Jm1O8s0jKFtqLElZDPjATs5uJGsujcjznq3"; // TestBLUE

const client = new TonClient({
  endpoint: "https://testnet.toncenter.com/api/v2/jsonRPC",
});

const router = client.open(
  DEX.v2_1.Router.CPI.create(
    "kQALh-JBBIKK7gr0o4AVf9JZnEsFndqO0qTCyT-D-yBsWk0v" // CPI Router v2.1.0
  )
);

// deposit 1 TestRED to the TestRED/TestBLUE pool and get at least 1 nano LP token
const txParams = await router.getSingleSideProvideLiquidityJettonTxParams({
  userWalletAddress: USER_WALLET_ADDRESS,
  sendTokenAddress: JETTON_0_ADDRESS,
  sendAmount: toNano("1"),
  otherTokenAddress: JETTON_1_ADDRESS,
  minLpOut: "1",
  queryId: 123456,
});

TON/Jetton pool deposit (two sides)

import { TonClient, toNano } from "@ton/ton";
import { DEX, pTON } from "@ston-fi/sdk";

const USER_WALLET_ADDRESS = ""; // ! replace with your address
const JETTON_0_ADDRESS = "kQDLvsZol3juZyOAVG8tWsJntOxeEZWEaWCbbSjYakQpuYN5"; // TestRED

const client = new TonClient({
  endpoint: "https://testnet.toncenter.com/api/v2/jsonRPC",
});

const router = client.open(
  DEX.v2_1.Router.CPI.create(
    "kQALh-JBBIKK7gr0o4AVf9JZnEsFndqO0qTCyT-D-yBsWk0v" // CPI Router v2.1.0
  )
);

const proxyTon = pTON.v2_1.create(
  "kQACS30DNoUQ7NfApPvzh7eBmSZ9L4ygJ-lkNWtba8TQT-Px" // pTON v2.1.0
);

const txParams = await Promise.all([
  // deposit 1 TON to the TON/TestRED pool and get at least 1 nano LP token
  router.getProvideLiquidityTonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    proxyTon,
    sendAmount: toNano("1"),
    otherTokenAddress: JETTON_0_ADDRESS,
    minLpOut: "1",
    queryId: 12345,
  }),
  // deposit 1 TestRED to the TON/TestRED pool and get at least 1 nano LP token
  router.getProvideLiquidityJettonTxParams({
    userWalletAddress: USER_WALLET_ADDRESS,
    sendTokenAddress: JETTON_0_ADDRESS,
    sendAmount: toNano("1"),
    otherTokenAddress: proxyTon.address,
    minLpOut: "1",
    queryId: 123456,
  }),
]);

TON/Jetton pool deposit (single sides)

import { TonClient, toNano } from "@ton/ton";
import { DEX, pTON } from "@ston-fi/sdk";

const USER_WALLET_ADDRESS = ""; // ! replace with your address
const JETTON_0_ADDRESS = "kQDLvsZol3juZyOAVG8tWsJntOxeEZWEaWCbbSjYakQpuYN5"; // TestRED

const client = new TonClient({
  endpoint: "https://testnet.toncenter.com/api/v2/jsonRPC",
});

const router = client.open(
  DEX.v2_1.Router.CPI.create(
    "kQALh-JBBIKK7gr0o4AVf9JZnEsFndqO0qTCyT-D-yBsWk0v" // CPI Router v2.1.0
  )
);

const proxyTon = pTON.v2_1.create(
  "kQACS30DNoUQ7NfApPvzh7eBmSZ9L4ygJ-lkNWtba8TQT-Px" // pTON v2.1.0
);

// deposit 1 TON to the TON/TestRED pool and get at least 1 nano LP token
const txParams = await router.getSingleSideProvideLiquidityTonTxParams({
  userWalletAddress: USER_WALLET_ADDRESS,
  proxyTon,
  sendAmount: toNano("1"),
  otherTokenAddress: JETTON_0_ADDRESS,
  minLpOut: "1",
  queryId: 12345,
});

To execute the transaction, you need to send a transaction with these parameters to the blockchain. This code will be different based on the wallet you are using to send the tx from, so please check our with examples for different libraries.

To execute the transaction, you need to send a transaction with these parameters to the blockchain. This code will be different based on the wallet you are using to send the tx from, so please check our with examples for different libraries.

To execute the transaction, you need to send a transaction with these parameters to the blockchain. This code will be different based on the wallet you are using to send the tx from, so please check our with examples for different libraries.

To execute the transaction, you need to send a transaction with these parameters to the blockchain. This code will be different based on the wallet you are using to send the tx from, so please check our with examples for different libraries.

simulate liquidity provision
refund any old LP account tokens
doc section about transaction sending guide
doc section about transaction sending guide
doc section about transaction sending guide
doc section about transaction sending guide