avail_rust_core/runtime_api/
mod.rs1use super::rpc;
2use crate::{
3 error::Error,
4 from_substrate::{FeeDetails, RuntimeDispatchInfo},
5};
6use primitive_types::H256;
7use subxt_rpcs::RpcClient;
8
9pub async fn call_raw<T: codec::Decode>(
10 client: &RpcClient,
11 method: &str,
12 data: &[u8],
13 at: Option<H256>,
14) -> Result<T, Error> {
15 let result: String = rpc::state::call(client, method, data, at).await?;
16 let result = const_hex::decode(result.trim_start_matches("0x")).map_err(|e| e.to_string())?;
17 let result = T::decode(&mut result.as_slice()).map_err(|e| e.to_string())?;
18
19 Ok(result)
20}
21
22pub async fn api_transaction_payment_query_info(
23 client: &RpcClient,
24 mut extrinsic: Vec<u8>,
25 at: Option<H256>,
26) -> Result<RuntimeDispatchInfo, Error> {
27 let len = extrinsic.len() as u32;
28 let bytes = len.to_ne_bytes();
29 extrinsic.extend_from_slice(&bytes);
30
31 call_raw(client, "TransactionPaymentApi_query_info", &extrinsic, at).await
32}
33
34pub async fn api_transaction_payment_query_fee_details(
35 client: &RpcClient,
36 mut extrinsic: Vec<u8>,
37 at: Option<H256>,
38) -> Result<FeeDetails, Error> {
39 let len = extrinsic.len() as u32;
40 let bytes = len.to_ne_bytes();
41 extrinsic.extend_from_slice(&bytes);
42
43 call_raw(client, "TransactionPaymentApi_query_fee_details", &extrinsic, at).await
44}
45
46pub async fn api_transaction_payment_query_call_info(
47 client: &RpcClient,
48 mut call: Vec<u8>,
49 at: Option<H256>,
50) -> Result<RuntimeDispatchInfo, Error> {
51 let len = call.len() as u32;
52 let bytes = len.to_ne_bytes();
53 call.extend_from_slice(&bytes);
54
55 call_raw(client, "TransactionPaymentCallApi_query_call_info", &call, at).await
56}
57
58pub async fn api_transaction_payment_query_call_fee_details(
59 client: &RpcClient,
60 mut call: Vec<u8>,
61 at: Option<H256>,
62) -> Result<FeeDetails, Error> {
63 let len = call.len() as u32;
64 let bytes = len.to_ne_bytes();
65 call.extend_from_slice(&bytes);
66
67 call_raw(client, "TransactionPaymentCallApi_query_call_fee_details", &call, at).await
68}