"""Core type aliases for gds-psuu."""

from __future__ import annotations

from collections.abc import Callable
from typing import Any

from gds_sim import Results

ParamPoint = dict[str, Any]
"""A single point in parameter space: maps param names to concrete values."""

KPIFn = Callable[[Results], float]
"""Computes a scalar KPI score from simulation results (all Monte Carlo runs)."""

MetricFn = Callable[[Results, int], float]
"""Computes a scalar from a single run. Args: results, run_number."""

AggregationFn = Callable[[list[float]], float]
"""Combines per-run metric values into a single scalar."""

KPIScores = dict[str, float]
"""Maps KPI names to their computed scalar scores."""
