+ /// Gets the balances in the contained [`ChannelMonitor`]s which are claimable on-chain or
+ /// claims which are awaiting confirmation.
+ ///
+ /// Includes the balances from each [`ChannelMonitor`] *except* those included in
+ /// `ignored_channels`, allowing you to filter out balances from channels which are still open
+ /// (and whose balance should likely be pulled from the [`ChannelDetails`]).
+ ///
+ /// See [`ChannelMonitor::get_claimable_balances`] for more details on the exact criteria for
+ /// inclusion in the return value.
+ pub fn get_claimable_balances(&self, ignored_channels: &[ChannelDetails]) -> Vec<Balance> {
+ let mut ret = Vec::new();
+ let monitors = self.monitors.read().unwrap();
+ for (_, monitor) in monitors.iter().filter(|(funding_outpoint, _)| {
+ for chan in ignored_channels {
+ if chan.funding_txo.as_ref() == Some(funding_outpoint) {
+ return false;
+ }
+ }
+ true
+ }) {
+ ret.append(&mut monitor.get_claimable_balances());
+ }
+ ret
+ }
+