use async_trait::async_trait;
use haima_core::{HaimaResult, WalletAddress};
#[async_trait]
pub trait WalletBackend: Send + Sync {
fn address(&self) -> &WalletAddress;
async fn sign_message(&self, message: &[u8]) -> HaimaResult<Vec<u8>>;
async fn sign_typed_data(&self, hash: &[u8; 32]) -> HaimaResult<Vec<u8>>;
async fn sign_transfer_authorization(
&self,
from: &str,
to: &str,
value: u64,
valid_after: u64,
valid_before: u64,
nonce: &[u8; 32],
) -> HaimaResult<Vec<u8>>;
fn backend_type(&self) -> &str;
}