substrate_api_client/api/runtime_api/
api_core.rsuse super::{RuntimeApi, RuntimeApiClient};
use crate::{api::Result, rpc::Request};
use ac_primitives::{config::Config, RuntimeVersion};
#[cfg(not(feature = "sync-api"))]
use alloc::boxed::Box;
use alloc::vec;
use sp_core::{Bytes, Encode};
#[maybe_async::maybe_async(?Send)]
pub trait CoreApi: RuntimeApi {
type Block;
type Header;
type RuntimeVersion;
async fn execute_block(&self, block: Self::Block, at_block: Option<Self::Hash>) -> Result<()>;
async fn execute_opaque_block(&self, block: Bytes, at_block: Option<Self::Hash>) -> Result<()>;
async fn initialize_block(
&self,
header: Self::Header,
at_block: Option<Self::Hash>,
) -> Result<()>;
async fn version(&self, at_block: Option<Self::Hash>) -> Result<Self::RuntimeVersion>;
}
#[maybe_async::maybe_async(?Send)]
impl<T, Client> CoreApi for RuntimeApiClient<T, Client>
where
T: Config,
Client: Request,
{
type Block = T::Block;
type Header = T::Header;
type RuntimeVersion = RuntimeVersion;
async fn execute_block(&self, block: Self::Block, at_block: Option<Self::Hash>) -> Result<()> {
self.execute_opaque_block(block.encode().into(), at_block).await
}
async fn execute_opaque_block(&self, block: Bytes, at_block: Option<Self::Hash>) -> Result<()> {
self.runtime_call("Core_execute_block", vec![block.0], at_block).await
}
async fn initialize_block(
&self,
header: Self::Header,
at_block: Option<Self::Hash>,
) -> Result<()> {
self.runtime_call("Core_initialize_block", vec![header.encode()], at_block)
.await
}
async fn version(&self, at_block: Option<Self::Hash>) -> Result<Self::RuntimeVersion> {
self.runtime_call("Core_version", vec![], at_block).await
}
}