use std::sync::Arc;
use crate::{types::AssetId, Address, Txid};
#[derive(uniffi::Object)]
pub struct LwkTestEnv {
inner: lwk_test_util::TestEnv,
}
#[uniffi::export]
impl LwkTestEnv {
#[allow(clippy::new_without_default)]
#[uniffi::constructor]
pub fn new() -> LwkTestEnv {
let inner = lwk_test_util::TestEnvBuilder::from_env()
.with_electrum()
.with_esplora()
.with_waterfalls()
.build();
LwkTestEnv { inner }
}
pub fn generate(&self, blocks: u32) {
self.inner.elementsd_generate(blocks);
}
pub fn height(&self) -> u64 {
self.inner.elementsd_height()
}
pub fn send_to_address(&self, address: &Address, satoshi: u64, asset: Option<AssetId>) -> Txid {
self.inner
.elementsd_sendtoaddress(address.as_ref(), satoshi, asset.map(Into::into))
.into()
}
pub fn issue_asset(&self, satoshi: u64) -> AssetId {
self.inner.elementsd_issueasset(satoshi).into()
}
pub fn get_new_address(&self) -> Arc<Address> {
Arc::new(self.inner.elementsd_getnewaddress().into())
}
pub fn electrum_url(&self) -> String {
self.inner.electrum_url()
}
pub fn esplora_url(&self) -> String {
self.inner.esplora_url()
}
pub fn waterfalls_url(&self) -> String {
self.inner.waterfalls_url()
}
}