nifty_cli/commands/
burn.rs

1use super::*;
2
3pub struct BurnArgs {
4    pub keypair_path: Option<PathBuf>,
5    pub rpc_url: Option<String>,
6    pub asset: Pubkey,
7    pub recipient: Option<Pubkey>,
8}
9
10pub fn handle_burn(args: BurnArgs) -> Result<()> {
11    let config = CliConfig::new(args.keypair_path, args.rpc_url)?;
12
13    let signer_sk = config.keypair;
14
15    let signer = signer_sk.pubkey();
16    let asset = args.asset;
17
18    let data = config.client.get_account_data(&args.asset)?;
19    let asset_account = Asset::from_bytes(&data).unwrap();
20
21    let ix = Burn {
22        asset,
23        signer,
24        recipient: args.recipient,
25        group: asset_account.group.to_option(),
26    }
27    .instruction();
28
29    let sig = send_and_confirm_tx(&config.client, &[&signer_sk], &[ix])?;
30
31    println!("Burned asset {asset} in tx: {sig}");
32
33    Ok(())
34}