inscription_id: *inscription_id,
});
}
}
let amount = *self
.amounts
.get(&self.outgoing.outpoint)
.ok_or(Error::NotInWallet(self.outgoing))?;
if self.outgoing.offset >= amount.to_sat() {
return Err(Error::OutOfRange(self.outgoing, amount.to_sat() - 1));
}
self.utxos.remove(&self.outgoing.outpoint);
self.inputs.push(self.outgoing.outpoint);
self.outputs.push((self.recipient.clone(), amount));
tprintln!(
"selected outgoing outpoint {} with value {}",
self.outgoing.outpoint,
amount.to_sat()
);
Ok(self)
}
fn align_outgoing(mut self) -> Self {
assert_eq!(self.outputs.len(), 1, "invariant: only one output");
assert_eq!(
self.outputs[0].0, self.recipient,
"invariant: first output is recipient"
);
let sat_offset = self.calculate_sat_offset();
if sat_offset == 0 {
tprintln!("outgoing is aligned");
} else {
tprintln!("aligned outgoing with {sat_offset} sat padding output");