mod advance;
mod and_op;
mod backpressure;
mod builder;
pub mod clock;
mod engine;
mod enumeration;
mod event_index;
mod event_time;
mod kleene;
mod metrics;
mod negation;
mod nfa;
pub(crate) mod predicate;
mod run;
mod types;
pub use and_op::{AndBranch, AndConfig, AndState, NegationInfo};
pub use backpressure::{
BackpressureError, BackpressureStrategy, ProcessResult, ProcessStats, ProcessWarning,
SaseExtendedStats,
};
pub use builder::PatternBuilder;
pub use clock::Timestamp;
pub use engine::SaseEngine;
pub use event_index::EventTypeIndex;
pub use event_time::{EventTimeConfig, EventTimeManager, EventTimeResult};
pub use kleene::KleeneCapture;
pub use metrics::{LatencyHistogram, MetricsSummary, SaseMetrics};
pub use negation::NegationConstraint;
pub use nfa::{Nfa, NfaCompiler, State, StateType};
pub use predicate::{classify_predicate, PredicateClass};
pub use run::Run;
use rustc_hash::FxHashMap;
pub use types::{
CompareOp, GlobalNegation, MatchResult, Predicate, RunSnapshot, SasePattern, SaseStats,
SelectionStrategy, SharedEvent, StackEntry, TimeSemantics, MAX_ENUMERATION_RESULTS,
MAX_KLEENE_EVENTS,
};
use varpulis_core::{Event, Value};
#[derive(Debug, Clone, Default)]
pub struct SequenceContext {
pub captured: FxHashMap<String, Event>,
pub previous: Option<Event>,
}
pub trait ExprEvaluator: Send + Sync {
fn eval(
&self,
expr: &varpulis_core::ast::Expr,
event: &Event,
captured: &FxHashMap<String, SharedEvent>,
) -> Option<Value>;
}