#![forbid(unsafe_code)]
#[must_use]
pub fn default_crs_ruleset() -> &'static str {
include_str!("../rules/crs/core.toml")
}
pub mod artifact;
pub mod booster;
pub mod canon;
pub mod ensemble_dilution;
pub mod equiv_bridge;
pub mod equiv_query;
pub mod error;
pub mod filter_profile;
pub mod harden;
pub mod learn;
pub mod mine;
pub mod mlwaf;
pub mod normalize;
pub mod oracle;
pub mod origin_probe;
pub mod outcome;
pub mod sfa;
pub mod solve;
pub mod transduce;
pub use artifact::{LearnedModel, Provenance};
pub use booster::WafBoosterScorer;
pub use canon::{CanonView, Channel, Segment, canonicalize};
pub use ensemble_dilution::RuleGroup;
pub use equiv_bridge::{norm_mismatch_members, sink_for_tag, solution_member};
pub use equiv_query::{ChainedEq, PacBound, SampledEq, UcbBanditEq, WMethodEq};
pub use error::{Result, WafModelError};
pub use filter_profile::{
DecodeGap, FilterProfile, TokenFinding, TokenProbe, Verdict, battery_from_toml, characterize,
default_battery as default_filter_battery, probe_decode_gaps,
};
pub use harden::{ClosureReport, synthesize_closure};
pub use learn::{
Alphabet, BoundedExhaustiveEq, EquivalenceOracle, LearnReport, kv_learn, l_star,
l_star_budgeted, passive_learn,
};
pub use mine::{attack_grammar, mine_bypasses, minimal_bypass, waf_diff};
pub use mlwaf::{MlEvasion, MlWaf, evade_ml};
pub use normalize::{Transform, apply_chain};
pub use oracle::{ChannelSet, FnOracle, Rule, SimRegexWaf, WafOracle};
pub use origin_probe::{
FnReflector, OriginScan, ReflectionOracle, detect_origin_normalization, scan_origin,
};
pub use outcome::Outcome;
pub use sfa::{BytePred, Sfa, StateId};
pub use solve::{Solution, solve_bypass};
pub use transduce::{Pipeline, Stage, json_unescape, url_decode_once};