use std::sync::Arc;
use crate::{types::AssetId, Address, Txid};
#[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()
    }
}