#![cfg_attr(not(feature = "std"), no_std)]
#![warn(missing_docs)]
#![allow(clippy::module_name_repetitions)]
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
pub mod context;
pub mod core;
pub mod federation;
#[cfg(feature = "cache")]
pub mod cache;
#[cfg(feature = "ml")]
pub mod ml;
#[cfg(feature = "rl")]
pub mod rl;
#[cfg(feature = "wasm")]
pub mod wasm;
#[cfg(feature = "agent")]
pub mod agent;
pub use crate::core::error::{OxiRouterError, Result};
pub use crate::core::query::Query;
pub use crate::core::query_log::{QueryLog, RoutingLogEntry, RoutingOutcome, SourceLogStats};
pub use crate::core::router::{
CircuitBreakerConfig, Router, RouterConfig, RoutingExplanation, ScoreComponent,
};
pub use crate::core::source::{DataSource, SourceKind};
#[cfg(feature = "alloc")]
pub use crate::core::state::RouterState;
pub use context::{CombinedContext, ContextProvider, DefaultContextProvider};
#[cfg(feature = "geo")]
pub use context::GeoContext;
#[cfg(any(feature = "device", feature = "std"))]
pub use context::{DeviceContext, DeviceType, NetworkType};
#[cfg(any(feature = "load", feature = "std"))]
pub use context::{CircuitState, LoadContext};
#[cfg(any(feature = "legal", feature = "std"))]
pub use context::LegalContext;
#[cfg(feature = "ecosystem")]
pub use context::EcosystemContextProvider;
pub use context::sensor;
#[cfg(feature = "geo")]
pub use context::{GeoSensor, NullGeoSensor};
#[cfg(any(feature = "device", feature = "std"))]
pub use context::{DeviceSensor, NullDeviceSensor};
#[cfg(any(feature = "load", feature = "std"))]
pub use context::{LoadSensor, NullLoadSensor};
#[cfg(any(feature = "legal", feature = "std"))]
pub use context::{NullPolicyEngine, PolicyEngine};
#[cfg(feature = "geo")]
pub use context::{DynamicOxigdalGeoSensor, StaticOxigdalGeoSensor};
#[cfg(feature = "device")]
pub use context::MielinDeviceSensor;
#[cfg(feature = "load")]
pub use context::CelersLoadSensor;
#[cfg(feature = "legal")]
pub use context::LegalisPolicyEngine;
pub use federation::planner::{DefaultPlanner, FederatedPlan, FederatedPlanner, SubPlan};
pub use federation::{AggregatedResult, AggregationStrategy, Aggregator, Executor, QueryResult};
#[cfg(feature = "ml")]
pub use ml::{
EnsembleClassifier, FeatureVector, MergeStrategy, Model, ModelConfig, ModelPersistence,
ModelState, ModelType, NaiveBayesClassifier, NeuralNetwork, merge_states,
};
#[cfg(feature = "void")]
pub use crate::core::void::parse_oxirouter_ttl;
#[cfg(feature = "sparql")]
pub use crate::core::sparql_ast::SparqlAstFeatures;
pub use crate::core::term::{StructuredTriple, Term};
#[cfg(feature = "rl")]
pub use rl::{Feedback, Policy, PolicyType, Reward};
#[cfg(feature = "agent")]
pub use agent::{AgentAction, AgentActionMeta, RouterAgent};
#[cfg(feature = "cache")]
pub use cache::{
CacheEntry, CacheManager, CacheStats, CombinedCacheStats, ContextCache, ContextCacheEntry,
QueryCache, SourceCache, SourceCacheEntry,
};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const NAME: &str = env!("CARGO_PKG_NAME");
pub mod prelude {
pub use crate::context::{CombinedContext, ContextProvider};
pub use crate::core::error::{OxiRouterError, Result};
pub use crate::core::query::Query;
pub use crate::core::router::{CircuitBreakerConfig, Router, RouterConfig};
pub use crate::core::source::{DataSource, SourceCapabilities, SourceKind, SourceStats};
pub use crate::core::term::{StructuredTriple, Term};
pub use crate::federation::{
AggregatedResult, AggregationStrategy, Aggregator, Executor, QueryResult,
};
#[cfg(feature = "ml")]
pub use crate::ml::{FeatureVector, Model};
pub use crate::core::query_log::{QueryLog, SourceLogStats};
#[cfg(feature = "rl")]
pub use crate::rl::{Feedback, Policy, PolicyType, Reward};
#[cfg(feature = "cache")]
pub use crate::cache::{
CacheEntry, CacheManager, CacheStats, ContextCache, QueryCache, SourceCache,
};
}