from typing import List
from typing import Dict
from typing import Any


def get_default_holtwinters_parameter_search_space() -> List[Dict[str, Any]]:
    """Generates default search space as a list of dictionaries and returns it for holtwinters.

    Each dictionary in the list corresponds to a hyperparameter, having properties
    defining that hyperparameter. Properties are name, type, value_type, values,
    is_ordered. Hyperparameters that are included: trend, damped, seasonal, seasonal_periods.

    Args:
        N/A

    Returns:
        As described above

    Raises:
        N/A
    """

    return [
        {
            "name": "trend",
            "type": "choice",
            "value_type": "str",
            "values": ["additive", "multiplicative"],
        },
        {
            "name": "damped",
            "type": "choice",
            "value_type": "bool",
            "values": [True, False],
        },
        {
            "name": "seasonal",
            "type": "choice",
            "value_type": "str",
            "values": ["additive", "multiplicative"],
        },
        {
            "name": "seasonal_periods",
            "type": "choice",
            # The number of periods in this seasonality
            # (e.g. 7 periods for daily data would be used for weekly seasonality)
            "values": [4, 7, 10, 14, 24, 30],
            "value_type": "int",
            "is_ordered": True,
        },
    ]