minimal_template_node/
rpc.rs1#![warn(missing_docs)]
24
25use jsonrpsee::RpcModule;
26use minimal_template_runtime::interface::{AccountId, Nonce, OpaqueBlock};
27use polkadot_sdk::{
28 sc_transaction_pool_api::TransactionPool,
29 sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata},
30 *,
31};
32use std::sync::Arc;
33
34pub struct FullDeps<C, P> {
36 pub client: Arc<C>,
38 pub pool: Arc<P>,
40}
41
42#[docify::export]
43pub fn create_full<C, P>(
45 deps: FullDeps<C, P>,
46) -> Result<RpcModule<()>, Box<dyn std::error::Error + Send + Sync>>
47where
48 C: Send
49 + Sync
50 + 'static
51 + sp_api::ProvideRuntimeApi<OpaqueBlock>
52 + HeaderBackend<OpaqueBlock>
53 + HeaderMetadata<OpaqueBlock, Error = BlockChainError>
54 + 'static,
55 C::Api: sp_block_builder::BlockBuilder<OpaqueBlock>,
56 C::Api: substrate_frame_rpc_system::AccountNonceApi<OpaqueBlock, AccountId, Nonce>,
57 P: TransactionPool + 'static,
58{
59 use polkadot_sdk::substrate_frame_rpc_system::{System, SystemApiServer};
60 let mut module = RpcModule::new(());
61 let FullDeps { client, pool } = deps;
62
63 module.merge(System::new(client.clone(), pool.clone()).into_rpc())?;
64
65 Ok(module)
66}