use std::error::Error;
use crate::kernel::Settings;
use crate::model::TxnSet;
pub use balance_group_reporter::BalanceGroupReporter;
pub use balance_group_reporter::BalanceGroupSettings;
pub use balance_reporter::BalanceReporter;
pub use balance_reporter::BalanceSettings;
pub use register_reporter::RegisterReporter;
pub use register_reporter::RegisterSettings;
use std::io;
use tackler_api::metadata::items::AccountSelectorChecksum;
mod balance_group_reporter;
mod balance_reporter;
mod register_reporter;
pub trait Report {
fn write_txt_report<W: io::Write + ?Sized>(
&self,
cfg: &Settings,
w: &mut W,
txns: &TxnSet,
) -> Result<(), Box<dyn Error>>;
}
pub fn get_account_selector_checksum(
cfg: &Settings,
ras: &Option<Vec<String>>,
) -> Result<Option<AccountSelectorChecksum>, Box<dyn Error>> {
if let Some(hash) = &cfg.audit.hash {
if let Some(ras) = ras {
let mut accsel = ras.clone();
accsel.sort();
let h = hash.checksum(&accsel, "\n".as_bytes())?;
let asc = AccountSelectorChecksum { hash: h };
Ok(Some(asc))
} else {
Ok(None)
}
} else {
Ok(None)
}
}