Expose set_recipients API from TxBuiler (#186)

This commit is contained in:
Pedro 2022-08-29 06:58:46 -07:00 committed by GitHub
parent aa004201b2
commit 3b028ecab1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 0 deletions

View File

@ -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). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] ## [Unreleased]
- Breaking Changes - Breaking Changes
- Rename `get_network()` method on `Wallet` interface to `network()` [#185] - Rename `get_network()` method on `Wallet` interface to `network()` [#185]
- Rename `get_transactions()` method on `Wallet` interface to `list_transactions()` [#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 - `extend(DerivationPath)` extends and returns DescriptorPublicKey
- `as_string()` returns DescriptorPublicKey as String - `as_string()` returns DescriptorPublicKey as String
- Add to `interface Blockchain` the `get_height()` and `get_block_hash()` methods [#184] - Add to `interface Blockchain` the `get_height()` and `get_block_hash()` methods [#184]
- Add to `interface TxBuilder` the `set_recipients(recipient: Vec<AddressAmount>)` method [#186]
- Interfaces Added [#154] - Interfaces Added [#154]
- `DescriptorSecretKey` - `DescriptorSecretKey`
- `DescriptorPublicKey` - `DescriptorPublicKey`

View File

@ -168,6 +168,11 @@ dictionary LocalUtxo {
boolean is_spent; boolean is_spent;
}; };
dictionary AddressAmount {
string address;
u64 amount;
};
interface Wallet { interface Wallet {
[Throws=BdkError] [Throws=BdkError]
constructor(string descriptor, string? change_descriptor, Network network, DatabaseConfig database_config); constructor(string descriptor, string? change_descriptor, Network network, DatabaseConfig database_config);
@ -235,6 +240,8 @@ interface TxBuilder {
TxBuilder add_data(sequence<u8> data); TxBuilder add_data(sequence<u8> data);
TxBuilder set_recipients(sequence<AddressAmount> recipients);
[Throws=BdkError] [Throws=BdkError]
PartiallySignedBitcoinTransaction finish([ByRef] Wallet wallet); PartiallySignedBitcoinTransaction finish([ByRef] Wallet wallet);
}; };

View File

@ -37,6 +37,11 @@ uniffi_macros::include_scaffolding!("bdk");
type BdkError = Error; type BdkError = Error;
pub struct AddressAmount {
pub address: String,
pub amount: u64,
}
pub struct AddressInfo { pub struct AddressInfo {
pub index: u32, pub index: u32,
pub address: String, pub address: String,
@ -421,6 +426,17 @@ impl TxBuilder {
}) })
} }
fn set_recipients(&self, recipients: Vec<AddressAmount>) -> Arc<Self> {
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<Self> { fn add_unspendable(&self, unspendable: OutPoint) -> Arc<Self> {
let mut unspendable_hash_set = self.unspendable.clone(); let mut unspendable_hash_set = self.unspendable.clone();
unspendable_hash_set.insert(unspendable); unspendable_hash_set.insert(unspendable);