2026-01-23 16:47:55 +08:00
{
2026-08-13 05:53:20 +08:00
"address" : "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK" ,
"metadata" : {
"name" : "raydium_clmm" ,
"version" : "0.1.0" ,
"spec" : "0.1.0" ,
"description" : "Anchor client and source for Raydium concentrated liquidity AMM"
},
2026-01-23 16:47:55 +08:00
"instructions" : [
{
2026-08-13 05:53:20 +08:00
"name" : "close_limit_order" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Close a limit order" ,
"Closes the limit order account when unfilled amount is zero" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
2026-08-13 05:53:20 +08:00
"* `ctx` - The context of accounts" ,
2026-01-23 16:47:55 +08:00
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
76 ,
124 ,
128 ,
15 ,
213 ,
87 ,
37 ,
250
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "signer" ,
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "rent_receiver" ,
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "limit_order" ,
"writable" : true
2026-01-23 16:47:55 +08:00
}
],
"args" : []
},
{
2026-08-13 05:53:20 +08:00
"name" : "close_position" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Close the user's position and NFT account. If the NFT mint belongs to token2022, it will also be closed and the funds returned to the NFT owner." ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
2026-08-13 05:53:20 +08:00
"* `ctx` - The context of accounts" ,
2026-01-23 16:47:55 +08:00
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
123 ,
134 ,
81 ,
0 ,
49 ,
68 ,
98 ,
98
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "nft_owner" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The position nft owner"
],
"writable" : true ,
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "position_nft_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Mint address bound to the personal position."
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "position_nft_account" ,
"docs" : [
"User token account where position NFT be minted to"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "personal_position" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
115 ,
105 ,
116 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "position_nft_mint"
}
]
2026-01-23 16:47:55 +08:00
}
2026-08-13 05:53:20 +08:00
},
2026-01-23 16:47:55 +08:00
{
2026-08-13 05:53:20 +08:00
"name" : "system_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"System program to close the position state account"
],
"address" : "11111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Token/Token2022 program to close token/mint account"
2026-01-23 16:47:55 +08:00
]
}
],
"args" : []
},
{
2026-08-13 05:53:20 +08:00
"name" : "close_protocol_position" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The CLMM protocol decides to discard the protocol position account, which can reduce users' opening costs." ,
"After the original protocol position account is closed, the gas fee will be refunded to the user who created it." ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
201 ,
117 ,
152 ,
144 ,
85 ,
85 ,
108 ,
178
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "admin" ,
"writable" : true ,
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "protocol_position" ,
"writable" : true
2026-01-23 16:47:55 +08:00
}
],
2026-08-13 05:53:20 +08:00
"args" : []
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "collect_fund_fee" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Collect the fund fee accrued to the pool" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `amount_0_requested` - The maximum amount of token_0 to send, can be 0 to collect fees in only token_1" ,
"* `amount_1_requested` - The maximum amount of token_1 to send, can be 0 to collect fees in only token_0" ,
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
167 ,
138 ,
78 ,
149 ,
223 ,
194 ,
6 ,
126
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
"name" : "owner" ,
"docs" : [
"Only admin or fund_owner can collect fee now"
2026-08-13 05:53:20 +08:00
],
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Pool state stores accumulated protocol fee amount"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "amm_config" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Amm config account stores fund_owner"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_0"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_1"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "vault_0_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 0"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "vault_1_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 1"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "recipient_token_account_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that receives the collected token_0 protocol fees"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "recipient_token_account_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that receives the collected token_1 protocol fees"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The SPL program to perform token transfers"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program_2022" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The SPL program 2022 to perform token transfers"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
2026-01-23 16:47:55 +08:00
}
],
"args" : [
{
2026-08-13 05:53:20 +08:00
"name" : "amount_0_requested" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_1_requested" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "collect_protocol_fee" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Collect the protocol fee accrued to the pool" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
2026-08-13 05:53:20 +08:00
"* `amount_0_requested` - The maximum amount of token_0 to send, can be 0 to collect fees in only token_1" ,
"* `amount_1_requested` - The maximum amount of token_1 to send, can be 0 to collect fees in only token_0" ,
2026-01-23 16:47:55 +08:00
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
136 ,
136 ,
252 ,
221 ,
194 ,
66 ,
126 ,
89
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "owner" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Only admin or config owner can collect fee now"
],
"signer" : true
},
{
"name" : "pool_state" ,
"docs" : [
"Pool state stores accumulated protocol fee amount"
],
"writable" : true
},
{
"name" : "amm_config" ,
"docs" : [
"Amm config account stores owner"
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_0"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_1"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "vault_0_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 0"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "vault_1_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 1"
]
2026-08-13 05:53:20 +08:00
},
{
"name" : "recipient_token_account_0" ,
"docs" : [
"The address that receives the collected token_0 protocol fees"
],
"writable" : true
},
{
"name" : "recipient_token_account_1" ,
"docs" : [
"The address that receives the collected token_1 protocol fees"
],
"writable" : true
},
{
"name" : "token_program" ,
"docs" : [
"The SPL program to perform token transfers"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "token_program_2022" ,
"docs" : [
"The SPL program 2022 to perform token transfers"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
2026-01-23 16:47:55 +08:00
}
],
"args" : [
{
2026-08-13 05:53:20 +08:00
"name" : "amount_0_requested" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_1_requested" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "collect_remaining_rewards" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Collect remaining reward token for reward founder" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
2026-08-13 05:53:20 +08:00
"* `reward_index` - the index to reward info" ,
2026-01-23 16:47:55 +08:00
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
18 ,
237 ,
166 ,
197 ,
34 ,
16 ,
213 ,
144
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "reward_funder" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The founder who init reward info previously"
],
"signer" : true
},
{
"name" : "funder_token_account" ,
"docs" : [
"The funder's reward token account"
],
"writable" : true
},
{
"name" : "pool_state" ,
"docs" : [
"Set reward for this pool"
],
"writable" : true
},
{
"name" : "reward_token_vault" ,
"docs" : [
"Reward vault transfer remaining token to founder token account"
],
"writable" : true
},
{
"name" : "reward_vault_mint" ,
"docs" : [
"The mint of reward token vault"
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program_2022" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Token program 2022"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
"name" : "memo_program" ,
"docs" : [
"memo program"
],
"address" : "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"
}
],
"args" : [
{
"name" : "reward_index" ,
"type" : "u8"
}
]
},
{
"name" : "create_amm_config" ,
"docs" : [
"# Arguments" ,
"" ,
"* `ctx` - The accounts needed by instruction." ,
"* `index` - The index of amm config, there may be multiple config." ,
"* `tick_spacing` - The tickspacing binding with config, cannot be changed." ,
"* `trade_fee_rate` - Trade fee rate, can be changed." ,
"* `protocol_fee_rate` - The rate of protocol fee within trade fee." ,
"* `fund_fee_rate` - The rate of fund fee within trade fee." ,
"* `limit_fee_rate` - The rate of limit order fee." ,
""
],
"discriminator" : [
137 ,
52 ,
237 ,
212 ,
215 ,
117 ,
108 ,
104
],
"accounts" : [
{
"name" : "owner" ,
"docs" : [
"Address to be set as protocol owner."
],
"writable" : true ,
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
},
{
"name" : "amm_config" ,
"docs" : [
"Initialize config state account to store protocol owner address and fee rates."
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
97 ,
109 ,
109 ,
95 ,
99 ,
111 ,
110 ,
102 ,
105 ,
103
]
},
{
"kind" : "arg" ,
"path" : "index"
}
]
}
},
{
"name" : "system_program" ,
"address" : "11111111111111111111111111111111"
}
],
"args" : [
{
"name" : "index" ,
"type" : "u16"
},
{
"name" : "tick_spacing" ,
"type" : "u16"
},
{
"name" : "trade_fee_rate" ,
"type" : "u32"
},
{
"name" : "protocol_fee_rate" ,
"type" : "u32"
},
{
"name" : "fund_fee_rate" ,
"type" : "u32"
}
]
},
{
"name" : "create_customizable_pool" ,
"docs" : [
"Creates a pool for the given token pair with customizable parameters" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `customizable_params` - the customizable parameters" ,
""
],
"discriminator" : [
43 ,
68 ,
212 ,
167 ,
89 ,
47 ,
164 ,
1
],
"accounts" : [
{
"name" : "pool_creator" ,
"docs" : [
"Address paying to create the pool"
],
"writable" : true ,
"signer" : true
},
{
"name" : "amm_config" ,
"docs" : [
"Which config the pool belongs to."
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
"docs" : [
"Initialize an account to store the pool state"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108
]
},
{
"kind" : "account" ,
"path" : "amm_config"
},
{
"kind" : "account" ,
"path" : "token_mint_0"
},
{
"kind" : "account" ,
"path" : "token_mint_1"
}
]
}
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_mint_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Token_0 mint, the key must be smaller then token_1 mint."
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_mint_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Token_1 mint"
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_0" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108 ,
95 ,
118 ,
97 ,
117 ,
108 ,
116
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "account" ,
"path" : "token_mint_0"
}
]
}
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_1" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108 ,
95 ,
118 ,
97 ,
117 ,
108 ,
116
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "account" ,
"path" : "token_mint_1"
}
]
}
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "observation_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Initialize an account to store oracle observations"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
111 ,
98 ,
115 ,
101 ,
114 ,
118 ,
97 ,
116 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "pool_state"
}
]
}
},
{
"name" : "tick_array_bitmap" ,
"docs" : [
"Initialize an account to store if a tick array is initialized."
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108 ,
95 ,
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121 ,
95 ,
98 ,
105 ,
116 ,
109 ,
97 ,
112 ,
95 ,
101 ,
120 ,
116 ,
101 ,
110 ,
115 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "pool_state"
}
]
}
},
{
"name" : "token_program_0" ,
"docs" : [
"Spl token program or token program 2022"
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Spl token program or token program 2022"
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "system_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"To create a new program account"
],
"address" : "11111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
},
{
"name" : "rent" ,
"docs" : [
2026-08-13 05:53:20 +08:00
"Sysvar for program account"
],
"address" : "SysvarRent111111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
}
],
"args" : [
{
2026-08-13 05:53:20 +08:00
"name" : "customizable_params" ,
2026-01-23 16:47:55 +08:00
"type" : {
2026-08-13 05:53:20 +08:00
"defined" : {
"name" : "CreateCustomizableParams"
}
2026-01-23 16:47:55 +08:00
}
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "create_dynamic_fee_config" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Create dynamic fee config" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `index` - The index of dynamic fee config" ,
"* `filter_period` - The period of filter" ,
"* `decay_period` - The period of decay" ,
"* `reduction_factor` - The reduction factor" ,
"* `adaptive_fee_control_factor` - The adaptive fee control factor" ,
"* `max_volatility_accumulator` - The max volatility accumulator" ,
"* `tick_group_size` - The tick group size"
],
"discriminator" : [
189 ,
14 ,
181 ,
120 ,
85 ,
118 ,
227 ,
62
],
"accounts" : [
{
"name" : "owner" ,
"writable" : true ,
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
},
{
"name" : "dynamic_fee_config" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
100 ,
121 ,
110 ,
97 ,
109 ,
105 ,
99 ,
95 ,
102 ,
101 ,
101 ,
95 ,
99 ,
111 ,
110 ,
102 ,
105 ,
103
]
},
{
"kind" : "arg" ,
"path" : "index"
}
]
}
},
{
"name" : "system_program" ,
"address" : "11111111111111111111111111111111"
}
],
"args" : [
{
"name" : "index" ,
"type" : "u16"
},
{
"name" : "filter_period" ,
"type" : "u16"
},
{
"name" : "decay_period" ,
"type" : "u16"
},
{
"name" : "reduction_factor" ,
"type" : "u16"
},
{
"name" : "dynamic_fee_control" ,
"type" : "u32"
},
{
"name" : "max_volatility_accumulator" ,
"type" : "u32"
}
]
},
{
"name" : "create_operation_account" ,
"docs" : [
"Creates an operation account for the program" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
63 ,
87 ,
148 ,
33 ,
109 ,
35 ,
8 ,
104
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "owner" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Address to be set as operation account owner."
],
"writable" : true ,
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "operation_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Initialize operation state account to store operation owner address and white list mint."
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
111 ,
112 ,
101 ,
114 ,
97 ,
116 ,
105 ,
111 ,
110
]
}
]
}
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "system_program" ,
"address" : "11111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
}
],
"args" : []
},
{
2026-08-13 05:53:20 +08:00
"name" : "create_pool" ,
"docs" : [
"Creates a pool for the given token pair and the initial price" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `sqrt_price_x64` - the initial sqrt price (amount_token_1 / amount_token_0) of the pool as a Q64.64" ,
"Note: The open_time must be smaller than the current block_timestamp on chain."
],
"discriminator" : [
233 ,
146 ,
209 ,
142 ,
207 ,
104 ,
64 ,
188
],
"accounts" : [
{
"name" : "pool_creator" ,
"docs" : [
"Address paying to create the pool. Can be anyone"
],
"writable" : true ,
"signer" : true
},
{
"name" : "amm_config" ,
"docs" : [
"Which config the pool belongs to."
]
},
{
"name" : "pool_state" ,
"docs" : [
"Initialize an account to store the pool state"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108
]
},
{
"kind" : "account" ,
"path" : "amm_config"
},
{
"kind" : "account" ,
"path" : "token_mint_0"
},
{
"kind" : "account" ,
"path" : "token_mint_1"
}
]
}
},
{
"name" : "token_mint_0" ,
"docs" : [
"Token_0 mint, the key must be smaller then token_1 mint."
]
},
{
"name" : "token_mint_1" ,
"docs" : [
"Token_1 mint"
]
},
{
"name" : "token_vault_0" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108 ,
95 ,
118 ,
97 ,
117 ,
108 ,
116
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "account" ,
"path" : "token_mint_0"
}
]
}
},
{
"name" : "token_vault_1" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108 ,
95 ,
118 ,
97 ,
117 ,
108 ,
116
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "account" ,
"path" : "token_mint_1"
}
]
}
},
{
"name" : "observation_state" ,
"docs" : [
"Initialize an account to store oracle observations"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
111 ,
98 ,
115 ,
101 ,
114 ,
118 ,
97 ,
116 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "pool_state"
}
]
}
},
{
"name" : "tick_array_bitmap" ,
"docs" : [
"Initialize an account to store if a tick array is initialized."
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108 ,
95 ,
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121 ,
95 ,
98 ,
105 ,
116 ,
109 ,
97 ,
112 ,
95 ,
101 ,
120 ,
116 ,
101 ,
110 ,
115 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "pool_state"
}
]
}
},
{
"name" : "token_program_0" ,
"docs" : [
"Spl token program or token program 2022"
]
},
{
"name" : "token_program_1" ,
"docs" : [
"Spl token program or token program 2022"
]
},
{
"name" : "system_program" ,
"docs" : [
"To create a new program account"
],
"address" : "11111111111111111111111111111111"
},
{
"name" : "rent" ,
"docs" : [
"Sysvar for program account"
],
"address" : "SysvarRent111111111111111111111111111111111"
}
],
"args" : [
{
"name" : "sqrt_price_x64" ,
"type" : "u128"
},
{
"name" : "open_time" ,
"type" : "u64"
}
]
},
{
"name" : "create_support_mint_associated" ,
"docs" : [
"Create support token22 mint account which can create pool and send rewards while ignoring unsupported extensions."
],
"discriminator" : [
17 ,
251 ,
65 ,
92 ,
136 ,
242 ,
14 ,
169
],
"accounts" : [
{
"name" : "owner" ,
"docs" : [
"Address to be set as protocol owner."
],
"writable" : true ,
"signer" : true
},
{
"name" : "token_mint" ,
"docs" : [
"Support token mint"
]
},
{
"name" : "support_mint_associated" ,
"docs" : [
"Initialize support mint state account to store support mint address and bump."
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
115 ,
117 ,
112 ,
112 ,
111 ,
114 ,
116 ,
95 ,
109 ,
105 ,
110 ,
116
]
},
{
"kind" : "account" ,
"path" : "token_mint"
}
]
}
},
{
"name" : "system_program" ,
"address" : "11111111111111111111111111111111"
}
],
"args" : []
},
{
"name" : "decrease_limit_order" ,
"docs" : [
"Decrease/Cancel a limit order" ,
"First settle the filled portion of the order; only the remaining unfilled amount can be decreased." ,
"Even if the specified amount is very large, the decrease will not exceed the remaining unfilled order amount." ,
"It is recommended to call the `settle_limit_order` instruction before invoking this instruction to settle any filled portions of the order." ,
"Make sure to check your order's remaining unfilled amount." ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `amount` - The decrease amount of the order," ,
"* `amount_min` - The minimum amount of the order, which serves as a slippage check" ,
""
],
"discriminator" : [
117 ,
157 ,
60 ,
103 ,
66 ,
49 ,
163 ,
0
],
"accounts" : [
{
"name" : "owner" ,
"signer" : true
},
{
"name" : "pool_state" ,
"writable" : true
},
{
"name" : "tick_array" ,
"writable" : true
},
{
"name" : "limit_order" ,
"writable" : true
},
{
"name" : "input_token_account" ,
"docs" : [
"The payer's limit order token account"
],
"writable" : true
},
{
"name" : "output_token_account" ,
"docs" : [
"The owner's output token account (opposite direction from input)"
],
"writable" : true
},
{
"name" : "input_vault" ,
"docs" : [
"The address that holds limit order token"
],
"writable" : true
},
{
"name" : "output_vault" ,
"docs" : [
"The address that holds output tokens"
],
"writable" : true
},
{
"name" : "input_vault_mint" ,
"docs" : [
"The mint of token vault"
]
},
{
"name" : "output_vault_mint" ,
"docs" : [
"The mint of output vault"
]
},
{
"name" : "token_program" ,
"docs" : [
"SPL program for token transfers"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "token_program_2022" ,
"docs" : [
"SPL program 2022 for token transfers"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
}
],
"args" : [
{
"name" : "amount" ,
"type" : "u64"
},
{
"name" : "amount_min" ,
"type" : "u64"
}
]
},
{
"name" : "decrease_liquidity" ,
"docs" : [
"#[deprecated(note = \"Use `decrease_liquidity_v2` instead.\")]" ,
"Decreases liquidity for an existing position" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `liquidity` - The amount by which liquidity will be decreased" ,
"* `amount_0_min` - The minimum amount of token_0 that should be accounted for the burned liquidity" ,
"* `amount_1_min` - The minimum amount of token_1 that should be accounted for the burned liquidity" ,
""
],
"discriminator" : [
160 ,
38 ,
208 ,
111 ,
104 ,
91 ,
44 ,
1
],
"accounts" : [
{
"name" : "nft_owner" ,
"docs" : [
"The position owner or delegated authority"
],
"signer" : true
},
{
"name" : "nft_account" ,
"docs" : [
"The token account for the tokenized position"
]
},
{
"name" : "personal_position" ,
"docs" : [
"Decrease liquidity for this position"
],
"writable" : true
},
{
"name" : "pool_state" ,
"writable" : true
},
{
"name" : "protocol_position"
},
{
"name" : "token_vault_0" ,
"docs" : [
"Token_0 vault"
],
"writable" : true
},
{
"name" : "token_vault_1" ,
"docs" : [
"Token_1 vault"
],
"writable" : true
},
{
"name" : "tick_array_lower" ,
"docs" : [
"Stores init state for the lower tick"
],
"writable" : true
},
{
"name" : "tick_array_upper" ,
"docs" : [
"Stores init state for the upper tick"
],
"writable" : true
},
{
"name" : "recipient_token_account_0" ,
"docs" : [
"The destination token account for receive amount_0"
],
"writable" : true
},
{
"name" : "recipient_token_account_1" ,
"docs" : [
"The destination token account for receive amount_1"
],
"writable" : true
},
{
"name" : "token_program" ,
"docs" : [
"SPL program to transfer out tokens"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
],
"args" : [
{
"name" : "liquidity" ,
"type" : "u128"
},
{
"name" : "amount_0_min" ,
"type" : "u64"
},
{
"name" : "amount_1_min" ,
"type" : "u64"
}
]
},
{
"name" : "decrease_liquidity_v2" ,
"docs" : [
"Decreases liquidity for an existing position, support Token2022" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `liquidity` - The amount by which liquidity will be decreased" ,
"* `amount_0_min` - The minimum amount of token_0 that should be accounted for the burned liquidity" ,
"* `amount_1_min` - The minimum amount of token_1 that should be accounted for the burned liquidity" ,
""
],
"discriminator" : [
58 ,
127 ,
188 ,
62 ,
79 ,
82 ,
196 ,
96
],
"accounts" : [
{
"name" : "nft_owner" ,
"docs" : [
"The position owner or delegated authority"
],
"signer" : true
},
{
"name" : "nft_account" ,
"docs" : [
"The token account for the tokenized position"
]
},
{
"name" : "personal_position" ,
"docs" : [
"Decrease liquidity for this position"
],
"writable" : true
},
{
"name" : "pool_state" ,
"writable" : true
},
{
"name" : "protocol_position"
},
{
"name" : "token_vault_0" ,
"docs" : [
"Token_0 vault"
],
"writable" : true
},
{
"name" : "token_vault_1" ,
"docs" : [
"Token_1 vault"
],
"writable" : true
},
{
"name" : "tick_array_lower" ,
"docs" : [
"Stores init state for the lower tick"
],
"writable" : true
},
{
"name" : "tick_array_upper" ,
"docs" : [
"Stores init state for the upper tick"
],
"writable" : true
},
{
"name" : "recipient_token_account_0" ,
"docs" : [
"The destination token account for receive amount_0"
],
"writable" : true
},
{
"name" : "recipient_token_account_1" ,
"docs" : [
"The destination token account for receive amount_1"
],
"writable" : true
},
{
"name" : "token_program" ,
"docs" : [
"SPL program to transfer out tokens"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "token_program_2022" ,
"docs" : [
"Token program 2022"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
"name" : "memo_program" ,
"docs" : [
"memo program"
],
"address" : "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"
},
{
"name" : "vault_0_mint" ,
"docs" : [
"The mint of token vault 0"
]
},
{
"name" : "vault_1_mint" ,
"docs" : [
"The mint of token vault 1"
]
}
],
"args" : [
{
"name" : "liquidity" ,
"type" : "u128"
},
{
"name" : "amount_0_min" ,
"type" : "u64"
},
{
"name" : "amount_1_min" ,
"type" : "u64"
}
]
},
{
"name" : "increase_limit_order" ,
"docs" : [
"Increase a limit order" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `amount` - The increase amount of the order" ,
"* `is_increase` - The direction of the order, true: increase, false: decrease" ,
""
],
"discriminator" : [
177 ,
144 ,
89 ,
236 ,
250 ,
186 ,
125 ,
99
],
"accounts" : [
{
"name" : "owner" ,
"signer" : true
},
{
"name" : "pool_state"
},
{
"name" : "tick_array" ,
"writable" : true
},
{
"name" : "limit_order" ,
"writable" : true
},
{
"name" : "input_token_account" ,
"docs" : [
"The payer's limit order token account"
],
"writable" : true
},
{
"name" : "input_vault" ,
"docs" : [
"The address that holds limit order token"
],
"writable" : true
},
{
"name" : "input_vault_mint" ,
"docs" : [
"The mint of token vault"
]
},
{
"name" : "input_token_program" ,
"docs" : [
"SPL-TOKEN / SPL-TOKEN2022 program for token transfers"
]
}
],
"args" : [
{
"name" : "amount" ,
"type" : "u64"
}
]
},
{
"name" : "increase_liquidity" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"#[deprecated(note = \"Use `increase_liquidity_v2` instead.\")]" ,
2026-08-13 05:53:20 +08:00
"Increases liquidity for an existing position, with amount paid by `payer`" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `liquidity` - The desired liquidity to be added, can't be zero" ,
"* `amount_0_max` - The max amount of token_0 to spend, which serves as a slippage check" ,
"* `amount_1_max` - The max amount of token_1 to spend, which serves as a slippage check" ,
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
46 ,
156 ,
243 ,
118 ,
13 ,
205 ,
251 ,
178
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "nft_owner" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Pays to mint the position"
2026-08-13 05:53:20 +08:00
],
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "nft_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token account for nft"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "protocol_position"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "personal_position" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Increase liquidity for this position"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_array_lower" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Stores init state for the lower tick"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_array_upper" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Stores init state for the upper tick"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_account_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The payer's token account for token_0"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_account_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token account spending token_1 to mint the position"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_0"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_1"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Program to create mint account and mint tokens"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2026-01-23 16:47:55 +08:00
}
],
"args" : [
{
"name" : "liquidity" ,
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_0_max" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_1_max" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "increase_liquidity_v2" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Increases liquidity for an existing position, with amount paid by `payer`, support Token2022" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `liquidity` - The desired liquidity to be added, if zero, calculate liquidity base amount_0 or amount_1 according base_flag" ,
"* `amount_0_max` - The max amount of token_0 to spend, which serves as a slippage check" ,
"* `amount_1_max` - The max amount of token_1 to spend, which serves as a slippage check" ,
"* `base_flag` - must be specified if liquidity is zero, true: calculate liquidity base amount_0_max otherwise base amount_1_max" ,
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
133 ,
29 ,
89 ,
223 ,
69 ,
238 ,
176 ,
10
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "nft_owner" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Pays to mint the position"
2026-08-13 05:53:20 +08:00
],
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "nft_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token account for nft"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "protocol_position"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "personal_position" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Increase liquidity for this position"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_array_lower" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Stores init state for the lower tick"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_array_upper" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Stores init state for the upper tick"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_account_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The payer's token account for token_0"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_account_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token account spending token_1 to mint the position"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_0"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The address that holds pool tokens for token_1"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Program to create mint account and mint tokens"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program_2022" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Token program 2022"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "vault_0_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 0"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "vault_1_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 1"
]
}
],
"args" : [
{
"name" : "liquidity" ,
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_0_max" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_1_max" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "base_flag" ,
2026-01-23 16:47:55 +08:00
"type" : {
"option" : "bool"
}
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "initialize_reward" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Initialize a reward info for a given pool and reward index" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
2026-08-13 05:53:20 +08:00
"* `ctx` - The context of accounts" ,
"* `reward_index` - the index to reward info" ,
"* `open_time` - reward open timestamp" ,
"* `end_time` - reward end timestamp" ,
"* `emissions_per_second_x64` - Token reward per second are earned per unit of liquidity." ,
2026-01-23 16:47:55 +08:00
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
95 ,
135 ,
192 ,
196 ,
242 ,
129 ,
230 ,
68
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "reward_funder" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The founder deposit reward token to vault"
],
"writable" : true ,
"signer" : true
},
{
"name" : "funder_token_account" ,
"writable" : true
},
{
"name" : "amm_config" ,
"docs" : [
"For check the reward_funder authority"
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Set reward for this pool"
],
"writable" : true
},
{
"name" : "operation_state" ,
"docs" : [
"load info from the account to judge reward permission"
],
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
111 ,
112 ,
101 ,
114 ,
97 ,
116 ,
105 ,
111 ,
110
]
}
]
}
},
{
"name" : "reward_token_mint" ,
"docs" : [
"Reward mint"
2026-01-23 16:47:55 +08:00
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "reward_token_vault" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
111 ,
108 ,
95 ,
114 ,
101 ,
119 ,
97 ,
114 ,
100 ,
95 ,
118 ,
97 ,
117 ,
108 ,
116
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "account" ,
"path" : "reward_token_mint"
}
]
}
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "reward_token_program"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "system_program" ,
"address" : "11111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "rent" ,
"address" : "SysvarRent111111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
}
],
"args" : [
{
2026-08-13 05:53:20 +08:00
"name" : "param" ,
"type" : {
"defined" : {
"name" : "InitializeRewardParam"
}
}
}
]
},
{
"name" : "open_limit_order" ,
"docs" : [
"Place a limit order" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `nonce_index` - The limit order nonce account index, used to create user's order nonce PDA account." ,
"* `zero_for_one` - The direction of the order, true: zero for one, false: one for zero" ,
"* `tick_index` - The index of the tick" ,
"* `amount` - The amount of the order" ,
"* `with_metadata` - The flag indicating whether to create NFT mint metadata" ,
""
],
"discriminator" : [
157 ,
32 ,
218 ,
183 ,
71 ,
29 ,
18 ,
147
],
"accounts" : [
{
"name" : "payer" ,
"writable" : true ,
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
"docs" : [
"The pool"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_array" ,
"writable" : true
},
{
"name" : "limit_order_nonce" ,
"docs" : [
"The order nonce account PDA"
],
"writable" : true
},
{
"name" : "limit_order" ,
"docs" : [
"The order account PDA"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "account" ,
"path" : "payer"
},
{
"kind" : "account" ,
"path" : "limit_order_nonce"
},
{
"kind" : "account" ,
"path" : "limit_order_nonce.order_nonce" ,
"account" : "LimitOrderNonce"
}
]
}
},
{
"name" : "input_token_account" ,
"docs" : [
"The payer's limit order token account"
],
"writable" : true
},
{
"name" : "input_vault" ,
"docs" : [
"The address that holds limit order token"
],
"writable" : true
},
{
"name" : "input_vault_mint" ,
"docs" : [
"The mint of token vault"
]
},
{
"name" : "input_token_program" ,
"docs" : [
"SPL-TOKEN / SPL-TOKEN2022 program for input token transfers"
]
},
{
"name" : "system_program" ,
"docs" : [
"SPL program for system operations"
],
"address" : "11111111111111111111111111111111"
}
],
"args" : [
{
"name" : "nonce_index" ,
"type" : "u8"
},
{
"name" : "zero_for_one" ,
"type" : "bool"
},
{
"name" : "tick_index" ,
"type" : "i32"
},
{
"name" : "amount" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "open_position" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"#[deprecated(note = \"Use `open_position_with_token22_nft` instead.\")]" ,
"Creates a new position wrapped in a NFT" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
2026-08-13 05:53:20 +08:00
"* `ctx` - The context of accounts" ,
"* `tick_lower_index` - The low boundary of market" ,
"* `tick_upper_index` - The upper boundary of market" ,
"* `tick_array_lower_start_index` - The start index of tick array which includes tick low" ,
"* `tick_array_upper_start_index` - The start index of tick array which includes tick upper" ,
"* `liquidity` - The liquidity to be added" ,
"* `amount_0_max` - The max amount of token_0 to spend, which serves as a slippage check" ,
"* `amount_1_max` - The max amount of token_1 to spend, which serves as a slippage check" ,
2026-01-23 16:47:55 +08:00
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
135 ,
128 ,
47 ,
77 ,
15 ,
152 ,
240 ,
49
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "payer" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Pays to mint the position"
],
"writable" : true ,
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "position_nft_owner"
},
{
"name" : "position_nft_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Unique token mint address"
],
"writable" : true ,
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "position_nft_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Token account where position NFT will be minted" ,
"This account created in the contract by cpi to avoid large stack variables"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "account" ,
"path" : "position_nft_owner"
},
{
"kind" : "const" ,
"value" : [
6 ,
221 ,
246 ,
225 ,
215 ,
101 ,
161 ,
147 ,
217 ,
203 ,
225 ,
70 ,
206 ,
235 ,
121 ,
172 ,
28 ,
180 ,
133 ,
237 ,
95 ,
91 ,
55 ,
145 ,
58 ,
140 ,
245 ,
133 ,
126 ,
255 ,
0 ,
169
]
},
{
"kind" : "account" ,
"path" : "position_nft_mint"
}
],
"program" : {
"kind" : "const" ,
"value" : [
140 ,
151 ,
37 ,
143 ,
78 ,
36 ,
137 ,
241 ,
187 ,
61 ,
16 ,
41 ,
20 ,
142 ,
13 ,
131 ,
11 ,
90 ,
19 ,
153 ,
218 ,
255 ,
16 ,
132 ,
4 ,
142 ,
123 ,
216 ,
219 ,
233 ,
248 ,
89
]
}
}
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "metadata_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"To store metaplex metadata"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Add liquidity for this pool"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "protocol_position"
},
{
"name" : "tick_array_lower" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "arg" ,
"path" : "tick_array_lower_start_index"
}
]
}
},
{
"name" : "tick_array_upper" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "arg" ,
"path" : "tick_array_upper_start_index"
}
]
}
},
{
"name" : "personal_position" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"personal position state"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
115 ,
105 ,
116 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "position_nft_mint"
}
]
}
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_account_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The token_0 account deposit token to the pool"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_account_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The token_1 account deposit token to the pool"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The address that holds pool tokens for token_0"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The address that holds pool tokens for token_1"
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "rent" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Sysvar for token mint and ATA creation"
],
"address" : "SysvarRent111111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "system_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Program to create the position manager state account"
],
"address" : "11111111111111111111111111111111"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
"docs" : [
"Program to create mint account and mint tokens"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "associated_token_program" ,
"docs" : [
"Program to create an ATA for receiving position NFT"
],
"address" : "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
"name" : "metadata_program" ,
"docs" : [
"Program to create NFT metadata"
],
"address" : "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
}
],
"args" : [
{
"name" : "tick_lower_index" ,
"type" : "i32"
},
{
"name" : "tick_upper_index" ,
"type" : "i32"
},
{
"name" : "tick_array_lower_start_index" ,
"type" : "i32"
},
{
"name" : "tick_array_upper_start_index" ,
"type" : "i32"
},
{
"name" : "liquidity" ,
"type" : "u128"
},
{
"name" : "amount_0_max" ,
"type" : "u64"
},
{
"name" : "amount_1_max" ,
"type" : "u64"
}
]
},
{
"name" : "open_position_v2" ,
"docs" : [
"#[deprecated(note = \"Use `open_position_with_token22_nft` instead.\")]" ,
"Creates a new position wrapped in a NFT, support Token2022" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `tick_lower_index` - The low boundary of market" ,
"* `tick_upper_index` - The upper boundary of market" ,
"* `tick_array_lower_start_index` - The start index of tick array which includes tick low" ,
"* `tick_array_upper_start_index` - The start index of tick array which includes tick upper" ,
"* `liquidity` - The liquidity to be added, if zero, and the base_flag is specified, calculate liquidity base amount_0_max or amount_1_max according base_flag, otherwise open position with zero liquidity" ,
"* `amount_0_max` - The max amount of token_0 to spend, which serves as a slippage check" ,
"* `amount_1_max` - The max amount of token_1 to spend, which serves as a slippage check" ,
"* `with_metadata` - The flag indicating whether to create NFT mint metadata" ,
"* `base_flag` - if the liquidity specified as zero, true: calculate liquidity base amount_0_max otherwise base amount_1_max" ,
""
],
"discriminator" : [
77 ,
184 ,
74 ,
214 ,
112 ,
86 ,
241 ,
199
],
"accounts" : [
{
"name" : "payer" ,
"docs" : [
"Pays to mint the position"
],
"writable" : true ,
"signer" : true
},
{
"name" : "position_nft_owner"
},
{
"name" : "position_nft_mint" ,
"docs" : [
"Unique token mint address"
],
"writable" : true ,
"signer" : true
},
{
"name" : "position_nft_account" ,
"docs" : [
"Token account where position NFT will be minted"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "account" ,
"path" : "position_nft_owner"
},
{
"kind" : "const" ,
"value" : [
6 ,
221 ,
246 ,
225 ,
215 ,
101 ,
161 ,
147 ,
217 ,
203 ,
225 ,
70 ,
206 ,
235 ,
121 ,
172 ,
28 ,
180 ,
133 ,
237 ,
95 ,
91 ,
55 ,
145 ,
58 ,
140 ,
245 ,
133 ,
126 ,
255 ,
0 ,
169
]
},
{
"kind" : "account" ,
"path" : "position_nft_mint"
}
],
"program" : {
"kind" : "const" ,
"value" : [
140 ,
151 ,
37 ,
143 ,
78 ,
36 ,
137 ,
241 ,
187 ,
61 ,
16 ,
41 ,
20 ,
142 ,
13 ,
131 ,
11 ,
90 ,
19 ,
153 ,
218 ,
255 ,
16 ,
132 ,
4 ,
142 ,
123 ,
216 ,
219 ,
233 ,
248 ,
89
]
}
}
},
{
"name" : "metadata_account" ,
"docs" : [
"To store metaplex metadata"
],
"writable" : true
},
{
"name" : "pool_state" ,
"docs" : [
"Add liquidity for this pool"
],
"writable" : true
},
{
"name" : "protocol_position"
},
{
"name" : "tick_array_lower" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "arg" ,
"path" : "tick_array_lower_start_index"
}
]
}
},
{
"name" : "tick_array_upper" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "arg" ,
"path" : "tick_array_upper_start_index"
}
]
}
},
{
"name" : "personal_position" ,
"docs" : [
"personal position state"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
115 ,
105 ,
116 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "position_nft_mint"
}
]
}
},
{
"name" : "token_account_0" ,
"docs" : [
"The token_0 account deposit token to the pool"
],
"writable" : true
},
{
"name" : "token_account_1" ,
"docs" : [
"The token_1 account deposit token to the pool"
],
"writable" : true
},
{
"name" : "token_vault_0" ,
"docs" : [
"The address that holds pool tokens for token_0"
],
"writable" : true
},
{
"name" : "token_vault_1" ,
"docs" : [
"The address that holds pool tokens for token_1"
],
"writable" : true
},
{
"name" : "rent" ,
"docs" : [
"Sysvar for token mint and ATA creation"
],
"address" : "SysvarRent111111111111111111111111111111111"
},
{
"name" : "system_program" ,
"docs" : [
"Program to create the position manager state account"
],
"address" : "11111111111111111111111111111111"
},
{
"name" : "token_program" ,
"docs" : [
"Program to create mint account and mint tokens"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "associated_token_program" ,
"docs" : [
"Program to create an ATA for receiving position NFT"
],
"address" : "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
"name" : "metadata_program" ,
"docs" : [
"Program to create NFT metadata"
],
"address" : "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
},
{
"name" : "token_program_2022" ,
"docs" : [
"Program to create mint account and mint tokens"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
"name" : "vault_0_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 0"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "vault_1_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 1"
]
}
],
"args" : [
2026-08-13 05:53:20 +08:00
{
"name" : "tick_lower_index" ,
"type" : "i32"
},
{
"name" : "tick_upper_index" ,
"type" : "i32"
},
{
"name" : "tick_array_lower_start_index" ,
"type" : "i32"
},
{
"name" : "tick_array_upper_start_index" ,
"type" : "i32"
},
2026-01-23 16:47:55 +08:00
{
"name" : "liquidity" ,
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_0_max" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "amount_1_max" ,
"type" : "u64"
},
{
"name" : "with_metadata" ,
"type" : "bool"
},
{
"name" : "base_flag" ,
"type" : {
"option" : "bool"
}
}
]
},
{
"name" : "open_position_with_token22_nft" ,
"docs" : [
"Creates a new position wrapped in a Token2022 NFT without relying on metadata_program and metadata_account, reduce the cost for user to create a personal position." ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `tick_lower_index` - The low boundary of market" ,
"* `tick_upper_index` - The upper boundary of market" ,
"* `tick_array_lower_start_index` - The start index of tick array which includes tick low" ,
"* `tick_array_upper_start_index` - The start index of tick array which includes tick upper" ,
"* `liquidity` - The liquidity to be added, if zero, and the base_flag is specified, calculate liquidity base amount_0_max or amount_1_max according base_flag, otherwise open position with zero liquidity" ,
"* `amount_0_max` - The max amount of token_0 to spend, which serves as a slippage check" ,
"* `amount_1_max` - The max amount of token_1 to spend, which serves as a slippage check" ,
"* `with_metadata` - The flag indicating whether to create NFT mint metadata" ,
"* `base_flag` - if the liquidity specified as zero, true: calculate liquidity base amount_0_max otherwise base amount_1_max" ,
""
],
"discriminator" : [
77 ,
255 ,
174 ,
82 ,
125 ,
29 ,
201 ,
46
],
"accounts" : [
{
"name" : "payer" ,
"docs" : [
"Pays to mint the position"
],
"writable" : true ,
"signer" : true
},
{
"name" : "position_nft_owner"
},
{
"name" : "position_nft_mint" ,
"docs" : [
"Unique token mint address, initialize in contract"
],
"writable" : true ,
"signer" : true
},
{
"name" : "position_nft_account" ,
"writable" : true
},
{
"name" : "pool_state" ,
"docs" : [
"Add liquidity for this pool"
],
"writable" : true
},
{
"name" : "protocol_position"
},
{
"name" : "tick_array_lower" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "arg" ,
"path" : "tick_array_lower_start_index"
}
]
}
},
{
"name" : "tick_array_upper" ,
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
116 ,
105 ,
99 ,
107 ,
95 ,
97 ,
114 ,
114 ,
97 ,
121
]
},
{
"kind" : "account" ,
"path" : "pool_state"
},
{
"kind" : "arg" ,
"path" : "tick_array_upper_start_index"
}
]
}
},
{
"name" : "personal_position" ,
"docs" : [
"personal position state"
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
112 ,
111 ,
115 ,
105 ,
116 ,
105 ,
111 ,
110
]
},
{
"kind" : "account" ,
"path" : "position_nft_mint"
}
]
}
},
{
"name" : "token_account_0" ,
"docs" : [
"The token_0 account deposit token to the pool"
],
"writable" : true
},
{
"name" : "token_account_1" ,
"docs" : [
"The token_1 account deposit token to the pool"
],
"writable" : true
},
{
"name" : "token_vault_0" ,
"docs" : [
"The address that holds pool tokens for token_0"
],
"writable" : true
},
{
"name" : "token_vault_1" ,
"docs" : [
"The address that holds pool tokens for token_1"
],
"writable" : true
},
{
"name" : "rent" ,
"docs" : [
"Sysvar for token mint and ATA creation"
],
"address" : "SysvarRent111111111111111111111111111111111"
},
{
"name" : "system_program" ,
"docs" : [
"Program to create the position manager state account"
],
"address" : "11111111111111111111111111111111"
},
{
"name" : "token_program" ,
"docs" : [
"Program to transfer for token account"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "associated_token_program" ,
"docs" : [
"Program to create an ATA for receiving position NFT"
],
"address" : "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
"name" : "token_program_2022" ,
"docs" : [
"Program to create NFT mint/token account and transfer for token22 account"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
"name" : "vault_0_mint" ,
"docs" : [
"The mint of token vault 0"
]
},
{
"name" : "vault_1_mint" ,
"docs" : [
"The mint of token vault 1"
]
}
],
"args" : [
{
"name" : "tick_lower_index" ,
"type" : "i32"
},
{
"name" : "tick_upper_index" ,
"type" : "i32"
},
{
"name" : "tick_array_lower_start_index" ,
"type" : "i32"
},
{
"name" : "tick_array_upper_start_index" ,
"type" : "i32"
},
{
"name" : "liquidity" ,
"type" : "u128"
},
{
"name" : "amount_0_max" ,
"type" : "u64"
},
{
"name" : "amount_1_max" ,
"type" : "u64"
},
{
"name" : "with_metadata" ,
"type" : "bool"
},
{
"name" : "base_flag" ,
"type" : {
"option" : "bool"
}
}
]
},
{
"name" : "set_reward_params" ,
"docs" : [
"Reset reward param, start a new reward cycle or extend the current cycle." ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `reward_index` - The index of reward token in the pool." ,
"* `emissions_per_second_x64` - The per second emission reward, when extend the current cycle," ,
"new value can't be less than old value" ,
"* `open_time` - reward open timestamp, must be set when starting a new cycle" ,
"* `end_time` - reward end timestamp" ,
""
],
"discriminator" : [
112 ,
52 ,
167 ,
75 ,
32 ,
201 ,
211 ,
137
],
"accounts" : [
{
"name" : "authority" ,
"docs" : [
"Address to be set as protocol owner. It pays to create factory state account."
],
"signer" : true
},
{
"name" : "amm_config"
},
{
"name" : "pool_state" ,
"writable" : true
},
{
"name" : "operation_state" ,
"docs" : [
"load info from the account to judge reward permission"
],
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
111 ,
112 ,
101 ,
114 ,
97 ,
116 ,
105 ,
111 ,
110
]
}
]
}
},
{
"name" : "token_program" ,
"docs" : [
"Token program"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "token_program_2022" ,
"docs" : [
"Token program 2022"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
}
],
"args" : [
{
"name" : "reward_index" ,
"type" : "u8"
},
{
"name" : "emissions_per_second_x64" ,
"type" : "u128"
},
{
"name" : "open_time" ,
"type" : "u64"
},
{
"name" : "end_time" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
}
]
},
2026-08-13 05:53:20 +08:00
{
"name" : "settle_limit_order" ,
"docs" : [
"Settle a limit order" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
""
],
"discriminator" : [
205 ,
78 ,
116 ,
33 ,
92 ,
105 ,
26 ,
96
],
"accounts" : [
{
"name" : "signer" ,
"signer" : true
},
{
"name" : "pool_state"
},
{
"name" : "tick_array"
},
{
"name" : "limit_order" ,
"writable" : true
},
{
"name" : "output_token_account" ,
"docs" : [
"The owner's output token account (opposite direction from input)"
],
"writable" : true
},
{
"name" : "output_vault" ,
"docs" : [
"The address that holds output tokens"
],
"writable" : true
},
{
"name" : "output_vault_mint" ,
"docs" : [
"The mint of output vault"
]
},
{
"name" : "output_token_program" ,
"docs" : [
"SPL-TOKEN / SPL-TOKEN2022 program for token transfers"
]
}
],
"args" : []
},
2026-01-23 16:47:55 +08:00
{
"name" : "swap" ,
"docs" : [
"#[deprecated(note = \"Use `swap_v2` instead.\")]" ,
"Swaps one token for as much as possible of another token across a single pool" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `amount` - Arranged in pairs with other_amount_threshold. (amount_in, amount_out_minimum) or (amount_out, amount_in_maximum)" ,
"* `other_amount_threshold` - For slippage check" ,
"* `sqrt_price_limit` - The Q64.64 sqrt price √P limit. If zero for one, the price cannot" ,
"* `is_base_input` - swap base input or swap base output" ,
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
248 ,
198 ,
158 ,
145 ,
225 ,
117 ,
135 ,
200
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
"name" : "payer" ,
"docs" : [
"The user performing the swap"
2026-08-13 05:53:20 +08:00
],
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "amm_config" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The factory state to read protocol fees"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The program account of the pool in which the swap will be performed"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "input_token_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The user token account for input token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "output_token_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The user token account for output token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "input_vault" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The vault token account for input token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "output_vault" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The vault token account for output token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "observation_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The program account for the most recent oracle observation"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"SPL program for token transfers"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_array" ,
"writable" : true
2026-01-23 16:47:55 +08:00
}
],
"args" : [
{
"name" : "amount" ,
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "other_amount_threshold" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "sqrt_price_limit_x64" ,
2026-01-23 16:47:55 +08:00
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "is_base_input" ,
2026-01-23 16:47:55 +08:00
"type" : "bool"
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "swap_router_base_in" ,
"docs" : [
"Swap token for as much as possible of another token across the path provided, base input" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `amount_in` - Token amount to be swapped in" ,
"* `amount_out_minimum` - Panic if output amount is below minimum amount. For slippage." ,
""
],
"discriminator" : [
69 ,
125 ,
115 ,
218 ,
245 ,
186 ,
242 ,
196
],
"accounts" : [
{
"name" : "payer" ,
"docs" : [
"The user performing the swap"
],
"signer" : true
},
{
"name" : "input_token_account" ,
"docs" : [
"The token account that pays input tokens for the swap"
],
"writable" : true
},
{
"name" : "input_token_mint" ,
"docs" : [
"The mint of input token"
],
"writable" : true
},
{
"name" : "token_program" ,
"docs" : [
"SPL program for token transfers"
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name" : "token_program_2022" ,
"docs" : [
"SPL program 2022 for token transfers"
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
"name" : "memo_program" ,
"docs" : [
"Memo program"
],
"address" : "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"
}
],
"args" : [
{
"name" : "amount_in" ,
"type" : "u64"
},
{
"name" : "amount_out_minimum" ,
"type" : "u64"
}
]
},
{
"name" : "swap_v2" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Swaps one token for as much as possible of another token across a single pool, support token program 2022" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `amount` - Arranged in pairs with other_amount_threshold. (amount_in, amount_out_minimum) or (amount_out, amount_in_maximum)" ,
"* `other_amount_threshold` - For slippage check" ,
"* `sqrt_price_limit` - The Q64.64 sqrt price √P limit. If zero for one, the price cannot" ,
"* `is_base_input` - swap base input or swap base output" ,
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
43 ,
4 ,
237 ,
11 ,
26 ,
201 ,
30 ,
98
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
"name" : "payer" ,
"docs" : [
"The user performing the swap"
2026-08-13 05:53:20 +08:00
],
"signer" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "amm_config" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The factory state to read protocol fees"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The program account of the pool in which the swap will be performed"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "input_token_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The user token account for input token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "output_token_account" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The user token account for output token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "input_vault" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The vault token account for input token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "output_vault" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The vault token account for output token"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "observation_state" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The program account for the most recent oracle observation"
2026-08-13 05:53:20 +08:00
],
"writable" : true
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"SPL program for token transfers"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_program_2022" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"SPL program 2022 for token transfers"
2026-08-13 05:53:20 +08:00
],
"address" : "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "memo_program" ,
"docs" : [
"Memo program"
],
"address" : "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "input_vault_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 0"
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "output_vault_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The mint of token vault 1"
]
}
],
"args" : [
{
"name" : "amount" ,
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "other_amount_threshold" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "sqrt_price_limit_x64" ,
2026-01-23 16:47:55 +08:00
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "is_base_input" ,
2026-01-23 16:47:55 +08:00
"type" : "bool"
}
]
},
{
2026-08-13 05:53:20 +08:00
"name" : "transfer_reward_owner" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Transfer reward owner" ,
2026-01-23 16:47:55 +08:00
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
2026-08-13 05:53:20 +08:00
"* `new_owner` - new owner pubkey" ,
2026-01-23 16:47:55 +08:00
""
],
2026-08-13 05:53:20 +08:00
"discriminator" : [
7 ,
22 ,
12 ,
83 ,
242 ,
43 ,
48 ,
121
],
2026-01-23 16:47:55 +08:00
"accounts" : [
{
2026-08-13 05:53:20 +08:00
"name" : "authority" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Address to be set as operation account owner."
],
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
"writable" : true
2026-01-23 16:47:55 +08:00
}
],
"args" : [
{
2026-08-13 05:53:20 +08:00
"name" : "new_owner" ,
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
}
]
2026-08-13 05:53:20 +08:00
},
{
"name" : "update_amm_config" ,
"docs" : [
"Updates the owner of the amm config" ,
"Must be called by the current owner or admin" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `trade_fee_rate` - The new trade fee rate of amm config, be set when `param` is 0" ,
"* `protocol_fee_rate` - The new protocol fee rate of amm config, be set when `param` is 1" ,
"* `fund_fee_rate` - The new fund fee rate of amm config, be set when `param` is 2" ,
"* `new_owner` - The config's new owner, be set when `param` is 3" ,
"* `new_fund_owner` - The config's new fund owner, be set when `param` is 4" ,
"* `limit_protocol_fee_rate` - The new limit protocol fee rate of amm config, be set when `param` is 5" ,
"* `limit_fund_fee_rate` - The new limit fund fee rate of amm config, be set when `param` is 6" ,
"* `param` - The value can be 0 | 1 | 2 | 3 | 4 | 5 | 6, otherwise will report an error" ,
""
],
"discriminator" : [
49 ,
60 ,
174 ,
136 ,
154 ,
28 ,
116 ,
200
],
"accounts" : [
{
"name" : "owner" ,
"docs" : [
"The amm config owner or admin"
],
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
},
{
"name" : "amm_config" ,
"docs" : [
"Amm config account to be changed"
],
"writable" : true
}
],
"args" : [
{
"name" : "param" ,
"type" : "u8"
},
{
"name" : "value" ,
"type" : "u32"
}
]
},
{
"name" : "update_dynamic_fee_config" ,
"docs" : [
"Updates the dynamic fee configuration constants." ,
"" ,
"This function allows updating the parameters that control dynamic fee calculation," ,
"such as filter period, decay period, reduction factor, fee control factor, etc." ,
"Only the admin or the amm config owner can update these settings." ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `filter_period` - Period that determines the high frequency trading time window (in seconds)" ,
"* `decay_period` - Period that determines when the dynamic fee starts to decrease (in seconds)" ,
"* `reduction_factor` - Dynamic fee rate decrement rate, used for volatility reference decay" ,
"* `dynamic_fee_control` - Factor used to scale the dynamic fee component" ,
"* `max_volatility_accumulator` - Maximum value for the volatility accumulator" ,
"* `create_pool_authority` - The new authority pubkey that can use this dynamic fee config to create pools"
],
"discriminator" : [
7 ,
7 ,
80 ,
8 ,
2 ,
199 ,
132 ,
240
],
"accounts" : [
{
"name" : "owner" ,
"docs" : [
"The admin has permission to update the config"
],
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
},
{
"name" : "dynamic_fee_config" ,
"docs" : [
"The dynamic fee config account to be updated"
],
"writable" : true
}
],
"args" : [
{
"name" : "filter_period" ,
"type" : "u16"
},
{
"name" : "decay_period" ,
"type" : "u16"
},
{
"name" : "reduction_factor" ,
"type" : "u16"
},
{
"name" : "dynamic_fee_control" ,
"type" : "u32"
},
{
"name" : "max_volatility_accumulator" ,
"type" : "u32"
}
]
},
{
"name" : "update_operation_account" ,
"docs" : [
"Update the operation account" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `param` - The value can be 0 | 1 | 2 | 3, otherwise will report an error" ,
"* `keys`- update operation owner when the `param` is 0" ,
"remove operation owner when the `param` is 1" ,
"update whitelist mint when the `param` is 2" ,
"remove whitelist mint when the `param` is 3" ,
""
],
"discriminator" : [
127 ,
70 ,
119 ,
40 ,
188 ,
227 ,
61 ,
7
],
"accounts" : [
{
"name" : "owner" ,
"docs" : [
"Address to be set as operation account owner."
],
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
},
{
"name" : "operation_state" ,
"docs" : [
"Initialize operation state account to store operation owner address and white list mint."
],
"writable" : true ,
"pda" : {
"seeds" : [
{
"kind" : "const" ,
"value" : [
111 ,
112 ,
101 ,
114 ,
97 ,
116 ,
105 ,
111 ,
110
]
}
]
}
},
{
"name" : "system_program" ,
"address" : "11111111111111111111111111111111"
}
],
"args" : [
{
"name" : "param" ,
"type" : "u8"
},
{
"name" : "keys" ,
"type" : {
"vec" : "pubkey"
}
}
]
},
{
"name" : "update_pool_status" ,
"docs" : [
"Update pool status for given value" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
"* `status` - The value of status" ,
""
],
"discriminator" : [
130 ,
87 ,
108 ,
6 ,
46 ,
224 ,
117 ,
123
],
"accounts" : [
{
"name" : "authority" ,
"signer" : true ,
"address" : "2kqJncUWCkk5TyJYamPW5DECfqAz4brYpH6r5j6vg9yx"
},
{
"name" : "pool_state" ,
"writable" : true
}
],
"args" : [
{
"name" : "status" ,
"type" : "u8"
}
]
},
{
"name" : "update_reward_infos" ,
"docs" : [
"Update rewards info of the given pool, can be called for everyone" ,
"" ,
"# Arguments" ,
"" ,
"* `ctx` - The context of accounts" ,
""
],
"discriminator" : [
163 ,
172 ,
224 ,
52 ,
11 ,
154 ,
106 ,
223
],
"accounts" : [
{
"name" : "pool_state" ,
"docs" : [
"The liquidity pool for which reward info to update"
],
"writable" : true
}
],
"args" : []
2026-01-23 16:47:55 +08:00
}
],
"accounts" : [
2026-08-13 05:53:20 +08:00
{
"name" : "AmmConfig" ,
"discriminator" : [
218 ,
244 ,
33 ,
104 ,
203 ,
203 ,
43 ,
111
]
},
{
"name" : "DynamicFeeConfig" ,
"discriminator" : [
244 ,
226 ,
88 ,
82 ,
14 ,
59 ,
246 ,
220
]
},
{
"name" : "LimitOrderNonce" ,
"discriminator" : [
17 ,
153 ,
236 ,
57 ,
25 ,
199 ,
231 ,
248
]
},
{
"name" : "LimitOrderState" ,
"discriminator" : [
1 ,
238 ,
5 ,
142 ,
207 ,
62 ,
44 ,
228
]
},
{
"name" : "ObservationState" ,
"discriminator" : [
122 ,
174 ,
197 ,
53 ,
129 ,
9 ,
165 ,
132
]
},
{
"name" : "OperationState" ,
"discriminator" : [
19 ,
236 ,
58 ,
237 ,
81 ,
222 ,
183 ,
252
]
},
{
"name" : "PersonalPositionState" ,
"discriminator" : [
70 ,
111 ,
150 ,
126 ,
230 ,
15 ,
25 ,
117
]
},
{
"name" : "PoolState" ,
"discriminator" : [
247 ,
237 ,
227 ,
245 ,
215 ,
195 ,
222 ,
70
]
},
{
"name" : "ProtocolPositionState" ,
"discriminator" : [
100 ,
226 ,
145 ,
99 ,
146 ,
218 ,
160 ,
106
]
},
{
"name" : "SupportMintAssociated" ,
"discriminator" : [
134 ,
40 ,
183 ,
79 ,
12 ,
112 ,
162 ,
53
]
},
{
"name" : "TickArrayBitmapExtension" ,
"discriminator" : [
60 ,
150 ,
36 ,
219 ,
97 ,
128 ,
139 ,
153
]
},
{
"name" : "TickArrayState" ,
"discriminator" : [
192 ,
155 ,
85 ,
205 ,
49 ,
249 ,
129 ,
42
]
}
],
"events" : [
{
"name" : "CollectPersonalFeeEvent" ,
"discriminator" : [
166 ,
174 ,
105 ,
192 ,
81 ,
161 ,
83 ,
105
]
},
{
"name" : "CollectProtocolFeeEvent" ,
"discriminator" : [
206 ,
87 ,
17 ,
79 ,
45 ,
41 ,
213 ,
61
]
},
{
"name" : "ConfigChangeEvent" ,
"discriminator" : [
247 ,
189 ,
7 ,
119 ,
106 ,
112 ,
95 ,
151
]
},
{
"name" : "CreatePersonalPositionEvent" ,
"discriminator" : [
100 ,
30 ,
87 ,
249 ,
196 ,
223 ,
154 ,
206
]
},
{
"name" : "DecreaseLimitOrderEvent" ,
"discriminator" : [
70 ,
48 ,
40 ,
221 ,
219 ,
237 ,
212 ,
163
]
},
{
"name" : "DecreaseLiquidityEvent" ,
"discriminator" : [
58 ,
222 ,
86 ,
58 ,
68 ,
50 ,
85 ,
56
]
},
{
"name" : "IncreaseLimitOrderEvent" ,
"discriminator" : [
11 ,
120 ,
13 ,
204 ,
199 ,
87 ,
19 ,
200
]
},
{
"name" : "IncreaseLiquidityEvent" ,
"discriminator" : [
49 ,
79 ,
105 ,
212 ,
32 ,
34 ,
30 ,
84
]
},
{
"name" : "LiquidityCalculateEvent" ,
"discriminator" : [
237 ,
112 ,
148 ,
230 ,
57 ,
84 ,
180 ,
162
]
},
{
"name" : "LiquidityChangeEvent" ,
"discriminator" : [
126 ,
240 ,
175 ,
206 ,
158 ,
88 ,
153 ,
107
]
},
{
"name" : "OpenLimitOrderEvent" ,
"discriminator" : [
106 ,
24 ,
71 ,
85 ,
57 ,
169 ,
158 ,
216
]
},
{
"name" : "PoolCreatedEvent" ,
"discriminator" : [
25 ,
94 ,
75 ,
47 ,
112 ,
99 ,
53 ,
63
]
},
{
"name" : "SettleLimitOrderEvent" ,
"discriminator" : [
88 ,
119 ,
77 ,
164 ,
125 ,
124 ,
10 ,
194
]
},
{
"name" : "SwapEvent" ,
"discriminator" : [
64 ,
198 ,
205 ,
232 ,
38 ,
8 ,
113 ,
226
]
},
{
"name" : "UpdateRewardInfosEvent" ,
"discriminator" : [
109 ,
127 ,
186 ,
78 ,
114 ,
65 ,
37 ,
236
]
}
],
"errors" : [
{
"code" : 6000 ,
"name" : "NotApproved" ,
"msg" : "Not approved"
},
{
"code" : 6001 ,
"name" : "InvalidUpdateConfigFlag" ,
"msg" : "invalid update amm config flag"
},
{
"code" : 6002 ,
"name" : "AccountLack" ,
"msg" : "Account lack"
},
{
"code" : 6003 ,
"name" : "ClosePositionErr" ,
"msg" : "Remove liquidity, collect fees owed and reward then you can close position account"
},
{
"code" : 6004 ,
"name" : "InvalidTickIndex" ,
"msg" : "Tick out of range"
},
{
"code" : 6005 ,
"name" : "TickInvalidOrder" ,
"msg" : "The lower tick must be below the upper tick"
},
{
"code" : 6006 ,
"name" : "TickLowerOverflow" ,
"msg" : "The tick must be greater, or equal to the minimum tick(-443636)"
},
{
"code" : 6007 ,
"name" : "TickUpperOverflow" ,
"msg" : "The tick must be lesser than, or equal to the maximum tick(443636)"
},
{
"code" : 6008 ,
"name" : "TickAndSpacingNotMatch" ,
"msg" : "tick % tick_spacing must be zero"
},
{
"code" : 6009 ,
"name" : "InvalidTickArray" ,
"msg" : "Invalid tick array account"
},
{
"code" : 6010 ,
"name" : "InvalidTickArrayBoundary" ,
"msg" : "Invalid tick array boundary"
},
{
"code" : 6011 ,
"name" : "SqrtPriceLimitOverflow" ,
"msg" : "Square root price limit overflow"
},
{
"code" : 6012 ,
"name" : "SqrtPriceX64" ,
"msg" : "sqrt_price_x64 out of range"
},
{
"code" : 6013 ,
"name" : "LiquiditySubValueErr" ,
"msg" : "Liquidity sub delta L must be smaller than before"
},
{
"code" : 6014 ,
"name" : "LiquidityAddValueErr" ,
"msg" : "Liquidity add delta L must be greater, or equal to before"
},
{
"code" : 6015 ,
"name" : "ForbidBothZeroForSupplyLiquidity" ,
"msg" : "Both token amount must not be zero while supply liquidity"
},
{
"code" : 6016 ,
"name" : "LiquidityInsufficient" ,
"msg" : "Liquidity insufficient"
},
{
"code" : 6017 ,
"name" : "PriceSlippageCheck" ,
"msg" : "Price slippage check"
},
{
"code" : 6018 ,
"name" : "TooLittleOutputReceived" ,
"msg" : "Too little output received"
},
{
"code" : 6019 ,
"name" : "TooMuchInputPaid" ,
"msg" : "Too much input paid"
},
{
"code" : 6020 ,
"name" : "ZeroAmountSpecified" ,
"msg" : "Swap special amount can not be zero"
},
{
"code" : 6021 ,
"name" : "InvalidInputPoolVault" ,
"msg" : "Input pool vault is invalid"
},
{
"code" : 6022 ,
"name" : "TooSmallInputOrOutputAmount" ,
"msg" : "Swap input or output amount is too small"
},
{
"code" : 6023 ,
"name" : "NotEnoughTickArrayAccount" ,
"msg" : "Not enough tick array account"
},
{
"code" : 6024 ,
"name" : "InvalidFirstTickArrayAccount" ,
"msg" : "Invalid first tick array account"
},
{
"code" : 6025 ,
"name" : "InvalidRewardIndex" ,
"msg" : "Invalid reward index"
},
{
"code" : 6026 ,
"name" : "FullRewardInfo" ,
"msg" : "The init reward token reach to the max"
},
{
"code" : 6027 ,
"name" : "RewardTokenAlreadyInUse" ,
"msg" : "The init reward token already in use"
},
{
"code" : 6028 ,
"name" : "ExceptRewardMint" ,
"msg" : "The reward tokens must contain one of pool vault mint except the last reward"
},
{
"code" : 6029 ,
"name" : "InvalidRewardInitParam" ,
"msg" : "Invalid reward init param"
},
{
"code" : 6030 ,
"name" : "InvalidRewardInputAccountNumber" ,
"msg" : "Invalid collect reward input account number"
},
{
"code" : 6031 ,
"name" : "InvalidRewardPeriod" ,
"msg" : "Invalid reward period"
},
{
"code" : 6032 ,
"name" : "NotApproveUpdateRewardEmissions" ,
"msg" : "Modification of emissions is allowed within 72 hours from the end of the previous cycle"
},
{
"code" : 6033 ,
"name" : "UnInitializedRewardInfo" ,
"msg" : "uninitialized reward info"
},
{
"code" : 6034 ,
"name" : "NotSupportMint" ,
"msg" : "Not support token_2022 mint extension"
},
{
"code" : 6035 ,
"name" : "MissingTickArrayBitmapExtensionAccount" ,
"msg" : "Missing tickarray bitmap extension account"
},
{
"code" : 6036 ,
"name" : "InsufficientLiquidityForDirection" ,
"msg" : "Insufficient liquidity for this direction"
},
{
"code" : 6037 ,
"name" : "MaxTokenOverflow" ,
"msg" : "Max token overflow"
},
{
"code" : 6038 ,
"name" : "CalculateOverflow" ,
"msg" : "Calculate overflow"
},
{
"code" : 6039 ,
"name" : "TransferFeeCalculateNotMatch" ,
"msg" : "TransferFee calculate not match"
},
{
"code" : 6040 ,
"name" : "OrderAlreadyFilled" ,
"msg" : "Order already fully filled, cannot modify"
},
{
"code" : 6041 ,
"name" : "InvalidOrderPhase" ,
"msg" : "Invalid order phase"
},
{
"code" : 6042 ,
"name" : "InvalidLimitOrderAmount" ,
"msg" : "Invalid limit order amount"
},
{
"code" : 6043 ,
"name" : "OrderPhaseSaturated" ,
"msg" : "Tick order phase saturated"
},
{
"code" : 6044 ,
"name" : "InvalidDynamicFeeConfigParams" ,
"msg" : "Invalid dynamic fee config params"
},
{
"code" : 6045 ,
"name" : "InvalidFeeOn" ,
"msg" : "Invalid fee on which token (must be 0, 1, or 2)"
},
{
"code" : 6046 ,
"name" : "ZeroSqrtPrice" ,
"msg" : "sqrt_price_x64 must be greater than 0"
},
{
"code" : 6047 ,
"name" : "ZeroLiquidity" ,
"msg" : "liquidity must be greater than 0"
},
{
"code" : 6048 ,
"name" : "MissingBaseFlag" ,
"msg" : "base_flag is required when liquidity is zero"
},
{
"code" : 6049 ,
"name" : "MissingMintAccount" ,
"msg" : "Mint account is required but not provided"
},
{
"code" : 6050 ,
"name" : "MissingTokenProgram2022" ,
"msg" : "Token-2022 program is required but not provided"
}
],
"types" : [
2026-01-23 16:47:55 +08:00
{
"name" : "AmmConfig" ,
"docs" : [
"Holds the current owner of the factory"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "bump" ,
"docs" : [
"Bump to identify PDA"
],
"type" : "u8"
},
{
"name" : "index" ,
"type" : "u16"
},
{
"name" : "owner" ,
"docs" : [
"Address of the protocol owner"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "protocol_fee_rate" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The protocol fee"
],
"type" : "u32"
},
{
2026-08-13 05:53:20 +08:00
"name" : "trade_fee_rate" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The trade fee, denominated in hundredths of a bip (10^-6)"
],
"type" : "u32"
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_spacing" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The tick spacing"
],
"type" : "u16"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fund_fee_rate" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The fund fee, denominated in hundredths of a bip (10^-6)"
],
"type" : "u32"
},
{
2026-08-13 05:53:20 +08:00
"name" : "padding_u32" ,
2026-01-23 16:47:55 +08:00
"type" : "u32"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fund_owner" ,
"docs" : [
"The fund owner"
],
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
"name" : "padding" ,
"type" : {
"array" : [
"u64" ,
3
]
}
}
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "CollectFeeOn" ,
"type" : {
"kind" : "enum" ,
"variants" : [
{
"name" : "FromInput"
},
{
"name" : "Token0Only"
},
{
"name" : "Token1Only"
}
]
}
},
{
"name" : "CollectPersonalFeeEvent" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Emitted when tokens are collected for a position"
2026-01-23 16:47:55 +08:00
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
2026-08-13 05:53:20 +08:00
"name" : "position_nft_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The ID of the token for which underlying tokens were collected"
2026-01-23 16:47:55 +08:00
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "recipient_token_account_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The token account that received the collected token_0 tokens"
],
"type" : "pubkey"
},
{
"name" : "recipient_token_account_1" ,
"docs" : [
"The token account that received the collected token_1 tokens"
],
"type" : "pubkey"
},
{
"name" : "amount_0" ,
"docs" : [
"The amount of token_0 owed to the position that was collected"
],
"type" : "u64"
},
{
"name" : "amount_1" ,
"docs" : [
"The amount of token_1 owed to the position that was collected"
],
"type" : "u64"
}
]
}
},
{
"name" : "CollectProtocolFeeEvent" ,
"docs" : [
"Emitted when the collected protocol fees are withdrawn by the factory owner"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_state" ,
"docs" : [
"The pool whose protocol fee is collected"
],
"type" : "pubkey"
},
{
"name" : "recipient_token_account_0" ,
"docs" : [
"The address that receives the collected token_0 protocol fees"
],
"type" : "pubkey"
},
{
"name" : "recipient_token_account_1" ,
"docs" : [
"The address that receives the collected token_1 protocol fees"
],
"type" : "pubkey"
},
{
"name" : "amount_0" ,
"docs" : [
"The amount of token_0 protocol fees that is withdrawn"
],
"type" : "u64"
},
{
"name" : "amount_1" ,
"docs" : [
"The amount of token_0 protocol fees that is withdrawn"
],
"type" : "u64"
}
]
}
},
{
"name" : "ConfigChangeEvent" ,
"docs" : [
"Emitted when create or update a config"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "index" ,
"type" : "u16"
},
{
"name" : "owner" ,
"type" : "pubkey"
},
{
"name" : "protocol_fee_rate" ,
"type" : "u32"
},
{
"name" : "trade_fee_rate" ,
"type" : "u32"
},
{
"name" : "tick_spacing" ,
"type" : "u16"
},
{
"name" : "fund_fee_rate" ,
"type" : "u32"
},
{
"name" : "fund_owner" ,
"type" : "pubkey"
}
]
}
},
{
"name" : "CreateCustomizableParams" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "sqrt_price_x64" ,
"type" : "u128"
},
{
"name" : "collect_fee_on" ,
"type" : {
"defined" : {
"name" : "CollectFeeOn"
}
}
},
{
"name" : "enable_dynamic_fee" ,
"type" : "bool"
}
]
}
},
{
"name" : "CreatePersonalPositionEvent" ,
"docs" : [
"Emitted when create a new position"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_state" ,
"docs" : [
"The pool for which liquidity was added"
],
"type" : "pubkey"
},
{
"name" : "minter" ,
"docs" : [
"The address that create the position"
],
"type" : "pubkey"
},
{
"name" : "nft_owner" ,
"docs" : [
"The owner of the position and recipient of any minted liquidity"
],
"type" : "pubkey"
},
{
"name" : "tick_lower_index" ,
"docs" : [
"The lower tick of the position"
],
"type" : "i32"
},
{
"name" : "tick_upper_index" ,
"docs" : [
"The upper tick of the position"
],
"type" : "i32"
},
{
"name" : "liquidity" ,
"docs" : [
"The amount of liquidity minted to the position range"
],
"type" : "u128"
},
{
"name" : "deposit_amount_0" ,
"docs" : [
"The amount of token_0 was deposit for the liquidity"
],
"type" : "u64"
},
{
"name" : "deposit_amount_1" ,
"docs" : [
"The amount of token_1 was deposit for the liquidity"
],
"type" : "u64"
},
{
"name" : "deposit_amount_0_transfer_fee" ,
"docs" : [
"The token transfer fee for deposit_amount_0"
],
"type" : "u64"
},
{
"name" : "deposit_amount_1_transfer_fee" ,
"docs" : [
"The token transfer fee for deposit_amount_1"
],
"type" : "u64"
}
]
}
},
{
"name" : "DecreaseLimitOrderEvent" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_id" ,
"docs" : [
"The pool whose limit order was decreased"
],
"type" : "pubkey"
},
{
"name" : "limit_order" ,
"docs" : [
"The limit order account"
],
"type" : "pubkey"
},
{
"name" : "zero_for_one" ,
"docs" : [
"Direction of the limit order (true if zero_for_one)"
],
"type" : "bool"
},
{
"name" : "tick_index" ,
"docs" : [
"Tick index of the limit order"
],
"type" : "i32"
},
{
"name" : "total_amount" ,
"docs" : [
"Total amount of the limit order"
],
"type" : "u64"
},
{
"name" : "filled_amount" ,
"docs" : [
"Filled amount of the limit order"
],
"type" : "u64"
},
{
"name" : "settled_output_amount" ,
"docs" : [
"Amount of output tokens settled (excluding fees)"
],
"type" : "u64"
},
{
"name" : "decreased_amount" ,
"docs" : [
"Amount of input tokens returned to user"
],
"type" : "u64"
}
]
}
},
{
"name" : "DecreaseLiquidityEvent" ,
"docs" : [
"Emitted when liquidity is decreased."
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "position_nft_mint" ,
"docs" : [
"The ID of the token for which liquidity was decreased"
],
"type" : "pubkey"
},
{
"name" : "liquidity" ,
"docs" : [
"The amount by which liquidity for the position was decreased"
],
"type" : "u128"
},
{
"name" : "decrease_amount_0" ,
"docs" : [
"The amount of token_0 that was paid for the decrease in liquidity"
],
"type" : "u64"
},
{
"name" : "decrease_amount_1" ,
"docs" : [
"The amount of token_1 that was paid for the decrease in liquidity"
],
"type" : "u64"
},
{
"name" : "fee_amount_0" ,
"type" : "u64"
},
{
"name" : "fee_amount_1" ,
"docs" : [
"The amount of token_1 fee"
],
"type" : "u64"
},
{
"name" : "reward_amounts" ,
"docs" : [
"The amount of rewards"
2026-01-23 16:47:55 +08:00
],
"type" : {
"array" : [
2026-08-13 05:53:20 +08:00
"u64" ,
3
2026-01-23 16:47:55 +08:00
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "transfer_fee_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"The amount of token_0 transfer fee"
],
"type" : "u64"
},
{
"name" : "transfer_fee_1" ,
"docs" : [
"The amount of token_1 transfer fee"
],
"type" : "u64"
}
]
}
},
{
"name" : "DynamicFeeConfig" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "index" ,
"type" : "u16"
},
{
"name" : "filter_period" ,
"type" : "u16"
},
{
"name" : "decay_period" ,
"type" : "u16"
},
{
"name" : "reduction_factor" ,
"type" : "u16"
},
{
"name" : "dynamic_fee_control" ,
"type" : "u32"
},
{
"name" : "max_volatility_accumulator" ,
"type" : "u32"
},
{
"name" : "padding" ,
"type" : {
"array" : [
"u64" ,
8
]
}
}
]
}
},
{
"name" : "DynamicFeeInfo" ,
"docs" : [
"Dynamic fee information for pool configuration"
],
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "filter_period" ,
"docs" : [
"Period that determines the high frequency trading time window (in seconds)."
],
"type" : "u16"
},
{
"name" : "decay_period" ,
"docs" : [
"Period that determines when the dynamic fee starts to decrease (in seconds)."
],
"type" : "u16"
},
{
"name" : "reduction_factor" ,
"docs" : [
"Dynamic fee rate decrement rate, used for volatility reference decay."
],
"type" : "u16"
},
{
"name" : "dynamic_fee_control" ,
"docs" : [
"Factor used to scale the dynamic fee component in the fee rate calculation."
],
"type" : "u32"
},
{
"name" : "max_volatility_accumulator" ,
"docs" : [
"Maximum value for the volatility accumulator, used to cap the dynamic fee rate."
],
"type" : "u32"
},
{
"name" : "tick_spacing_index_reference" ,
"docs" : [
"Active tick spacing index at the last reference update."
],
"type" : "i32"
},
{
"name" : "volatility_reference" ,
"docs" : [
"Volatility reference value, stores the decayed volatility accumulator."
],
"type" : "u32"
},
{
"name" : "volatility_accumulator" ,
"docs" : [
"Volatility accumulator, used to calculate the dynamic fee rate."
],
"type" : "u32"
},
{
"name" : "last_update_timestamp" ,
"docs" : [
"Last timestamp (block time) when `volatility_reference` and `tick_spacing_index_reference` were updated."
],
"type" : "u64"
},
{
"name" : "padding" ,
"docs" : [
"Reserved for future upgrades."
2026-01-23 16:47:55 +08:00
],
"type" : {
"array" : [
2026-08-13 05:53:20 +08:00
"u8" ,
46
]
}
}
]
}
},
{
"name" : "IncreaseLimitOrderEvent" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_id" ,
"docs" : [
"The pool whose limit order was increased"
],
"type" : "pubkey"
},
{
"name" : "limit_order" ,
"docs" : [
"The limit order account"
],
"type" : "pubkey"
},
{
"name" : "zero_for_one" ,
"docs" : [
"Direction of the limit order (true if zero_for_one)"
],
"type" : "bool"
},
{
"name" : "tick_index" ,
"docs" : [
"Tick index of the limit order"
],
"type" : "i32"
},
{
"name" : "total_amount" ,
"docs" : [
"Total amount of the limit order"
],
"type" : "u64"
},
{
"name" : "increased_amount" ,
"docs" : [
"Increased amount of the limit order"
],
"type" : "u64"
},
{
"name" : "transfer_fee" ,
"docs" : [
"Transfer fee of the limit order"
],
"type" : "u64"
}
]
}
},
{
"name" : "IncreaseLiquidityEvent" ,
"docs" : [
"Emitted when liquidity is increased."
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "position_nft_mint" ,
"docs" : [
"The ID of the token for which liquidity was increased"
],
"type" : "pubkey"
},
{
"name" : "liquidity" ,
"docs" : [
"The amount by which liquidity for the NFT position was increased"
],
"type" : "u128"
},
{
"name" : "amount_0" ,
"docs" : [
"The amount of token_0 that was paid for the increase in liquidity"
],
"type" : "u64"
},
{
"name" : "amount_1" ,
"docs" : [
"The amount of token_1 that was paid for the increase in liquidity"
],
"type" : "u64"
},
{
"name" : "amount_0_transfer_fee" ,
"docs" : [
"The token transfer fee for amount_0"
],
"type" : "u64"
},
{
"name" : "amount_1_transfer_fee" ,
"docs" : [
"The token transfer fee for amount_1"
],
"type" : "u64"
}
]
}
},
{
"name" : "InitializeRewardParam" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "open_time" ,
"docs" : [
"Reward open time"
],
"type" : "u64"
},
{
"name" : "end_time" ,
"docs" : [
"Reward end time"
],
"type" : "u64"
},
{
"name" : "emissions_per_second_x64" ,
"docs" : [
"Token reward per second are earned per unit of liquidity"
],
"type" : "u128"
}
]
}
},
{
"name" : "LimitOrderNonce" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "user_wallet" ,
"type" : "pubkey"
},
{
"name" : "nonce_index" ,
"type" : "u8"
},
{
"name" : "order_nonce" ,
"type" : "u64"
},
{
"name" : "padding" ,
"type" : {
"array" : [
"u64" ,
4
]
}
}
]
}
},
{
"name" : "LimitOrderState" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_id" ,
"type" : "pubkey"
},
{
"name" : "owner" ,
"docs" : [
"Owner of this limit order"
],
"type" : "pubkey"
},
{
"name" : "tick_index" ,
"type" : "i32"
},
{
"name" : "zero_for_one" ,
"type" : "bool"
},
{
"name" : "order_phase" ,
"docs" : [
"Order phase of this limit order, aligned with `TickState.order_phase` for FIFO semantics"
],
"type" : "u64"
},
{
"name" : "total_amount" ,
"docs" : [
"Total amount of the limit order"
],
"type" : "u64"
},
{
"name" : "filled_amount" ,
"docs" : [
"Filled amount of the limit order (informational, for events/display)"
],
"type" : "u64"
},
{
"name" : "settle_base" ,
"docs" : [
"The unfilled amount when the current computation segment started." ,
"Set to total_amount on open, reset on decrease. Never updated during settle —" ,
"this avoids cascading floor-division error across multiple settles."
],
"type" : "u64"
},
{
"name" : "settled_output" ,
"docs" : [
"Cumulative output paid to user in the current segment. Reset on decrease." ,
"Each settle computes total_output from the segment base and pays the diff" ,
"(total_output - settled_output), limiting dust deduction to once per segment."
],
"type" : "u64"
},
{
"name" : "open_time" ,
"docs" : [
"Order open time"
],
"type" : "u64"
},
{
"name" : "unfilled_ratio_x64" ,
"docs" : [
"Snapshot of `TickState.unfilled_ratio_x64` at the time this segment started (Q64.64)." ,
"Initialized to Q64 on open; reset to tick's current ratio on decrease."
],
"type" : "u128"
},
{
"name" : "padding" ,
"type" : {
"array" : [
"u64" ,
4
]
}
}
]
}
},
{
"name" : "LiquidityCalculateEvent" ,
"docs" : [
"Emitted when liquidity decreased or increase."
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_liquidity" ,
"docs" : [
"The pool liquidity before decrease or increase"
],
"type" : "u128"
},
{
"name" : "pool_sqrt_price_x64" ,
"docs" : [
"The pool price when decrease or increase in liquidity"
],
"type" : "u128"
},
{
"name" : "pool_tick" ,
"docs" : [
"The pool tick when decrease or increase in liquidity"
],
"type" : "i32"
},
{
"name" : "calc_amount_0" ,
"docs" : [
"The amount of token_0 that was calculated for the decrease or increase in liquidity"
],
"type" : "u64"
},
{
"name" : "calc_amount_1" ,
"docs" : [
"The amount of token_1 that was calculated for the decrease or increase in liquidity"
],
"type" : "u64"
},
{
"name" : "trade_fee_owed_0" ,
"type" : "u64"
},
{
"name" : "trade_fee_owed_1" ,
"docs" : [
"The amount of token_1 fee"
],
"type" : "u64"
},
{
"name" : "transfer_fee_0" ,
"docs" : [
"The amount of token_0 transfer fee without trade_fee_amount_0"
],
"type" : "u64"
},
{
"name" : "transfer_fee_1" ,
"docs" : [
"The amount of token_1 transfer fee without trade_fee_amount_0"
],
"type" : "u64"
}
]
}
},
{
"name" : "LiquidityChangeEvent" ,
"docs" : [
"Emitted pool liquidity change when increase and decrease liquidity"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_state" ,
"docs" : [
"The pool for swap"
],
"type" : "pubkey"
},
{
"name" : "tick" ,
"docs" : [
"The tick of the pool"
],
"type" : "i32"
},
{
"name" : "tick_lower" ,
"docs" : [
"The tick lower of position"
],
"type" : "i32"
},
{
"name" : "tick_upper" ,
"docs" : [
"The tick lower of position"
],
"type" : "i32"
},
{
"name" : "liquidity_before" ,
"docs" : [
"The liquidity of the pool before liquidity change"
],
"type" : "u128"
},
{
"name" : "liquidity_after" ,
"docs" : [
"The liquidity of the pool after liquidity change"
],
"type" : "u128"
}
]
}
},
{
"name" : "Observation" ,
"docs" : [
"The element of observations in ObservationState"
],
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "block_timestamp" ,
"docs" : [
"The block timestamp of the observation"
],
"type" : "u32"
},
{
"name" : "tick_cumulative" ,
"docs" : [
"the cumulative of tick during the duration time"
],
"type" : "i64"
},
{
"name" : "padding" ,
"docs" : [
"padding for feature update"
],
"type" : {
"array" : [
"u64" ,
4
2026-01-23 16:47:55 +08:00
]
}
}
]
}
},
{
"name" : "ObservationState" ,
2026-08-13 05:53:20 +08:00
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
2026-01-23 16:47:55 +08:00
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "initialized" ,
"docs" : [
"Whether the ObservationState is initialized"
],
"type" : "bool"
},
{
2026-08-13 05:53:20 +08:00
"name" : "recent_epoch" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"recent update epoch"
],
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "observation_index" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"the most-recently updated index of the observations array"
],
"type" : "u16"
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_id" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"belongs to which pool"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
"name" : "observations" ,
"docs" : [
"observation array"
],
"type" : {
"array" : [
{
2026-08-13 05:53:20 +08:00
"defined" : {
"name" : "Observation"
}
2026-01-23 16:47:55 +08:00
},
100
]
}
},
{
"name" : "padding" ,
"docs" : [
"padding for feature update"
],
"type" : {
"array" : [
"u64" ,
4
]
}
}
]
}
},
2026-08-13 05:53:20 +08:00
{
"name" : "OpenLimitOrderEvent" ,
"docs" : [
"Emitted when a limit order is opened"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_id" ,
"docs" : [
"The pool whose limit order was opened"
],
"type" : "pubkey"
},
{
"name" : "limit_order" ,
"docs" : [
"The limit order account"
],
"type" : "pubkey"
},
{
"name" : "zero_for_one" ,
"docs" : [
"Direction of the limit order (true if zero_for_one)"
],
"type" : "bool"
},
{
"name" : "tick_index" ,
"docs" : [
"Tick index of the limit order"
],
"type" : "i32"
},
{
"name" : "total_amount" ,
"docs" : [
"Total amount of the limit order"
],
"type" : "u64"
},
{
"name" : "transfer_fee" ,
"docs" : [
"Transfer fee of the limit order"
],
"type" : "u64"
}
]
}
},
{
"name" : "OperationState" ,
"docs" : [
"Holds the current owner of the factory"
],
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "bump" ,
"docs" : [
"Bump to identify PDA"
],
"type" : "u8"
},
{
"name" : "operation_owners" ,
"docs" : [
"Address of the operation owner"
],
"type" : {
"array" : [
"pubkey" ,
10
]
}
},
{
"name" : "whitelist_mints" ,
"docs" : [
"The mint address of whitelist to emit reward"
],
"type" : {
"array" : [
"pubkey" ,
100
]
}
}
]
}
},
2026-01-23 16:47:55 +08:00
{
"name" : "PersonalPositionState" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "bump" ,
"docs" : [
"Bump to identify PDA"
],
"type" : {
"array" : [
"u8" ,
1
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "nft_mint" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Mint address of the tokenized position"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_id" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The ID of the pool with which this token is connected"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_lower_index" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The lower bound tick of the position"
],
"type" : "i32"
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_upper_index" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The upper bound tick of the position"
],
"type" : "i32"
},
{
"name" : "liquidity" ,
"docs" : [
"The amount of liquidity owned by this position"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_inside_0_last_x64" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token_0 fee growth of the aggregate position as of the last action on the individual position"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_inside_1_last_x64" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token_1 fee growth of the aggregate position as of the last action on the individual position"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_fees_owed_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The fees owed to the position owner in token_0, as of the last computation"
],
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_fees_owed_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The fees owed to the position owner in token_1, as of the last computation"
],
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "reward_infos" ,
2026-01-23 16:47:55 +08:00
"type" : {
"array" : [
{
2026-08-13 05:53:20 +08:00
"defined" : {
"name" : "PositionRewardInfo"
}
2026-01-23 16:47:55 +08:00
},
3
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "recent_epoch" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
"name" : "padding" ,
"type" : {
"array" : [
"u64" ,
7
]
}
}
]
}
},
2026-08-13 05:53:20 +08:00
{
"name" : "PoolCreatedEvent" ,
"docs" : [
"Emitted when a pool is created and initialized with a starting price" ,
""
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "token_mint_0" ,
"docs" : [
"The first token of the pool by address sort order"
],
"type" : "pubkey"
},
{
"name" : "token_mint_1" ,
"docs" : [
"The second token of the pool by address sort order"
],
"type" : "pubkey"
},
{
"name" : "tick_spacing" ,
"docs" : [
"The minimum number of ticks between initialized ticks"
],
"type" : "u16"
},
{
"name" : "pool_state" ,
"docs" : [
"The address of the created pool"
],
"type" : "pubkey"
},
{
"name" : "sqrt_price_x64" ,
"docs" : [
"The initial sqrt price of the pool, as a Q64.64"
],
"type" : "u128"
},
{
"name" : "tick" ,
"docs" : [
"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool"
],
"type" : "i32"
},
{
"name" : "token_vault_0" ,
"docs" : [
"Vault of token_0"
],
"type" : "pubkey"
},
{
"name" : "token_vault_1" ,
"docs" : [
"Vault of token_1"
],
"type" : "pubkey"
}
]
}
},
2026-01-23 16:47:55 +08:00
{
"name" : "PoolState" ,
"docs" : [
"The pool state" ,
"" ,
"PDA of `[POOL_SEED, config, token_mint_0, token_mint_1]`" ,
""
],
2026-08-13 05:53:20 +08:00
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
2026-01-23 16:47:55 +08:00
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "bump" ,
"docs" : [
"Bump to identify PDA"
],
"type" : {
"array" : [
"u8" ,
1
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "amm_config" ,
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
"name" : "owner" ,
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_mint_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Token pair of the pool, where token_mint_0 address < token_mint_1 address"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_mint_1" ,
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Token pair vault"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_vault_1" ,
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "observation_key" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"observation account key"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "mint_decimals_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"mint0 and mint1 decimals"
],
"type" : "u8"
},
{
2026-08-13 05:53:20 +08:00
"name" : "mint_decimals_1" ,
2026-01-23 16:47:55 +08:00
"type" : "u8"
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_spacing" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The minimum number of ticks between initialized ticks"
],
"type" : "u16"
},
{
"name" : "liquidity" ,
"docs" : [
"The currently in range liquidity available to the pool."
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "sqrt_price_x64" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The current price of the pool as a sqrt(token_1/token_0) Q64.64 value"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_current" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The current tick of the pool, i.e. according to the last tick transition that was run."
],
"type" : "i32"
},
{
"name" : "padding3" ,
"type" : "u16"
},
{
"name" : "padding4" ,
"type" : "u16"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_global_0_x64" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The fee growth as a Q64.64 number, i.e. fees of token_0 and token_1 collected per" ,
"unit of liquidity for the entire life of the pool."
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_global_1_x64" ,
2026-01-23 16:47:55 +08:00
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "protocol_fees_token_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The amounts of token_0 and token_1 that are owed to the protocol."
],
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "protocol_fees_token_1" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "padding5" ,
"type" : {
"array" : [
"u128" ,
4
]
}
2026-01-23 16:47:55 +08:00
},
{
"name" : "status" ,
"docs" : [
"Bitwise representation of the state of the pool" ,
"bit0, 1: disable open position and increase liquidity, 0: normal" ,
"bit1, 1: disable decrease liquidity, 0: normal" ,
"bit2, 1: disable collect fee, 0: normal" ,
"bit3, 1: disable collect reward, 0: normal" ,
2026-08-13 05:53:20 +08:00
"bit4, 1: disable swap, 0: normal" ,
"bit5, 1: disable limit order, 0: normal"
],
"type" : "u8"
},
{
"name" : "fee_on" ,
"docs" : [
"Fee on which token (0 = FromInput, 1 = Token0Only, 2 = Token1Only)"
2026-01-23 16:47:55 +08:00
],
"type" : "u8"
},
{
"name" : "padding" ,
"docs" : [
"Leave blank for future use"
],
"type" : {
"array" : [
"u8" ,
2026-08-13 05:53:20 +08:00
6
2026-01-23 16:47:55 +08:00
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "reward_infos" ,
2026-01-23 16:47:55 +08:00
"type" : {
"array" : [
{
2026-08-13 05:53:20 +08:00
"defined" : {
"name" : "RewardInfo"
}
2026-01-23 16:47:55 +08:00
},
3
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_array_bitmap" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Packed initialized tick array state"
],
"type" : {
"array" : [
"u64" ,
16
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "padding6" ,
"type" : {
"array" : [
"u64" ,
4
]
}
},
{
"name" : "fund_fees_token_0" ,
"type" : "u64"
},
{
"name" : "fund_fees_token_1" ,
"type" : "u64"
},
{
"name" : "open_time" ,
"type" : "u64"
},
{
"name" : "recent_epoch" ,
"type" : "u64"
},
{
"name" : "dynamic_fee_info" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Dynamic fee info"
2026-01-23 16:47:55 +08:00
],
2026-08-13 05:53:20 +08:00
"type" : {
"defined" : {
"name" : "DynamicFeeInfo"
}
}
2026-01-23 16:47:55 +08:00
},
{
"name" : "padding1" ,
"type" : {
"array" : [
"u64" ,
2026-08-13 05:53:20 +08:00
14
2026-01-23 16:47:55 +08:00
]
}
},
{
"name" : "padding2" ,
"type" : {
"array" : [
"u64" ,
32
]
}
}
]
}
},
2026-08-13 05:53:20 +08:00
{
"name" : "PositionRewardInfo" ,
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "growth_inside_last_x64" ,
"type" : "u128"
},
{
"name" : "reward_amount_owed" ,
"type" : "u64"
}
]
}
},
2026-01-23 16:47:55 +08:00
{
"name" : "ProtocolPositionState" ,
"docs" : [
"Info stored for each user's position"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "bump" ,
"docs" : [
"Bump to identify PDA"
],
"type" : "u8"
},
{
2026-08-13 05:53:20 +08:00
"name" : "pool_id" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The ID of the pool with which this token is connected"
],
2026-08-13 05:53:20 +08:00
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_lower_index" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The lower bound tick of the position"
],
"type" : "i32"
},
{
2026-08-13 05:53:20 +08:00
"name" : "tick_upper_index" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The upper bound tick of the position"
],
"type" : "i32"
},
{
"name" : "liquidity" ,
"docs" : [
"The amount of liquidity owned by this position"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_inside_0_last_x64" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token_0 fee growth per unit of liquidity as of the last update to liquidity or fees owed"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_inside_1_last_x64" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The token_1 fee growth per unit of liquidity as of the last update to liquidity or fees owed"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_fees_owed_0" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The fees owed to the position owner in token_0"
],
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "token_fees_owed_1" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The fees owed to the position owner in token_1"
],
"type" : "u64"
},
{
2026-08-13 05:53:20 +08:00
"name" : "reward_growth_inside" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The reward growth per unit of liquidity as of the last update to liquidity"
],
"type" : {
"array" : [
"u128" ,
3
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "recent_epoch" ,
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
{
"name" : "padding" ,
"type" : {
"array" : [
"u64" ,
7
]
}
}
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "RewardInfo" ,
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
2026-01-23 16:47:55 +08:00
"type" : {
"kind" : "struct" ,
"fields" : [
{
2026-08-13 05:53:20 +08:00
"name" : "reward_state" ,
"docs" : [
"Reward state"
],
2026-01-23 16:47:55 +08:00
"type" : "u8"
},
{
2026-08-13 05:53:20 +08:00
"name" : "open_time" ,
"docs" : [
"Reward open time"
],
2026-01-23 16:47:55 +08:00
"type" : "u64"
},
2026-08-13 05:53:20 +08:00
{
"name" : "end_time" ,
"docs" : [
"Reward end time"
],
"type" : "u64"
},
{
"name" : "last_update_time" ,
"docs" : [
"Reward last update time"
],
"type" : "u64"
},
{
"name" : "emissions_per_second_x64" ,
"docs" : [
"Q64.64 number indicates how many tokens per second are earned per unit of liquidity."
],
"type" : "u128"
},
{
"name" : "reward_total_emitted" ,
"docs" : [
"The total amount of reward emitted"
],
"type" : "u64"
},
{
"name" : "reward_claimed" ,
"docs" : [
"The total amount of claimed reward"
],
"type" : "u64"
},
{
"name" : "token_mint" ,
"docs" : [
"Reward token mint."
],
"type" : "pubkey"
},
{
"name" : "token_vault" ,
"docs" : [
"Reward vault token account."
],
"type" : "pubkey"
},
{
"name" : "authority" ,
"docs" : [
"The owner that has permission to set reward param"
],
"type" : "pubkey"
},
{
"name" : "reward_growth_global_x64" ,
"docs" : [
"Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward" ,
"emissions were turned on."
],
"type" : "u128"
}
]
}
},
{
"name" : "SettleLimitOrderEvent" ,
"docs" : [
"Emitted when a limit order is settled and proceeds are transferred"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_id" ,
"docs" : [
"The pool whose limit order was settled"
],
"type" : "pubkey"
},
{
"name" : "limit_order" ,
"docs" : [
"The limit order account"
],
"type" : "pubkey"
},
{
"name" : "zero_for_one" ,
"docs" : [
"Direction of the limit order (true if zero_for_one)"
],
"type" : "bool"
},
{
"name" : "tick_index" ,
"docs" : [
"Tick index of the limit order"
],
"type" : "i32"
},
{
"name" : "total_amount" ,
"docs" : [
"Total amount of the limit order"
],
"type" : "u64"
},
{
"name" : "filled_amount" ,
"docs" : [
"Filled amount of the limit order"
],
"type" : "u64"
},
{
"name" : "settled_amount_out" ,
"docs" : [
"Amount of output tokens transferred (excluding fees)"
],
"type" : "u64"
}
]
}
},
{
"name" : "SupportMintAssociated" ,
"docs" : [
"Holds the current owner of the factory"
],
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "bump" ,
"docs" : [
"Bump to identify PDA"
],
"type" : "u8"
},
{
"name" : "mint" ,
"docs" : [
"Address of the supported token22 mint"
],
"type" : "pubkey"
},
2026-01-23 16:47:55 +08:00
{
"name" : "padding" ,
"type" : {
"array" : [
2026-08-13 05:53:20 +08:00
"u64" ,
8
2026-01-23 16:47:55 +08:00
]
}
}
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "SwapEvent" ,
"docs" : [
"Emitted by when a swap is performed for a pool"
],
2026-01-23 16:47:55 +08:00
"type" : {
"kind" : "struct" ,
"fields" : [
{
2026-08-13 05:53:20 +08:00
"name" : "pool_state" ,
"docs" : [
"The pool for which token_0 and token_1 were swapped"
],
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "sender" ,
"docs" : [
"The address that initiated the swap call, and that received the callback"
],
"type" : "pubkey"
},
{
"name" : "token_account_0" ,
"docs" : [
"The payer token account in zero for one swaps, or the recipient token account" ,
"in one for zero swaps"
],
"type" : "pubkey"
},
{
"name" : "token_account_1" ,
"docs" : [
"The payer token account in one for zero swaps, or the recipient token account" ,
"in zero for one swaps"
],
"type" : "pubkey"
},
{
"name" : "amount_0" ,
"docs" : [
"The real delta amount of the token_0 of the pool or user"
],
"type" : "u64"
},
{
"name" : "transfer_fee_0" ,
"docs" : [
"The transfer fee charged by the withheld_amount of the token_0"
],
"type" : "u64"
},
{
"name" : "amount_1" ,
"docs" : [
"The real delta of the token_1 of the pool or user"
],
"type" : "u64"
},
{
"name" : "transfer_fee_1" ,
"docs" : [
"The transfer fee charged by the withheld_amount of the token_1"
],
"type" : "u64"
},
{
"name" : "zero_for_one" ,
"docs" : [
"if true, amount_0 is negtive and amount_1 is positive"
],
"type" : "bool"
},
{
"name" : "sqrt_price_x64" ,
"docs" : [
"The sqrt(price) of the pool after the swap, as a Q64.64"
],
"type" : "u128"
},
{
"name" : "liquidity" ,
"docs" : [
"The liquidity of the pool after the swap"
],
"type" : "u128"
},
{
"name" : "tick" ,
"docs" : [
"The log base 1.0001 of price of the pool after the swap"
],
"type" : "i32"
}
]
}
},
{
"name" : "TickArrayBitmapExtension" ,
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "pool_id" ,
"type" : "pubkey"
},
{
"name" : "positive_tick_array_bitmap" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Packed initialized tick array state for start_tick_index is positive"
],
"type" : {
"array" : [
{
"array" : [
"u64" ,
8
]
},
14
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "negative_tick_array_bitmap" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Packed initialized tick array state for start_tick_index is negitive"
],
"type" : {
"array" : [
{
"array" : [
"u64" ,
8
]
},
14
]
}
}
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "TickArrayState" ,
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
2026-01-23 16:47:55 +08:00
"type" : {
"kind" : "struct" ,
"fields" : [
{
2026-08-13 05:53:20 +08:00
"name" : "pool_id" ,
"type" : "pubkey"
2026-01-23 16:47:55 +08:00
},
{
2026-08-13 05:53:20 +08:00
"name" : "start_tick_index" ,
"type" : "i32"
},
{
"name" : "ticks" ,
"type" : {
"array" : [
{
"defined" : {
"name" : "TickState"
}
},
60
]
}
},
{
"name" : "initialized_tick_count" ,
"type" : "u8"
},
{
"name" : "recent_epoch" ,
"type" : "u64"
2026-01-23 16:47:55 +08:00
},
{
"name" : "padding" ,
"type" : {
"array" : [
2026-08-13 05:53:20 +08:00
"u8" ,
107
2026-01-23 16:47:55 +08:00
]
}
}
]
}
},
{
"name" : "TickState" ,
2026-08-13 05:53:20 +08:00
"serialization" : "bytemuckunsafe" ,
"repr" : {
"kind" : "c" ,
"packed" : true
},
2026-01-23 16:47:55 +08:00
"type" : {
"kind" : "struct" ,
"fields" : [
{
"name" : "tick" ,
"type" : "i32"
},
{
2026-08-13 05:53:20 +08:00
"name" : "liquidity_net" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left)"
],
"type" : "i128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "liquidity_gross" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"The total position liquidity that references this tick"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_outside_0_x64" ,
2026-01-23 16:47:55 +08:00
"docs" : [
"Fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)" ,
"only has relative meaning, not absolute — the value depends on when the tick is initialized"
],
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "fee_growth_outside_1_x64" ,
2026-01-23 16:47:55 +08:00
"type" : "u128"
},
{
2026-08-13 05:53:20 +08:00
"name" : "reward_growths_outside_x64" ,
"docs" : [
"Reward growth per unit of liquidity like fee, array of Q64.64"
],
2026-01-23 16:47:55 +08:00
"type" : {
"array" : [
"u128" ,
3
]
}
},
2026-08-13 05:53:20 +08:00
{
"name" : "order_phase" ,
"docs" : [
"Order phase of the tick, used as a FIFO cohort index for limit orders"
],
"type" : "u64"
},
{
"name" : "orders_amount" ,
"docs" : [
"The amount of limit orders that have never been matched," ,
"only counts newly opened orders, not partially filled ones"
],
"type" : "u64"
},
{
"name" : "part_filled_orders_remaining" ,
"docs" : [
"Remaining part filled orders amount"
],
"type" : "u64"
},
{
"name" : "unfilled_ratio_x64" ,
"docs" : [
"Cumulative unfilled ratio for the current part-filled cohort (Q64.64 format)." ,
"Starts at Q64(1) when a new cohort forms, multiplied down as fills occur."
],
"type" : "u128"
},
2026-01-23 16:47:55 +08:00
{
"name" : "padding" ,
"type" : {
"array" : [
"u32" ,
2026-08-13 05:53:20 +08:00
3
2026-01-23 16:47:55 +08:00
]
}
}
]
}
},
{
2026-08-13 05:53:20 +08:00
"name" : "UpdateRewardInfosEvent" ,
2026-01-23 16:47:55 +08:00
"docs" : [
2026-08-13 05:53:20 +08:00
"Emitted when Reward are updated for a pool"
2026-01-23 16:47:55 +08:00
],
"type" : {
2026-08-13 05:53:20 +08:00
"kind" : "struct" ,
"fields" : [
2026-01-23 16:47:55 +08:00
{
2026-08-13 05:53:20 +08:00
"name" : "reward_growth_global_x64" ,
"docs" : [
"Reward info"
],
"type" : {
"array" : [
"u128" ,
3
]
}
2026-01-23 16:47:55 +08:00
}
]
}
}
]
}