Router Payloads
Description
These are not standalone messages but forward-payload formats carried inside a jetton transfer_notification to the Router. The payload's leading op selects the action — fund a user's per-pool Account for minting, fund someone else's Account, or swap against a pool. The router derives the target pool from the sending jetton wallet, so a payload can only act on a real pool, and any leftover or failed funds are returned to the user via PAY_TO.
Messages
POOL_FUND_ACCOUNT
Opcode : 0x4468de77
This is not a message Op this is a payload format for JETTON_TRANSFER_NOTIFICATION Access Rights: Not a standalone message — a forward payload any user attaches to a jetton transfer to fund their own per-pool Account (mint request). No authorization is needed: the user funds the Account that belongs to their own address, so they can only ever top up their own.
| Path | Mnemonic | Type | Description |
|---|---|---|---|
| op | Uint(32),op | POOLV3_FUND_ACCOUNT (0x4468de77) | |
| jetton_target_w | Address(267) | Address of the jetton0 wallet. Used to compute pool address | |
| enough0 | Coins(124) | When temporary storage (user account) satisfy both enough0/1 amounts - mint would trigger | |
| enough1 | Coins(124) | When temporary storage (user account) satisfy both enough0/1 amounts - mint would trigger | |
| needPos | Uint(64) | Amount of positions that are enough for the order to be executed | |
| passthrough | Uint(4) | Amount of positions that will be untouched | |
| target_action | Uint(32) | Routing of the reforge result (ACTION_TARGET_DEFAULT / ACTION_TARGET_ALM) — see target_action in ACCOUNT_SET_ORDER for details | |
| 0 | Maybe Cell(1) MintOrder0 | Cell with mint order | |
| 0 | op0 | Uint(32) | Mint mode (MINT_NOT_LESS / MINT_AS_MUCH_AS_POSSIBLE) — see mintOp in ACCOUNT_SET_ORDER for details |
| 0 | liquidity0 | Uint(128) | Amount of liquidity to mint |
| 0 | tickLower0 | Int(24) | lower bound of the range in which to mint |
| 0 | tickUpper0 | Int(24) | upper bound of the range in which to mint |
| 0 | receiver | Address(267) | Address of receiver of the NFT |
| 1 | Maybe Cell(1) MintOrder1 | Cell with mint order | |
| 1 | op1 | Uint(32) | Mint mode (MINT_NOT_LESS / MINT_AS_MUCH_AS_POSSIBLE) — see mintOp in ACCOUNT_SET_ORDER for details |
| 1 | liquidity1 | Uint(128) | Amount of liquidity to mint |
| 1 | tickLower1 | Int(24) | lower bound of the range in which to mint |
| 1 | tickUpper1 | Int(24) | upper bound of the range in which to mint |
| 1 | receiver | Address(267) | Address of receiver of the NFT |
| 2 | Maybe Cell(1) MintOrder2 | Cell with mint order | |
| 2 | op2 | Uint(32) | Mint mode (MINT_NOT_LESS / MINT_AS_MUCH_AS_POSSIBLE) — see mintOp in ACCOUNT_SET_ORDER for details |
| 2 | liquidity2 | Uint(128) | Amount of liquidity to mint |
| 2 | tickLower2 | Int(24) | lower bound of the range in which to mint |
| 2 | tickUpper2 | Int(24) | upper bound of the range in which to mint |
| 2 | receiver | Address(267) | Address of receiver of the NFT |
| 3 | Maybe Cell(1) MintOrder3 | Cell with mint order | |
| 3 | op3 | Uint(32) | Mint mode (MINT_NOT_LESS / MINT_AS_MUCH_AS_POSSIBLE) — see mintOp in ACCOUNT_SET_ORDER for details |
| 3 | liquidity3 | Uint(128) | Amount of liquidity to mint |
| 3 | tickLower3 | Int(24) | lower bound of the range in which to mint |
| 3 | tickUpper3 | Int(24) | upper bound of the range in which to mint |
| 3 | receiver | Address(267) | Address of receiver of the NFT |
TL-B Description
This is a preliminary tl-b - subject to change **Tlb for POOL_FUND_ACCOUNT**POOL_FUND_ACCOUNT#4468de77
jetton_target_w:MsgAddress
enough0:(VarUInteger 16)
enough1:(VarUInteger 16)
needPos:uint64
passthrough:uint4
target_action:uint32
MintOrder0:(Maybe ^MintOrder0Type)
MintOrder1:(Maybe ^MintOrder1Type)
MintOrder2:(Maybe ^MintOrder2Type)
MintOrder3:(Maybe ^MintOrder3Type)
= ContractMessages;
_
op0:uint32
liquidity0:uint128
tickLower0:int24
tickUpper0:int24
receiver:MsgAddress
= MintOrder0Type;
_
op1:uint32
liquidity1:uint128
tickLower1:int24
tickUpper1:int24
receiver:MsgAddress
= MintOrder1Type;
_
op2:uint32
liquidity2:uint128
tickLower2:int24
tickUpper2:int24
receiver:MsgAddress
= MintOrder2Type;
_
op3:uint32
liquidity3:uint128
tickLower3:int24
tickUpper3:int24
receiver:MsgAddress
= MintOrder3Type;
POOL_FUND_SOMEONES_ACCOUNT
Opcode : 0x134b6d30
This is not a message Op this is a payload format for JETTON_TRANSFER_NOTIFICATION
Access Rights:
Not a standalone message — a forward payload that funds another user's (to_user) Account rather than the sender's. Used by the Arbiter, which acts like a WalletAccount but always credits itself when funding through this path.
| Path | Mnemonic | Type | Description |
|---|---|---|---|
| op | Uint(32),op | ||
| jetton_target_w | Address(267) | Address of the second jetton wallet (first is identified by sender_address). Used to compute pool address | |
| to_user | Address(267) | User to fund |
TL-B Description
This is a preliminary tl-b - subject to change **Tlb for POOL_FUND_SOMEONES_ACCOUNT**POOL_FUND_SOMEONES_ACCOUNT#134b6d30
jetton_target_w:MsgAddress
to_user:MsgAddress
= ContractMessages;
POOL_SWAP
Opcode : 0xa7fb58f8
This is not a message Op this is a payload format for JETTON_TRANSFER_NOTIFICATION Access Rights: Not a standalone message — a forward payload any user attaches to a jetton transfer to swap against a pool. No sender authorization is enforced here: the pool is derived from the sending jetton wallet, swapped funds and excess gas go to the owner/excess addresses carried in the payload, and the swap result is returned via PAY_TO.
| Path | Mnemonic | Type | Description |
|---|---|---|---|
| op | Uint(32),op | ||
| target_jetton_wallet | Address(267) | Router's jetton wallet of the OTHER side of the swap. Together with the sending jetton wallet it identifies the pool (and thus the swap direction) | |
| sqrtPriceLimitX96 | Uint(160),PriceX96 | Limit price. Swap won't go beyond it | |
| minOutAmount | Coins(124) | Minimum acceptable output amount (slippage guard). If the swap output is below this, it is reverted (LOWER_THEN_MIN_OUT) and funds are returned | |
| owner_address | Address(267) | Address of the sender | |
| 0 | Maybe Cell(1) multihop_cell | Cell with multihop data | |
| 0 | target_address | Address(267) | Address of the receiver |
| 0 | ok_forward_amount | Coins(124) | Amount of GRAM to use for forward payload that would be sent with the result of the swap |
| 0 | ok_forward_payload | Cell(0),Maybe, Payload | Payload for processing by target with swapped coins |
| 0 | ret_forward_amount | Coins(124) | Amount of GRAM to use for forward payload that would be sent with the change for the swap (if any) |
| 0 | ret_forward_payload | Cell(0),Maybe, Payload | Payload for processing by owner with change/return coins |
| 0 | excess_address | Address(267) | Address to get excess gas |
| 1 | Cell(0) referral_cell | Indexer-only. Partner referral marker, not parsed on-chain (read off-chain by indexer) | |
| 1 | code | Uint(32),Indexer | Partner referral code |
TL-B Description
This is a preliminary tl-b - subject to change **Tlb for POOL_SWAP**POOL_SWAP#a7fb58f8
target_jetton_wallet:MsgAddress
sqrtPriceLimitX96:uint160
minOutAmount:(VarUInteger 16)
owner_address:MsgAddress
multihop_cell:(Maybe ^Multihop_cellType)
referral_cell:^Referral_cellType // optional ref (present only if a ref is left)
= ContractMessages;
_
target_address:MsgAddress
ok_forward_amount:(VarUInteger 16)
ok_forward_payload:(Maybe ^Cell)
ret_forward_amount:(VarUInteger 16)
ret_forward_payload:(Maybe ^Cell)
excess_address:MsgAddress
= Multihop_cellType;
_
code:uint32
= Referral_cellType;