use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
#[serde(default, deny_unknown_fields)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct RawScenarioSourceConfig {
#[serde(default)]
pub seed: Option<i64>,
#[serde(default)]
pub historical_years: Option<RawHistoricalYearsConfig>,
#[serde(default)]
pub inflow: Option<RawClassConfigEntry>,
#[serde(default)]
pub load: Option<RawClassConfigEntry>,
#[serde(default)]
pub ncs: Option<RawClassConfigEntry>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct RawClassConfigEntry {
pub scheme: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(untagged)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum RawHistoricalYearsConfig {
List(Vec<i32>),
Range(HistoricalYearRange),
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct HistoricalYearRange {
pub from: i32,
pub to: i32,
}