pub fn sync(
    config: SyncConfig,
    network_config: NetworkConfiguration,
    chain: Arc<dyn BlockChainClient>,
    forks: BTreeSet<BlockNumber>,
    snapshot_service: Arc<dyn SnapshotService>,
    _log_settings: &LogConfig,
    connection_filter: Option<Arc<dyn ConnectionFilter>>
) -> Result<(Arc<dyn SyncProvider>, Arc<dyn ManageNetwork>, Arc<dyn ChainNotify>, Sender<PriorityTask>, Sender<H256>), Error>