from typing import List, Sequence

class SlotHistoryCheck:
    Future: "SlotHistoryCheck"
    TooOld: "SlotHistoryCheck"
    Found: "SlotHistoryCheck"
    NotFound: "SlotHistoryCheck"
    def __int__(self) -> int: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __eq__(self, o: object) -> bool: ...

class SlotHistory:
    def __init__(self, bits: Sequence[int], next_slot: int) -> None: ...
    @staticmethod
    def default() -> "SlotHistory": ...
    @property
    def bits(self) -> List[int]: ...
    @bits.setter
    def bits(self, val: Sequence[int]) -> None: ...
    @property
    def next_slot(self) -> int: ...
    @next_slot.setter
    def next_slot(self, val: int) -> None: ...
    def add(self, slot: int) -> None: ...
    def check(self, slot: int) -> SlotHistoryCheck: ...
    def oldest(self) -> int: ...
    def newest(self) -> int: ...
    @staticmethod
    def from_bytes(raw_bytes: bytes) -> "SlotHistory": ...
    @staticmethod
    def from_json(raw: str) -> "SlotHistory": ...
    def to_json(self) -> str: ...
    def __bytes__(self) -> bytes: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __richcmp__(self, other: "SlotHistory", op: int) -> bool: ...
