diff --git a/README.md b/README.md index 95133d9..4ace128 100644 --- a/README.md +++ b/README.md @@ -41,4 +41,4 @@ See the [UniFFI User Guide](https://mozilla.github.io/uniffi-rs/) 1. Use `build.sh` script (TODO do it all in build.rs instead) 2. Create tests in `bindings/bdk-kotlin` and/or `bindings/bdk-swift` - 3. Use `test.sh` to run all bindings tests \ No newline at end of file + 3. Use `test.sh` to run all bindings tests diff --git a/src/bdk.udl b/src/bdk.udl index e79ddcc..f87a7fe 100644 --- a/src/bdk.udl +++ b/src/bdk.udl @@ -44,6 +44,13 @@ enum BdkError { "Sled", }; +enum Network { + "Bitcoin", + "Testnet", + "Signet", + "Regtest", +}; + dictionary SledDbConfiguration { string path; string tree_name; @@ -57,6 +64,6 @@ interface DatabaseConfig { interface OfflineWallet { [Throws=BdkError] - constructor(string descriptor, DatabaseConfig database_config); + constructor(Network network, string descriptor, DatabaseConfig database_config); string get_new_address(); }; diff --git a/src/lib.rs b/src/lib.rs index db824ca..3d8b8b3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,6 +7,8 @@ use bdk::Wallet; use std::sync::Mutex; +uniffi_macros::include_scaffolding!("bdk"); + type BdkError = Error; pub enum DatabaseConfig { @@ -14,25 +16,22 @@ pub enum DatabaseConfig { Sled { configuration: SledDbConfiguration }, } -uniffi_macros::include_scaffolding!("bdk"); - struct OfflineWallet { wallet: Mutex>, } impl OfflineWallet { - fn new(descriptor: String, database_config: DatabaseConfig) -> Result { + fn new( + network: Network, + descriptor: String, + database_config: DatabaseConfig, + ) -> Result { let any_database_config = match database_config { DatabaseConfig::Memory { .. } => AnyDatabaseConfig::Memory(()), DatabaseConfig::Sled { configuration } => AnyDatabaseConfig::Sled(configuration), }; let database = AnyDatabase::from_config(&any_database_config)?; - let wallet = Mutex::new(Wallet::new_offline( - &descriptor, - None, - Network::Regtest, - database, - )?); + let wallet = Mutex::new(Wallet::new_offline(&descriptor, None, network, database)?); Ok(OfflineWallet { wallet }) }