from datetime import date, datetime, time, timedelta, tzinfo
from typing import final

@final
class TzClass(tzinfo):
    def __new__(cls, /) -> TzClass: ...
    def dst(self, _dt: datetime | None, /) -> timedelta | None: ...
    def tzname(self, _dt: datetime | None, /) -> str: ...
    def utcoffset(self, _dt: datetime | None, /) -> timedelta: ...

def date_from_timestamp(timestamp: float) -> date: ...
def datetime_from_timestamp(ts: float, tz: tzinfo | None = None) -> datetime: ...
def get_date_tuple(d: date) -> tuple: ...
def get_datetime_tuple(dt: datetime) -> tuple: ...
def get_datetime_tuple_fold(dt: datetime) -> tuple: ...
def get_datetime_tzinfo(dt: datetime) -> tzinfo | None: ...
def get_delta_tuple(delta: timedelta) -> tuple: ...
def get_time_tuple(dt: time) -> tuple: ...
def get_time_tuple_fold(dt: time) -> tuple: ...
def get_time_tzinfo(dt: time) -> tzinfo | None: ...
def make_date(year: int, month: int, day: int) -> date: ...
def make_datetime(
    year: int,
    month: int,
    day: int,
    hour: int,
    minute: int,
    second: int,
    microsecond: int,
    tzinfo: tzinfo | None = None,
) -> datetime: ...
def make_delta(days: int, seconds: int, microseconds: int) -> timedelta: ...
def make_time(
    hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None = None
) -> time: ...
def time_with_fold(
    hour: int,
    minute: int,
    second: int,
    microsecond: int,
    tzinfo: tzinfo | None,
    fold: bool,
) -> time: ...
