use crate::Pczt;
pub struct SpendFinalizer {
pczt: Pczt,
}
impl SpendFinalizer {
pub fn new(pczt: Pczt) -> Self {
Self { pczt }
}
pub fn finalize_spends(self) -> Result<Pczt, Error> {
let Pczt {
global,
transparent,
sapling,
orchard,
} = self.pczt;
let mut transparent = transparent.into_parsed().map_err(Error::TransparentParse)?;
transparent
.finalize_spends()
.map_err(Error::TransparentFinalize)?;
Ok(Pczt {
global,
transparent: crate::transparent::Bundle::serialize_from(transparent),
sapling,
orchard,
})
}
}
#[derive(Debug)]
pub enum Error {
TransparentFinalize(transparent::pczt::SpendFinalizerError),
TransparentParse(transparent::pczt::ParseError),
}