use { self::{inscription_updater::InscriptionUpdater, rune_updater::RuneUpdater}, super::{fetcher::Fetcher, *}, futures::future::try_join_all, std::sync::mpsc, tokio::sync::mpsc::{error::TryRecvError, Receiver, Sender}, }; mod inscription_updater; mod rune_updater; pub(crate) struct BlockData { pub(crate) header: Header, pub(crate) txdata: Vec<(Transaction, Txid)>, } impl From for BlockData { fn from(block: Block) -> Self { BlockData { header: block.header, txdata: block .txdata .into_iter() .map(|transaction| { let txid = transaction.txid(); (transaction, txid) }) .collect(), } } } pub(crate) struct Updater<'index> { range_cache: HashMap>, height: u32, index: &'index Index, sat_ranges_since_flush: u64, outputs_cached: u64, outputs_inserted_since_flush: u64, outputs_traversed: u64, } impl<'index> Updater<'_> { pub(crate) fn new(index: &'index Index) -> Result> {