LpAccount

This section contains api reference of the lp account contract

Off-chain get methods

get_lp_account_data

Returns current state of the LpAccount.

(slice, slice, int, int) get_lp_account_data() method_id;

Arguments

None

Result

Returns LpAccountData structure containing current state of the lp account.

LpAccountData structure

KeyTypeIndexDescription

user_address

address

0

Owner's address

pool_address

address

1

Pool's address

amount0

coins

2

Balance of the first Jetton token (in basic token units)

amount1

coins

3

Balance of the second Jetton token (in basic token units)

On-chain queries

On-chain counterparts of getter methods.

Operations table

NameValueDescription

getter_lp_account_data

0x1d439ae0

Sends a message with the current state of the pool

getter_lp_account_data (0x1d439ae0)

Sends a message with current state of the lp account. On-chain equivalent of get_lp_account_data.

TL-B

getter_lp_account_data#1d439ae0 query_id:uint64 = InternalMsgBody;

Message body

None

Outgoing messages

Sends a message with current state of the lp account to sender_address

Response message body

NameTypeDescription

op

uint32

Operation code equal to getter_lp_account_data

query_id

uint64

Query id

user_address

address

Owner's address

pool_address

address

Pool's address

amount0

coins

Balance of the first Jetton token (in basic token units)

amount1

coins

Balance of the second Jetton token (in basic token units)

Pool message handlers

Handles incoming messages from a pool

Operations table

NameValueDescription

add_liquidity

0x3ebe5431

Add liquidity

add_liquidity (0x3ebe5431)

Stores the sent amount of tokens by the user to be added as new liquidity. Upon receiving an appropriate amount of both tokens sends a message with those amounts to a pool to be added as new liquidity. The automatic liquidity addition happens only if the amount of both tokens if greater than 1000 and non-zero min_lp_out was specified, otherwise the user can keep increasing the amount of stored tokens.

TL-B

additional_fields_add_liquidity$_ refund_address:MsgAddress excess_address:MsgAddress = AdditionalFieldsAddLiquidity;
add_liquidity#3ebe5431 query_id:uint64 new_amount0:Coins new_amount1:Coins min_lp_out:Coins fwd_amount:Coins both_positive:uint1 to_user:MsgAddress custom_payload_cs:(Maybe ^Cell) additional_fields:AdditionalFieldsAddLiquidity min_lp_out:Grams = InternalMsgBody;

Message body

NameTypeDescription

new_amount0

coins

Amount of the first Jetton tokens added (in basic token units)

new_amount1

coins

Amount of the second Jetton tokens added (in basic token units)

min_lp_out

coins

Minimum required amount of received new liquidity tokens (in basic token units)

fwd_amount

coins

Forward amount used to send custom_payload (if present) in transfer_notification

both_positive

uint1

Trigger liquidity deposit only if both token amounts are non-zero

to_address

address

Owner of new liquidity tokens

custom_payload

maybe_ref

Payload sent in transfer_notification upon receiving tokens

additional_data

ref

See table below

additional_data

NameTypeDescription

refund_address

address

Address of the owner of LpAccount where tokens will be refunded if liquidity mint wasn't successful

excess_address

address

Address where all TON excesses will be sent

Notes:

  • addition of liquidity will fail if a user should receive less than min_lp_out of lp tokens as a result

Outgoing messages

Sends a message to the pool with cb_add_liquidity op

Response message body

NameTypeDescription

op

uint32

Operation code, equal to cb_add_liquidity

query_id

uint64

Query id

amount0

coins

Amount of the first Jetton tokens added (in basic token units)

amount1

coins

Amount of the second Jetton tokens added (in basic token units)

user_address

address

Owner's address

min_lp_out

coins

Minimum amount of received liquidity tokens (in basic token units)

fwd_amount

coins

Forward amount used to send custom_payload (if present) in transfer_notification

custom_payload

maybe_ref

Payload sent in transfer_notification upon receiving tokens

additional_data

ref

See table below

additional_data

NameTypeDescription

to_address

address

Owner of new liquidity tokens

refund_address

address

Address of the owner of LpAccount where tokens will be refunded if liquidity mint wasn't successful

excess_address

address

Address where all TON excesses will be sent

Notes:

  • addition of liquidity will fail if a user should receive less than min_lp_out of lp tokens as a result

  • LpAccount is deleted upon sending this message (Pool always sends msgs with state_init)

User message handlers

Handles incoming messages from a user

Operations table

NameValueDescription

refund_me

0xbf3f447

Return previously sent tokens back to the user

direct_add_liquidity

0x4cf82803

Directly add liquidity with specified amount of tokens and a minimum amount of received liquidity tokens

reset_gas

0x42a0fb43

Reset gas

refund_me (0xbf3f447)

Initiates a refund of stored tokens by add_liquidity if the user decides to cancel the addition of new liquidity. The amount of stored tokens will be sent to the pool which will initiate a transfer back to the user.

TL-B

refund_me#bf3f447 query_id:uint64 left_maybe_payload:(Maybe ^Cell) right_maybe_payload:(Maybe ^Cell) = InternalMsgBody;

Message body

None

Outgoing messages

Sends a message with cb_refund_me op code and amount of stored tokens to a pool. The pool will send a message to refund those tokens back to the user.

Response message body

NameTypeDescription

op

uint32

Operation code

query_id

uint64

Query id

amount0

coins

Amount of the first Jetton tokens (in basic token units)

amount1

coins

Amount of the second Jetton tokens (in basic token units)

user_address

address

Owner's address

payload_0

maybe_ref

Payload used for amount0; can be either cross_swap or cross_provide_lp

payload_1

maybe_ref

Payload used for amount1; can be either cross_swap or cross_provide_lp

direct_add_liquidity (0x4cf82803)

Initiates an addition of new liquidity to a pool with a specified amount of both tokens and a minimum amount of received liquidity. The operation is successful only if there's an equal or greater amount of both tokens stored in the account (the amount of both tokens must be greater than 1000). This method is useful if an automatic liquidity addition has not been triggered upon deposition of tokens.

TL-B

additional_fields_direct_add_liquidity$_ refund_address:MsgAddress excess_address:MsgAddress = AdditionalFieldsDirectAddLiquidity;
direct_add_liquidity#4cf82803 query_id:uint64 am0:Coins am1:Coins min_lp_out:Coins fwd_amount:Coins to_user:MsgAddress custom_payload_cs:(Maybe ^Cell) additional_fields:AdditionalFieldsDirectAddLiquidity = InternalMsgBody;

Message body

NameTypeDescription

amount0

coins

Amount of the first Jetton tokens (in basic token units)

amount1

coins

Amount of the second Jetton tokens (in basic token units)

min_lp_out

coins

Minimum amount of received liquidity tokens (in basic token units)

fwd_amount

coins

Forward amount used to send custom_payload (if present) in transfer_notification

to_address

address

Owner of new liquidity tokens

custom_payload

maybe_ref

Payload sent in transfer_notification upon receiving tokens

additional_data

ref

See table below

additional_data

NameTypeDescription

refund_address

address

Address of the owner of LpAccount where tokens will be refunded if liquidity mint wasn't successful

excess_address

address

Address where all TON excesses will be sent

Notes:

  • addition of liquidity will fail if a user should receive less than min_lp_out of lp tokens as a result

  • min_lp_out value must be greater than zero for this operation to proceed

Outgoing messages

Sends a message with cb_add_liquidity op code and amount of both tokens to be added as new liquidity.

reset_gas (0x42a0fb43)

Updates the amount of TON (in nanoTons) on the lp account to storage_fee::lp_account (10000000) of the account. The remaining TON will be sent back to the user_address

TL-B

reset_gas#42a0fb43 query_id:uint64 = InternalMsgBody;

Message body

None

Outgoing messages

Sends an empty message back to the user with the remaining TON

Constants

NameValueDescription

storage_fee::lp_account

1000000

Amount of TON (in nanoTons) to be left on the lp account contract as gas

Last updated