use crate::prelude::*;
use crate::io;
use crate::consensus::encode;
use crate::util::psbt::raw;
mod global;
mod input;
mod output;
pub use self::input::{Input, PsbtSighashType};
pub use self::output::{Output, TapTree, IncompleteTapTree};
pub(super) trait Map {
fn get_pairs(&self) -> Result<Vec<raw::Pair>, io::Error>;
fn consensus_encode_map<W: io::Write + ?Sized>(&self, w: &mut W) -> Result<usize, io::Error> {
let mut len = 0;
for pair in Map::get_pairs(self)? {
len += encode::Encodable::consensus_encode(&pair, w)?;
}
Ok(len + encode::Encodable::consensus_encode(&0x00_u8, w)?)
}
}