Add TxBuilder::drain_to
This commit is contained in:
parent
ba68103be1
commit
ee91ad5b31
@ -145,6 +145,7 @@ interface TxBuilder {
|
||||
TxBuilder add_recipient(string address, u64 amount);
|
||||
TxBuilder fee_rate(float sat_per_vbyte);
|
||||
TxBuilder drain_wallet();
|
||||
TxBuilder drain_to(string address);
|
||||
[Throws=BdkError]
|
||||
PartiallySignedBitcoinTransaction build([ByRef] Wallet wallet);
|
||||
};
|
||||
|
19
src/lib.rs
19
src/lib.rs
@ -281,6 +281,7 @@ struct TxBuilder {
|
||||
recipients: Vec<(String, u64)>,
|
||||
fee_rate: Option<f32>,
|
||||
drain_wallet: bool,
|
||||
drain_to: Option<String>,
|
||||
}
|
||||
|
||||
impl TxBuilder {
|
||||
@ -289,6 +290,7 @@ impl TxBuilder {
|
||||
recipients: Vec::new(),
|
||||
fee_rate: None,
|
||||
drain_wallet: false,
|
||||
drain_to: None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -299,6 +301,7 @@ impl TxBuilder {
|
||||
recipients,
|
||||
fee_rate: self.fee_rate,
|
||||
drain_wallet: self.drain_wallet,
|
||||
drain_to: self.drain_to.clone(),
|
||||
})
|
||||
}
|
||||
|
||||
@ -307,6 +310,7 @@ impl TxBuilder {
|
||||
recipients: self.recipients.to_vec(),
|
||||
fee_rate: Some(sat_per_vb),
|
||||
drain_wallet: self.drain_wallet,
|
||||
drain_to: self.drain_to.clone(),
|
||||
})
|
||||
}
|
||||
|
||||
@ -315,6 +319,16 @@ impl TxBuilder {
|
||||
recipients: self.recipients.to_vec(),
|
||||
fee_rate: self.fee_rate,
|
||||
drain_wallet: true,
|
||||
drain_to: self.drain_to.clone(),
|
||||
})
|
||||
}
|
||||
|
||||
fn drain_to(&self, address: String) -> Arc<Self> {
|
||||
Arc::new(TxBuilder {
|
||||
recipients: self.recipients.to_vec(),
|
||||
fee_rate: self.fee_rate,
|
||||
drain_wallet: self.drain_wallet,
|
||||
drain_to: Some(address),
|
||||
})
|
||||
}
|
||||
|
||||
@ -331,6 +345,11 @@ impl TxBuilder {
|
||||
if self.drain_wallet {
|
||||
tx_builder.drain_wallet();
|
||||
}
|
||||
if let Some(address) = &self.drain_to {
|
||||
let drain_to =
|
||||
Address::from_str(address).map_err(|e| BdkError::Generic(e.to_string()))?;
|
||||
tx_builder.drain_to(drain_to.script_pubkey());
|
||||
}
|
||||
tx_builder
|
||||
.finish()
|
||||
.map(|(psbt, _)| PartiallySignedBitcoinTransaction {
|
||||
|
Loading…
x
Reference in New Issue
Block a user