diff --git a/Cargo.lock b/Cargo.lock index 8eb14e5..07fbc81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,6 +87,17 @@ dependencies = [ "syn", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -301,6 +312,45 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "clap" +version = "3.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_derive" +version = "3.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "crc32fast" version = "1.3.2" @@ -470,6 +520,15 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + [[package]] name = "idna" version = "0.2.1" @@ -481,6 +540,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + [[package]] name = "instant" version = "0.1.12" @@ -637,6 +706,12 @@ version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +[[package]] +name = "os_str_bytes" +version = "6.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" + [[package]] name = "parking_lot" version = "0.11.2" @@ -698,6 +773,30 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro2" version = "1.0.51" @@ -965,6 +1064,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "syn" version = "1.0.107" @@ -976,6 +1081,21 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + [[package]] name = "thiserror" version = "1.0.39" @@ -1065,6 +1185,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f71cc01459bc34cfe43fabf32b39f1228709bc6db1b3a664a92940af3d062376" dependencies = [ "anyhow", + "camino", + "clap", "uniffi_bindgen", "uniffi_build", "uniffi_core", @@ -1339,6 +1461,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" diff --git a/bdk-ffi/Cargo.toml b/bdk-ffi/Cargo.toml index 7848668..45979f7 100644 --- a/bdk-ffi/Cargo.toml +++ b/bdk-ffi/Cargo.toml @@ -15,6 +15,9 @@ name = "bdkffi" name = "uniffi-bindgen" path = "uniffi-bindgen.rs" +[features] +default = ["uniffi/cli"] + [dependencies] bdk = { version = "0.27.1", features = ["all-keys", "use-esplora-ureq", "sqlite-bundled", "rpc"] } uniffi = { version = "0.23.0" } diff --git a/bdk-ffi/src/lib.rs b/bdk-ffi/src/lib.rs index 0dedc6c..f0e8fa2 100644 --- a/bdk-ffi/src/lib.rs +++ b/bdk-ffi/src/lib.rs @@ -194,7 +194,7 @@ pub struct TxOut { } impl From<&bdk::bitcoin::blockdata::transaction::TxOut> for TxOut { - fn from(x: &bdk::bitcoin::blockdata::transaction::TxOut) -> TxOut { + fn from(x: &bdk::bitcoin::blockdata::transaction::TxOut) -> Self { TxOut { value: x.value, script_pubkey: Arc::new(Script { @@ -211,25 +211,21 @@ pub struct LocalUtxo { is_spent: bool, } -trait NetworkLocalUtxo { - fn from_utxo(x: &bdk::LocalUtxo) -> LocalUtxo; -} - -impl NetworkLocalUtxo for LocalUtxo { - fn from_utxo(x: &bdk::LocalUtxo) -> LocalUtxo { +impl From for LocalUtxo { + fn from(local_utxo: bdk::LocalUtxo) -> Self { LocalUtxo { outpoint: OutPoint { - txid: x.outpoint.txid.to_string(), - vout: x.outpoint.vout, + txid: local_utxo.outpoint.txid.to_string(), + vout: local_utxo.outpoint.vout, }, txout: TxOut { - value: x.txout.value, + value: local_utxo.txout.value, script_pubkey: Arc::new(Script { - script: x.txout.script_pubkey.clone(), + script: local_utxo.txout.script_pubkey.clone(), }), }, - keychain: x.keychain, - is_spent: x.is_spent, + keychain: local_utxo.keychain, + is_spent: local_utxo.is_spent, } } } diff --git a/bdk-ffi/src/wallet.rs b/bdk-ffi/src/wallet.rs index b80bd90..26ebeae 100644 --- a/bdk-ffi/src/wallet.rs +++ b/bdk-ffi/src/wallet.rs @@ -17,8 +17,8 @@ use crate::database::DatabaseConfig; use crate::descriptor::Descriptor; use crate::psbt::PartiallySignedTransaction; use crate::{ - AddressIndex, AddressInfo, Balance, BdkError, LocalUtxo, NetworkLocalUtxo, OutPoint, Progress, - ProgressHolder, RbfValue, Script, ScriptAmount, TransactionDetails, TxBuilderResult, + AddressIndex, AddressInfo, Balance, BdkError, LocalUtxo, OutPoint, Progress, ProgressHolder, + RbfValue, Script, ScriptAmount, TransactionDetails, TxBuilderResult, }; #[derive(Debug)] @@ -132,7 +132,7 @@ impl Wallet { /// which first needs to be Wallet.sync manually. pub(crate) fn list_unspent(&self) -> Result, BdkError> { let unspents: Vec = self.get_wallet().list_unspent()?; - Ok(unspents.iter().map(LocalUtxo::from_utxo).collect()) + Ok(unspents.into_iter().map(LocalUtxo::from).collect()) } } @@ -578,7 +578,7 @@ mod test { // new index still 0 assert_eq!( wallet - .get_address(crate::AddressIndex::New) + .get_address(AddressIndex::New) .unwrap() .address, "bcrt1qqjn9gky9mkrm3c28e5e87t5akd3twg6xezp0tv" @@ -587,7 +587,7 @@ mod test { // new index now 1 assert_eq!( wallet - .get_address(crate::AddressIndex::New) + .get_address(AddressIndex::New) .unwrap() .address, "bcrt1q0xs7dau8af22rspp4klya4f7lhggcnqfun2y3a" @@ -596,7 +596,7 @@ mod test { // new index now 2 assert_eq!( wallet - .get_address(crate::AddressIndex::New) + .get_address(AddressIndex::New) .unwrap() .address, "bcrt1q5g0mq6dkmwzvxscqwgc932jhgcxuqqkjv09tkj" @@ -647,7 +647,7 @@ mod test { assert_eq!( wallet - .get_address(crate::AddressIndex::New) + .get_address(AddressIndex::New) .unwrap() .address, "bcrt1qqjn9gky9mkrm3c28e5e87t5akd3twg6xezp0tv" @@ -655,7 +655,7 @@ mod test { assert_eq!( wallet - .get_address(crate::AddressIndex::New) + .get_address(AddressIndex::New) .unwrap() .address, "bcrt1q0xs7dau8af22rspp4klya4f7lhggcnqfun2y3a" @@ -663,7 +663,7 @@ mod test { assert_eq!( wallet - .get_address(crate::AddressIndex::LastUnused) + .get_address(AddressIndex::LastUnused) .unwrap() .address, "bcrt1q0xs7dau8af22rspp4klya4f7lhggcnqfun2y3a" @@ -671,7 +671,7 @@ mod test { assert_eq!( wallet - .get_internal_address(crate::AddressIndex::New) + .get_internal_address(AddressIndex::New) .unwrap() .address, "bcrt1qpmz73cyx00r4a5dea469j40ax6d6kqyd67nnpj" @@ -679,7 +679,7 @@ mod test { assert_eq!( wallet - .get_internal_address(crate::AddressIndex::New) + .get_internal_address(AddressIndex::New) .unwrap() .address, "bcrt1qaux734vuhykww9632v8cmdnk7z2mw5lsf74v6k" @@ -687,7 +687,7 @@ mod test { assert_eq!( wallet - .get_internal_address(crate::AddressIndex::LastUnused) + .get_internal_address(AddressIndex::LastUnused) .unwrap() .address, "bcrt1qaux734vuhykww9632v8cmdnk7z2mw5lsf74v6k"