mirror of
https://github.com/0xfnzero/solana-streamer.git
synced 2026-08-02 20:37:42 +00:00
da550e0c3a
This commit addresses two critical issues: 1. PumpFun buy_exact_sol_in Parameter Order Fix - Fixed incorrect parameter parsing in buy_exact_sol_in instruction - Created dedicated parse_buy_exact_sol_in_instruction function - Correct order: spendable_sol_in (SOL) first, min_tokens_out (token) second - Previous bug: reused parse_buy_instruction which has reversed order - Impact: Fixes ~4-5% of PumpFun trades that were being parsed incorrectly - Issue reported by community: SOL and token amounts were swapped 2. Raydium CPMM Field Naming Alignment - Updated PoolState struct field names to match IDL specification exactly - Changed token0_vault -> token_0_vault (and similar for all token fields) - Changed mint0_decimals -> mint_0_decimals - Changed protocol_fees_token0 -> protocol_fees_token_0 - Ensures consistency with official IDL from solana-program-idls repo - Improves code maintainability and readability 3. IDL Files Sync - Added latest IDL files from https://github.com/0xfnzero/solana-program-idls - Includes: pumpfun, pump_amm, raydium_cpmm, raydium_clmm, raydium_pool_v4 - Also added: meteora_amm, meteora_damm_v2, meteora_dlmm, orca_whirlpool, raydium_launchpad - All IDL files stored in idl/ directory for reference Files Modified: - src/streaming/event_parser/protocols/pumpfun/parser.rs - src/streaming/event_parser/protocols/raydium_cpmm/types.rs - src/streaming/event_parser/protocols/raydium_cpmm/events.rs - src/streaming/event_parser/protocols/raydium_cpmm/parser.rs Testing: - ✅ Compiles successfully (cargo build --release) - ✅ All field name updates verified - ✅ Parameter order matches IDL specification Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
4154 lines
99 KiB
JSON
4154 lines
99 KiB
JSON
{
|
|
"version": "0.1.0",
|
|
"name": "amm_v3",
|
|
"instructions": [
|
|
{
|
|
"name": "createAmmConfig",
|
|
"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 tarde fee.",
|
|
"* `fund_fee_rate` - The rate of fund fee within tarde fee.",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Address to be set as protocol owner."
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Initialize config state account to store protocol owner address and fee rates."
|
|
]
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "index",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "tickSpacing",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "tradeFeeRate",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "protocolFeeRate",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "fundFeeRate",
|
|
"type": "u32"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "updateAmmConfig",
|
|
"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",
|
|
"* `param`- The vaule can be 0 | 1 | 2 | 3 | 4, otherwise will report a error",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The amm config owner or admin"
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Amm config account to be changed"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "param",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "u32"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "createPool",
|
|
"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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "poolCreator",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Address paying to create the pool. Can be anyone"
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Which config the pool belongs to."
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Initialize an account to store the pool state"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenMint0",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_0 mint, the key must be smaller then token_1 mint."
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenMint1",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_1 mint"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_0 vault for the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_1 vault for the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "observationState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Initialize an account to store oracle observations"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayBitmap",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Initialize an account to store if a tick array is initialized."
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram0",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Spl token program or token program 2022"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram1",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Spl token program or token program 2022"
|
|
]
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"To create a new program account"
|
|
]
|
|
},
|
|
{
|
|
"name": "rent",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Sysvar for program account"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "sqrtPriceX64",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "openTime",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "updatePoolStatus",
|
|
"docs": [
|
|
"Update pool status for given vaule",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `ctx`- The context of accounts",
|
|
"* `status` - The vaule of status",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "authority",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "status",
|
|
"type": "u8"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "createOperationAccount",
|
|
"docs": [
|
|
"Creates an operation account for the program",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `ctx`- The context of accounts",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Address to be set as operation account owner."
|
|
]
|
|
},
|
|
{
|
|
"name": "operationState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Initialize operation state account to store operation owner address and white list mint."
|
|
]
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "updateOperationAccount",
|
|
"docs": [
|
|
"Update the operation account",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `ctx`- The context of accounts",
|
|
"* `param`- The vaule can be 0 | 1 | 2 | 3, otherwise will report a 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Address to be set as operation account owner."
|
|
]
|
|
},
|
|
{
|
|
"name": "operationState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Initialize operation state account to store operation owner address and white list mint."
|
|
]
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "param",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "keys",
|
|
"type": {
|
|
"vec": "publicKey"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "transferRewardOwner",
|
|
"docs": [
|
|
"Transfer reward owner",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `ctx`- The context of accounts",
|
|
"* `new_owner`- new owner pubkey",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "authority",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Address to be set as operation account owner."
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "newOwner",
|
|
"type": "publicKey"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "initializeReward",
|
|
"docs": [
|
|
"Initialize a reward info for a given pool and reward index",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `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.",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "rewardFunder",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The founder deposit reward token to vault"
|
|
]
|
|
},
|
|
{
|
|
"name": "funderTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"For check the reward_funder authority"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Set reward for this pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "operationState",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"load info from the account to judge reward permission"
|
|
]
|
|
},
|
|
{
|
|
"name": "rewardTokenMint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Reward mint"
|
|
]
|
|
},
|
|
{
|
|
"name": "rewardTokenVault",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"A pda, reward vault"
|
|
]
|
|
},
|
|
{
|
|
"name": "rewardTokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "rent",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "param",
|
|
"type": {
|
|
"defined": "InitializeRewardParam"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "collectRemainingRewards",
|
|
"docs": [
|
|
"Collect remaining reward token for reward founder",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `ctx`- The context of accounts",
|
|
"* `reward_index` - the index to reward info",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "rewardFunder",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The founder who init reward info in berfore"
|
|
]
|
|
},
|
|
{
|
|
"name": "funderTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The funder's reward token account"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Set reward for this pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "rewardTokenVault",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Reward vault transfer remaining token to founder token account"
|
|
]
|
|
},
|
|
{
|
|
"name": "rewardVaultMint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of reward token vault"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token program 2022"
|
|
]
|
|
},
|
|
{
|
|
"name": "memoProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"memo program"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "rewardIndex",
|
|
"type": "u8"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "updateRewardInfos",
|
|
"docs": [
|
|
"Update rewards info of the given pool, can be called for everyone",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `ctx`- The context of accounts",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The liquidity pool for which reward info to update"
|
|
]
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "setRewardParams",
|
|
"docs": [
|
|
"Restset 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 state a new cycle",
|
|
"* `end_time` - reward end timestamp",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "authority",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Address to be set as protocol owner. It pays to create factory state account."
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "operationState",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"load info from the account to judge reward permission"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token program"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token program 2022"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "rewardIndex",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "emissionsPerSecondX64",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "openTime",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "endTime",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "collectProtocolFee",
|
|
"docs": [
|
|
"Collect the protocol 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Only admin or config owner can collect fee now"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Pool state stores accumulated protocol fee amount"
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Amm config account stores owner"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault0Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 0"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault1Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 1"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that receives the collected token_0 protocol fees"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that receives the collected token_1 protocol fees"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The SPL program to perform token transfers"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The SPL program 2022 to perform token transfers"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "amount0Requested",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Requested",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "collectFundFee",
|
|
"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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Only admin or fund_owner can collect fee now"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Pool state stores accumulated protocol fee amount"
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Amm config account stores fund_owner"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault0Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 0"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault1Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 1"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that receives the collected token_0 protocol fees"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that receives the collected token_1 protocol fees"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The SPL program to perform token transfers"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The SPL program 2022 to perform token transfers"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "amount0Requested",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Requested",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "openPosition",
|
|
"docs": [
|
|
"#[deprecated(note = \"Use `open_position_with_token22_nft` instead.\")]",
|
|
"Creates a new position wrapped in a NFT",
|
|
"",
|
|
"# 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 include tick low",
|
|
"* `tick_array_upper_start_index` - The start index of tick array which include 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Pays to mint the position"
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftOwner",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "positionNftMint",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Unique token mint address"
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token account where position NFT will be minted",
|
|
"This account created in the contract by cpi to avoid large stack variables"
|
|
]
|
|
},
|
|
{
|
|
"name": "metadataAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"To store metaplex metadata"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Add liquidity for this pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "protocolPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Store the information of market marking in range"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayLower",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tickArrayUpper",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"personal position state"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token_0 account deposit token to the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token_1 account deposit token to the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "rent",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Sysvar for token mint and ATA creation"
|
|
]
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create the position manager state account"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create mint account and mint tokens"
|
|
]
|
|
},
|
|
{
|
|
"name": "associatedTokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create an ATA for receiving position NFT"
|
|
]
|
|
},
|
|
{
|
|
"name": "metadataProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create NFT metadata"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "tickLowerIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickUpperIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickArrayLowerStartIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickArrayUpperStartIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "amount0Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Max",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "openPositionV2",
|
|
"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 include tick low",
|
|
"* `tick_array_upper_start_index` - The start index of tick array which include tick upper",
|
|
"* `liquidity` - The liquidity to be added, if zero, and the base_flage 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Pays to mint the position"
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftOwner",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "positionNftMint",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Unique token mint address"
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token account where position NFT will be minted"
|
|
]
|
|
},
|
|
{
|
|
"name": "metadataAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"To store metaplex metadata"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Add liquidity for this pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "protocolPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Store the information of market marking in range"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayLower",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tickArrayUpper",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"personal position state"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token_0 account deposit token to the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token_1 account deposit token to the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "rent",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Sysvar for token mint and ATA creation"
|
|
]
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create the position manager state account"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create mint account and mint tokens"
|
|
]
|
|
},
|
|
{
|
|
"name": "associatedTokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create an ATA for receiving position NFT"
|
|
]
|
|
},
|
|
{
|
|
"name": "metadataProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create NFT metadata"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create mint account and mint tokens"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault0Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 0"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault1Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 1"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "tickLowerIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickUpperIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickArrayLowerStartIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickArrayUpperStartIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "amount0Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "withMetadata",
|
|
"type": "bool"
|
|
},
|
|
{
|
|
"name": "baseFlag",
|
|
"type": {
|
|
"option": "bool"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "openPositionWithToken22Nft",
|
|
"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 include tick low",
|
|
"* `tick_array_upper_start_index` - The start index of tick array which include tick upper",
|
|
"* `liquidity` - The liquidity to be added, if zero, and the base_flage 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Pays to mint the position"
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftOwner",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "positionNftMint",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Unique token mint address, initialize in constract"
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Add liquidity for this pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "protocolPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Store the information of market marking in range"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayLower",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tickArrayUpper",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"personal position state"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token_0 account deposit token to the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token_1 account deposit token to the pool"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "rent",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Sysvar for token mint and ATA creation"
|
|
]
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create the position manager state account"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to transfer for token account"
|
|
]
|
|
},
|
|
{
|
|
"name": "associatedTokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create an ATA for receiving position NFT"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create NFT mint/token account and transfer for token22 account"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault0Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 0"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault1Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 1"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "tickLowerIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickUpperIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickArrayLowerStartIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickArrayUpperStartIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "amount0Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "withMetadata",
|
|
"type": "bool"
|
|
},
|
|
{
|
|
"name": "baseFlag",
|
|
"type": {
|
|
"option": "bool"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "closePosition",
|
|
"docs": [
|
|
"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.",
|
|
"",
|
|
"# Arguments",
|
|
"",
|
|
"* `ctx` - The context of accounts",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "nftOwner",
|
|
"isMut": true,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The position nft owner"
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftMint",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Mint address bound to the personal position."
|
|
]
|
|
},
|
|
{
|
|
"name": "positionNftAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"User token account where position NFT be minted to"
|
|
]
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"System program to close the position state account"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token/Token2022 program to close token/mint account"
|
|
]
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "increaseLiquidity",
|
|
"docs": [
|
|
"#[deprecated(note = \"Use `increase_liquidity_v2` instead.\")]",
|
|
"Increases liquidity with a exist position, with amount paid by `payer`",
|
|
"",
|
|
"# 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "nftOwner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Pays to mint the position"
|
|
]
|
|
},
|
|
{
|
|
"name": "nftAccount",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token account for nft"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "protocolPosition",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Increase liquidity for this position"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayLower",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the lower tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayUpper",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the upper tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The payer's token account for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token account spending token_1 to mint the position"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create mint account and mint tokens"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "amount0Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Max",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "increaseLiquidityV2",
|
|
"docs": [
|
|
"Increases liquidity with a exist position, with amount paid by `payer`, support Token2022",
|
|
"",
|
|
"# 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "nftOwner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"Pays to mint the position"
|
|
]
|
|
},
|
|
{
|
|
"name": "nftAccount",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token account for nft"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "protocolPosition",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Increase liquidity for this position"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayLower",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the lower tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayUpper",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the upper tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The payer's token account for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token account spending token_1 to mint the position"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The address that holds pool tokens for token_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Program to create mint account and mint tokens"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token program 2022"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault0Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 0"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault1Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 1"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "amount0Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Max",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "baseFlag",
|
|
"type": {
|
|
"option": "bool"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "decreaseLiquidity",
|
|
"docs": [
|
|
"#[deprecated(note = \"Use `decrease_liquidity_v2` instead.\")]",
|
|
"Decreases liquidity with a exist 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "nftOwner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The position owner or delegated authority"
|
|
]
|
|
},
|
|
{
|
|
"name": "nftAccount",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token account for the tokenized position"
|
|
]
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Decrease liquidity for this position"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "protocolPosition",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_0 vault"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_1 vault"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayLower",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the lower tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayUpper",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the upper tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The destination token account for receive amount_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The destination token account for receive amount_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"SPL program to transfer out tokens"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "amount0Min",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Min",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "decreaseLiquidityV2",
|
|
"docs": [
|
|
"Decreases liquidity with a exist 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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "nftOwner",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The position owner or delegated authority"
|
|
]
|
|
},
|
|
{
|
|
"name": "nftAccount",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token account for the tokenized position"
|
|
]
|
|
},
|
|
{
|
|
"name": "personalPosition",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Decrease liquidity for this position"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "protocolPosition",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_0 vault"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token_1 vault"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayLower",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the lower tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArrayUpper",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Stores init state for the upper tick"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount0",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The destination token account for receive amount_0"
|
|
]
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount1",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The destination token account for receive amount_1"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"SPL program to transfer out tokens"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Token program 2022"
|
|
]
|
|
},
|
|
{
|
|
"name": "memoProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"memo program"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault0Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 0"
|
|
]
|
|
},
|
|
{
|
|
"name": "vault1Mint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 1"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "amount0Min",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amount1Min",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The user performing the swap"
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The factory state to read protocol fees"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The program account of the pool in which the swap will be performed"
|
|
]
|
|
},
|
|
{
|
|
"name": "inputTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The user token account for input token"
|
|
]
|
|
},
|
|
{
|
|
"name": "outputTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The user token account for output token"
|
|
]
|
|
},
|
|
{
|
|
"name": "inputVault",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The vault token account for input token"
|
|
]
|
|
},
|
|
{
|
|
"name": "outputVault",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The vault token account for output token"
|
|
]
|
|
},
|
|
{
|
|
"name": "observationState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The program account for the most recent oracle observation"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"SPL program for token transfers"
|
|
]
|
|
},
|
|
{
|
|
"name": "tickArray",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "amount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "otherAmountThreshold",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "sqrtPriceLimitX64",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "isBaseInput",
|
|
"type": "bool"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "swapV2",
|
|
"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",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The user performing the swap"
|
|
]
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The factory state to read protocol fees"
|
|
]
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The program account of the pool in which the swap will be performed"
|
|
]
|
|
},
|
|
{
|
|
"name": "inputTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The user token account for input token"
|
|
]
|
|
},
|
|
{
|
|
"name": "outputTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The user token account for output token"
|
|
]
|
|
},
|
|
{
|
|
"name": "inputVault",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The vault token account for input token"
|
|
]
|
|
},
|
|
{
|
|
"name": "outputVault",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The vault token account for output token"
|
|
]
|
|
},
|
|
{
|
|
"name": "observationState",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The program account for the most recent oracle observation"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"SPL program for token transfers"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"SPL program 2022 for token transfers"
|
|
]
|
|
},
|
|
{
|
|
"name": "memoProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "inputVaultMint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 0"
|
|
]
|
|
},
|
|
{
|
|
"name": "outputVaultMint",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of token vault 1"
|
|
]
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "amount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "otherAmountThreshold",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "sqrtPriceLimitX64",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "isBaseInput",
|
|
"type": "bool"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "swapRouterBaseIn",
|
|
"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.",
|
|
""
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"docs": [
|
|
"The user performing the swap"
|
|
]
|
|
},
|
|
{
|
|
"name": "inputTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The token account that pays input tokens for the swap"
|
|
]
|
|
},
|
|
{
|
|
"name": "inputTokenMint",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"The mint of input token"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"SPL program for token transfers"
|
|
]
|
|
},
|
|
{
|
|
"name": "tokenProgram2022",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"SPL program 2022 for token transfers"
|
|
]
|
|
},
|
|
{
|
|
"name": "memoProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "amountIn",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "amountOutMinimum",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"accounts": [
|
|
{
|
|
"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"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "protocolFeeRate",
|
|
"docs": [
|
|
"The protocol fee"
|
|
],
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "tradeFeeRate",
|
|
"docs": [
|
|
"The trade fee, denominated in hundredths of a bip (10^-6)"
|
|
],
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "tickSpacing",
|
|
"docs": [
|
|
"The tick spacing"
|
|
],
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "fundFeeRate",
|
|
"docs": [
|
|
"The fund fee, denominated in hundredths of a bip (10^-6)"
|
|
],
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "paddingU32",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "fundOwner",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
3
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OperationState",
|
|
"docs": [
|
|
"Holds the current owner of the factory"
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "bump",
|
|
"docs": [
|
|
"Bump to identify PDA"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "operationOwners",
|
|
"docs": [
|
|
"Address of the operation owner"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"publicKey",
|
|
10
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "whitelistMints",
|
|
"docs": [
|
|
"The mint address of whitelist to emmit reward"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"publicKey",
|
|
100
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "ObservationState",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "initialized",
|
|
"docs": [
|
|
"Whether the ObservationState is initialized"
|
|
],
|
|
"type": "bool"
|
|
},
|
|
{
|
|
"name": "recentEpoch",
|
|
"docs": [
|
|
"recent update epoch"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "observationIndex",
|
|
"docs": [
|
|
"the most-recently updated index of the observations array"
|
|
],
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "poolId",
|
|
"docs": [
|
|
"belongs to which pool"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "observations",
|
|
"docs": [
|
|
"observation array"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "Observation"
|
|
},
|
|
100
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"docs": [
|
|
"padding for feature update"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
4
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PersonalPositionState",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "bump",
|
|
"docs": [
|
|
"Bump to identify PDA"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
1
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "nftMint",
|
|
"docs": [
|
|
"Mint address of the tokenized position"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "poolId",
|
|
"docs": [
|
|
"The ID of the pool with which this token is connected"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tickLowerIndex",
|
|
"docs": [
|
|
"The lower bound tick of the position"
|
|
],
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickUpperIndex",
|
|
"docs": [
|
|
"The upper bound tick of the position"
|
|
],
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"docs": [
|
|
"The amount of liquidity owned by this position"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "feeGrowthInside0LastX64",
|
|
"docs": [
|
|
"The token_0 fee growth of the aggregate position as of the last action on the individual position"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "feeGrowthInside1LastX64",
|
|
"docs": [
|
|
"The token_1 fee growth of the aggregate position as of the last action on the individual position"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "tokenFeesOwed0",
|
|
"docs": [
|
|
"The fees owed to the position owner in token_0, as of the last computation"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "tokenFeesOwed1",
|
|
"docs": [
|
|
"The fees owed to the position owner in token_1, as of the last computation"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "rewardInfos",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "PositionRewardInfo"
|
|
},
|
|
3
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "recentEpoch",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
7
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PoolState",
|
|
"docs": [
|
|
"The pool state",
|
|
"",
|
|
"PDA of `[POOL_SEED, config, token_mint_0, token_mint_1]`",
|
|
""
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "bump",
|
|
"docs": [
|
|
"Bump to identify PDA"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
1
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "ammConfig",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenMint0",
|
|
"docs": [
|
|
"Token pair of the pool, where token_mint_0 address < token_mint_1 address"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenMint1",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"docs": [
|
|
"Token pair vault"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "observationKey",
|
|
"docs": [
|
|
"observation account key"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "mintDecimals0",
|
|
"docs": [
|
|
"mint0 and mint1 decimals"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "mintDecimals1",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "tickSpacing",
|
|
"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"
|
|
},
|
|
{
|
|
"name": "sqrtPriceX64",
|
|
"docs": [
|
|
"The current price of the pool as a sqrt(token_1/token_0) Q64.64 value"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "tickCurrent",
|
|
"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"
|
|
},
|
|
{
|
|
"name": "feeGrowthGlobal0X64",
|
|
"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"
|
|
},
|
|
{
|
|
"name": "feeGrowthGlobal1X64",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "protocolFeesToken0",
|
|
"docs": [
|
|
"The amounts of token_0 and token_1 that are owed to the protocol."
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "protocolFeesToken1",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "swapInAmountToken0",
|
|
"docs": [
|
|
"The amounts in and out of swap token_0 and token_1"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "swapOutAmountToken1",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "swapInAmountToken1",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "swapOutAmountToken0",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"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",
|
|
"bit4, 1: disable swap, 0: normal"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"docs": [
|
|
"Leave blank for future use"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
7
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "rewardInfos",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "RewardInfo"
|
|
},
|
|
3
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "tickArrayBitmap",
|
|
"docs": [
|
|
"Packed initialized tick array state"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
16
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "totalFeesToken0",
|
|
"docs": [
|
|
"except protocol_fee and fund_fee"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "totalFeesClaimedToken0",
|
|
"docs": [
|
|
"except protocol_fee and fund_fee"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "totalFeesToken1",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "totalFeesClaimedToken1",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "fundFeesToken0",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "fundFeesToken1",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "openTime",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "recentEpoch",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "padding1",
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
24
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "padding2",
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
32
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "ProtocolPositionState",
|
|
"docs": [
|
|
"Info stored for each user's position"
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "bump",
|
|
"docs": [
|
|
"Bump to identify PDA"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "poolId",
|
|
"docs": [
|
|
"The ID of the pool with which this token is connected"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tickLowerIndex",
|
|
"docs": [
|
|
"The lower bound tick of the position"
|
|
],
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "tickUpperIndex",
|
|
"docs": [
|
|
"The upper bound tick of the position"
|
|
],
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"docs": [
|
|
"The amount of liquidity owned by this position"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "feeGrowthInside0LastX64",
|
|
"docs": [
|
|
"The token_0 fee growth per unit of liquidity as of the last update to liquidity or fees owed"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "feeGrowthInside1LastX64",
|
|
"docs": [
|
|
"The token_1 fee growth per unit of liquidity as of the last update to liquidity or fees owed"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "tokenFeesOwed0",
|
|
"docs": [
|
|
"The fees owed to the position owner in token_0"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "tokenFeesOwed1",
|
|
"docs": [
|
|
"The fees owed to the position owner in token_1"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "rewardGrowthInside",
|
|
"docs": [
|
|
"The reward growth per unit of liquidity as of the last update to liquidity"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u128",
|
|
3
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "recentEpoch",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
7
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "TickArrayState",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "poolId",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "startTickIndex",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "ticks",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "TickState"
|
|
},
|
|
60
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "initializedTickCount",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "recentEpoch",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
107
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "TickArrayBitmapExtension",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "poolId",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "positiveTickArrayBitmap",
|
|
"docs": [
|
|
"Packed initialized tick array state for start_tick_index is positive"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"array": [
|
|
"u64",
|
|
8
|
|
]
|
|
},
|
|
14
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "negativeTickArrayBitmap",
|
|
"docs": [
|
|
"Packed initialized tick array state for start_tick_index is negitive"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"array": [
|
|
"u64",
|
|
8
|
|
]
|
|
},
|
|
14
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"types": [
|
|
{
|
|
"name": "InitializeRewardParam",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "openTime",
|
|
"docs": [
|
|
"Reward open time"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "endTime",
|
|
"docs": [
|
|
"Reward end time"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "emissionsPerSecondX64",
|
|
"docs": [
|
|
"Token reward per second are earned per unit of liquidity"
|
|
],
|
|
"type": "u128"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "Observation",
|
|
"docs": [
|
|
"The element of observations in ObservationState"
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "blockTimestamp",
|
|
"docs": [
|
|
"The block timestamp of the observation"
|
|
],
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "tickCumulative",
|
|
"docs": [
|
|
"the cumulative of tick during the duration time"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"docs": [
|
|
"padding for feature update"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
4
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PositionRewardInfo",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "growthInsideLastX64",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "rewardAmountOwed",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "RewardInfo",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "rewardState",
|
|
"docs": [
|
|
"Reward state"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "openTime",
|
|
"docs": [
|
|
"Reward open time"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "endTime",
|
|
"docs": [
|
|
"Reward end time"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "lastUpdateTime",
|
|
"docs": [
|
|
"Reward last update time"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "emissionsPerSecondX64",
|
|
"docs": [
|
|
"Q64.64 number indicates how many tokens per second are earned per unit of liquidity."
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "rewardTotalEmissioned",
|
|
"docs": [
|
|
"The total amount of reward emissioned"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "rewardClaimed",
|
|
"docs": [
|
|
"The total amount of claimed reward"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "tokenMint",
|
|
"docs": [
|
|
"Reward token mint."
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenVault",
|
|
"docs": [
|
|
"Reward vault token account."
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "authority",
|
|
"docs": [
|
|
"The owner that has permission to set reward param"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "rewardGrowthGlobalX64",
|
|
"docs": [
|
|
"Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward",
|
|
"emissions were turned on."
|
|
],
|
|
"type": "u128"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "TickState",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "tick",
|
|
"type": "i32"
|
|
},
|
|
{
|
|
"name": "liquidityNet",
|
|
"docs": [
|
|
"Amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left)"
|
|
],
|
|
"type": "i128"
|
|
},
|
|
{
|
|
"name": "liquidityGross",
|
|
"docs": [
|
|
"The total position liquidity that references this tick"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "feeGrowthOutside0X64",
|
|
"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"
|
|
},
|
|
{
|
|
"name": "feeGrowthOutside1X64",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "rewardGrowthsOutsideX64",
|
|
"type": {
|
|
"array": [
|
|
"u128",
|
|
3
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u32",
|
|
13
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PoolStatusBitIndex",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "OpenPositionOrIncreaseLiquidity"
|
|
},
|
|
{
|
|
"name": "DecreaseLiquidity"
|
|
},
|
|
{
|
|
"name": "CollectFee"
|
|
},
|
|
{
|
|
"name": "CollectReward"
|
|
},
|
|
{
|
|
"name": "Swap"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PoolStatusBitFlag",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Enable"
|
|
},
|
|
{
|
|
"name": "Disable"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "RewardState",
|
|
"docs": [
|
|
"State of reward"
|
|
],
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Uninitialized"
|
|
},
|
|
{
|
|
"name": "Initialized"
|
|
},
|
|
{
|
|
"name": "Opening"
|
|
},
|
|
{
|
|
"name": "Ended"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "TickArryBitmap",
|
|
"type": {
|
|
"kind": "alias",
|
|
"value": {
|
|
"array": [
|
|
"u64",
|
|
8
|
|
]
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "ConfigChangeEvent",
|
|
"fields": [
|
|
{
|
|
"name": "index",
|
|
"type": "u16",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"type": "publicKey",
|
|
"index": true
|
|
},
|
|
{
|
|
"name": "protocolFeeRate",
|
|
"type": "u32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tradeFeeRate",
|
|
"type": "u32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tickSpacing",
|
|
"type": "u16",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "fundFeeRate",
|
|
"type": "u32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "fundOwner",
|
|
"type": "publicKey",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "CreatePersonalPositionEvent",
|
|
"fields": [
|
|
{
|
|
"name": "poolState",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "minter",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "nftOwner",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tickLowerIndex",
|
|
"type": "i32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tickUpperIndex",
|
|
"type": "i32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "depositAmount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "depositAmount1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "depositAmount0TransferFee",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "depositAmount1TransferFee",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "IncreaseLiquidityEvent",
|
|
"fields": [
|
|
{
|
|
"name": "positionNftMint",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount0TransferFee",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount1TransferFee",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "DecreaseLiquidityEvent",
|
|
"fields": [
|
|
{
|
|
"name": "positionNftMint",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "decreaseAmount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "decreaseAmount1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "feeAmount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "feeAmount1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "rewardAmounts",
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
3
|
|
]
|
|
},
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "transferFee0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "transferFee1",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "LiquidityCalculateEvent",
|
|
"fields": [
|
|
{
|
|
"name": "poolLiquidity",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "poolSqrtPriceX64",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "poolTick",
|
|
"type": "i32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "calcAmount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "calcAmount1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tradeFeeOwed0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tradeFeeOwed1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "transferFee0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "transferFee1",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "CollectPersonalFeeEvent",
|
|
"fields": [
|
|
{
|
|
"name": "positionNftMint",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount0",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount1",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount1",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "UpdateRewardInfosEvent",
|
|
"fields": [
|
|
{
|
|
"name": "rewardGrowthGlobalX64",
|
|
"type": {
|
|
"array": [
|
|
"u128",
|
|
3
|
|
]
|
|
},
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "PoolCreatedEvent",
|
|
"fields": [
|
|
{
|
|
"name": "tokenMint0",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tokenMint1",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tickSpacing",
|
|
"type": "u16",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "poolState",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "sqrtPriceX64",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tick",
|
|
"type": "i32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tokenVault0",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tokenVault1",
|
|
"type": "publicKey",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "CollectProtocolFeeEvent",
|
|
"fields": [
|
|
{
|
|
"name": "poolState",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount0",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "recipientTokenAccount1",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount1",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SwapEvent",
|
|
"fields": [
|
|
{
|
|
"name": "poolState",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "sender",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tokenAccount0",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tokenAccount1",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "transferFee0",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "transferFee1",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "zeroForOne",
|
|
"type": "bool",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "sqrtPriceX64",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "liquidity",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tick",
|
|
"type": "i32",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "LiquidityChangeEvent",
|
|
"fields": [
|
|
{
|
|
"name": "poolState",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tick",
|
|
"type": "i32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tickLower",
|
|
"type": "i32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "tickUpper",
|
|
"type": "i32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "liquidityBefore",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "liquidityAfter",
|
|
"type": "u128",
|
|
"index": false
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"code": 6000,
|
|
"name": "LOK",
|
|
"msg": "LOK"
|
|
},
|
|
{
|
|
"code": 6001,
|
|
"name": "NotApproved",
|
|
"msg": "Not approved"
|
|
},
|
|
{
|
|
"code": 6002,
|
|
"name": "InvalidUpdateConfigFlag",
|
|
"msg": "invalid update amm config flag"
|
|
},
|
|
{
|
|
"code": 6003,
|
|
"name": "AccountLack",
|
|
"msg": "Account lack"
|
|
},
|
|
{
|
|
"code": 6004,
|
|
"name": "ClosePositionErr",
|
|
"msg": "Remove liquitity, collect fees owed and reward then you can close position account"
|
|
},
|
|
{
|
|
"code": 6005,
|
|
"name": "ZeroMintAmount",
|
|
"msg": "Minting amount should be greater than 0"
|
|
},
|
|
{
|
|
"code": 6006,
|
|
"name": "InvaildTickIndex",
|
|
"msg": "Tick out of range"
|
|
},
|
|
{
|
|
"code": 6007,
|
|
"name": "TickInvaildOrder",
|
|
"msg": "The lower tick must be below the upper tick"
|
|
},
|
|
{
|
|
"code": 6008,
|
|
"name": "TickLowerOverflow",
|
|
"msg": "The tick must be greater, or equal to the minimum tick(-443636)"
|
|
},
|
|
{
|
|
"code": 6009,
|
|
"name": "TickUpperOverflow",
|
|
"msg": "The tick must be lesser than, or equal to the maximum tick(443636)"
|
|
},
|
|
{
|
|
"code": 6010,
|
|
"name": "TickAndSpacingNotMatch",
|
|
"msg": "tick % tick_spacing must be zero"
|
|
},
|
|
{
|
|
"code": 6011,
|
|
"name": "InvalidTickArray",
|
|
"msg": "Invaild tick array account"
|
|
},
|
|
{
|
|
"code": 6012,
|
|
"name": "InvalidTickArrayBoundary",
|
|
"msg": "Invaild tick array boundary"
|
|
},
|
|
{
|
|
"code": 6013,
|
|
"name": "SqrtPriceLimitOverflow",
|
|
"msg": "Square root price limit overflow"
|
|
},
|
|
{
|
|
"code": 6014,
|
|
"name": "SqrtPriceX64",
|
|
"msg": "sqrt_price_x64 out of range"
|
|
},
|
|
{
|
|
"code": 6015,
|
|
"name": "LiquiditySubValueErr",
|
|
"msg": "Liquidity sub delta L must be smaller than before"
|
|
},
|
|
{
|
|
"code": 6016,
|
|
"name": "LiquidityAddValueErr",
|
|
"msg": "Liquidity add delta L must be greater, or equal to before"
|
|
},
|
|
{
|
|
"code": 6017,
|
|
"name": "InvaildLiquidity",
|
|
"msg": "Invaild liquidity when update position"
|
|
},
|
|
{
|
|
"code": 6018,
|
|
"name": "ForbidBothZeroForSupplyLiquidity",
|
|
"msg": "Both token amount must not be zero while supply liquidity"
|
|
},
|
|
{
|
|
"code": 6019,
|
|
"name": "LiquidityInsufficient",
|
|
"msg": "Liquidity insufficient"
|
|
},
|
|
{
|
|
"code": 6020,
|
|
"name": "TransactionTooOld",
|
|
"msg": "Transaction too old"
|
|
},
|
|
{
|
|
"code": 6021,
|
|
"name": "PriceSlippageCheck",
|
|
"msg": "Price slippage check"
|
|
},
|
|
{
|
|
"code": 6022,
|
|
"name": "TooLittleOutputReceived",
|
|
"msg": "Too little output received"
|
|
},
|
|
{
|
|
"code": 6023,
|
|
"name": "TooMuchInputPaid",
|
|
"msg": "Too much input paid"
|
|
},
|
|
{
|
|
"code": 6024,
|
|
"name": "ZeroAmountSpecified",
|
|
"msg": "Swap special amount can not be zero"
|
|
},
|
|
{
|
|
"code": 6025,
|
|
"name": "InvalidInputPoolVault",
|
|
"msg": "Input pool vault is invalid"
|
|
},
|
|
{
|
|
"code": 6026,
|
|
"name": "TooSmallInputOrOutputAmount",
|
|
"msg": "Swap input or output amount is too small"
|
|
},
|
|
{
|
|
"code": 6027,
|
|
"name": "NotEnoughTickArrayAccount",
|
|
"msg": "Not enought tick array account"
|
|
},
|
|
{
|
|
"code": 6028,
|
|
"name": "InvalidFirstTickArrayAccount",
|
|
"msg": "Invaild first tick array account"
|
|
},
|
|
{
|
|
"code": 6029,
|
|
"name": "InvalidRewardIndex",
|
|
"msg": "Invalid reward index"
|
|
},
|
|
{
|
|
"code": 6030,
|
|
"name": "FullRewardInfo",
|
|
"msg": "The init reward token reach to the max"
|
|
},
|
|
{
|
|
"code": 6031,
|
|
"name": "RewardTokenAlreadyInUse",
|
|
"msg": "The init reward token already in use"
|
|
},
|
|
{
|
|
"code": 6032,
|
|
"name": "ExceptPoolVaultMint",
|
|
"msg": "The reward tokens must contain one of pool vault mint except the last reward"
|
|
},
|
|
{
|
|
"code": 6033,
|
|
"name": "InvalidRewardInitParam",
|
|
"msg": "Invalid reward init param"
|
|
},
|
|
{
|
|
"code": 6034,
|
|
"name": "InvalidRewardDesiredAmount",
|
|
"msg": "Invalid collect reward desired amount"
|
|
},
|
|
{
|
|
"code": 6035,
|
|
"name": "InvalidRewardInputAccountNumber",
|
|
"msg": "Invalid collect reward input account number"
|
|
},
|
|
{
|
|
"code": 6036,
|
|
"name": "InvalidRewardPeriod",
|
|
"msg": "Invalid reward period"
|
|
},
|
|
{
|
|
"code": 6037,
|
|
"name": "NotApproveUpdateRewardEmissiones",
|
|
"msg": "Modification of emissiones is allowed within 72 hours from the end of the previous cycle"
|
|
},
|
|
{
|
|
"code": 6038,
|
|
"name": "UnInitializedRewardInfo",
|
|
"msg": "uninitialized reward info"
|
|
},
|
|
{
|
|
"code": 6039,
|
|
"name": "NotSupportMint",
|
|
"msg": "Not support token_2022 mint extension"
|
|
},
|
|
{
|
|
"code": 6040,
|
|
"name": "MissingTickArrayBitmapExtensionAccount",
|
|
"msg": "Missing tickarray bitmap extension account"
|
|
},
|
|
{
|
|
"code": 6041,
|
|
"name": "InsufficientLiquidityForDirection",
|
|
"msg": "Insufficient liquidity for this direction"
|
|
},
|
|
{
|
|
"code": 6042,
|
|
"name": "MaxTokenOverflow",
|
|
"msg": "Max token overflow"
|
|
},
|
|
{
|
|
"code": 6043,
|
|
"name": "CalculateOverflow",
|
|
"msg": "calculate overflow"
|
|
}
|
|
]
|
|
} |