///|
/// Core domain types and validated constructors.
pub using @domain {
  type EquilibriumPoint,
  type ExtractionError,
  type PhaseSplit,
  type TernaryComposition,
  type TieLine,
  approximately_equal,
  is_finite,
}

///|
/// Table interpolation and equilibrium relations.
pub using @interpolation {
  type EquilibriumTable,
  type Extrapolation,
  type LinearTable,
}

///|
/// Liquid-liquid extraction balances.
pub using @liquid {
  type CountercurrentResult,
  type CountercurrentStage,
  type CrosscurrentResult,
  type CrosscurrentStage,
  type SingleStageResult,
  countercurrent_constant_k,
  crosscurrent_constant_k,
  crosscurrent_equal_solvent,
  distribution_coefficient,
  extraction_factor,
  minimum_countercurrent_stages,
  recovery_fraction,
  selectivity,
  single_stage_constant_k,
  single_stage_table,
}

///|
/// Solid-liquid leaching and washing balances.
pub using @leaching {
  type CrosscurrentLeachingResult,
  type LeachingStage,
  type LeachingStageResult,
  crosscurrent_equal_wash,
  crosscurrent_leach,
  single_stage_leach,
  wash_for_target,
}

///|
/// Ternary diagram geometry and phase splitting.
pub using @ternary {
  type BinodalCurve,
  type BoundaryIntersection,
  type BoundaryProjection,
  type CartesianPoint,
  type LeverResult,
  type TieLineTable,
  from_cartesian,
  lever_rule,
  mix_point,
  split_on_tie_line,
  to_cartesian,
}

///|
/// Graphical stage calculation.
pub using @stages {
  type EfficiencyStageResult,
  type EfficiencyStep,
  type ExtractionStep,
  type StageCountResult,
  mccabe_thiele_stages,
  operating_line,
  shortcut_actual_stages,
  stages_with_efficiency_profile,
  stages_with_uniform_efficiency,
}

///|
/// Text data ingestion.
pub using @data {type CsvOptions, parse_equilibrium_csv, parse_tie_lines_csv}

///|
/// Process sizing and sensitivity calculations.
pub using @design {
  type ContactPattern,
  type SensitivityPoint,
  type SolventDesign,
  compare_contact_patterns,
  single_stage_sensitivity,
  solvent_for_countercurrent,
  solvent_for_crosscurrent,
  solvent_for_single_stage,
}

///|
/// Batch scenarios, statistics, balance audits and uncertainty envelopes.
pub using @analysis {
  type BalanceAudit,
  type NumericSummary,
  type RecoveryEnvelope,
  type ScenarioResult,
  type ScenarioSummary,
  type SingleStageScenario,
  audit_balances,
  run_single_stage_scenario,
  run_single_stage_scenarios,
  single_stage_recovery_envelope,
  summarize,
  summarize_scenarios,
  sweep_distribution,
  sweep_solvent_flow,
}

///|
/// Measurement calibration and engineering unit helpers.
pub using @calibration {
  type CrossValidation,
  type EfficiencyCalibration,
  type Observation,
  type RegressionModel,
  calibrate_efficiency,
  fit_linear,
  fit_polynomial,
  leave_one_out,
}

///|
pub using @units {
  type Concentration,
  type Duration,
  type Mass,
  type MassFlow,
  type MassUnit,
  type TimeUnit,
  concentration_from_fraction,
}

///|
pub using @reporting {
  type AuditReport,
  type Finding,
  type Severity,
  analysis_balance_report,
  balance_report,
}

///|
/// Screening models, deterministic experiment design and geometric reports.
pub using @optimization {
  type DesignPoint,
  type SearchResult,
  bounded_minimize,
  grid_minimize,
  pareto_front,
}

///|
pub using @sampling {
  type Range,
  type Statistics,
  cartesian_grid,
  latin_hypercube,
  linspace,
  quantile,
}

///|
pub using @thermo {
  type ActivityModel,
  type EquilibriumCurve,
  activity_factor,
  sample_curve,
  validate_curve,
}

///|
pub using @geometry {type Point, centroid, contains, polygon_area}

///|
pub using @process {
  type LedgerEntry,
  type OperatingWindow,
  type SafetyFactor,
  type Violation,
  apply_safety_factor,
  ledger_entry,
  ledger_passes,
  maximum_residual,
  recommended_safety_factor,
}

///|
pub using @export {type SvgCanvas, map_unit_triangle, ternary_triangle}

///|
pub using @benchmarks {
  type BenchmarkCase,
  type BenchmarkResult,
  average_recovery,
  casebook,
  run_casebook,
}