nifty_cli/commands/
unlock.rs1use nifty_asset::instructions::Unlock;
2
3use super::*;
4
5pub struct UnlockArgs {
6 pub keypair_path: Option<PathBuf>,
7 pub rpc_url: Option<String>,
8 pub asset: Pubkey,
9 pub signer_keypair_path: Option<PathBuf>,
10}
11
12pub fn handle_unlock(args: UnlockArgs) -> Result<()> {
13 let config = CliConfig::new(args.keypair_path, args.rpc_url)?;
14
15 let payer_sk = Keypair::from_bytes(&config.keypair.to_bytes())?;
16
17 let signer_sk = if let Some(signer) = args.signer_keypair_path {
19 read_keypair_file(signer)
20 .map_err(|err| anyhow!("Failed to read signer keypair file: {}", err))?
21 } else {
22 Keypair::from_bytes(&config.keypair.to_bytes())?
23 };
24
25 let signer = signer_sk.pubkey();
26 let asset = args.asset;
27
28 let ix = Unlock { asset, signer }.instruction();
29
30 let sig = send_and_confirm_tx(&config.client, &[&payer_sk, &signer_sk], &[ix])?;
31
32 println!("Unlocking asset {asset} in tx: {sig}");
33
34 Ok(())
35}