use alloc::boxed::Box;
use alloc::vec::Vec;
use scale_type_resolver::TypeResolver;
pub trait TransactionExtension<Resolver: TypeResolver> {
const NAME: &str;
fn encode_value_to(
&self,
type_id: Resolver::TypeId,
type_resolver: &Resolver,
out: &mut Vec<u8>,
) -> Result<(), TransactionExtensionError>;
fn encode_value_for_signer_payload_to(
&self,
type_id: Resolver::TypeId,
type_resolver: &Resolver,
out: &mut Vec<u8>,
) -> Result<(), TransactionExtensionError> {
self.encode_value_to(type_id, type_resolver, out)
}
fn encode_implicit_to(
&self,
type_id: Resolver::TypeId,
type_resolver: &Resolver,
out: &mut Vec<u8>,
) -> Result<(), TransactionExtensionError>;
}
pub type TransactionExtensionError = Box<dyn core::error::Error + Send + Sync + 'static>;