carbon_raydium_clmm_decoder/instructions/
decrease_liquidity.rs1use 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}