pub use crate::outcome::{AddressOutcome, AddressWitness, VerifyError};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AddressFailure {
InvalidAst,
PipelineFailure,
}
use crate::codemodule::model::{
AddressModel, AddressModelBlake3, AddressModelKeccak256, AddressModelSha3_256,
AddressModelSha512,
};
use crate::codemodule::value::CodeModuleCarrier;
use crate::sexp::SExprCanon;
use prism::pipeline::PrismModel;
pub fn address(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
let canon = SExprCanon::new(input_bytes);
let grounded = AddressModel::forward(CodeModuleCarrier::new(&canon))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
pub fn address_blake3(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
let canon = SExprCanon::new(input_bytes);
let grounded = AddressModelBlake3::forward(CodeModuleCarrier::new(&canon))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
pub fn address_sha3_256(input_bytes: &[u8]) -> Result<AddressOutcome<73>, AddressFailure> {
SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
let canon = SExprCanon::new(input_bytes);
let grounded = AddressModelSha3_256::forward(CodeModuleCarrier::new(&canon))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<73>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
pub fn address_keccak256(input_bytes: &[u8]) -> Result<AddressOutcome<74>, AddressFailure> {
SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
let canon = SExprCanon::new(input_bytes);
let grounded = AddressModelKeccak256::forward(CodeModuleCarrier::new(&canon))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<74>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
pub fn address_sha512(input_bytes: &[u8]) -> Result<AddressOutcome<135, 64>, AddressFailure> {
SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
let canon = SExprCanon::new(input_bytes);
let grounded = AddressModelSha512::forward(CodeModuleCarrier::new(&canon))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<135, 64>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}