substrate_api_client/extrinsic/
offline_extrinsic.rs1use crate::Api;
21use ac_compose_macros::compose_extrinsic_offline;
22use ac_primitives::{
23 config::Config, extrinsic_params::ExtrinsicParams, Preamble, SignExtrinsic, UncheckedExtrinsic,
24};
25use codec::Encode;
26
27type ExtrinsicAddress<T> =
28 <<T as Config>::ExtrinsicSigner as SignExtrinsic<<T as Config>::AccountId>>::ExtrinsicAddress;
29type Signature<T> =
30 <<T as Config>::ExtrinsicSigner as SignExtrinsic<<T as Config>::AccountId>>::Signature;
31type TxExtension<T> = <<T as Config>::ExtrinsicParams as ExtrinsicParams<
32 <T as Config>::Index,
33 <T as Config>::Hash,
34>>::TxExtension;
35
36impl<T: Config, Client> Api<T, Client> {
37 pub fn compose_extrinsic_offline<Call: Encode + Clone>(
39 &self,
40 call: Call,
41 nonce: T::Index,
42 ) -> UncheckedExtrinsic<ExtrinsicAddress<T>, Call, Signature<T>, TxExtension<T>> {
43 match self.signer() {
44 Some(signer) => compose_extrinsic_offline!(signer, call, self.extrinsic_params(nonce)),
45 None => UncheckedExtrinsic { preamble: Preamble::Bare(5), function: call },
46 }
47 }
48}