use {super::*, crate::wallet::Wallet, std::collections::BTreeSet}; #[derive(Serialize, Deserialize)] pub struct CardinalUtxo { pub output: OutPoint, pub amount: u64, } pub(crate) fn run(options: Options) -> SubcommandResult { let index = Index::open(&options)?; index.update()?; let unspent_outputs = index.get_unspent_outputs(Wallet::load(&options)?)?; let inscribed_utxos = index .get_inscriptions(&unspent_outputs)? .keys() .map(|satpoint| satpoint.outpoint) .collect::>(); let cardinal_utxos = unspent_outputs .iter() .filter_map(|(output, amount)| { if inscribed_utxos.contains(output) { None } else { Some(CardinalUtxo { output: *output, amount: amount.to_sat(), }) } }) .collect::>(); Ok(Box::new(cardinal_utxos)) }