use {
crate::types::{AccountEventHeader, LiquidationBalances},
solana_pubkey::Pubkey,
};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
pub struct LendingAccountLiquidateEventEvent {
pub header: AccountEventHeader,
pub liquidatee_marginfi_account: Pubkey,
pub liquidatee_marginfi_account_authority: Pubkey,
pub asset_bank: Pubkey,
pub asset_mint: Pubkey,
pub liability_bank: Pubkey,
pub liability_mint: Pubkey,
pub liquidatee_pre_health: f64,
pub liquidatee_post_health: f64,
pub pre_balances: LiquidationBalances,
pub post_balances: LiquidationBalances,
}
impl LendingAccountLiquidateEventEvent {
pub fn decode(data: &[u8]) -> Option<Self> {
if data.len() < 8 {
return None;
}
let discriminator = &data[0..8];
if discriminator != [166, 160, 249, 154, 183, 39, 23, 242] {
return None;
}
let mut data_slice = data;
data_slice = &data_slice[8..];
borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
}
}