import { Dayjs } from 'dayjs';
import { MutableRefObject, RefObject } from 'react';

type MaybeDate = Date | Dayjs;
declare const getFirstOfWeek: (date: Date, firstDayOfWeek: "monday" | "sunday") => Date;
declare const getLastOfWeek: (date: Date, firstDayOfWeek: "monday" | "sunday") => Date;
declare const getWeekdays: (locale: string, firstDayOfWeek: "monday" | "sunday", format?: string) => string[];
declare const getMonthDays: (date: Date, firstDayOfWeek: "monday" | "sunday") => Date[][];
declare const getRangeYears: (year: number) => number[];
declare const getRangeMonths: (locale: string, format: string) => string[];
declare const getFormattedLabel: (dateOrYear: Date | number | undefined, locale: string, format: string) => string;
declare const isSameMonth: (date: Date | undefined, comparison: Date | undefined) => boolean;
declare const isSameDate: (date: Date | undefined, comparison: Date | undefined) => boolean;
declare const getRangeDates: (startDate: Date | undefined, endDate: Date | undefined) => Date[];
declare const isAfterMonth: (value: Date, date: Date | undefined) => boolean;
declare const isBeforeMonth: (value: Date, date: Date | undefined) => boolean;
declare const isInRange: (date: Date, minDate?: Date, maxDate?: Date) => boolean;
declare const isMonthInRange: ({ date, maxDate, minDate, }: {
    date: Date;
    maxDate?: Date;
    minDate?: Date;
}) => boolean;
declare const isIncludeDates: (date: Date, dates: Date[]) => boolean;
declare const sortDates: (dates: Date[], type?: "asc" | "desc") => Date[];
declare const isSomeAfterDate: (value: MaybeDate, date: MaybeDate | undefined) => boolean;
declare const isSomeBeforeDate: (value: MaybeDate, date: MaybeDate | undefined) => boolean;
declare const isAfterDate: (value: MaybeDate, date: MaybeDate | undefined) => boolean;
declare const isBeforeDate: (value: MaybeDate, date: MaybeDate | undefined) => boolean;
declare const onShouldFocus: <T = any>(refs: MutableRefObject<Map<T, RefObject<HTMLButtonElement>>>, validateFunc: (value: T) => boolean, isFirst?: boolean) => void;
declare const getFocused: <T = any>(refs: MutableRefObject<Map<T, RefObject<HTMLButtonElement>>>) => T | undefined;
declare const getRangeFirstDay: (refs: MutableRefObject<Map<string, RefObject<HTMLButtonElement>>>) => string | undefined;
declare const getRangeLastDay: (refs: MutableRefObject<Map<string, RefObject<HTMLButtonElement>>>) => string | undefined;
declare const disableAllTabIndex: <T = any>(refs: MutableRefObject<Map<T, RefObject<HTMLButtonElement>>>) => void;
declare const isDisabledDate: ({ disableOutsideDays, endDate, excludeDate, maxDate, maxTrulySelectStartDate, maybeEndDate, maybeStartDate, minDate, minTrulySelectStartDate, outside, startDate, value, }: {
    disableOutsideDays: boolean;
    outside: boolean;
    value: Date;
    endDate?: Date;
    excludeDate?: (date: Date) => boolean;
    maxDate?: Date;
    maxTrulySelectStartDate?: Date;
    maybeEndDate?: Date;
    maybeStartDate?: Date;
    minDate?: Date;
    minTrulySelectStartDate?: Date;
    startDate?: Date;
}) => boolean;

export { type MaybeDate, disableAllTabIndex, getFirstOfWeek, getFocused, getFormattedLabel, getLastOfWeek, getMonthDays, getRangeDates, getRangeFirstDay, getRangeLastDay, getRangeMonths, getRangeYears, getWeekdays, isAfterDate, isAfterMonth, isBeforeDate, isBeforeMonth, isDisabledDate, isInRange, isIncludeDates, isMonthInRange, isSameDate, isSameMonth, isSomeAfterDate, isSomeBeforeDate, onShouldFocus, sortDates };
