macro_rules! impl_account_base_members {
() => {
fn id(&self) -> $crate::identifiers::AccountId {
self.id
}
fn account_type(&self) -> $crate::enums::AccountType {
self.account_type
}
fn base_currency(&self) -> Option<$crate::types::Currency> {
self.base_currency
}
fn calculated_account_state(&self) -> bool {
self.calculate_account_state
}
fn balance_total(
&self,
currency: Option<$crate::types::Currency>,
) -> Option<$crate::types::Money> {
self.base_balance_total(currency)
}
fn balances_total(
&self,
) -> ::indexmap::IndexMap<$crate::types::Currency, $crate::types::Money> {
self.base_balances_total()
}
fn balance_free(
&self,
currency: Option<$crate::types::Currency>,
) -> Option<$crate::types::Money> {
self.base_balance_free(currency)
}
fn balances_free(
&self,
) -> ::indexmap::IndexMap<$crate::types::Currency, $crate::types::Money> {
self.base_balances_free()
}
fn balance_locked(
&self,
currency: Option<$crate::types::Currency>,
) -> Option<$crate::types::Money> {
self.base_balance_locked(currency)
}
fn balances_locked(
&self,
) -> ::indexmap::IndexMap<$crate::types::Currency, $crate::types::Money> {
self.base_balances_locked()
}
fn balance(
&self,
currency: Option<$crate::types::Currency>,
) -> Option<&$crate::types::AccountBalance> {
self.base_balance(currency)
}
fn last_event(&self) -> Option<$crate::events::AccountState> {
self.base_last_event()
}
fn events(&self) -> Vec<$crate::events::AccountState> {
self.events.clone()
}
fn event_count(&self) -> usize {
self.events.len()
}
fn currencies(&self) -> Vec<$crate::types::Currency> {
self.balances.keys().copied().collect()
}
fn starting_balances(
&self,
) -> ::indexmap::IndexMap<$crate::types::Currency, $crate::types::Money> {
self.balances_starting.clone()
}
fn balances(
&self,
) -> ::indexmap::IndexMap<$crate::types::Currency, $crate::types::AccountBalance> {
self.balances.clone()
}
fn purge_account_events(&mut self, ts_now: ::nautilus_core::UnixNanos, lookback_secs: u64) {
self.base.base_purge_account_events(ts_now, lookback_secs);
}
fn calculate_commission(
&self,
instrument: &$crate::instruments::InstrumentAny,
last_qty: $crate::types::Quantity,
last_px: $crate::types::Price,
liquidity_side: $crate::enums::LiquiditySide,
use_quote_for_inverse: Option<bool>,
) -> anyhow::Result<$crate::types::Money> {
self.base_calculate_commission(
instrument,
last_qty,
last_px,
liquidity_side,
use_quote_for_inverse,
)
}
};
}