1use light_compressed_account::compressed_account::CompressedAccountWithMerkleContext;
2
3use crate::{AnchorDeserialize, AnchorSerialize, Pubkey};
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq, AnchorDeserialize, AnchorSerialize, Default)]
6#[repr(u8)]
7pub enum AccountState {
8 #[default]
9 Initialized,
10 Frozen,
11}
12#[derive(Debug, PartialEq, Eq, AnchorDeserialize, AnchorSerialize, Clone, Default)]
14pub struct TokenData {
15 pub mint: Pubkey,
17 pub owner: Pubkey,
19 pub amount: u64,
21 pub delegate: Option<Pubkey>,
24 pub state: AccountState,
26 pub tlv: Option<Vec<u8>>,
28}
29
30#[derive(Debug, Clone, PartialEq)]
31pub struct TokenDataWithMerkleContext {
32 pub token_data: TokenData,
33 pub compressed_account: CompressedAccountWithMerkleContext,
34}