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