Router
router
Interface
getRouterState
(address, address, address, address?, int, int, int) getRouterState ()
returns router admin address
Return Values
0
address
router admin address
getPoolAddress
(address) getPoolAddress (jettonWallet0: address, jettonWallet1: address)
returns pool address for two given jetton_wallets belonging to the router
Parameters
undefined
undefined
undefined
Address of the jetton 0 wallet belonging to router
undefined
undefined
undefined
Address of the jetton 1 wallet belonging to router
Return Values
0
address
pool address
getChildContracts
(cell, cell, cell, cell) getChildContracts ()
returns code of the child contracts deprecated
Return Values
0
cell
code of the pool contract
1
cell
code of the account contract
2
cell
code of the nft position contract
3
cell
code of the pool prototype contract
get_pending_timelocks
( int, int, address?, int, address?, int, int, int, cell?, int, cell?,) get_pending_timelocks ()
returns active router timelocks to monitor system state. Timestamp 0xFFFFFFFFFFFFFFFF means - never/timelock not active
Return Values
0
int
Timelock delay
1
int
Timestamp when new code can be committed
2
address?
Cell with new code
3
int
Timestamp when new Admin Address can be committed
4
address?
New Admin Address
5
int
Timestamp when new Proxy Ton Address can be committed
6
int
New Proxy Ton Address
7
int
Timestamp when new flags can be committed
8
cell?
New Flags
Messages
JETTON_TRANSFER_NOTIFICATION
Opcode : 0x7362d09c
Process router funding, payload determines if it is mint or swap
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
jetton_amount
Coins(124)
Amount of coins sent to the router
from_user
Address(267)
User that originated the transfer
forward_payload
Cell(0),Either, Payload
Payload for processing
ROUTER_CREATE_POOL
Opcode : 0x2e3034ef
Operation that deploys and inits new Pool contract for two given jettons identified by their wallets. New pool would reorder the jettons to match the invariant slice_hash(jetton0_address) > slice_hash(jetton1_address).
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
jetton_wallet0
Address(267)
Address of the jetton0 wallet. Used to compute pool address
jetton_wallet1
Address(267)
Address of the jetton1 wallet. Used to compute pool address
tick_spacing
Int(24)
Tick spacing to be used in the pool
initial_priceX96
Uint(160),PriceX96
Initial price for the pool
pool_active
Uint(1)
Should pool be created as active
protocol_fee
Uint(16),Fee
Liquidity provider fee. base in FEE_DENOMINATOR parts. If value is more than 10000 value would be default
lp_fee_base
Uint(16),Fee
Protocol fee in FEE_DENOMINATOR. If value is more than 10000 value would be default
lp_fee_current
Uint(16),Fee
Current value of the pool fee, in case of dynamic adjustment. If value is more than 10000 value would be default
0
Cell(0) roles_cell
Cell With Role
0
has_controller
Uint(1),Bool
Flag that shows if this message have a new controller address
0
controller_addr
Address(267)
Address that is allowed to change the fee. Can always be updated by admin.
0
has_creator
Uint(1),Bool
Flag that shows if this message have a new creator address
0
creator_addr
Address(267)
Address that is allowed to change the fee. Can always be updated by admin. If has_controller is false could be 00b
1
Cell(0) metadata_cell
Cell With Metainfo
1
nftv3_content
Cell(0),Metadata
Metadata for the NFT Collection
1
nftv3item_content
Cell(0),Metadata
Metadata for the NFT Item
2
Cell(0) minter_cell
Cell With Minters
2
jetton0_minter
Address(267)
Address of the jetton0 minter, used by indexer and frontend
2
jetton1_minter
Address(267)
Address of the jetton1 minter, used by indexer and frontend
ROUTER_PAY_TO
Opcode : 0xa1daa96d
This message is the message that is sent to Router by the pool, an it would be accepted only from the pool:
Possible error codes
SWAP
RESULT_SWAP_OK
200
Swap went fine
SWAP
RESULT_SWAP_OUTPUT_TOO_SMALL
230
minAmount was not reached, swap reverted
SWAP
RESULT_SWAP_INTERNAL_ERROR
231
Internal error, generally this should not happen
SWAP
RESULT_SWAP_POOL_LOCKED
232
Attempt to swap in the locked pool
SWAP
RESULT_SWAP_POOL_EMPTY
233
Attempt to swap in the empty pool
MINT
RESULT_MINT_OK
202
Mint went fine
MINT
RESULT_NO_LIQUIDITY
226
Minting Zero liquidity was asked (not always unintended)
MINT
RESULT_TICK_IMPOSSIBLE_LOW
220
One of the ticks is too low
MINT
RESULT_TICK_IMPOSSIBLE_HIGH
221
One of the ticks is too high
MINT
RESULT_WRONG_TICK_SPACING
222
One of ticks is not divisible by tick_spacing
MINT
RESULT_TOO_MANY_TICKS
223
Pool is full
MINT
RESULT_TOO_MUCH_LIQUIDITY
224
Too much liquidity in one tick
MINT
RESULT_NOT_ENOUGH_COINS
225
Not enough coins to mint
BURN
RESULT_BURN_OK
201
Burn went fine
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
reciever0
Address(267)
Address of the first receiver of the funds
reciever1
Address(267)
Address of the second receiver of the funds
exit_code0
Uint(8),ErrorCode
Exit code for order 0
exit_code1
Uint(8),ErrorCode
Exit code for order 1
exit_code2
Uint(8),ErrorCode
Exit code for order 2
exit_code3
Uint(8),ErrorCode
Exit code for order 3
seqno
Uint(64),Indexer
Internal pool sequence number
0
Maybe Cell(1) coinsinfo_cell
Cell with info about the coins
0
jetton0_address
Address(267)
Jetton to be sent to receiver0 identified by the wallet that belongs to router
0
jetton1_address
Address(267)
Jetton to be sent to receiver1 identified by the wallet that belongs to router
0
amount0
Coins(124)
Amount of coins to be payed to receiver0
0
amount1
Coins(124)
Amount of coins to be payed to receiver1
0
0
Cell(0) indexer_swap_info_cell
Information about the payload
0->0
payload_amount0
Coins(124)
0->0
payload_0
Cell(1),Maybe, Payload
0->0
payload_amount1
Coins(124)
0->0
payload_1
Cell(1),Maybe, Payload
Predicate
exit_code0 = 200
1
Maybe Cell(1) indexer_swap_info_cell
Information for indexer to process after the swap
1
liquidity
Uint(128),Indexer
Post-swap concentrated liquidity at current tick
1
price_sqrt
Uint(160),Indexer,PriceX96
Post-swap square root of the price stored as fixed point 64.96
1
tick
Int(24),Indexer
Post-swap current tick
1
feeGrowthGlobal0X128
Int(256),Indexer
Current range fee per unit of the liquidity for jetton0
1
feeGrowthGlobal1X128
Int(256),Indexer
Current range fee per unit of the liquidity for jetton1
Predicate
exit_code0 != 200
2
Maybe Cell(1) indexer_info_cell
Information for indexer to process after the burn
3
Maybe Cell(1) positions_cell
Cell with positions
3
0
Maybe Cell(1) burn0
Cell with burn number 0
3->0
index[0]
Uint(64)
3->0
subindex[0]
Uint(4)
Subindex
3->0
liquidity[0]
Uint(128)
3->0
tickLower[0]
Int(24)
lower bound of the range in which to mint
3->0
tickUpper[0]
Int(24)
upper bound of the range in which to mint
3->0
feeGrowthInside0LastX128[0]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->0
feeGrowthInside1LastX128[0]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3,0
0
Maybe Cell(1) new_fee_cell
Fee counters to collect to (Used by indexer)
3->0->0
feeGrowthInside0CurrentX128[0]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->0->0
feeGrowthInside1CurrentX128[0]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3->0
liquidity2Burn[0]
Uint(128)
3
1
Maybe Cell(1) burn1
Cell with burn number 1
3->1
index[1]
Uint(64)
3->1
subindex[1]
Uint(4)
Subindex
3->1
liquidity[1]
Uint(128)
3->1
tickLower[1]
Int(24)
lower bound of the range in which to mint
3->1
tickUpper[1]
Int(24)
upper bound of the range in which to mint
3->1
feeGrowthInside0LastX128[1]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->1
feeGrowthInside1LastX128[1]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3,1
0
Maybe Cell(1) new_fee_cell
Fee counters to collect to (Used by indexer)
3->1->0
feeGrowthInside0CurrentX128[1]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->1->0
feeGrowthInside1CurrentX128[1]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3->1
liquidity2Burn[1]
Uint(128)
3
2
Maybe Cell(1) burn2
Cell with burn number 2
3->2
index[2]
Uint(64)
3->2
subindex[2]
Uint(4)
Subindex
3->2
liquidity[2]
Uint(128)
3->2
tickLower[2]
Int(24)
lower bound of the range in which to mint
3->2
tickUpper[2]
Int(24)
upper bound of the range in which to mint
3->2
feeGrowthInside0LastX128[2]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->2
feeGrowthInside1LastX128[2]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3,2
0
Maybe Cell(1) new_fee_cell
Fee counters to collect to (Used by indexer)
3->2->0
feeGrowthInside0CurrentX128[2]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->2->0
feeGrowthInside1CurrentX128[2]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3->2
liquidity2Burn[2]
Uint(128)
3
3
Maybe Cell(1) burn3
Cell with burn number 3
3->3
index[3]
Uint(64)
3->3
subindex[3]
Uint(4)
Subindex
3->3
liquidity[3]
Uint(128)
3->3
tickLower[3]
Int(24)
lower bound of the range in which to mint
3->3
tickUpper[3]
Int(24)
upper bound of the range in which to mint
3->3
feeGrowthInside0LastX128[3]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->3
feeGrowthInside1LastX128[3]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3,3
0
Maybe Cell(1) new_fee_cell
Fee counters to collect to (Used by indexer)
3->3->0
feeGrowthInside0CurrentX128[3]
Int(256),x128
Fee counter inside position range for jetton0, per unit of liquidity, in 128.128 fixed point
3->3->0
feeGrowthInside1CurrentX128[3]
Int(256),x128
Fee counter inside position range for jetton1, per unit of liquidity, in 128.128 fixed point
3->3
liquidity2Burn[3]
Uint(128)
ROUTERV3_RESET_GAS
Opcode : 0x42a0fb43
This operation allows router owners the gas if too much accumulated on the contract Access Rights: This operation is allowed for router::admin_address
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
Last updated