1use anchor_lang::{AnchorDeserialize, AnchorSerialize};
2use solana_program::pubkey::Pubkey;
3
4use crate::compressed_account::CompressedAccountWithMerkleContext;
5
6#[derive(Clone, Copy, Debug, PartialEq, Eq, AnchorDeserialize, AnchorSerialize)]
7#[repr(u8)]
8pub enum AccountState {
9 Initialized,
10 Frozen,
11}
12
13#[derive(Debug, PartialEq, Eq, AnchorDeserialize, AnchorSerialize, Clone)]
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)]
31pub struct TokenDataWithMerkleContext {
32 pub token_data: TokenData,
33 pub compressed_account: CompressedAccountWithMerkleContext,
34}