from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True)
class HikingModelConfig:
    """Minutes used by the default hiking time model."""

    minutes_per_km: float = 17.0
    minutes_per_100m_ascent: float = 10.0
    minutes_per_100m_descent: float = 2.0


@dataclass(frozen=True)
class AnalyzerConfig:
    """Central configuration for every numerical analysis parameter."""

    smoothing_window_points: int = 11
    elevation_hysteresis_m: float = 3.0
    segment_length_m: float = 100.0
    slope_classes: tuple[tuple[float, float | None], ...] = (
        (0.0, 5.0),
        (5.0, 10.0),
        (10.0, 15.0),
        (15.0, 20.0),
        (20.0, 25.0),
        (25.0, 30.0),
        (30.0, 35.0),
        (35.0, 40.0),
        (40.0, None),
    )
    hiking_model: HikingModelConfig = HikingModelConfig()


CONFIG = AnalyzerConfig()
