burn.rs 882 B

12345678910111213141516171819202122232425262728293031323334
  1. use anyhow::Result;
  2. use cdk::mint_url::MintUrl;
  3. use cdk::wallet::MultiMintWallet;
  4. use cdk::Amount;
  5. use clap::Args;
  6. #[derive(Args)]
  7. pub struct BurnSubCommand {
  8. /// Mint Url
  9. mint_url: Option<MintUrl>,
  10. }
  11. pub async fn burn(
  12. multi_mint_wallet: &MultiMintWallet,
  13. sub_command_args: &BurnSubCommand,
  14. ) -> Result<()> {
  15. let mut total_burnt = Amount::ZERO;
  16. match &sub_command_args.mint_url {
  17. Some(mint_url) => {
  18. let wallet = multi_mint_wallet.get_wallet(mint_url).await.unwrap();
  19. total_burnt = wallet.check_all_pending_proofs().await?;
  20. }
  21. None => {
  22. for wallet in multi_mint_wallet.get_wallets().await {
  23. let amount_burnt = wallet.check_all_pending_proofs().await?;
  24. total_burnt += amount_burnt;
  25. }
  26. }
  27. }
  28. println!("{total_burnt} burned");
  29. Ok(())
  30. }