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