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 {
from: i32,
to: i32,
},
}