#![forbid(unsafe_code)]
#![deny(missing_docs)]
use ::serde::{Deserialize, Serialize};
#[doc(inline)]
pub use contract::Contract;
#[doc(inline)]
pub use predicate::{Predicate, Program};
#[cfg(feature = "schema")]
use schemars::JsonSchema;
#[doc(inline)]
pub use solution::{Solution, SolutionIndex, SolutionSet};
pub mod contract;
pub mod convert;
pub mod fmt;
pub mod predicate;
pub mod serde;
pub mod solution;
pub type Bytecode = Vec<u8>;
pub type Word = i64;
pub type Key = Vec<Word>;
pub type Value = Vec<Word>;
pub type Hash = [u8; 32];
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Signature(
pub [u8; 64],
pub u8,
);
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
pub struct ContentAddress(pub Hash);
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
pub struct PredicateAddress {
pub contract: ContentAddress,
pub predicate: ContentAddress,
}