diff --git a/CHANGELOG.md b/CHANGELOG.md index 3db97fd..96958a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] + - Breaking Changes - Rename `get_network()` method on `Wallet` interface to `network()` [#185] - Rename `get_transactions()` method on `Wallet` interface to `list_transactions()` [#185] @@ -24,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `extend(DerivationPath)` extends and returns DescriptorPublicKey - `as_string()` returns DescriptorPublicKey as String - Add to `interface Blockchain` the `get_height()` and `get_block_hash()` methods [#184] + - Add to `interface TxBuilder` the `set_recipients(recipient: Vec)` method [#186] - Interfaces Added [#154] - `DescriptorSecretKey` - `DescriptorPublicKey` diff --git a/src/bdk.udl b/src/bdk.udl index a62ce7f..cca7474 100644 --- a/src/bdk.udl +++ b/src/bdk.udl @@ -168,6 +168,11 @@ dictionary LocalUtxo { boolean is_spent; }; +dictionary AddressAmount { + string address; + u64 amount; +}; + interface Wallet { [Throws=BdkError] constructor(string descriptor, string? change_descriptor, Network network, DatabaseConfig database_config); @@ -235,6 +240,8 @@ interface TxBuilder { TxBuilder add_data(sequence data); + TxBuilder set_recipients(sequence recipients); + [Throws=BdkError] PartiallySignedBitcoinTransaction finish([ByRef] Wallet wallet); }; diff --git a/src/lib.rs b/src/lib.rs index d089ca2..8786d10 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -37,6 +37,11 @@ uniffi_macros::include_scaffolding!("bdk"); type BdkError = Error; +pub struct AddressAmount { + pub address: String, + pub amount: u64, +} + pub struct AddressInfo { pub index: u32, pub address: String, @@ -421,6 +426,17 @@ impl TxBuilder { }) } + fn set_recipients(&self, recipients: Vec) -> Arc { + let recipients = recipients + .iter() + .map(|address_amount| (address_amount.address.clone(), address_amount.amount)) + .collect(); + Arc::new(TxBuilder { + recipients, + ..self.clone() + }) + } + fn add_unspendable(&self, unspendable: OutPoint) -> Arc { let mut unspendable_hash_set = self.unspendable.clone(); unspendable_hash_set.insert(unspendable);