fuels_core/traits/signer.rs
1use async_trait::async_trait;
2use auto_impl::auto_impl;
3use fuel_crypto::{Message, Signature};
4
5use crate::types::{bech32::Bech32Address, errors::Result};
6
7/// Trait for signing transactions and messages
8///
9/// Implement this trait to support different signing modes, e.g. hardware wallet, hosted etc.
10#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
11#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
12#[auto_impl(&, Box, Rc, Arc)]
13pub trait Signer {
14 async fn sign(&self, message: Message) -> Result<Signature>;
15 fn address(&self) -> &Bech32Address;
16}