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");