1#![forbid(unsafe_code)]
8#![deny(clippy::unwrap_used, clippy::expect_used)]
9
10use cordance_core::pack::CordancePack;
11use cordance_core::receipt::{AuthorityBoundary, CortexReceiptV1Candidate};
12
13pub mod builder;
14pub mod validator;
15
16#[derive(Debug, thiserror::Error)]
17pub enum CortexError {
18 #[error("receipt validation error: {0}")]
19 Validation(String),
20 #[error("serialisation error: {0}")]
21 Serde(#[from] serde_json::Error),
22}
23
24#[allow(clippy::missing_errors_doc)]
30pub fn build_receipt(pack: &CordancePack) -> Result<CortexReceiptV1Candidate, CortexError> {
31 builder::build_receipt(pack)
32}
33
34#[must_use]
36pub const fn safe_boundary() -> AuthorityBoundary {
37 AuthorityBoundary::candidate_only()
38}
39
40#[cfg(test)]
41mod tests {
42 use super::*;
43
44 #[test]
45 fn safe_boundary_grants_nothing() {
46 let b = safe_boundary();
47 assert!(b.candidate_only);
48 assert!(!b.cortex_truth_allowed);
49 }
50}