#![deny(unsafe_code)]
#![deny(missing_docs)]
#![deny(clippy::unwrap_used)]
#![deny(clippy::expect_used)]
#![deny(clippy::indexing_slicing)]
#![deny(clippy::panic)]
mod channel;
mod channel_local;
mod error;
mod fact;
mod facts_log;
#[cfg_attr(feature = "ffi", allow(unsafe_code))]
#[cfg(feature = "ffi")]
mod ffi;
mod hash;
mod invariants;
mod io_context;
mod io_dispatcher;
mod io_handler;
mod phase;
#[allow(dead_code)]
mod pure;
mod reactor;
mod runtime;
mod stable_detector;
mod state;
#[cfg(feature = "persistence")]
mod wal;
pub use channel::{ChannelPair, EventReceiver, EventSender, FactReceiver, FactSender};
pub use channel_local::{
local_broadcaster, local_pair, LocalEventReceiver, LocalEventSender, LocalReceiver, LocalSender,
};
pub use error::ReactorError;
pub use fact::{ControlFlowType, Fact, FactId, FactIdGenerator, IoType, TraceHit};
#[cfg(feature = "persistence")]
pub use facts_log::replay_wal_records;
pub use facts_log::{FactsLog, FactsLogError};
pub use hash::{
chain_step, compute_chain_hash, content_hash, fact_hash, fact_to_stable_json, HashError,
};
pub use invariants::InvariantViolation;
pub use io_context::{CallerRole, CallerRoleResolver, IoCallContext};
pub use io_dispatcher::{IoDispatcher, IoDispatcherBuilder};
pub use io_handler::{IoHandler, IoResult};
pub use phase::{PhaseContext, ReactorPhase};
pub use reactor::{
InvariantScanReport, PendingIoEntry, Reactor, ReactorBuilder, ReactorHandle,
ReactorStateSnapshot,
};
pub use runtime::{ClockHandle, FixedClock, RuntimeClock, SystemClock};
pub use stable_detector::StableDetector;
#[cfg(feature = "persistence")]
pub use wal::{
fact_from_json, fact_to_json, parse_wal_records, read_wal, read_wal_with_hash, serde_to_tcb,
tcb_to_serde, FactWalStore, MemoryWalStore, WalError, WalRecord, WalWriter,
};