pub(crate) async fn start_node_impl<RuntimeApi, RB, BIQ>(
    parachain_config: Configuration,
    polkadot_config: Configuration,
    eth_config: EthConfiguration,
    collator_options: CollatorOptions,
    para_id: ParaId,
    hwbench: Option<HwBench>,
    first_evm_block: BlockNumber,
    rpc_ext_builder: RB,
    build_import_queue: BIQ
) -> Result<(TaskManager, Arc<TFullClient<Block, RuntimeApi, WasmExecutor<SubstrateHostFunctions>>>)>
where RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, WasmExecutor<SubstrateHostFunctions>>> + Send + Sync + 'static, RuntimeApi::RuntimeApi: RuntimeApiCollection, StateBackendFor<TFullBackend<Block>, Block>: StateBackend<BlakeTwo256>, RB: Fn(Arc<TFullClient<Block, RuntimeApi, WasmExecutor<SubstrateHostFunctions>>>, Arc<FullPool<Block, TFullClient<Block, RuntimeApi, WasmExecutor<SubstrateHostFunctions>>>>, DenyUnsafe, SubscriptionTaskExecutor, Arc<NetworkService<Block, Hash>>, Arc<SyncingService<Block>>, Backend<Block>, FilterPool, FeeHistoryCache, Arc<OverrideHandle<Block>>, Arc<EthBlockDataCacheTask<Block>>) -> Result<RpcModule<()>, Error> + 'static, BIQ: FnOnce(Arc<TFullClient<Block, RuntimeApi, WasmExecutor<SubstrateHostFunctions>>>, ParachainBlockImport<Block, Arc<TFullClient<Block, RuntimeApi, WasmExecutor<SubstrateHostFunctions>>>, TFullBackend<Block>>, &Configuration, Option<TelemetryHandle>, &TaskManager, Backend<Block>, BlockNumber) -> Result<DefaultImportQueue<Block>, Error>,
Expand description

Start a node with the given parachain Configuration and relay chain Configuration.

This is the actual implementation that is abstract over the executor and the runtime api.