pub fn gen_rpc_module<TBl, TBackend, TCl, TRpc, TExPool>(
    spawn_handle: SpawnTaskHandle,
    client: Arc<TCl>,
    transaction_pool: Arc<TExPool>,
    keystore: KeystorePtr,
    system_rpc_tx: TracingUnboundedSender<Request<TBl>>,
    impl_name: String,
    impl_version: String,
    chain_spec: &dyn ChainSpec,
    state_pruning: &Option<PruningMode>,
    blocks_pruning: BlocksPruning,
    backend: Arc<TBackend>,
    rpc_builder: &dyn Fn(SubscriptionTaskExecutor) -> Result<RpcModule<TRpc>, Error>,
    metrics: Option<TransactionMetrics>,
) -> Result<RpcModule<()>, Error>where
    TBl: BlockT,
    TCl: ProvideRuntimeApi<TBl> + BlockchainEvents<TBl> + HeaderBackend<TBl> + HeaderMetadata<TBl, Error = Error> + ExecutorProvider<TBl> + CallApiAt<TBl> + ProofProvider<TBl> + StorageProvider<TBl, TBackend> + BlockBackend<TBl> + Send + Sync + 'static,
    TBackend: Backend<TBl> + 'static,
    <TCl as ProvideRuntimeApi<TBl>>::Api: SessionKeys<TBl> + Metadata<TBl>,
    TExPool: MaintainedTransactionPool<Block = TBl, Hash = <TBl as BlockT>::Hash> + 'static,
    TBl::Hash: Unpin,
    TBl::Header: Unpin,Expand description
Generate RPC module using provided configuration