use crate::Api;
use ac_compose_macros::compose_extrinsic_offline;
use ac_primitives::{
config::Config, extrinsic_params::ExtrinsicParams, Preamble, SignExtrinsic, UncheckedExtrinsic,
};
use codec::Encode;
type ExtrinsicAddress<T> =
<<T as Config>::ExtrinsicSigner as SignExtrinsic<<T as Config>::AccountId>>::ExtrinsicAddress;
type Signature<T> =
<<T as Config>::ExtrinsicSigner as SignExtrinsic<<T as Config>::AccountId>>::Signature;
type TxExtension<T> = <<T as Config>::ExtrinsicParams as ExtrinsicParams<
<T as Config>::Index,
<T as Config>::Hash,
>>::TxExtension;
impl<T: Config, Client> Api<T, Client> {
pub fn compose_extrinsic_offline<Call: Encode + Clone>(
&self,
call: Call,
nonce: T::Index,
) -> UncheckedExtrinsic<ExtrinsicAddress<T>, Call, Signature<T>, TxExtension<T>> {
match self.signer() {
Some(signer) => compose_extrinsic_offline!(signer, call, self.extrinsic_params(nonce)),
None => UncheckedExtrinsic::from_parts(call, Preamble::Bare(5)),
}
}
}