carbon-tcomp-decoder 0.12.1

Rust decoder for Tensor cNFT Compressed program on Solana
Documentation
//! This code was AUTOGENERATED using the Codama library.
use crate::types::Field;
use crate::types::Target;
use carbon_core::CarbonDeserialize;
use carbon_core::borsh;
use carbon_core::deserialize::CarbonDeserialize;
use solana_pubkey::Pubkey;

#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq)]
pub struct BidState {
    pub version: u8,
    pub bump: [u8; 1],
    pub owner: Pubkey,
    /// Randomly picked pubkey used in bid seeds. To avoid dangling bids can use assetId here.
    pub bid_id: Pubkey,
    pub target: Target,
    pub target_id: Pubkey,
    pub field: Option<Field>,
    pub field_id: Option<Pubkey>,
    pub quantity: u32,
    pub filled_quantity: u32,
    pub amount: u64,
    pub currency: Option<Pubkey>,
    pub expiry: i64,
    pub private_taker: Option<Pubkey>,
    pub maker_broker: Option<Pubkey>,
    pub margin: Option<Pubkey>,
    pub updated_at: i64,
    pub cosigner: Pubkey,
    /// owner is the rent payer when this is PublicKey::default
    pub rent_payer: Pubkey,
    pub reserved: [u8; 8],
    pub reserved1: [u8; 16],
    pub reserved2: [u8; 32],
}

impl BidState {
    pub fn decode(data: &[u8]) -> Option<Self> {
        if data.len() < 8 {
            return None;
        }
        let discriminator = &data[0..8];
        if discriminator != &[155, 197, 5, 97, 189, 60, 8, 183] {
            return None;
        }

        let data_slice = data;

        let data_slice = &data_slice[8..];

        Self::deserialize(data_slice)
    }
}