multiple active keysets and return active keyset with lowest fee (#448)

This commit is contained in:
Mubarak Muhammad Aminu
2024-11-12 14:18:58 +01:00
committed by GitHub
parent 4e2c013c79
commit e5c81d3848

View File

@@ -50,7 +50,7 @@ impl Wallet {
/// Queries mint for current keysets then gets [`Keys`] for any unknown
/// keysets
#[instrument(skip(self))]
pub async fn get_active_mint_keyset(&self) -> Result<KeySetInfo, Error> {
pub async fn get_active_mint_keysets(&self) -> Result<Vec<KeySetInfo>, Error> {
let keysets = self.client.get_mint_keysets(self.mint_url.clone()).await?;
let keysets = keysets.keysets;
@@ -86,6 +86,21 @@ impl Wallet {
}
}
active_keysets.first().ok_or(Error::NoActiveKeyset).cloned()
Ok(active_keysets)
}
/// Get active keyset for mint with the lowest fees
///
/// Queries mint for current keysets then gets [`Keys`] for any unknown
/// keysets
#[instrument(skip(self))]
pub async fn get_active_mint_keyset(&self) -> Result<KeySetInfo, Error> {
let active_keysets = self.get_active_mint_keysets().await?;
let keyset_with_lowest_fee = active_keysets
.into_iter()
.min_by_key(|key| key.input_fee_ppk)
.ok_or(Error::NoActiveKeyset)?;
Ok(keyset_with_lowest_fee)
}
}