#![forbid(unsafe_code)]
mod client;
mod config;
mod engine;
mod error;
mod model;
mod reader;
mod storage;
#[cfg(test)]
mod benchmark_datasets;
#[cfg(test)]
mod ducklake_test_support;
#[cfg(test)]
mod native_engine_behavior;
#[cfg(test)]
mod reader_parity;
#[doc(hidden)]
pub use crate::model::alignment::{AlignmentAxis, AlignmentQueryError, AlignmentViewport};
pub use crate::model::comparison::{
ComparisonOutcome, ComparisonPreference, ComparisonReport, ComparisonResult,
EvidenceCompleteness, EvidenceReason, MetricComparisonResult, ObjectiveDirection,
ObjectiveEvidence, ObjectiveMetric, RankingEntry, RankingResult,
};
pub use crate::model::metric::{MetricAggregate, MetricKey, MetricPoint, Step};
pub use crate::model::run::{Run, RunId, RunStatus};
pub use crate::model::types::{Project, ProjectId};
pub use client::{
Client, ClientBuilder, ClientDiagnostics, FlushState, LogOptions, ResumePolicy, RunHandle,
RunOptions, WriterState,
};
pub use config::CatalogBackend;
pub use error::{Error, Result};
pub use reader::{
DesktopMetricEvidence, MAX_CHART_POINTS, MetricAxis, MetricCoordinate, MetricQuery,
MetricQueryError, MetricRange, MetricSample, MetricSeries, MetricSeriesError, Reader,
ReaderBuilder, ReaderInterrupt, RelativeTime, Timestamp,
};