use gam_runtime::warm_start::{LoadSource, Session as CacheSession};
use crate::estimate::EstimationError;
use crate::estimate::reml::reml_outer_engine::BarrierConfig;
use crate::priority_selection::{
PriorityBudgetStage, PriorityStageSummary, rank_indices_with_budget_cascade,
};
use crate::startup_stats::{
SeedRejection, StartupStats, format_no_seeds_passed, uniform_structural_key,
};
use ::opt::{
Arc as ArcOptimizer, ArcError, Bfgs, BfgsError, Bounds, FallbackPolicy as OptFallbackPolicy,
FirstOrderObjective, FirstOrderSample, FixedPoint, FixedPointError, FixedPointObjective,
FixedPointSample, FixedPointStatus, GradientTolerance, HessianFallbackPolicy,
HessianMaterialization, HessianOperator, InitialMetric, MatrixFreeTrustRegion, MaxIterations,
ObjectiveEvalError, OperatorObjective, OperatorSample, OptimizationStatus, OptimizerObserver,
SecondOrderObjective, SecondOrderSample, Solution, StepInfo, Tolerance, ZerothOrderObjective,
};
use ndarray::{Array1, Array2, ArrayView2};
use std::sync::Arc;
use std::sync::Mutex;
use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering};
pub mod asymptote_certificate;
mod bridges;
mod capability;
mod hessian_operator;
pub mod kl_certificate;
mod objective;
mod run;
mod run_plan;
mod seed_screening;
pub(crate) use crate::model_types::CERTIFICATE_RAIL_MARGIN;
pub use crate::model_types::{OuterCriterionCertificate, OuterStationarityCertificate, RailCoordinate};
pub(crate) use bridges::*;
pub use capability::*;
pub use gam_problem::{DeclaredHessianForm, Derivative, HessianValue, OuterEval};
pub(crate) use hessian_operator::*;
pub use objective::*;
pub(crate) use run::*;
pub use run::OuterProblem;
pub use run::{CertifiedOuterResult, OuterResult};
pub use run::OuterConvergedVia;
pub use run::{OuterStationaryPointRejection, audit_stationary_point};
pub(crate) use run_plan::*;
pub(crate) use seed_screening::*;