from dataclasses import dataclass
from datetime import date, datetime
from enum import StrEnum
from typing import Literal

class OuroborosMode(StrEnum):
    AION = "aion"

@dataclass(frozen=True)
class OuroborosBoundary:
    timestamp: datetime
    mode: OuroborosMode
    reason: str

    @property
    def timestamp_ms(self) -> int: ...
    @property
    def timestamp_us(self) -> int: ...

def get_ouroboros_boundaries(
    start: date,
    end: date,
    mode: Literal["aion"] = "aion",
) -> list[OuroborosBoundary]: ...
def get_operational_ouroboros_mode() -> Literal["aion"]: ...
def validate_ouroboros_mode(mode: str) -> Literal["aion"]: ...
