Skip to main content

off_grid_primitives/account/
mod.rs

1pub mod futures;
2pub mod spot;
3pub mod option;
4
5use std::collections::HashMap;
6
7/// Common interface to read balances across account types.
8pub trait AccountBalances {
9    fn balances(&self) -> &HashMap<Vec<u8>, u64>;
10}
11
12/// Collect all balances from multiple accounts into a flat list.
13pub fn collect_balances(accounts: &[&dyn AccountBalances], asset_ids: &[Vec<u8>]) -> Vec<(Vec<u8>, u64)> {
14    let mut balances = HashMap::new();
15    for account in accounts {
16        for asset_id in asset_ids {
17            if let Some(amount) = account.balances().get(asset_id) {
18                balances.insert(asset_id.clone(), *amount);
19            }
20        }
21    }
22    balances.into_iter().collect()
23}