self.destinations.len(),
self.inscriptions.len(),
"invariant: destination addresses and number of inscriptions doesn't match"
),
Mode::SharedOutput => assert_eq!(
self.destinations.len(),
1,
"invariant: destination addresses and number of inscriptions doesn't match"
),
}
let satpoint = if let Some(satpoint) = self.satpoint {
satpoint
} else {
let inscribed_utxos = wallet_inscriptions
.keys()
.map(|satpoint| satpoint.outpoint)
.collect::<BTreeSet<OutPoint>>();
utxos
.keys()
.find(|outpoint| !inscribed_utxos.contains(outpoint) && !locked_utxos.contains(outpoint))
.map(|outpoint| SatPoint {
outpoint: *outpoint,
offset: 0,
})
.ok_or_else(|| anyhow!("wallet contains no cardinal utxos"))?
};
let mut reinscription = false;
for (inscribed_satpoint, inscription_id) in &wallet_inscriptions {
if *inscribed_satpoint == satpoint {