#![allow(
clippy::missing_errors_doc,
clippy::must_use_candidate,
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_sign_loss,
clippy::match_same_arms,
clippy::doc_markdown
)]
pub mod analysis;
pub mod bridge;
pub mod config;
pub mod context;
pub mod coverage;
pub mod error;
pub mod nested_wasm;
pub mod observation;
pub mod sandbox;
pub mod streaming;
pub mod taint;
pub mod timer;
pub mod vulnir_producer;
pub use analysis::{AnalysisReport, BehavioralFinding, Category, Severity, TimelineEntry, analyze};
pub use bridge::{Bridge, CompositeBridge, EmptyBridge, Hook, HookedBridge};
pub use config::SandboxConfig;
pub use context::{ContextId, ContextMessage, MessageBus};
pub use error::{Error, Result};
pub use observation::{
EvidenceDerivation, EvidenceFreshness, EvidenceProvenance, Exploitability, Maliciousness,
Observation, RuntimeEvidence, RuntimeEvidenceItem, TaintFlow, TaintLabel, TaintedValue, Value,
observations_to_contract_evidence, observations_to_runtime_evidence,
};
pub use sandbox::{CompiledModule, ExecutionResult};
pub use taint::{
Severity as TaintSeverity, Sink, Source, TaintTracker, propagate_concat, propagate_json_parse,
propagate_json_stringify, propagate_replace, propagate_slice,
};
pub mod persistent;
pub use coverage::{CoverageAccumulator, CoverageReport};
pub use persistent::PersistentSandbox;
pub use streaming::{BatchCollector, ControlFlow, CountingSink, EarlyStopSink, ObservationSink};
pub use vulnir_producer::{JsdetProducer, ToVulnIR, to_vulnir_graph};