carbon_tcomp_decoder/instructions/
list.rs

1use carbon_core::{CarbonDeserialize, account_utils::next_account, borsh};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x36aec14311298426")]
7pub struct List {
8    pub nonce: u64,
9    pub index: u32,
10    pub root: [u8; 32],
11    pub data_hash: [u8; 32],
12    pub creator_hash: [u8; 32],
13    pub amount: u64,
14    pub expire_in_sec: Option<u64>,
15    pub currency: Option<solana_pubkey::Pubkey>,
16    pub private_taker: Option<solana_pubkey::Pubkey>,
17    pub maker_broker: Option<solana_pubkey::Pubkey>,
18}
19
20#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
21pub struct ListInstructionAccounts {
22    pub tree_authority: solana_pubkey::Pubkey,
23    pub owner: solana_pubkey::Pubkey,
24    pub delegate: solana_pubkey::Pubkey,
25    pub merkle_tree: solana_pubkey::Pubkey,
26    pub log_wrapper: solana_pubkey::Pubkey,
27    pub compression_program: solana_pubkey::Pubkey,
28    pub system_program: solana_pubkey::Pubkey,
29    pub bubblegum_program: solana_pubkey::Pubkey,
30    pub tcomp_program: solana_pubkey::Pubkey,
31    pub list_state: solana_pubkey::Pubkey,
32    pub rent_payer: solana_pubkey::Pubkey,
33}
34
35impl carbon_core::deserialize::ArrangeAccounts for List {
36    type ArrangedAccounts = ListInstructionAccounts;
37
38    fn arrange_accounts(
39        accounts: &[solana_instruction::AccountMeta],
40    ) -> Option<Self::ArrangedAccounts> {
41        let mut iter = accounts.iter();
42        let tree_authority = next_account(&mut iter)?;
43        let owner = next_account(&mut iter)?;
44        let delegate = next_account(&mut iter)?;
45        let merkle_tree = next_account(&mut iter)?;
46        let log_wrapper = next_account(&mut iter)?;
47        let compression_program = next_account(&mut iter)?;
48        let system_program = next_account(&mut iter)?;
49        let bubblegum_program = next_account(&mut iter)?;
50        let tcomp_program = next_account(&mut iter)?;
51        let list_state = next_account(&mut iter)?;
52        let rent_payer = next_account(&mut iter)?;
53
54        Some(ListInstructionAccounts {
55            tree_authority,
56            owner,
57            delegate,
58            merkle_tree,
59            log_wrapper,
60            compression_program,
61            system_program,
62            bubblegum_program,
63            tcomp_program,
64            list_state,
65            rent_payer,
66        })
67    }
68}