carbon_raydium_clmm_decoder/instructions/
decrease_liquidity.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0xa026d06f685b2c01")]
7pub struct DecreaseLiquidity {
8    pub liquidity: u128,
9    pub amount0_min: u64,
10    pub amount1_min: u64,
11}
12
13#[derive(Debug, PartialEq)]
14pub struct DecreaseLiquidityInstructionAccounts {
15    pub nft_owner: solana_pubkey::Pubkey,
16    pub nft_account: solana_pubkey::Pubkey,
17    pub personal_position: solana_pubkey::Pubkey,
18    pub pool_state: solana_pubkey::Pubkey,
19    pub protocol_position: solana_pubkey::Pubkey,
20    pub token_vault0: solana_pubkey::Pubkey,
21    pub token_vault1: solana_pubkey::Pubkey,
22    pub tick_array_lower: solana_pubkey::Pubkey,
23    pub tick_array_upper: solana_pubkey::Pubkey,
24    pub recipient_token_account0: solana_pubkey::Pubkey,
25    pub recipient_token_account1: solana_pubkey::Pubkey,
26    pub token_program: solana_pubkey::Pubkey,
27}
28
29impl carbon_core::deserialize::ArrangeAccounts for DecreaseLiquidity {
30    type ArrangedAccounts = DecreaseLiquidityInstructionAccounts;
31
32    fn arrange_accounts(
33        accounts: &[solana_instruction::AccountMeta],
34    ) -> Option<Self::ArrangedAccounts> {
35        let [nft_owner, nft_account, personal_position, pool_state, protocol_position, token_vault0, token_vault1, tick_array_lower, tick_array_upper, recipient_token_account0, recipient_token_account1, token_program, _remaining @ ..] =
36            accounts
37        else {
38            return None;
39        };
40
41        Some(DecreaseLiquidityInstructionAccounts {
42            nft_owner: nft_owner.pubkey,
43            nft_account: nft_account.pubkey,
44            personal_position: personal_position.pubkey,
45            pool_state: pool_state.pubkey,
46            protocol_position: protocol_position.pubkey,
47            token_vault0: token_vault0.pubkey,
48            token_vault1: token_vault1.pubkey,
49            tick_array_lower: tick_array_lower.pubkey,
50            tick_array_upper: tick_array_upper.pubkey,
51            recipient_token_account0: recipient_token_account0.pubkey,
52            recipient_token_account1: recipient_token_account1.pubkey,
53            token_program: token_program.pubkey,
54        })
55    }
56}