Skip to main content

obzenflow_core/
lib.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2// SPDX-FileCopyrightText: 2025-2026 ObzenFlow Contributors
3// https://obzenflow.dev
4
5#![doc = include_str!("../README.md")]
6
7pub mod ai;
8pub mod build_info;
9pub mod composite;
10pub mod config;
11pub mod contracts;
12pub mod effect_binding;
13pub mod error;
14pub mod event;
15pub mod http_client;
16pub mod id;
17pub mod ingress;
18pub mod journal;
19pub mod metrics;
20mod serde_support;
21pub mod time;
22pub mod web;
23
24// Re-export key types for convenience
25pub use effect_binding::{
26    BindingEvidenceDigest, BindingEvidenceError, BoundedBindingEvidence, EffectBindingIdentity,
27    MAX_BINDING_EVIDENCE_BYTES,
28};
29pub use error::Result;
30pub use event::chain_event::ChainEvent;
31pub use event::context::MiddlewareExecutionScope;
32pub use event::envelope::EventEnvelope;
33pub use event::journal_record::JournalRecord;
34pub use event::payloads::JournalPayload;
35pub use event::EventId;
36pub use event::{AdmissionSeq, EventType, JournalWriterId, ReaderGeneration, WriterId};
37pub use journal::journal_error::JournalError;
38pub use journal::journal_owner::JournalOwner;
39pub use journal::Journal;
40
41// The derive generates paths through `::obzenflow_core`, so make that name
42// resolve inside this crate too (the serde-style self-alias trick).
43extern crate self as obzenflow_core;
44
45// Re-export schema types (FLOWIP-082a; EffectOutcomeFacts FLOWIP-120m;
46// stage fact sets and membership proofs FLOWIP-120z)
47pub use event::schema::{
48    assert_distinct_stage_fact_set, DeclaredStageFactSet, EffectOutcomeFacts, Member,
49    MiddlewareContextKey, OneFactStageOutput, StageFactSet, StageOutputFacts, StageOutputs,
50    SubsetOf, TypedFact, TypedFactSet, TypedFactSetError, TypedFactType, TypedPayload,
51};
52
53// Re-export typed IDs
54pub use id::{CycleDepth, FlowId, JournalId, SccId, StageId, StageKey, SystemId};
55
56// Re-export Ulid for convenience since it's used in many IDs
57pub use ulid::Ulid;
58
59// Re-export chrono so macro expansions can reference timestamps without
60// requiring downstream crates to depend on chrono directly (FLOWIP-095a).
61pub use chrono;
62
63// Re-export core contract types (FLOWIP-090c)
64pub use contracts::{
65    Contract, ContractContext, ContractEventScope, ContractEvidence, ContractReadContext,
66    ContractResult, ContractState, ContractViolation, ContractWriteContext, DeliveryContract,
67    DivergenceContract, DivergenceThresholds, HashMismatch, SourceContract, TransportContract,
68    ViolationCause,
69};