|
@@ -16,7 +16,7 @@ use super::types::SendKind;
|
|
use super::Error;
|
|
use super::Error;
|
|
use crate::amount::SplitTarget;
|
|
use crate::amount::SplitTarget;
|
|
use crate::mint_url::MintUrl;
|
|
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::types::Melted;
|
|
use crate::wallet::types::MintQuote;
|
|
use crate::wallet::types::MintQuote;
|
|
use crate::{Amount, Wallet};
|
|
use crate::{Amount, Wallet};
|
|
@@ -117,6 +117,20 @@ impl MultiMintWallet {
|
|
Ok(balances)
|
|
Ok(balances)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// List proofs.
|
|
|
|
+ #[instrument(skip(self))]
|
|
|
|
+ pub async fn list_proofs(
|
|
|
|
+ &self,
|
|
|
|
+ ) -> Result<BTreeMap<MintUrl, (Vec<Proof>, CurrencyUnit)>, Error> {
|
|
|
|
+ let mut mint_proofs = BTreeMap::new();
|
|
|
|
+
|
|
|
|
+ for (WalletKey { mint_url, unit: u }, wallet) in self.wallets.lock().await.iter() {
|
|
|
|
+ let wallet_proofs = wallet.get_proofs().await?;
|
|
|
|
+ mint_proofs.insert(mint_url.clone(), (wallet_proofs, *u));
|
|
|
|
+ }
|
|
|
|
+ Ok(mint_proofs)
|
|
|
|
+ }
|
|
|
|
+
|
|
/// Create cashu token
|
|
/// Create cashu token
|
|
#[instrument(skip(self))]
|
|
#[instrument(skip(self))]
|
|
pub async fn send(
|
|
pub async fn send(
|