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 {
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()
}
}