use {crate::types::AccountState, solana_pubkey::Pubkey};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
pub struct Token {
pub mint: Pubkey,
pub owner: Pubkey,
pub amount: u64,
pub delegate: Option<Pubkey>,
pub state: AccountState,
pub is_native: Option<u64>,
pub delegated_amount: u64,
pub close_authority: Option<Pubkey>,
}
impl Token {
pub fn decode(data: &[u8]) -> Option<Self> {
if data.len() != 165 {
return None;
}
let mut data_slice = data;
data_slice = &data_slice[0..];
borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
}
}