carbon_tcomp_decoder/accounts/
list_state.rs1use carbon_core::CarbonDeserialize;
3use carbon_core::borsh;
4use carbon_core::deserialize::CarbonDeserialize;
5use solana_pubkey::Pubkey;
6
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq)]
9pub struct ListState {
10 pub version: u8,
11 pub bump: [u8; 1],
12 pub owner: Pubkey,
13 pub asset_id: Pubkey,
14 pub amount: u64,
15 pub currency: Option<Pubkey>,
16 pub expiry: i64,
17 pub private_taker: Option<Pubkey>,
18 pub maker_broker: Option<Pubkey>,
19 pub rent_payer: Pubkey,
21 pub reserved: [u8; 32],
22 #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))]
23 pub reserved1: [u8; 64],
24}
25
26impl ListState {
27 pub fn decode(data: &[u8]) -> Option<Self> {
28 if data.len() < 8 {
29 return None;
30 }
31 let discriminator = &data[0..8];
32 if discriminator != &[78, 242, 89, 138, 161, 221, 176, 75] {
33 return None;
34 }
35
36 let data_slice = data;
37
38 let data_slice = &data_slice[8..];
39
40 Self::deserialize(data_slice)
41 }
42}