carbon-drift-v2-decoder 2.0.0

Drift v2 Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use {
    crate::types::{BuilderInfo, RevenueShareOrder},
    solana_pubkey::Pubkey,
};

#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
pub struct RevenueShareEscrow {
    /// the owner of this account, a user
    pub authority: Pubkey,
    pub referrer: Pubkey,
    pub referrer_boost_expire_ts: u32,
    pub referrer_reward_offset: i8,
    pub referee_fee_numerator_offset: i8,
    pub referrer_boost_numerator: i8,
    pub reserved_fixed: [u8; 17],
    pub padding0: u32,
    pub orders: Vec<RevenueShareOrder>,
    pub padding1: u32,
    pub approved_builders: Vec<BuilderInfo>,
}

impl RevenueShareEscrow {
    pub fn decode(data: &[u8]) -> Option<Self> {
        if data.len() < 8 {
            return None;
        }
        let discriminator = &data[0..8];
        if discriminator != [98, 167, 3, 46, 74, 177, 173, 252] {
            return None;
        }

        let mut data_slice = data;

        data_slice = &data_slice[8..];

        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
    }
}