"""gds-psuu: Parameter space search under uncertainty for the GDS ecosystem."""

__version__ = "0.2.1"

from gds_psuu.checks import check_parameter_space_compatibility
from gds_psuu.errors import PsuuError, PsuuSearchError, PsuuValidationError
from gds_psuu.evaluation import EvaluationResult, Evaluator
from gds_psuu.kpi import KPI, final_state_mean, final_state_std, time_average
from gds_psuu.metric import (
    Aggregation,
    Metric,
    final_value,
    max_value,
    mean_agg,
    min_value,
    percentile_agg,
    probability_above,
    probability_below,
    std_agg,
    trajectory_mean,
)
from gds_psuu.objective import Objective, SingleKPI, WeightedSum
from gds_psuu.optimizers.base import Optimizer
from gds_psuu.optimizers.bayesian import BayesianOptimizer
from gds_psuu.optimizers.grid import GridSearchOptimizer
from gds_psuu.optimizers.random import RandomSearchOptimizer
from gds_psuu.results import EvaluationSummary, SweepResults
from gds_psuu.sensitivity import (
    Analyzer,
    MorrisAnalyzer,
    OATAnalyzer,
    SensitivityResult,
)
from gds_psuu.space import (
    Constraint,
    Continuous,
    Discrete,
    FunctionalConstraint,
    Integer,
    LinearConstraint,
    ParameterSpace,
    SchemaViolation,
)
from gds_psuu.sweep import Sweep
from gds_psuu.types import AggregationFn, KPIFn, KPIScores, MetricFn, ParamPoint

__all__ = [
    "KPI",
    "Aggregation",
    "AggregationFn",
    "Analyzer",
    "BayesianOptimizer",
    "Constraint",
    "Continuous",
    "Discrete",
    "EvaluationResult",
    "EvaluationSummary",
    "Evaluator",
    "FunctionalConstraint",
    "GridSearchOptimizer",
    "Integer",
    "KPIFn",
    "KPIScores",
    "LinearConstraint",
    "Metric",
    "MetricFn",
    "MorrisAnalyzer",
    "OATAnalyzer",
    "Objective",
    "Optimizer",
    "ParamPoint",
    "ParameterSpace",
    "PsuuError",
    "PsuuSearchError",
    "PsuuValidationError",
    "RandomSearchOptimizer",
    "SchemaViolation",
    "SensitivityResult",
    "SingleKPI",
    "Sweep",
    "SweepResults",
    "WeightedSum",
    "check_parameter_space_compatibility",
    "final_state_mean",
    "final_state_std",
    "final_value",
    "max_value",
    "mean_agg",
    "min_value",
    "percentile_agg",
    "probability_above",
    "probability_below",
    "std_agg",
    "time_average",
    "trajectory_mean",
]
