carbon_raydium_clmm_decoder/instructions/
decrease_liquidity_v2.rs1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4 CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x3a7fbc3e4f52c460")]
7pub struct DecreaseLiquidityV2 {
8 pub liquidity: u128,
9 pub amount0_min: u64,
10 pub amount1_min: u64,
11}
12
13#[derive(Debug, PartialEq)]
14pub struct DecreaseLiquidityV2InstructionAccounts {
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 pub token_program2022: solana_pubkey::Pubkey,
28 pub memo_program: solana_pubkey::Pubkey,
29 pub vault0_mint: solana_pubkey::Pubkey,
30 pub vault1_mint: solana_pubkey::Pubkey,
31}
32
33impl carbon_core::deserialize::ArrangeAccounts for DecreaseLiquidityV2 {
34 type ArrangedAccounts = DecreaseLiquidityV2InstructionAccounts;
35
36 fn arrange_accounts(
37 accounts: &[solana_instruction::AccountMeta],
38 ) -> Option<Self::ArrangedAccounts> {
39 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, token_program2022, memo_program, vault0_mint, vault1_mint, _remaining @ ..] =
40 accounts
41 else {
42 return None;
43 };
44
45 Some(DecreaseLiquidityV2InstructionAccounts {
46 nft_owner: nft_owner.pubkey,
47 nft_account: nft_account.pubkey,
48 personal_position: personal_position.pubkey,
49 pool_state: pool_state.pubkey,
50 protocol_position: protocol_position.pubkey,
51 token_vault0: token_vault0.pubkey,
52 token_vault1: token_vault1.pubkey,
53 tick_array_lower: tick_array_lower.pubkey,
54 tick_array_upper: tick_array_upper.pubkey,
55 recipient_token_account0: recipient_token_account0.pubkey,
56 recipient_token_account1: recipient_token_account1.pubkey,
57 token_program: token_program.pubkey,
58 token_program2022: token_program2022.pubkey,
59 memo_program: memo_program.pubkey,
60 vault0_mint: vault0_mint.pubkey,
61 vault1_mint: vault1_mint.pubkey,
62 })
63 }
64}