use ndarray::{Array1, Array2, Array3, Array4, ArrayView1, ArrayView2, ArrayView3, ArrayView4, s};
use std::sync::Arc;
pub(crate) use crate::solver::arrow_schur::{
ArrowProximalCorrectionOptions, ArrowRowBlock, ArrowSchurError, ArrowSchurSystem,
ArrowSolveOptions, BetaPenaltyOp, CompositePenaltyOp, DensePenaltyOp, DeviceSaePcgData,
DeviceSaeSmoothBlock, FactoredFrameGBlock, FactoredFrameKroneckerOp, IbpCrossRowSource,
IdentityRightKroneckerPenaltyOp, SparseBlockKroneckerPenaltyOp, SparseGBlock,
StreamingArrowSchur, solve_arrow_newton_step_with_proximal_correction,
solve_streaming_reduced_beta, solve_with_lm_escalation_inner,
};
pub(crate) use crate::terms::analytic_penalties::{
AnalyticPenalty, AnalyticPenaltyKind, AnalyticPenaltyRegistry, DecoderIncoherencePenalty,
IbpHessianDiagThirdChannels, IsometryPenalty, MechanismSparsityPenalty, NuclearNormPenalty,
PenaltyTier, PsiSlice, WeightField, resolve_learnable_weight,
};
pub(crate) use crate::terms::latent::{LatentCoordValues, LatentIdMode, LatentManifold};
pub(crate) use crate::terms::sae::criterion_atoms::SaeCriterion;
pub(crate) use crate::terms::sae::certificates::{
CriterionCertificate, DirectionalSamples, certificate_from_samples,
deterministic_probe_direction, probe_step, probe_step_for,
};
pub(crate) use crate::linalg::faer_ndarray::{
FaerCholesky, FaerCholeskyFactor, FaerEigh, FaerSvd, fast_ab, fast_abt, fast_atb,
};
pub(crate) use crate::linalg::triangular::cholesky_solve_vector;
pub(crate) use crate::solver::arrow_schur::{
ArrowFactorCache, ArrowRowGaugeDeflation, arrow_factor_max_pivot, arrow_factor_min_pivot,
solve_arrow_newton_step_with_options,
};
pub(crate) use crate::solver::estimate::EstimationError;
pub(crate) use crate::solver::evidence::arrow_log_det_from_cache;
pub(crate) use crate::solver::rho_optimizer::{
DeclaredHessianForm, Derivative, EfsEval, HessianResult, OuterCapability, OuterEval,
OuterEvalOrder, OuterObjective, SeedOutcome,
};
pub(crate) use crate::solver::structure_search::{CollapseAction, CollapseEvent};
pub(crate) use faer::Side;
pub use crate::terms::sae::assignment::*;
pub use crate::terms::sae::basis::*;
pub use crate::terms::sae::frames::*;
mod arrow_solver;
mod atom;
mod certificate;
mod construction;
mod fit_drivers;
mod kronecker;
mod loss;
mod outer_objective;
mod pca_seed;
mod penalties;
mod rho;
mod row_layout;
mod schedule;
mod shape_uncertainty;
mod streaming_plan;
mod term;
#[cfg(test)]
mod tests;
#[cfg(test)]
mod sae_contract_probe_tests;
pub use arrow_solver::*;
pub use atom::*;
pub use certificate::*;
pub use construction::*;
pub(crate) use kronecker::*;
pub use loss::*;
pub use outer_objective::*;
pub use pca_seed::*;
pub use penalties::*;
pub use rho::*;
pub use row_layout::*;
pub use schedule::*;
pub use shape_uncertainty::*;
pub use streaming_plan::*;
pub use term::*;