use aluvm::stl::aluvm_stl;
use commit_verify::stl::commit_verify_stl;
use sonic_callreq::LIB_NAME_SONIC;
use sonicapi::{Articles, ArticlesId, Issuer, IssuerId};
use strict_types::stl::{std_stl, strict_types_stl};
use strict_types::typelib::LibBuilder;
use strict_types::{CompileError, TypeLib};
use ultrasonic::stl::finite_field_stl;
pub use ultrasonic::stl::usonic_stl;
use crate::Transition;
pub const LIB_ID_SONIC: &str = "stl:FOnI~0yx-bcvd_Wq-~xjW37p-uqzQ3Nq-GGH8AtN-dO64ac8#river-atomic-dallas";
#[allow(clippy::result_large_err)]
fn _sonic_stl() -> Result<TypeLib, CompileError> {
LibBuilder::with(libname!(LIB_NAME_SONIC), [
std_stl().to_dependency_types(),
strict_types_stl().to_dependency_types(),
commit_verify_stl().to_dependency_types(),
aluvm_stl().to_dependency_types(),
finite_field_stl().to_dependency_types(),
usonic_stl().to_dependency_types(),
])
.transpile::<ArticlesId>()
.transpile::<IssuerId>()
.transpile::<Articles>()
.transpile::<Issuer>()
.transpile::<Transition>()
.compile()
}
pub fn sonic_stl() -> TypeLib { _sonic_stl().expect("invalid strict type SONIC library") }
#[cfg(test)]
mod test {
#![cfg_attr(coverage_nightly, coverage(off))]
use super::*;
#[test]
fn lib_id() {
let lib = sonic_stl();
assert_eq!(lib.id().to_string(), LIB_ID_SONIC);
}
}