1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
use super::toggle_asset_state;
use crate::{
instruction::{Unlock, UnlockArgs},
state::TokenState,
};
pub fn unlock<'a>(
program_id: &Pubkey,
accounts: &'a [AccountInfo<'a>],
args: UnlockArgs,
) -> ProgramResult {
let context = Unlock::to_context(accounts)?;
match args {
UnlockArgs::V1 { .. } => toggle_asset_state(
program_id,
super::ToggleAccounts {
payer_info: context.accounts.payer_info,
authority_info: context.accounts.authority_info,
mint_info: context.accounts.mint_info,
token_info: context.accounts.token_info,
edition_info: context.accounts.edition_info,
metadata_info: context.accounts.metadata_info,
token_record_info: context.accounts.token_record_info,
system_program_info: context.accounts.system_program_info,
sysvar_instructions_info: context.accounts.sysvar_instructions_info,
spl_token_program_info: context.accounts.spl_token_program_info,
},
TokenState::Locked,
TokenState::Unlocked,
),
}
}