carbon_tcomp_decoder/instructions/
list.rs1use 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}