1use rialo_s_pubkey::{Pubkey, PUBKEY_BYTES};
7
8rialo_s_pubkey::declare_id!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
9
10pub mod program_v3_4_0 {
11 rialo_s_pubkey::declare_id!("NToK4t5AQzxPNpUA84DkxgfXaVDbDQQjpHKCqsbY46B");
12}
13
14pub const SPL_TOKEN_ACCOUNT_MINT_OFFSET: usize = 0;
27pub const SPL_TOKEN_ACCOUNT_OWNER_OFFSET: usize = 32;
28pub const SPL_TOKEN_ACCOUNT_LENGTH: usize = 165;
29
30pub trait GenericTokenAccount {
31 fn valid_account_data(account_data: &[u8]) -> bool;
32
33 fn unpack_account_owner_unchecked(account_data: &[u8]) -> &Pubkey {
35 Self::unpack_pubkey_unchecked(account_data, SPL_TOKEN_ACCOUNT_OWNER_OFFSET)
36 }
37
38 fn unpack_account_mint_unchecked(account_data: &[u8]) -> &Pubkey {
40 Self::unpack_pubkey_unchecked(account_data, SPL_TOKEN_ACCOUNT_MINT_OFFSET)
41 }
42
43 fn unpack_pubkey_unchecked(account_data: &[u8], offset: usize) -> &Pubkey {
45 bytemuck::from_bytes(&account_data[offset..offset.wrapping_add(PUBKEY_BYTES)])
46 }
47
48 fn unpack_account_owner(account_data: &[u8]) -> Option<&Pubkey> {
49 if Self::valid_account_data(account_data) {
50 Some(Self::unpack_account_owner_unchecked(account_data))
51 } else {
52 None
53 }
54 }
55
56 fn unpack_account_mint(account_data: &[u8]) -> Option<&Pubkey> {
57 if Self::valid_account_data(account_data) {
58 Some(Self::unpack_account_mint_unchecked(account_data))
59 } else {
60 None
61 }
62 }
63}
64
65pub struct Account;
66impl Account {
67 pub fn get_packed_len() -> usize {
68 SPL_TOKEN_ACCOUNT_LENGTH
69 }
70}
71
72impl GenericTokenAccount for Account {
73 fn valid_account_data(account_data: &[u8]) -> bool {
74 account_data.len() == SPL_TOKEN_ACCOUNT_LENGTH
75 }
76}
77
78pub mod native_mint {
79 rialo_s_pubkey::declare_id!("So11111111111111111111111111111111111111112");
80
81 pub const ACCOUNT_DATA: [u8; 82] = [
91 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
92 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
94 ];
95}