//! transformations responsible for individual concerns, such as ensuring that //! the transaction fee is paid, and that outgoing outputs aren't too large. //! //! This module is heavily tested. For all features of transaction //! construction, there should be a positive test that checks that the feature //! is implemented correctly, an assertion in the final `Transaction::build_transaction` //! method that the built transaction is correct with respect to the feature, //! and a test that the assertion fires as expected. use { super::*, bitcoin::{ blockdata::{locktime::absolute::LockTime, witness::Witness}, Amount, ScriptBuf, }, std::{ cmp::{max, min}, collections::{BTreeMap, BTreeSet}, }, }; #[derive(Debug, PartialEq)] pub enum Error { DuplicateAddress(Address), Dust { output_value: Amount, dust_value: Amount, }, NotEnoughCardinalUtxos, NotInWallet(SatPoint), OutOfRange(SatPoint, u64), UtxoContainsAdditionalInscription { outgoing_satpoint: SatPoint, inscribed_satpoint: SatPoint,