Skip to content

Commit

Permalink
feat: mint-proofs command
Browse files Browse the repository at this point in the history
  • Loading branch information
ubbabeck committed Oct 10, 2024
1 parent 2002758 commit 413a5ca
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 3 deletions.
6 changes: 4 additions & 2 deletions crates/cdk-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ enum Commands {
/// Update Mint Url
UpdateMintUrl(sub_commands::update_mint_url::UpdateMintUrlSubCommand),
/// Get proofs from mint.
MintProofs,
ListMintProofs,
}

#[tokio::main]
Expand Down Expand Up @@ -201,6 +201,8 @@ async fn main() -> Result<()> {
sub_commands::update_mint_url::update_mint_url(&multi_mint_wallet, sub_command_args)
.await
}
Commands::MintProofs => sub_commands::mint_proofs::proofs(&multi_mint_wallet).await,
Commands::ListMintProofs => {
sub_commands::list_mint_proofs::proofs(&multi_mint_wallet).await
}
}
}
29 changes: 29 additions & 0 deletions crates/cdk-cli/src/sub_commands/list_mint_proofs.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
use std::collections::BTreeMap;

use anyhow::Result;
use cdk::{
mint_url::MintUrl,
nuts::{CurrencyUnit, Proof},
wallet::multi_mint_wallet::MultiMintWallet,
};

pub async fn proofs(multi_mint_wallet: &MultiMintWallet) -> Result<()> {
list_proofs(multi_mint_wallet, &CurrencyUnit::Sat).await?;
Ok(())
}

async fn list_proofs(
multi_mint_wallet: &MultiMintWallet,
unit: &CurrencyUnit,
) -> Result<Vec<(MintUrl, Vec<Proof>)>> {
let wallets_proofs: BTreeMap<MintUrl, Vec<Proof>> = multi_mint_wallet.list_proofs(unit).await?;

let mut proofs_vec = Vec::with_capacity(wallets_proofs.len());

for (i, (mint_url, proofs)) in wallets_proofs.iter().enumerate() {
let mint_url = mint_url.clone();
println!("{i}: {mint_url} {:#?}", proofs);
proofs_vec.push((mint_url, proofs.clone()))
}
Ok(proofs_vec)
}
1 change: 1 addition & 0 deletions crates/cdk-cli/src/sub_commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ pub mod balance;
pub mod burn;
pub mod check_spent;
pub mod decode_token;
pub mod list_mint_proofs;
pub mod melt;
pub mod mint;
pub mod mint_info;
Expand Down
19 changes: 18 additions & 1 deletion crates/cdk/src/wallet/multi_mint_wallet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use super::types::SendKind;
use super::Error;
use crate::amount::SplitTarget;
use crate::mint_url::MintUrl;
use crate::nuts::{CurrencyUnit, SecretKey, SpendingConditions, Token};
use crate::nuts::{CurrencyUnit, Proof, SecretKey, SpendingConditions, Token};
use crate::types::Melted;
use crate::wallet::types::MintQuote;
use crate::{Amount, Wallet};
Expand Down Expand Up @@ -117,6 +117,23 @@ impl MultiMintWallet {
Ok(balances)
}

/// List proofs.
#[instrument(skip(self))]
pub async fn list_proofs(
&self,
unit: &CurrencyUnit,
) -> Result<BTreeMap<MintUrl, Vec<Proof>>, Error> {
let mut mint_proofs = BTreeMap::new();

for (WalletKey { mint_url, unit: u }, wallet) in self.wallets.lock().await.iter() {
if unit == u {
let wallet_proofs = wallet.get_proofs().await?;
mint_proofs.insert(mint_url.clone(), wallet_proofs);
}
}
Ok(mint_proofs)
}

/// Create cashu token
#[instrument(skip(self))]
pub async fn send(
Expand Down

0 comments on commit 413a5ca

Please sign in to comment.