async fn run_aggregator<B, C, CN, LN, JS>(
    aggregator: Aggregator<'_, CN, LN>,
    io: IO<JS>,
    client: Arc<C>,
    session_boundaries: &SessionBoundaries,
    metrics: TimingBlockMetrics,
    exit_rx: Receiver<()>
) -> Result<(), ()>
where B: Block<Hash = BlockHash>, B::Header: Header<Number = BlockNumber>, JS: JustificationSubmissions<Justification> + Send + Sync + Clone, C: HeaderBackend<B> + Send + Sync + 'static, LN: Network<RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, CN: Network<RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>,