spl_token_wrap/mint_customizer/
no_extensions.rs1use {
2 crate::mint_customizer::interface::MintCustomizer,
3 solana_account_info::AccountInfo,
4 solana_program_error::ProgramError,
5 solana_pubkey::Pubkey,
6 spl_token_2022::{
7 extension::{ExtensionType, PodStateWithExtensions},
8 pod::PodMint,
9 state::Mint,
10 },
11};
12
13pub struct NoExtensionCustomizer;
15
16impl MintCustomizer for NoExtensionCustomizer {
17 fn get_token_2022_mint_space() -> Result<usize, ProgramError> {
18 let extensions = vec![];
19 ExtensionType::try_calculate_account_len::<Mint>(&extensions)
20 }
21
22 fn get_freeze_auth_and_decimals(
23 unwrapped_mint_account: &AccountInfo,
24 ) -> Result<(Option<Pubkey>, u8), ProgramError> {
25 let unwrapped_mint_data = unwrapped_mint_account.try_borrow_data()?;
27 let pod_mint = PodStateWithExtensions::<PodMint>::unpack(&unwrapped_mint_data)?.base;
28 let freeze_authority = pod_mint.freeze_authority.ok_or(()).ok();
29 let decimals = pod_mint.decimals;
30 Ok((freeze_authority, decimals))
31 }
32}