"""Auto-generated type stubs for @configurable decorators.

This file is automatically generated by scripts/generate_stubs.py.
Do not edit manually - changes will be overwritten.
"""

from collections.abc import Callable
from typing import Literal

from hipr.config import MakeableModel
import pandas as pd
from pdval import Datetime, HasColumns, Index, NonEmpty, NonNegative, Validated

# Module constants
MIN_SAMPLES_PER_SLOT = 3

# Public functions
def intraday_aggregate(
    data: pd.Series,
    agg_func: Callable[[pd.Series], float],
    lookback_days: int | None = None,
    min_samples: int = MIN_SAMPLES_PER_SLOT,
) -> pd.Series: ...

class RvolConfig(MakeableModel[pd.DataFrame]):
    window: int
    epsilon: float
    def __init__(self, *, window: int = 20, epsilon: float = 1e-09) -> None: ...

class RvolIntradayConfig(MakeableModel[pd.Series]):
    min_samples: int
    epsilon: float
    def __init__(
        self, *, min_samples: int = MIN_SAMPLES_PER_SLOT, epsilon: float = 1e-09
    ) -> None: ...

class _RvolConfigurable:
    Config: type[RvolConfig]
    def __call__(
        self,
        data: Validated[
            pd.DataFrame, HasColumns[Literal["volume"]], NonNegative, NonEmpty
        ],
        *,
        window: int = 20,
        epsilon: float = 1e-09,
    ) -> pd.DataFrame: ...

type rvol = _RvolConfigurable

class _RvolIntradayConfigurable:
    Config: type[RvolIntradayConfig]
    def __call__(
        self,
        data: Validated[pd.Series, NonNegative, Index[Datetime], NonEmpty],
        *,
        lookback_days: int | None = None,
        min_samples: int = MIN_SAMPLES_PER_SLOT,
        epsilon: float = 1e-09,
    ) -> pd.Series: ...

type rvol_intraday = _RvolIntradayConfigurable
