carbon_tcomp_decoder/instructions/
take_bid_core.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;
7
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq, Eq, Hash)]
10pub struct TakeBidCore {
11    pub min_amount: u64,
12}
13
14#[derive(Debug, Clone, PartialEq)]
15#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
16pub struct TakeBidCoreInstructionAccounts {
17    pub tcomp: solana_pubkey::Pubkey,
18    pub seller: solana_pubkey::Pubkey,
19    pub bid_state: solana_pubkey::Pubkey,
20    pub owner: solana_pubkey::Pubkey,
21    pub taker_broker: Option<solana_pubkey::Pubkey>,
22    pub maker_broker: Option<solana_pubkey::Pubkey>,
23    pub margin_account: solana_pubkey::Pubkey,
24    pub whitelist: solana_pubkey::Pubkey,
25    pub asset: solana_pubkey::Pubkey,
26    pub collection: Option<solana_pubkey::Pubkey>,
27    pub mpl_core_program: solana_pubkey::Pubkey,
28    pub system_program: solana_pubkey::Pubkey,
29    pub tcomp_program: solana_pubkey::Pubkey,
30    pub tensorswap_program: solana_pubkey::Pubkey,
31    pub cosigner: solana_pubkey::Pubkey,
32    pub mint_proof: solana_pubkey::Pubkey,
33    pub rent_dest: solana_pubkey::Pubkey,
34    pub remaining: Vec<solana_instruction::AccountMeta>,
35}
36
37impl TakeBidCore {
38    pub fn decode(data: &[u8]) -> Option<Self> {
39        if data.len() < 8 {
40            return None;
41        }
42        let discriminator = &data[0..8];
43        if discriminator != &[250, 41, 248, 20, 61, 161, 27, 141] {
44            return None;
45        }
46
47        let data_slice = data;
48
49        let data_slice = &data_slice[8..];
50
51        Self::deserialize(data_slice)
52    }
53}
54
55impl ArrangeAccounts for TakeBidCore {
56    type ArrangedAccounts = TakeBidCoreInstructionAccounts;
57
58    fn arrange_accounts(
59        accounts: &[solana_instruction::AccountMeta],
60    ) -> Option<Self::ArrangedAccounts> {
61        let mut iter = accounts.iter();
62
63        let tcomp = next_account(&mut iter)?;
64        let seller = next_account(&mut iter)?;
65        let bid_state = next_account(&mut iter)?;
66        let owner = next_account(&mut iter)?;
67        let taker_broker = next_account(&mut iter);
68        let maker_broker = next_account(&mut iter);
69        let margin_account = next_account(&mut iter)?;
70        let whitelist = next_account(&mut iter)?;
71        let asset = next_account(&mut iter)?;
72        let collection = next_account(&mut iter);
73        let mpl_core_program = next_account(&mut iter)?;
74        let system_program = next_account(&mut iter)?;
75        let tcomp_program = next_account(&mut iter)?;
76        let tensorswap_program = next_account(&mut iter)?;
77        let cosigner = next_account(&mut iter)?;
78        let mint_proof = next_account(&mut iter)?;
79        let rent_dest = next_account(&mut iter)?;
80
81        let remaining = iter.as_slice();
82
83        Some(TakeBidCoreInstructionAccounts {
84            tcomp,
85            seller,
86            bid_state,
87            owner,
88            taker_broker,
89            maker_broker,
90            margin_account,
91            whitelist,
92            asset,
93            collection,
94            mpl_core_program,
95            system_program,
96            tcomp_program,
97            tensorswap_program,
98            cosigner,
99            mint_proof,
100            rent_dest,
101            remaining: remaining.to_vec(),
102        })
103    }
104}