use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; use anchor_lang::{context::CpiContext, Accounts}; pub fn metadata_pointer_initialize<'info>( ctx: CpiContext<'_, '_, '_, 'info, MetadataPointerInitialize<'info>>, authority: Option, metadata_address: Option, ) -> Result<()> { let ix = spl_token_2022::extension::metadata_pointer::instruction::initialize( ctx.accounts.token_program_id.key, ctx.accounts.mint.key, authority, metadata_address, )?; anchor_lang::solana_program::program::invoke_signed( &ix, &[ctx.accounts.token_program_id, ctx.accounts.mint], ctx.signer_seeds, ) .map_err(Into::into) } #[derive(Accounts)] pub struct MetadataPointerInitialize<'info> { pub token_program_id: AccountInfo<'info>, pub mint: AccountInfo<'info>, }