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§
Sourcefn native_symbol(&self) -> &str
fn native_symbol(&self) -> &str
Get the native currency symbol
Sourcefn native_decimals(&self) -> u8
fn native_decimals(&self) -> u8
Get the native currency decimals
Sourcefn 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_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
Sourcefn 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 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
Sourcefn 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 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
Sourcefn 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 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
Sourcefn derive_address(&self, public_key: &[u8]) -> Result<String>
fn derive_address(&self, public_key: &[u8]) -> Result<String>
Derive address from public key bytes
Sourcefn 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 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)
Sourcefn 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 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
Sourcefn 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 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
Sourcefn is_valid_address(&self, address: &str) -> bool
fn is_valid_address(&self, address: &str) -> bool
Check if an address is valid for this chain
Sourcefn explorer_tx_url(&self, tx_hash: &str) -> Option<String>
fn explorer_tx_url(&self, tx_hash: &str) -> Option<String>
Get the explorer URL for a transaction
Sourcefn explorer_address_url(&self, address: &str) -> Option<String>
fn explorer_address_url(&self, address: &str) -> Option<String>
Get the explorer URL for an address
Sourcefn finalize_transaction(
&self,
unsigned_tx: &UnsignedTx,
signature: &Signature,
) -> Result<SignedTx>
fn finalize_transaction( &self, unsigned_tx: &UnsignedTx, signature: &Signature, ) -> Result<SignedTx>
Finalize a transaction with signature (chain-specific encoding)