anchor_spl/token_2022_extensions/
immutable_owner.rs1use anchor_lang::solana_program::account_info::AccountInfo;
2use anchor_lang::solana_program::pubkey::Pubkey;
3use anchor_lang::Result;
4use anchor_lang::{context::CpiContext, Accounts};
5
6pub fn immutable_owner_initialize<'info>(
7 ctx: CpiContext<'_, '_, '_, 'info, ImmutableOwnerInitialize<'info>>,
8) -> Result<()> {
9 let ix = spl_token_2022::instruction::initialize_immutable_owner(
10 ctx.accounts.token_program_id.key,
11 ctx.accounts.token_account.key,
12 )?;
13 anchor_lang::solana_program::program::invoke_signed(
14 &ix,
15 &[ctx.accounts.token_program_id, ctx.accounts.token_account],
16 ctx.signer_seeds,
17 )
18 .map_err(Into::into)
19}
20
21#[derive(Accounts)]
22pub struct ImmutableOwnerInitialize<'info> {
23 pub token_program_id: AccountInfo<'info>,
24 pub token_account: AccountInfo<'info>,
25}