Ver código fonte

feat(cli): burn

thesimplekid 10 meses atrás
pai
commit
7c4c24d0b7

+ 5 - 0
crates/cdk-cli/src/main.rs

@@ -54,6 +54,8 @@ enum Commands {
     MintInfo(sub_commands::mint_info::MintInfoSubcommand),
     /// Mint proofs via bolt11
     Mint(sub_commands::mint::MintSubCommand),
+    /// Burn Spent tokens
+    Burn(sub_commands::burn::BurnSubCommand),
     /// Restore proofs from seed
     Restore(sub_commands::restore::RestoreSubCommand),
 }
@@ -113,6 +115,9 @@ async fn main() -> Result<()> {
         Commands::Mint(sub_command_args) => {
             sub_commands::mint::mint(wallet, sub_command_args).await
         }
+        Commands::Burn(sub_command_args) => {
+            sub_commands::burn::burn(wallet, sub_command_args).await
+        }
         Commands::Restore(sub_command_args) => {
             sub_commands::restore::restore(wallet, sub_command_args).await
         }

+ 19 - 0
crates/cdk-cli/src/sub_commands/burn.rs

@@ -0,0 +1,19 @@
+use anyhow::Result;
+use cdk::wallet::Wallet;
+use clap::Args;
+
+#[derive(Args)]
+pub struct BurnSubCommand {
+    /// Token Memo
+    #[arg(short, long)]
+    mint_url: Option<String>,
+}
+
+pub async fn burn(wallet: Wallet, sub_command_args: &BurnSubCommand) -> Result<()> {
+    let amount_burnt = wallet
+        .check_all_pending_proofs(sub_command_args.mint_url.clone().map(|u| u.into()))
+        .await?;
+
+    println!("{amount_burnt} burned");
+    Ok(())
+}

+ 1 - 0
crates/cdk-cli/src/sub_commands/mod.rs

@@ -1,4 +1,5 @@
 pub mod balance;
+pub mod burn;
 pub mod check_spent;
 pub mod decode_token;
 pub mod melt;