from __future__ import annotations

from collections.abc import Iterator

import numpy as np
import numpy.typing as npt

__all__ = ["MovingAverage"]

class MovingAverage:
    def __init__(self, window: int, is_fast: bool = False) -> None: ...
    def initialize(self, values: npt.NDArray[np.float64]) -> float: ...
    def next(self, new_val: float) -> float: ...
    def update(self, new_val: float) -> float: ...
    def get_value(self) -> float: ...
    def get_values(self) -> npt.NDArray[np.float64]: ...
    def __len__(self) -> int: ...
    def __contains__(self, value: float) -> bool: ...
    def __iter__(self) -> Iterator[float]: ...
    def __getitem__(self, idx: int) -> float: ...
