fn build_consensus(
    client: Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<ParachainNativeExecutor>>>,
    block_import: ParachainBlockImport<Block, Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<ParachainNativeExecutor>>>, TFullBackend<Block>>,
    prometheus_registry: Option<&Registry>,
    telemetry: Option<TelemetryHandle>,
    task_manager: &TaskManager,
    relay_chain_interface: Arc<dyn RelayChainInterface>,
    transaction_pool: Arc<FullPool<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<ParachainNativeExecutor>>>>,
    sync_oracle: Arc<SyncingService<Block>>,
    keystore: KeystorePtr,
    force_authoring: bool,
    para_id: ParaId
) -> Result<Box<dyn ParachainConsensus<Block>>, Error>