Pool
pool
Interface
getIsActive
(int) getIsActive ()
Returns is pool is active
Return Values
0
int
int containing the pool::pool_active
getPoolStateAndConfiguration
(slice, slice, slice, slice, slice, slice, slice, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, slice, int, slice, slice, slice, int ) getPoolStateAndConfiguration ()
Returns pool state and configuration
Return Values
0
slice
Router address
1
slice
Admin address
2
slice
Controller address
3
slice
Jetton 0 Wallet address. The wallet is owned by the Router
4
slice
Jetton 1 Wallet address. The wallet is owned by the Router
5
slice
Jetton 0 Minter address.
6
slice
Jetton 1 Minter address.
7
int
Flag that denotes if the pool is active
8
int
Pool tick spacing
9
int
Fee that is used as a base. Stored in x 1/10000
10
int
Fee that protocol takes. Stored in x 1/10000
11
int
Fee that is currently active. Stored in x 1/10000
12
int
Current tick
13
int
Current price
14
int
Current liquidity
15
int
pool::feeGrowthGlobal0X128
16
int
pool::feeGrowthGlobal1X128
17
int
Amount of jetton0 fee collected for protocol owners
18
int
Amount of jetton1 fee collected for protocol owners
19
int
Number of total minted NFT positions
20
int
Reserves of the jetton0
21
int
Reserves of the jetton1
22
int
Number of active NFT positions
23
int
Number of currently occupied ticks
24
int
Number of operations with pool since the deploy
25
slice
Arbiter address
getChildContracts
(cell, cell, cell, cell) getChildContracts ()
Return Values
1
cell
code of the account contract
2
cell
code of the nft position contract
3
cell
metadata for NFT Collection
4
cell
metadata for NFT Item
getAllTickInfos
(cell) getAllTickInfos ()
returns the cell with all the ticks.
Return Values
1
cell
cell that contains the dict with all the ticks.
getTickInfosFrom
(tuple) getTickInfosFrom (int key, int amount, int dir, int full)
Returns ticks starting form key (non-inclusive) 0 forward 1 backward
Parameters
0
int
key
1
int
amount
2
int
dir
3
int
full
Return Values
0
tuple
a tuple with keys
getFeeGrowthInside
(int, int) getFeeGrowthInside (int tickLower, int tickUpper, int posLiquidityDelta, int feeGrowthGlobal0X128, int feeGrowthGlobal1X128)
Helper method to estimate fee growth inside a given position
Parameters
0
int
tickLower
1
int
tickUpper
2
int
posLiquidityDelta
3
int
feeGrowthGlobal0X128
4
int
feeGrowthGlobal1X128
Return Values
0
int
amount of jetton0 that is collected
1
int
amount of jetton1 that is collected
getCollectedFees
(int, int) getCollectedFees (int tickLower, int tickUpper, int posLiquidityDelta, int posFeeGrowthInside0X128, int posFeeGrowthInside1X128)
Predicts how much fees a position can collect
Parameters
0
int
tickLower
1
int
tickUpper
2
int
posLiquidityDelta
3
int
posFeeGrowthInside0X128
4
int
posFeeGrowthInside1X128
Return Values
0
int
amount of jetton0 that is collected
1
int
amount of jetton1 that is collected
getUserAccountAddress
(slice) getUserAccountAddress (slice user_address)
computes user account address for a given user
@return0 account address
getMintEstimate
(int, int, int) getMintEstimate (int tickLower, int tickUpper, int liquidity)
Computes estimates for the mint
Parameters
0
int
tickLower
1
int
tickUpper
2
int
liquidity
Return Values
0
int
amount of jetton0 needed to mint the position
1
int
amount of jetton1 needed to mint the position
2
int
error code that shows if the basic checks for the mint would succeed
getSwapEstimate
(int, int) getSwapEstimate (int zeroForOne, int amount, int sqrtPriceLimitX96)
Deprecated Computes estimates fot the swap
Parameters
0
int
zeroForOne
1
int
amount
2
int
sqrtPriceLimitX96
Return Values
0
int
amount of jetton0 that would be put to/get from the pool
1
int
amount of jetton1 that would be put to/get from the pool
getSwapEstimateGas
(int, int) getSwapEstimateGas (int zeroForOne, int amount, int sqrtPriceLimitX96, int minOutAmount, int gasLimit)
Computes estimates for the swap
Parameters
0
int
zeroForOne
1
int
amount
2
int
sqrtPriceLimitX96
undefined
undefined
undefined
4
int
gasLimit
amount of gas (in gas units). If gasLimit is 0 - default value is used - that equals to contract gas limit from the config
Return Values
0
int
amount of jetton0 that would be put to/get from the pool
1
int
amount of jetton1 that would be put to/get from the pool
get_collection_data
(int, cell, slice) get_collection_data ()
In accordance with TEP-62
Return Values
0
int
1
cell
2
slice
get_nft_address_by_index
(slice) get_nft_address_by_index (int index)
In accordance with TEP-62
Return Values
0
slice
get_nft_content
(cell) get_nft_content (int index, cell nftitem_content)
In accordance with TEP-62 we will form the output NFT onchain metadata
If NFTItemContent "description" field that is passed to the pool by the pool administrator (pool::nftv3item_content) begins with marker "%N%", data from the NFT is added to the beginning of the "description" field. If there is no data attached to the dictionary by the NFT, NFTItemContent description is unchanged
Return Values
0
cell
get_pending_timelocks
(int, int, cell, int, slice, int, slice, int, int ) get_pending_timelocks ()
Get timelocked changes pending to be applied
Messages
POOL_INIT
Opcode : 0x441c39ed
The first mandatory operation that fills crucial parameters of the pool
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
from_admin
Uint(1),Bool
Flag that shows if this message goes from router admin or pool factory
0
Cell(0) roles_cell
Cell With Role
0
has_admin
Uint(1),Bool
Flag that shows if this message have a new admin address
0
admin_addr
Address(267)
New address of the admin. If has_admin is false could be 00b
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
0
0
Cell(0) privilege_roles_cell
Cell With Privilege Roles
0->0
has_arbiter
Uint(1),Bool
Flag that shows if this message have a new Arbiter address
0->0
arbiter_addr
Address(267)
Address that is allowed to make privileged swaps
0->0
has_alm
Uint(1),Bool
Flag that shows if this message have a new ALM address
0->0
alm_addr
Address(267)
Address that is used to identify ALM contract
0
1
Cell(0) roles_add
Cell With Additional Roles
0->1
has_oracle
Uint(1),Bool
Flag that shows if this message have a new oracle address
0->1
oracle_addr
Address(267)
Address that is allowed to change the fee. Can always be updated by admin. Could be 00b
set_spacing
Uint(1),Bool
Flag that shows if tick_spacing should be set to the pool or ignored
tick_spacing
Int(24)
Tick spacing to be used in the pool
set_price
Uint(1),Bool
Flag that shows if initial_priceX96 should be set to the pool or ignored
initial_priceX96
Uint(160),PriceX96
Initial price for the pool
set_active
Uint(1),Bool
Flag that shows if pool_active should be set to the pool or ignored
pool_active
Uint(1),Bool
Flag is we should start the pool as unlocked
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
1
Maybe Cell(1) сode_cell
Cell With Minters
1
pool_code
Cell(0),Code
Pool code
1
account_code
Cell(0),Code
Account code
1
position_code
Cell(0),Code
Position code
2
Maybe Cell(1) сontent_cell
Cell With Minters
2
nft_content
Cell(0),Metadata
Metadata for the NFT Collection
2
nft_item_content
Cell(0),Metadata
Metadata for the NFT Item
3
Maybe Cell(1) minter_cell
Cell With Minters
3
jetton0_minter
Address(267)
Address of the jetton0 minter, used by indexer and frontend
3
jetton1_minter
Address(267)
Address of the jetton1 minter, used by indexer and frontend
POOL_LOCK
Opcode : 0x5e74697
This operation locks the pool. This is allowed to do by the operator and the admin
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
POOL_UNLOCK
Opcode : 0x3205adbd
This operation locks the pool. This is allowed to do by the operator and the admin
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
POOL_SET_FEE
Opcode : 0x6bdcbeb8
This operation sets the fee values for the pool. This is allowed to do by the operator and the admin
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
protocol_fee
Uint(16)
Liquidity provider fee. base in FEE_DENOMINATOR parts
lp_fee_base
Uint(16)
Protocol fee in FEE_DENOMINATOR
lp_fee_current
Uint(16)
Current value of the pool fee, in case of dynamic adjustment
POOL_FUND_ACCOUNT
Opcode : 0x4468de77
Proxy proof of the jettons funding and mint request to the Account. For more information refer to Account
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
owner_addr
Address(267)
Address that would receive the minted NFT, excesses and refunds
initiator_addr
Address(267)
Address that started funding sending
0
Cell(0) funds_cell
Cell with parameters
0
fundFirst
Uint(1),Boolean
If the amount the jetton0 in the pool
0
amount0
Coins(124)
Amount of jetton that is funded for the mint
0
amount1
Coins(124)
Amount of the other jetton that is funded for the mint (unused)
0
inputWallet
Address(267)
Address that would be user for sending refund in case of the bounce
1
Maybe Cell(1) order_cell
Cell with order
1
enough0
Coins(124)
When temporary storage (user account) satisfy both enough0/1 amounts - mint would trigger
1
enough1
Coins(124)
When temporary storage (user account) satisfy both enough0/1 amounts - mint would trigger
1
needPos
Uint(64)
Amount of positions that are enough for the order to be executed
1
passthrough
Uint(4)
Amount of positions that will be untouched
1
target_action
Uint(32)
target_action
1
0
Maybe Cell(1) MintOrder0
Cell with mint order
1->0
op0
Uint(32)
1->0
liquidity0
Uint(128)
Amount of liquidity to mint
1->0
tickLower0
Int(24)
lower bound of the range in which to mint
1->0
tickUpper0
Int(24)
upper bound of the range in which to mint
1->0
receiver0
Address(267)
Address of receiver of the NFT
1
1
Maybe Cell(1) MintOrder1
Cell with mint order
1->1
op1
Uint(32)
1->1
liquidity1
Uint(128)
Amount of liquidity to mint
1->1
tickLower1
Int(24)
lower bound of the range in which to mint
1->1
tickUpper1
Int(24)
upper bound of the range in which to mint
1->1
receiver1
Address(267)
Address of receiver of the NFT
1
2
Maybe Cell(1) MintOrder2
Cell with mint order
1->2
op2
Uint(32)
1->2
liquidity2
Uint(128)
Amount of liquidity to mint
1->2
tickLower2
Int(24)
lower bound of the range in which to mint
1->2
tickUpper2
Int(24)
upper bound of the range in which to mint
1->2
receiver2
Address(267)
Address of receiver of the NFT
1
3
Maybe Cell(1) MintOrder3
Cell with mint order
1->3
op3
Uint(32)
1->3
liquidity3
Uint(128)
Amount of liquidity to mint
1->3
tickLower3
Int(24)
lower bound of the range in which to mint
1->3
tickUpper3
Int(24)
upper bound of the range in which to mint
1->3
receiver3
Address(267)
Address of receiver of the NFT
POOL_START_BURN
Opcode : 0x530b5f2c
Burn whole or part of nft. Can be called by anyone, but if not called be the owner - would fail later. This operation would compute the amount of the fees that the position is eligible to get and then forwards a message to the Position NFT contract
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
burned_index
Uint(64)
Index if the NFT to burn
liquidity2Burn
Uint(128)
Amount of the liquidity to burn, 0 is a valid amount, in this case only collected fees would be returned
tickLower
Int(24)
Lower tick of the NFT. Should match the real one
tickUpper
Int(24)
Upper tick of the NFT. Should match the real one
POOL_SWAP
Opcode : 0xa7fb58f8
V1.5 Computes the swap math, and issues a command to the router to send funds. Only would be accepted from the router This operation we have several input parameters that would affect the result of the swap
Swap finished sqrtPriceLimitX96 not reached. minOutAmount surpassed
total output number of coins
0
RESULT_SWAP_OK
Swap finished minOutAmount not surpassed
0
amount
RESULT_SWAP_OUTPUT_TOO_SMALL
Swap reached sqrtPriceLimitX96 after changing part1 coins. minOutAmount surpassed
output number of coins
amount - part1
RESULT_SWAP_OK
Access Rights: This operation is allowed for pool::router_address
op
Uint(32),op
query_id
Uint(64)
queryid as of the TON documentation
source_type
Uint(4)
Type of source
from_user
Address(267)
User that initiated the swap. This is used to control access
owner_address
Address(267)
Owner of the liquidity in swap
zeroForOne
Uint(1),Boolean
used to identify swap direction
0
Cell(0) params_cell
Cell with parameters
0
amount
Coins(124)
Input amount of the jettons to be swapped
0
sqrtPriceLimitX96
Uint(160),PriceX96
Limit marginal price. Swap won't go beyond it.
0
minOutAmount
Coins(124)
Minimum amount of the output jettons to get back. If not reached, your input would be returned to you
1
Cell(0) payloads_cell
Cell with payloads for swap result and change
1
target_address
Address(267)
Target will receive the result of the swap. Could be addr_none() (*00b*) then owner_address is used
1
ok_forward_amount
Coins(124)
Amount of TON to use for forward payload that would be sent with the result of the swap
1
ok_forward_payload
Cell(0),Maybe,Payload
Payload that would be sent with the jettons of the result of the swap
1
ret_forward_amount
Coins(124)
Amount of TON to use for forward payload that would be sent with the change for the swap (if any)
1
ret_forward_payload
Cell(0),Maybe,Payload
Payload that would be sent with the jettons of the change of the swap (if any)
Last updated