ChainAdapter

Trait ChainAdapter 

Source
pub trait ChainAdapter: Send + Sync {
Show 15 methods // Required methods fn chain_id(&self) -> ChainId; fn native_symbol(&self) -> &str; fn native_decimals(&self) -> u8; fn get_balance<'life0, 'life1, 'async_trait>( &'life0 self, address: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Balance>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn get_nonce<'life0, 'life1, 'async_trait>( &'life0 self, address: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn build_transaction<'life0, 'async_trait>( &'life0 self, params: TxParams, ) -> Pin<Box<dyn Future<Output = Result<UnsignedTx>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn broadcast<'life0, 'life1, 'async_trait>( &'life0 self, signed_tx: &'life1 SignedTx, ) -> Pin<Box<dyn Future<Output = Result<TxHash>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn derive_address(&self, public_key: &[u8]) -> Result<String>; fn get_gas_prices<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<GasPrices>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn estimate_gas<'life0, 'life1, 'async_trait>( &'life0 self, params: &'life1 TxParams, ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn wait_for_confirmation<'life0, 'life1, 'async_trait>( &'life0 self, tx_hash: &'life1 str, timeout_secs: u64, ) -> Pin<Box<dyn Future<Output = Result<TxReceipt>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn is_valid_address(&self, address: &str) -> bool; fn explorer_tx_url(&self, tx_hash: &str) -> Option<String>; fn explorer_address_url(&self, address: &str) -> Option<String>; fn finalize_transaction( &self, unsigned_tx: &UnsignedTx, signature: &Signature, ) -> Result<SignedTx>;
}
Expand description

Trait for chain-specific operations

This trait abstracts blockchain interactions, allowing the wallet to work with multiple chains through a unified interface.

Required Methods§

Source

fn chain_id(&self) -> ChainId

Get the chain identifier

Source

fn native_symbol(&self) -> &str

Get the native currency symbol

Source

fn native_decimals(&self) -> u8

Get the native currency decimals

Source

fn get_balance<'life0, 'life1, 'async_trait>( &'life0 self, address: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Balance>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get the native balance for an address

Source

fn get_nonce<'life0, 'life1, 'async_trait>( &'life0 self, address: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get the current nonce/sequence for an address

Source

fn build_transaction<'life0, 'async_trait>( &'life0 self, params: TxParams, ) -> Pin<Box<dyn Future<Output = Result<UnsignedTx>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Build an unsigned transaction

Source

fn broadcast<'life0, 'life1, 'async_trait>( &'life0 self, signed_tx: &'life1 SignedTx, ) -> Pin<Box<dyn Future<Output = Result<TxHash>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Broadcast a signed transaction

Source

fn derive_address(&self, public_key: &[u8]) -> Result<String>

Derive address from public key bytes

Source

fn get_gas_prices<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<GasPrices>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get current gas prices (for EVM) or priority fees (for Solana)

Source

fn estimate_gas<'life0, 'life1, 'async_trait>( &'life0 self, params: &'life1 TxParams, ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Estimate gas for a transaction

Source

fn wait_for_confirmation<'life0, 'life1, 'async_trait>( &'life0 self, tx_hash: &'life1 str, timeout_secs: u64, ) -> Pin<Box<dyn Future<Output = Result<TxReceipt>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Wait for transaction confirmation

Source

fn is_valid_address(&self, address: &str) -> bool

Check if an address is valid for this chain

Source

fn explorer_tx_url(&self, tx_hash: &str) -> Option<String>

Get the explorer URL for a transaction

Source

fn explorer_address_url(&self, address: &str) -> Option<String>

Get the explorer URL for an address

Source

fn finalize_transaction( &self, unsigned_tx: &UnsignedTx, signature: &Signature, ) -> Result<SignedTx>

Finalize a transaction with signature (chain-specific encoding)

Implementors§