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 add_recipient(string address, u64 amount);
|
||||||
TxBuilder fee_rate(float sat_per_vbyte);
|
TxBuilder fee_rate(float sat_per_vbyte);
|
||||||
TxBuilder drain_wallet();
|
TxBuilder drain_wallet();
|
||||||
|
TxBuilder drain_to(string address);
|
||||||
[Throws=BdkError]
|
[Throws=BdkError]
|
||||||
PartiallySignedBitcoinTransaction build([ByRef] Wallet wallet);
|
PartiallySignedBitcoinTransaction build([ByRef] Wallet wallet);
|
||||||
};
|
};
|
||||||
|
19
src/lib.rs
19
src/lib.rs
@ -281,6 +281,7 @@ struct TxBuilder {
|
|||||||
recipients: Vec<(String, u64)>,
|
recipients: Vec<(String, u64)>,
|
||||||
fee_rate: Option<f32>,
|
fee_rate: Option<f32>,
|
||||||
drain_wallet: bool,
|
drain_wallet: bool,
|
||||||
|
drain_to: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TxBuilder {
|
impl TxBuilder {
|
||||||
@ -289,6 +290,7 @@ impl TxBuilder {
|
|||||||
recipients: Vec::new(),
|
recipients: Vec::new(),
|
||||||
fee_rate: None,
|
fee_rate: None,
|
||||||
drain_wallet: false,
|
drain_wallet: false,
|
||||||
|
drain_to: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,6 +301,7 @@ impl TxBuilder {
|
|||||||
recipients,
|
recipients,
|
||||||
fee_rate: self.fee_rate,
|
fee_rate: self.fee_rate,
|
||||||
drain_wallet: self.drain_wallet,
|
drain_wallet: self.drain_wallet,
|
||||||
|
drain_to: self.drain_to.clone(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,6 +310,7 @@ impl 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,
|
drain_wallet: self.drain_wallet,
|
||||||
|
drain_to: self.drain_to.clone(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,6 +319,16 @@ impl TxBuilder {
|
|||||||
recipients: self.recipients.to_vec(),
|
recipients: self.recipients.to_vec(),
|
||||||
fee_rate: self.fee_rate,
|
fee_rate: self.fee_rate,
|
||||||
drain_wallet: true,
|
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 {
|
if self.drain_wallet {
|
||||||
tx_builder.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
|
tx_builder
|
||||||
.finish()
|
.finish()
|
||||||
.map(|(psbt, _)| PartiallySignedBitcoinTransaction {
|
.map(|(psbt, _)| PartiallySignedBitcoinTransaction {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user