from typing import Optional

class StakeHistoryEntry:
    def __init__(
        self,
        effective: int,
        activating: int,
        deactivating: int,
    ) -> None: ...
    @property
    def effective(self) -> int: ...
    @effective.setter
    def effective(self, val: int) -> None: ...
    @property
    def activating(self) -> int: ...
    @activating.setter
    def activating(self, val: int) -> None: ...
    @property
    def deactivating(self) -> int: ...
    @deactivating.setter
    def deactivating(self, val: int) -> None: ...
    @staticmethod
    def from_bytes(raw_bytes: bytes) -> "StakeHistoryEntry": ...
    @staticmethod
    def from_json(raw: str) -> "StakeHistoryEntry": ...
    def to_json(self) -> str: ...
    def __bytes__(self) -> bytes: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __richcmp__(self, other: "StakeHistoryEntry", op: int) -> bool: ...

class StakeHistory:
    def __init__(
        self,
    ) -> None: ...
    def get(self, epoch: int) -> Optional[StakeHistoryEntry]: ...
    def add(self, epoch: int, entry: StakeHistoryEntry) -> None: ...
    @staticmethod
    def from_bytes(raw_bytes: bytes) -> "StakeHistory": ...
    @staticmethod
    def from_json(raw: str) -> "StakeHistory": ...
    def to_json(self) -> str: ...
    def __bytes__(self) -> bytes: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __richcmp__(self, other: "StakeHistory", op: int) -> bool: ...
