carbon_tcomp_decoder/instructions/
list.rs

1//! This code was AUTOGENERATED using the Codama library.
2use carbon_core::CarbonDeserialize;
3use carbon_core::account_utils::next_account;
4use carbon_core::borsh;
5use carbon_core::deserialize::ArrangeAccounts;
6use carbon_core::deserialize::CarbonDeserialize;
7use solana_pubkey::Pubkey;
8
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq, Eq, Hash)]
11pub struct List {
12    pub nonce: u64,
13    pub index: u32,
14    pub root: [u8; 32],
15    pub data_hash: [u8; 32],
16    pub creator_hash: [u8; 32],
17    pub amount: u64,
18    pub expire_in_sec: Option<u64>,
19    pub currency: Option<Pubkey>,
20    pub private_taker: Option<Pubkey>,
21    pub maker_broker: Option<Pubkey>,
22}
23
24#[derive(Debug, Clone, PartialEq)]
25#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
26pub struct ListInstructionAccounts {
27    pub tree_authority: solana_pubkey::Pubkey,
28    pub owner: solana_pubkey::Pubkey,
29    pub delegate: solana_pubkey::Pubkey,
30    pub merkle_tree: solana_pubkey::Pubkey,
31    pub log_wrapper: solana_pubkey::Pubkey,
32    pub compression_program: solana_pubkey::Pubkey,
33    pub system_program: solana_pubkey::Pubkey,
34    pub bubblegum_program: solana_pubkey::Pubkey,
35    pub tcomp_program: solana_pubkey::Pubkey,
36    pub list_state: solana_pubkey::Pubkey,
37    pub rent_payer: solana_pubkey::Pubkey,
38    pub remaining: Vec<solana_instruction::AccountMeta>,
39}
40
41impl List {
42    pub fn decode(data: &[u8]) -> Option<Self> {
43        if data.len() < 8 {
44            return None;
45        }
46        let discriminator = &data[0..8];
47        if discriminator != &[54, 174, 193, 67, 17, 41, 132, 38] {
48            return None;
49        }
50
51        let data_slice = data;
52
53        let data_slice = &data_slice[8..];
54
55        Self::deserialize(data_slice)
56    }
57}
58
59impl ArrangeAccounts for List {
60    type ArrangedAccounts = ListInstructionAccounts;
61
62    fn arrange_accounts(
63        accounts: &[solana_instruction::AccountMeta],
64    ) -> Option<Self::ArrangedAccounts> {
65        let mut iter = accounts.iter();
66
67        let tree_authority = next_account(&mut iter)?;
68        let owner = next_account(&mut iter)?;
69        let delegate = next_account(&mut iter)?;
70        let merkle_tree = next_account(&mut iter)?;
71        let log_wrapper = next_account(&mut iter)?;
72        let compression_program = next_account(&mut iter)?;
73        let system_program = next_account(&mut iter)?;
74        let bubblegum_program = next_account(&mut iter)?;
75        let tcomp_program = next_account(&mut iter)?;
76        let list_state = next_account(&mut iter)?;
77        let rent_payer = next_account(&mut iter)?;
78
79        let remaining = iter.as_slice();
80
81        Some(ListInstructionAccounts {
82            tree_authority,
83            owner,
84            delegate,
85            merkle_tree,
86            log_wrapper,
87            compression_program,
88            system_program,
89            bubblegum_program,
90            tcomp_program,
91            list_state,
92            rent_payer,
93            remaining: remaining.to_vec(),
94        })
95    }
96}