Comment on page
Pool
This section contains op codes of the pool contract as well as corresponding SDK methods
Returns the current state of the pool: Jetton token reserves, Jetton wallet addresses and fee parameters.
FunC
TypeScript
(int, int, slice, slice, int, int, int, slice, int, int) get_pool_data() method_id;
async getData(): Promise<PoolData>
None
Returns
PoolData
structure containing current state of the pool.PoolData
structureKey | Type | Index | Description |
---|---|---|---|
reserve0 | BN | 0 | Amount of the first token (in basic token units) |
reserve1 | BN | 1 | Amount of the second token (in basic token units) |
token0WalletAddress | Address | 2 | Address of the first Jetton token |
token1WalletAddress | Address | 3 | Address of the second Jetton token |
lpFee | BN | 4 | Liquidity pool fee value |
protocolFee | BN | 5 | Protocol fee |
refFee | BN | 6 | Referral fee |
protocolFeeAddress | Address | 7 | Address for receiving protocol fees |
collectedToken0ProtocolFee | BN | 8 | Amount of collected protocol fees of the first token (in basic token units) |
collectedToken1ProtocolFee | BN | 9 | Amount of collected protocol fees of the second token (in basic token units) |
Notes:
- fee ratio is the value of fee divided by
FEE_DIVIDER
(10000); so a fee of 1% has a value of 100
Estimate expected result of the
amount
of jettonWallet
tokens swapped to the other type of tokens of the pool.FunC
TypeScript
(int, int, int) get_expected_outputs(int amount, slice token_wallet) method_id;
async getExpectedOutputs(params: {
amount: AmountType;
jettonWallet: AddressType;
}): Promise<ExpectedOutputsData>
Name | Type | Description |
---|---|---|
amount | AmountType | Amount of tokens to swap (in basic token units) |
jettonWallet | AddressType | Token Jetton address (must be equal to one of the Jetton addresses of the pool) |
Returns
ExpectedOutputsData
structure with expected result of a token swapExpectedOutputsData
structureKey | Type | Index | Description |
---|---|---|---|
jettonToReceive | BN | 0 | Amount of tokens received (in basic token units) |
protocolFeePaid | BN | 1 | Amount tokens paid for protocol fees (in basic token units) |
refFeePaid | BN | 2 | Amount tokens paid for referral fees (in basic token units) |
Estimate an expected amount of lp tokens minted when providing liquidity.
FunC
TypeScript
(int) get_expected_tokens(int amount0, int amount1) method_id;
async getExpectedTokens(params: {
amount0: AmountType;
amount1: AmountType;
}): Promise<BN>
Key | Type | Description |
---|---|---|
amount0 | AmountType | Amount of tokens for the first Jetton (in basic token units) |
amount1 | AmountType | Amount of tokens for the second Jetton (in basic token units) |
Returns an estimated amount of liquidity tokens to be minted
Estimate expected liquidity freed upon burning liquidity tokens.
FunC
TypeScript
(int, int) get_expected_liquidity(int jetton_amount) method_id;
async getExpectedLiquidity(params: {
jettonAmount: AmountType;
}): Promise<PoolAmountsData>
Key | Type | Description |
---|---|---|
jettonAmount | AmountType | Amount of liquidity tokens (in basic token units) |
Returns
PoolAmountsData
structure with expected freed liquidityPoolAmountsData
structureKey | Type | Index | Description |
---|---|---|---|
amount0 | BN | 0 | Amount of tokens for the first Jetton (in basic token units) |
amount1 | BN | 1 | Amount of tokens for the second Jetton (in basic token units) |
Get the lp account address of a user
FunC
TypeScript
slice get_lp_account_address(slice owner_address) method_id;
async getLpAccountAddress(params: {
ownerAddress: AddressType
}): Promise<Address | null>
Key | Type | Description |
---|---|---|
ownerAddress | AddressType | Address of a user |
Function
getLpAccountAddress
returns the lp account address of a userTypeScript
async getLpAccount(params: {
ownerAddress: AddressType
}): Promise<LpAccount | null>
Key | Type | Description |
---|---|---|
ownerAddress | AddressType | Address of a user |
Function
getLpAccount
returns an LpAccount
object for address returned by getLpAccountAddress
Standard jetton 'get' methods from TonWeb JettonMinter.
FunC
TypeScript
(int, int, slice, cell, cell) get_jetton_data() method_id;
async JettonMinter.getJettonData(): Promise<{
totalSupply: BN,
isMutable: boolean,
adminAddress: Address|null,
jettonContentUri: string|null,
jettonWalletCode: Cell
}>
None
Returns a structure with Jetton data
Return structure
Key | Type | Index | Description |
---|---|---|---|
totalSupply | BN | 0 | Total token supply (in basic token units) |
isMutable | boolean | 1 | If mutable |
adminAddress | Address | 2 | Admin address |
jettonContentUri | string | 3 | Offchain uri with Jetton data |
jettonWalletCode | Cell | 4 | Code of the lp Jetton wallet |
Get lp wallet address of a user.
FunC
TypeScript
slice get_wallet_address(slice owner_address) method_id;
async JettonMinter.getJettonWalletAddress(
ownerAddress: AddressType
): Promise<Address>
Name | Type | Description |
---|---|---|
ownerAddress | AddressType | Address of a user |
Function
getJettonWalletAddress
returns a calculated lp wallet address of a userTypeScript
async getJettonWallet(params: {
ownerAddress: AddressType;
}): Promise<JettonWallet>
Key | Type | Description |
---|---|---|
ownerAddress | AddressType | Address of a user |
Function
getJettonWallet
returns a JettonWallet
object for an address returned by getJettonWalletAddress
On-chain counterparts of getter methods.
Name | Value | Description |
---|---|---|
getter_pool_data | 0x43c034e6 | Sends a message with the current state of the pool |
getter_expected_outputs | 0xed4d8b67 | Sends a message with an estimated result of the token swap |
getter_lp_account_address | 0x9163a98a | Sends a message with the lp account address of a user |
getter_expected_tokens | 0x9ce632c5 | Sends a message with an estimated amount of lp tokens minted when providing liquidity |
getter_expected_liquidity | 0x8751801f | Sends a message with estimated liquidity freed upon burning of liquidity tokens |
provide_wallet_address | 0x2c76b973 | Sends a message with the lp wallet address of a user |
Sends a message with the current state of the pool. On-chain equivalent of
get_pool_data
.getter_pool_data#43c034e6 query_id:uint64 = InternalMsgBody;
None
Sends a message with current pool data to the
sender_address
Name | Type | Description |
---|---|---|
op | uint32 | Operation code is equal to getter_pool_data |
query_id | uint64 | Query id |
storage::reserve0 | coins | Amount of the first token (in basic token units) |
storage::reserve1 | coins | Amount of the second token (in basic token units) |
storage::token0_address | address | Address of the first Jetton token |
storage::token1_address | address | Address of the second Jetton token |
ref_fee_data | cell | Cell with fee data |
Name | Type | Description |
---|---|---|
storage::lp_fee | uint8 | Liquidity pool fee value |
storage::protocol_fee | uint8 | Protocol fee |
storage::ref_fee | uint8 | Referral fee |
storage::protocol_fee_address | address | Address for receiving protocol fees |
storage::collected_token0_protocol_fee | coins | Amount of collected protocol fees of the first token (in basic token units) |
storage::collected_token1_protocol_fee | coins | Amount of collected protocol fees of the second token (in basic token units) |
Sends a message with an estimated result of the token swap. On-chain equivalent of
get_expected_outputs
.getter_expected_outputs#ed4d8b67 query_id:uint64 amount:Grams token_wallet:MsgAddress = InternalMsgBody;
Name | Type | Description |
---|---|---|
amount | coins | Amount of tokens (in basic token units) |
token_wallet | address | Token Jetton address |
Sends a message with an estimated result of the token swap to
sender_address
Name | Type | Description |
---|---|---|
op | uint32 | Operation code is equal to getter_expected_outputs |
query_id | uint64 | Query id |
out | coins | Amount of tokens to be received (in basic token units) |
protocol_fee_out | coins | Amount tokens paid for protocol fees (in basic token units) |
ref_fee_out | coins | Amount tokens paid for referral fees (in basic token units) |
Sends a message with the lp account address of a user. On-chain equivalent of
get_lp_account_address
.getter_lp_account_address#9163a98a query_id:uint64 user_address:MsgAddress = InternalMsgBody;
Name | Type | Description |
---|---|---|
user_address | address | Address of a user |
Sends a message with the lp account address of a user to
sender_address
Name | Type | Description |
---|---|---|
op | uint32 | Operation code is equal to getter_expected_outputs |
query_id | uint64 | Query id |
lp_account_address | address | lp account address of a user |
Notes:
- the current version of the contract returns a message with
getter_expected_outputs
op code instead ofgetter_lp_account_address
so the user must differentiate those messages with some other means
Sends a message with an estimated amount of lp tokens minted when providing liquidity. On-chain equivalent of
get_expected_tokens
getter_expected_tokens#9ce632c5 query_id:uint64 user_address:MsgAddress amount0:Grams amount1:Grams = InternalMsgBody;
Name | Type | Description |
---|---|---|
user_address | address | User address (unused) |
amount0 | coins | Amount of tokens for the first Jetton (in basic token units) |
amount1 | coins | Amount of tokens for the second Jetton (in basic token units) |
Sends a message with an estimated amount of liquidity tokens to be minted to
sender_address
Name | Type | Description |
---|---|---|
op | uint32 | Operation code is equal to getter_expected_tokens |
query_id | uint64 | Query id |
liquidity | coins | Expected amount of liquidity tokens (in basic token units) |
Sends a message with estimated liquidity freed upon burning liquidity tokens. On-chain equivalent of
get_expected_liquidity
.getter_expected_liquidity#8751801f query_id:uint64 jetton_amount:Grams = InternalMsgBody;
Name | Type | Description |
---|---|---|
jetton_amount | coins | Amount of liquidity tokens to burn (in basic token units) |
Sends a message with estimated liquidity to
sender_address
Name | Type | Description |
---|---|---|
op | uint32 | Operation code is equal to getter_expected_tokens |
query_id | uint64 | Query id |
amount0_out | coins | Amount of tokens for the first Jetton (in basic token units) |
amount1_out | coins | Amount of tokens for the second Jetton (in basic token units) |
Sends a message with the lp wallet address of a user. On-chain equivalent of
get_wallet_address
.provide_wallet_address#2c76b973 query_id:uint64 owner_address:MsgAddress include_address?:Bool = InternalMsgBody;
Name | Type | Description |
---|---|---|
owner_address | address | Address of a user |
include_address? | uint1 | Include user address in the response message |
Sends a message back to sender with the calculated lp wallet address of a user
Name | Type | Description |
---|---|---|
op | uint32 | Operation code is equal to take_wallet_address (0xd1735400) |
query_id | uint64 | Query id |
lp_wallet_address | address | Calculated lp wallet address |
ref_address | cell | null | Cell with data if include_address? evaluates to true |
Name | Type | Description |
---|---|---|
included_address | address | Address of a user |
Handles operations sent from a Jetton wallet.
Name | Value | Description |
---|---|---|
burn_notification | 0x7bdd97de | Sent by LP wallet after burning LP jettons to release liquidity |
Sent by LP wallet after burning LP jettons to release liquidity.
burn_notification#7bdd97de query_id:uint64 jetton_amount:Grams from_address:MsgAddress response_address:MsgAddress = InternalMsgBody;
Name | Type | Description |
---|---|---|
jetton_amount | coins | Amount of liquidity tokens to burn (in basic token units) |
from_address | address | User address |
response_address | address | Address for a response message |
Sends a message with op
excesses
(0xd53276db) to response_address
Sends a message with a released amount of both tokens to be received by a user as a result of the burn operation to the router, which initiates
pay_to
operation to from_address
Handles messages from the router.
Name | Value | Description |
---|---|---|
swap | 0x25938561 | Swap tokens |
provide_lp | 0xfcf9e58f | Provide liquidity |
reset_gas | 0x42a0fb43 | Reset gas |
collect_fees | 0x1fcb7d3d | Collect fees |
set_fees | 0x355423e5 | Set new fee parameters |
Swap tokens. This message is received from the router when the user initiates a token swap.
ref_bodycell$_ from_real_user:MsgAddress ref_address:MsgAddress = RefBodyCell;
swap#25938561 query_id:uint64 from_user:MsgAddress token_wallet:MsgAddress amount:Grams min_out:Grams ref_bodycell:(Either RefBodyCell ^RefBodyCell) = InternalMsgBody;
Name | Type | Description |
---|---|---|
from_user_address | address | User address |
token_wallet | address | Incoming Jetton wallet address |
amount | coins | Amount of incoming tokens (in basic token units) |
min_out | coins | Minimum amount of received tokens (in basic token units) |
has_ref | uint1 | If referral is present |
ref_bodycell | cell | Cell with data |
Notes:
- swap will fail if a user should receive less than
min_out
of tokens as a result
Name | Type | Description |
---|---|---|
from_real_user | address | Who initialized the swap |
ref_address | address | Referral address; present only if has_ref is 1 |
Sends a message with an amount of the other tokens to be received by a user as a result of the swap to the router, which initiates
pay_to
operationAdditionally may send a message with referral fees to the router, which initiates
pay_to
operation to ref_address
Provide liquidity for the pool. A user must submit an amount of both tokens to receive lp tokens and add new liquidity to a pool. This message is routed to liquidity pool account with
add_liquidity
operation code.