Trait HWI

Source
pub trait HWI: Debug {
    // Required methods
    fn device_kind(&self) -> DeviceKind;
    fn get_version<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Version, Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn get_master_fingerprint<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Fingerprint, Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn get_extended_pubkey<'life0, 'life1, 'async_trait>(
        &'life0 self,
        path: &'life1 DerivationPath,
    ) -> Pin<Box<dyn Future<Output = Result<Xpub, Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn register_wallet<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        name: &'life1 str,
        policy: &'life2 str,
    ) -> Pin<Box<dyn Future<Output = Result<Option<[u8; 32]>, Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
    fn is_wallet_registered<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        name: &'life1 str,
        policy: &'life2 str,
    ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
    fn display_address<'life0, 'life1, 'async_trait>(
        &'life0 self,
        script: &'life1 AddressScript,
    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn sign_tx<'life0, 'life1, 'async_trait>(
        &'life0 self,
        tx: &'life1 mut Psbt,
    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
}
Expand description

HWI is the common Hardware Wallet Interface.

Required Methods§

Source

fn device_kind(&self) -> DeviceKind

Return the device kind

Source

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

Application version or OS version.

Source

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

Get master fingerprint.

Source

fn get_extended_pubkey<'life0, 'life1, 'async_trait>( &'life0 self, path: &'life1 DerivationPath, ) -> Pin<Box<dyn Future<Output = Result<Xpub, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get the xpub with the given derivation path.

Source

fn register_wallet<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, name: &'life1 str, policy: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<Option<[u8; 32]>, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Register a new wallet policy.

Source

fn is_wallet_registered<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, name: &'life1 str, policy: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Returns true if the wallet is registered on the device.

Source

fn display_address<'life0, 'life1, 'async_trait>( &'life0 self, script: &'life1 AddressScript, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Display address on the device screen.

Source

fn sign_tx<'life0, 'life1, 'async_trait>( &'life0 self, tx: &'life1 mut Psbt, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Sign a partially signed bitcoin transaction (PSBT).

Trait Implementations§

Source§

impl<T: Runtime + Sync + Send + 'static> From<BitBox02<T>> for Box<dyn HWI + Send>

Source§

fn from(s: BitBox02<T>) -> Box<dyn HWI + Send>

Converts to this type from the input type.
Source§

impl<T: Runtime + Sync + Send + 'static> From<BitBox02<T>> for Box<dyn HWI + Sync + Send>

Source§

fn from(s: BitBox02<T>) -> Box<dyn HWI + Sync + Send>

Converts to this type from the input type.
Source§

impl From<Coldcard> for Box<dyn HWI + Send>

Source§

fn from(s: Coldcard) -> Box<dyn HWI + Send>

Converts to this type from the input type.
Source§

impl<T: 'static + Transport + Sync + Send> From<Jade<T>> for Box<dyn HWI + Send>

Source§

fn from(s: Jade<T>) -> Box<dyn HWI + Send>

Converts to this type from the input type.
Source§

impl<T: 'static + Transport + Sync + Send> From<Ledger<T>> for Box<dyn HWI + Send>

Source§

fn from(s: Ledger<T>) -> Box<dyn HWI + Send>

Converts to this type from the input type.
Source§

impl<T: 'static + Transport + Sync + Send> From<Specter<T>> for Box<dyn HWI + Send>

Source§

fn from(s: Specter<T>) -> Box<dyn HWI + Send>

Converts to this type from the input type.

Implementors§

Source§

impl HWI for Coldcard

Source§

impl<T: Runtime + Sync + Send> HWI for BitBox02<T>

Source§

impl<T: Transport + Sync + Send> HWI for Jade<T>

Source§

impl<T: Transport + Sync + Send> HWI for Ledger<T>

Source§

impl<T: Transport + Sync + Send> HWI for Specter<T>