Add TxBuilder::drain_wallet
This commit is contained in:
parent
bc43d2eb1a
commit
ba68103be1
@ -144,6 +144,7 @@ interface TxBuilder {
|
||||
constructor();
|
||||
TxBuilder add_recipient(string address, u64 amount);
|
||||
TxBuilder fee_rate(float sat_per_vbyte);
|
||||
TxBuilder drain_wallet();
|
||||
[Throws=BdkError]
|
||||
PartiallySignedBitcoinTransaction build([ByRef] Wallet wallet);
|
||||
};
|
||||
|
15
src/lib.rs
15
src/lib.rs
@ -280,6 +280,7 @@ fn restore_extended_key(
|
||||
struct TxBuilder {
|
||||
recipients: Vec<(String, u64)>,
|
||||
fee_rate: Option<f32>,
|
||||
drain_wallet: bool,
|
||||
}
|
||||
|
||||
impl TxBuilder {
|
||||
@ -287,6 +288,7 @@ impl TxBuilder {
|
||||
TxBuilder {
|
||||
recipients: Vec::new(),
|
||||
fee_rate: None,
|
||||
drain_wallet: false,
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,6 +298,7 @@ impl TxBuilder {
|
||||
Arc::new(TxBuilder {
|
||||
recipients,
|
||||
fee_rate: self.fee_rate,
|
||||
drain_wallet: self.drain_wallet,
|
||||
})
|
||||
}
|
||||
|
||||
@ -303,6 +306,15 @@ impl TxBuilder {
|
||||
Arc::new(TxBuilder {
|
||||
recipients: self.recipients.to_vec(),
|
||||
fee_rate: Some(sat_per_vb),
|
||||
drain_wallet: self.drain_wallet,
|
||||
})
|
||||
}
|
||||
|
||||
fn drain_wallet(&self) -> Arc<Self> {
|
||||
Arc::new(TxBuilder {
|
||||
recipients: self.recipients.to_vec(),
|
||||
fee_rate: self.fee_rate,
|
||||
drain_wallet: true,
|
||||
})
|
||||
}
|
||||
|
||||
@ -316,6 +328,9 @@ impl TxBuilder {
|
||||
if let Some(sat_per_vb) = self.fee_rate {
|
||||
tx_builder.fee_rate(FeeRate::from_sat_per_vb(sat_per_vb));
|
||||
}
|
||||
if self.drain_wallet {
|
||||
tx_builder.drain_wallet();
|
||||
}
|
||||
tx_builder
|
||||
.finish()
|
||||
.map(|(psbt, _)| PartiallySignedBitcoinTransaction {
|
||||
|
Loading…
x
Reference in New Issue
Block a user