import datetime
from _typeshed import ConvertibleToInt
from typing import Final, SupportsIndex, overload

__version__: Final[str]
__all__ = ["LunarDate"]

class LunarDate:
    year: int
    month: int
    day: int
    isLeapMonth: bool
    def __init__(self, year: int, month: int, day: int, isLeapMonth: bool | None = False) -> None: ...
    @staticmethod
    def leapMonthForYear(year: int) -> int | None: ...
    @staticmethod
    def fromSolarDate(year: SupportsIndex, month: SupportsIndex, day: SupportsIndex) -> LunarDate: ...
    def toSolarDate(self) -> datetime.date: ...

    @overload
    def __sub__(self, other: LunarDate | datetime.date) -> datetime.timedelta: ...
    @overload
    def __sub__(self, other: datetime.timedelta) -> LunarDate: ...

    def __rsub__(self, other: datetime.date) -> datetime.timedelta: ...
    def __add__(self, other: datetime.timedelta) -> LunarDate: ...
    def __radd__(self, other: datetime.timedelta) -> LunarDate: ...
    def __eq__(self, other: object) -> bool: ...
    def __lt__(self, other: LunarDate | datetime.date) -> bool: ...
    def __le__(self, other: object) -> bool: ...
    def __gt__(self, other: object) -> bool: ...
    def __ge__(self, other: LunarDate | datetime.date) -> bool: ...
    @classmethod
    def today(cls) -> LunarDate: ...

yearInfos: Final[list[int]]

def yearInfo2yearDay(yearInfo: ConvertibleToInt) -> int: ...

yearDays: Final[list[int]]

def day2LunarDate(offset: ConvertibleToInt) -> None: ...
