let mut builder = wallet.build_fee_bump(txid).unwrap();
builder
.fee_rate(FeeRate::from_sat_per_vb(2.5))
- .maintain_single_recipient();
+ .maintain_single_recipient()
+ .unwrap();
let (psbt, details) = builder.finish().unwrap();
assert_eq!(details.sent, original_details.sent);
.unwrap();
let mut builder = wallet.build_fee_bump(txid).unwrap();
- builder.maintain_single_recipient().fee_absolute(300);
+ builder
+ .maintain_single_recipient()
+ .unwrap()
+ .fee_absolute(300);
let (psbt, details) = builder.finish().unwrap();
assert_eq!(details.sent, original_details.sent);
builder
.drain_wallet()
.maintain_single_recipient()
+ .unwrap()
.fee_rate(FeeRate::from_sat_per_vb(5.0));
let (_, details) = builder.finish().unwrap();
assert_eq!(details.sent, 75_000);
/// Fails if the transaction has more than one outputs.
///
/// [`add_utxo`]: Self::add_utxo
- pub fn maintain_single_recipient(&mut self) -> &mut Self {
+ pub fn maintain_single_recipient(&mut self) -> Result<&mut Self, Error> {
let mut recipients = self.params.recipients.drain(..).collect::<Vec<_>>();
- assert_eq!(recipients.len(), 1, "maintain_single_recipient must not be called while bumping a transactions with more than one output");
+ if recipients.len() != 1 {
+ return Err(Error::SingleRecipientMultipleOutputs);
+ }
self.params.single_recipient = Some(recipients.pop().unwrap().0);
- // Since we are fee bumping and maintaining a single recipient we never want to add any more non-manual inputs.
- self
+ Ok(self)
}
}