This section contains SDK example for performing swap in DEX
In this section, to illustrate all three possible types of a swap, we will do following exchange chain
swap 1 TON to STON (ton to jetton swap)
swap STON to GEMSTON (jetton to jetton swap)
swap GEMSTON back to TON (jetton to ton swap)
Swap TON to jetton
import TonWeb from"tonweb";import { DEX, pTON } from"@ston-fi/sdk";constrouter=newDEX.v1.Router({ tonApiClient:newTonWeb.HttpProvider(),});// swap 1 TON to STON but not less than 1 nano STONconsttxParams=awaitrouter.buildSwapTonToJettonTxParams({ userWalletAddress:"",// ! replace with your address proxyTonAddress:pTON.v1.address, offerAmount:newTonWeb.utils.BN("1000000000"), askJettonAddress:"EQA2kCVNwVsil2EM2mB0SkXytxCqQjS4mttjDpnXmwG9T6bO",// STON minAskAmount:newTonWeb.utils.BN("1"), queryId:12345,});// 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 purposesconsole.log({ to:txParams.to, amount:txParams.gasAmount, payload:txParams.payload,});
Swap jetton to jetton
import TonWeb from"tonweb";import { DEX, pTON } from"@ston-fi/sdk";constrouter=newDEX.v1.Router({ tonApiClient:newTonWeb.HttpProvider(),});// swap 1 STON to GEMSTON but not less than 1 nano GEMSTONconsttxParams=awaitrouter.buildSwapJettonToJettonTxParams({ userWalletAddress:"",// ! replace with your address offerJettonAddress:"EQA2kCVNwVsil2EM2mB0SkXytxCqQjS4mttjDpnXmwG9T6bO",// STON offerAmount:newTonWeb.utils.BN("1000000000"), askJettonAddress:"EQBX6K9aXVl3nXINCyPPL86C4ONVmQ8vK360u6dykFKXpHCa",// GEMSTON minAskAmount:newTonWeb.utils.BN("1"), queryId:12345,});// 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 purposesconsole.log({ to:txParams.to, amount:txParams.gasAmount, payload:txParams.payload,});
Swap jetton to TON
import TonWeb from"tonweb";import { DEX, pTON } from"@ston-fi/sdk";constrouter=newDEX.v1.Router({ tonApiClient:newTonWeb.HttpProvider(),});// swap 1 GEMSTON to TON but not less than 1 nano TONconsttxParams=awaitrouter.buildSwapJettonToTonTxParams({ userWalletAddress:"",// ! replace with your address offerJettonAddress:"EQBX6K9aXVl3nXINCyPPL86C4ONVmQ8vK360u6dykFKXpHCa",// GEMSTON offerAmount:newTonWeb.utils.BN("1000000000"), proxyTonAddress:pTON.v1.address, minAskAmount:newTonWeb.utils.BN("1"), queryId:12345,});// 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 purposesconsole.log({ to:txParams.to, amount:txParams.gasAmount, payload:txParams.payload,});
Recommended gas values
Below are recommended values for TON sent and forward gas for each type of the swap: