1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3use ::serde::{Deserialize, Serialize};
6#[doc(inline)]
7pub use contract::Contract;
8#[doc(inline)]
9pub use predicate::{Predicate, Program};
10#[cfg(feature = "schema")]
11use schemars::JsonSchema;
12#[doc(inline)]
13pub use solution::{Solution, SolutionIndex, SolutionSet};
14
15pub mod contract;
16pub mod convert;
17pub mod fmt;
18pub mod predicate;
19pub mod serde;
20pub mod solution;
21
22pub type Bytecode = Vec<u8>;
24
25pub type Word = i64;
27
28pub type Key = Vec<Word>;
30
31pub type Value = Vec<Word>;
33
34pub type Hash = [u8; 32];
36
37#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
38pub struct Signature(
40 pub [u8; 64],
42 pub u8,
44);
45
46#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
47#[cfg_attr(feature = "schema", derive(JsonSchema))]
48pub struct ContentAddress(pub Hash);
50
51#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
52#[cfg_attr(feature = "schema", derive(JsonSchema))]
53pub struct PredicateAddress {
55 pub contract: ContentAddress,
61 pub predicate: ContentAddress,
66}