lwk_bindings 0.2.0

Liquid Wallet Kit - Bindings for other languages
Documentation
use std::sync::Arc;

use crate::{types::AssetId, Address, Txid};

/// Represent a test environment with an elements node and an electrum server.
/// useful for testing only, wrapper over [`lwk_test_util::TestElectrumServer`]
#[derive(uniffi::Object)]
pub struct TestEnv {
    inner: lwk_test_util::TestElectrumServer,
}

#[uniffi::export]
impl TestEnv {
    #[allow(clippy::new_without_default)]
    #[uniffi::constructor]
    pub fn new() -> TestEnv {
        TestEnv {
            inner: lwk_test_util::setup(true),
        }
    }

    pub fn generate(&self, blocks: u32) {
        self.inner.generate(blocks);
    }

    pub fn height(&self) -> u64 {
        self.inner.node_height()
    }

    pub fn send_to_address(&self, address: &Address, satoshi: u64, asset: Option<AssetId>) -> Txid {
        self.inner
            .node_sendtoaddress(address.as_ref(), satoshi, asset.map(Into::into))
            .into()
    }

    pub fn issue_asset(&self, satoshi: u64) -> AssetId {
        self.inner.node_issueasset(satoshi).into()
    }

    pub fn get_new_address(&self) -> Arc<Address> {
        Arc::new(self.inner.node_getnewaddress().into())
    }

    pub fn electrum_url(&self) -> String {
        self.inner.electrs.electrum_url.clone()
    }
}