#[cfg(feature = "schema")]
pub mod schema;
pub mod broadcast;
pub mod config;
pub mod constraints;
pub mod error;
pub mod extensions;
pub mod initial_conditions;
pub mod output;
pub(crate) mod parquet_helpers;
pub mod penalties;
pub(crate) mod pipeline;
pub mod report;
pub mod resolution;
pub mod scenarios;
pub mod stages;
pub mod system;
pub mod validation;
pub use broadcast::{deserialize_system, serialize_system};
pub use config::{Config, EstimationConfig, OrderSelectionMethod, parse_config};
pub use constraints::{
BlockExchangeFactor, BusPenaltyOverrideRow, ContractBoundsRow, ExchangeFactorEntry,
GenericConstraintBoundsRow, HydroBoundsRow, HydroPenaltyOverrideRow, LineBoundsRow,
LinePenaltyOverrideRow, NcsPenaltyOverrideRow, PumpingBoundsRow, ThermalBoundsRow,
load_contract_bounds, load_exchange_factors, load_generic_constraint_bounds,
load_generic_constraints, load_hydro_bounds, load_line_bounds, load_penalty_overrides_bus,
load_penalty_overrides_hydro, load_penalty_overrides_line, load_penalty_overrides_ncs,
load_pumping_bounds, load_thermal_bounds, parse_contract_bounds, parse_exchange_factors,
parse_generic_constraint_bounds, parse_generic_constraints, parse_hydro_bounds,
parse_line_bounds, parse_penalty_overrides_bus, parse_penalty_overrides_hydro,
parse_penalty_overrides_line, parse_penalty_overrides_ncs, parse_pumping_bounds,
parse_thermal_bounds,
};
pub use error::LoadError;
pub use extensions::{
FittingWindow, FphaConfig, FphaHyperplaneRow, HydroGeometryRow, ProductionModelConfig,
SeasonConfig, SelectionMode, StageRange, load_fpha_hyperplanes, load_hydro_geometry,
load_production_models, parse_fpha_hyperplanes, parse_hydro_geometry, parse_production_models,
};
pub use initial_conditions::parse_initial_conditions;
pub use output::policy::{
OwnedPolicyBasisRecord, OwnedPolicyCutRecord, PolicyBasisRecord, PolicyCheckpoint,
PolicyCheckpointMetadata, PolicyCutRecord, StageCutsPayload, StageCutsReadResult,
deserialize_stage_basis, deserialize_stage_cuts, read_policy_checkpoint, serialize_stage_basis,
serialize_stage_cuts, write_policy_checkpoint,
};
pub use output::{
ConvergenceSummary, CutSelectionRecord, CutStatistics, IterationRecord, ManifestChecksum,
ManifestConvergence, ManifestCuts, ManifestIterations, ManifestMpiInfo, ManifestScenarios,
MetadataConfigSnapshot, MetadataDataIntegrity, MetadataEnvironment, MetadataPerformanceSummary,
MetadataProblemDimensions, MetadataRunInfo, OutputError, ParquetWriterConfig,
SimulationManifest, SimulationOutput, SolverStatsRow, TrainingManifest, TrainingMetadata,
TrainingOutput, TrainingParquetWriter, read_convergence_summary, read_simulation_manifest,
read_training_manifest, write_cut_selection_records, write_dictionaries,
write_fpha_hyperplanes, write_metadata, write_results, write_scaling_report,
write_simulation_manifest, write_simulation_solver_stats, write_solver_stats,
write_training_manifest,
};
pub use penalties::parse_penalties;
pub use report::{ReportEntry, ValidationReport, generate_report};
pub use resolution::{resolve_bounds, resolve_penalties};
pub use scenarios::{
BlockFactor, ExternalScenarioRow, InflowArCoefficientRow, InflowHistoryRow,
InflowSeasonalStatsRow, LoadFactorEntry, LoadSeasonalStatsRow, NoiseOpeningRow, ScenarioData,
assemble_inflow_models, assemble_load_models, load_correlation, load_external_scenarios,
load_inflow_ar_coefficients, load_inflow_history, load_inflow_seasonal_stats,
load_load_factors, load_load_seasonal_stats, load_noise_openings, load_scenarios,
parse_correlation, parse_external_scenarios, parse_inflow_ar_coefficients,
parse_inflow_history, parse_inflow_seasonal_stats, parse_load_factors,
parse_load_seasonal_stats,
};
pub use stages::{StagesData, build_season_stage_map, parse_stages};
pub use system::{
load_energy_contracts, load_non_controllable_sources, load_pumping_stations, parse_buses,
parse_energy_contracts, parse_hydros, parse_lines, parse_non_controllable_sources,
parse_pumping_stations, parse_thermals,
};
pub use validation::structural::{FileManifest, validate_structure};
pub use validation::{ErrorKind, Severity, ValidationContext, ValidationEntry};
use cobre_core::System;
use std::path::Path;
pub fn load_case(path: &Path) -> Result<System, LoadError> {
pipeline::run_pipeline(path)
}