import matplotlib.dates as dates
from matplotlib.ticker import (
    Formatter,
    Locator,
)
import matplotlib.units as units

HOURS_PER_DAY: float = ...
MIN_PER_HOUR: float = ...
SEC_PER_MIN: float = ...
SEC_PER_HOUR: float = ...
SEC_PER_DAY: float = ...
MUSEC_PER_DAY: float = ...

def get_pairs(): ...
def register_pandas_matplotlib_converters(func): ...
def pandas_converters() -> None: ...
def register() -> None: ...
def deregister() -> None: ...
def time2num(d): ...

class TimeConverter(units.ConversionInterface):
    @staticmethod
    def convert(value, unit, axis): ...
    @staticmethod
    def axisinfo(unit, axis): ...
    @staticmethod
    def default_units(x, axis): ...

class TimeFormatter(Formatter):
    locs = ...
    def __init__(self, locs) -> None: ...
    def __call__(self, x, pos: int = ...): ...

class PeriodConverter(dates.DateConverter):
    @staticmethod
    def convert(values, units, axis): ...

def get_datevalue(date, freq): ...

class DatetimeConverter(dates.DateConverter):
    @staticmethod
    def convert(values, unit, axis): ...
    @staticmethod
    def axisinfo(unit, axis): ...

class PandasAutoDateFormatter(dates.AutoDateFormatter):
    def __init__(self, locator, tz=..., defaultfmt: str = ...) -> None: ...

class PandasAutoDateLocator(dates.AutoDateLocator):
    def get_locator(self, dmin, dmax): ...

class MilliSecondLocator(dates.DateLocator):
    UNIT = ...
    def __init__(self, tz) -> None: ...
    @staticmethod
    def get_unit_generic(freq): ...
    def __call__(self): ...
    def autoscale(self): ...

def period_break(dates, period): ...
def has_level_label(label_flags, vmin): ...
def get_finder(freq): ...

class TimeSeries_DateLocator(Locator):
    freq = ...
    base = ...
    isminor = ...
    isdynamic = ...
    offset: int = ...
    plot_obj = ...
    finder = ...
    def __init__(
        self,
        freq,
        minor_locator: bool = ...,
        dynamic_mode: bool = ...,
        base: int = ...,
        quarter: int = ...,
        month: int = ...,
        day: int = ...,
        plot_obj=...,
    ) -> None: ...
    def __call__(self): ...
    def autoscale(self): ...

class TimeSeries_DateFormatter(Formatter):
    format = ...
    freq = ...
    locs = ...
    formatdict = ...
    isminor = ...
    isdynamic = ...
    offset: int = ...
    plot_obj = ...
    finder = ...
    def __init__(
        self, freq, minor_locator: bool = ..., dynamic_mode: bool = ..., plot_obj=...
    ) -> None: ...
    def set_locs(self, locs) -> None: ...
    def __call__(self, x, pos: int = ...): ...

class TimeSeries_TimedeltaFormatter(Formatter):
    @staticmethod
    def format_timedelta_ticks(x, pos, n_decimals): ...
    def __call__(self, x, pos: int = ...): ...
