from typing import Final, Literal

EPOCH: Final = 1721425.5
INTERCALATION_CYCLE_YEARS: Final = 400
INTERCALATION_CYCLE_DAYS: Final = 146097
LEAP_SUPPRESSION_YEARS: Final = 100
LEAP_SUPPRESSION_DAYS: Final = 36524
LEAP_CYCLE_YEARS: Final = 4
LEAP_CYCLE_DAYS: Final = 1461
YEAR_DAYS: Final = 365
HAVE_30_DAYS: Final = (4, 6, 9, 11)
HAVE_31_DAYS: Final = (1, 3, 5, 7, 8, 10, 12)

def legal_date(year: int, month: int, day: int) -> Literal[True]: ...
def to_jd2(year: int, month: int, day: int) -> float: ...
def to_jd(year: int, month: int, day: int) -> float: ...
def from_jd(jd: float) -> tuple[int, int, int]: ...
def month_length(year: int, month: int) -> int: ...
def monthcalendar(year: int, month: int) -> list[list[int | None]]: ...
def format(year: int, month: int, day: int, format_string: str = "%-d %B %y") -> str: ...
