//! 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,