Add TxBuilder::drain_wallet

This commit is contained in:
Sudarsan Balaji 2022-03-31 17:17:24 +01:00
parent bc43d2eb1a
commit ba68103be1
No known key found for this signature in database
GPG Key ID: 6644FFAC82AC1970
2 changed files with 16 additions and 0 deletions

View File

@ -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);
}; };

View File

@ -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 {