firma 0.20.0

Firma is a library to create bitcoin multisig wallets with private keys stored on offline devices.
Documentation
use crate::online::WalletNameOptions;
use crate::*;
use bitcoin::util::amount::Denomination;
use bitcoin::Amount;
use bitcoincore_rpc::RpcApi;

impl OnlineContext {
    pub fn balance(&self, opt: &WalletNameOptions) -> Result<BalanceOutput> {
        let client = self.make_client(&opt.wallet_name)?;
        let balances: Balances = client.call("getbalances", &[])?;
        let am = balances.watchonly.immature + balances.watchonly.untrusted_pending;
        let pending = match am.as_sat() {
            0 => None,
            _ => Some(am.into()),
        };
        let confirmed: BalanceSatBtc = balances.watchonly.trusted.into();
        let balance = BalanceOutput { confirmed, pending };
        Ok(balance)
    }
}

impl From<Amount> for BalanceSatBtc {
    fn from(a: Amount) -> Self {
        let satoshi = a.as_sat();
        let btc = a.to_string_in(Denomination::Bitcoin);
        BalanceSatBtc { satoshi, btc }
    }
}