interface BaseCalendar {
    disabledDatesSet: Set<number>;
    disabledDaysSet: Set<number>;
    key: string;
}
export interface CalendarDay extends CalendarWeekday {
    disabled: boolean;
    fullDate: Date | null;
    key: string;
}
export interface CalendarGrid extends BaseCalendar {
    datesGrid: DatesGridRow[];
    toJSON(): SerializableCalendarGrid;
}
export interface CalendarInit<CM extends CalendarMode> extends CalendarInitBase {
    calendarMode?: CM;
    date: Date;
    dayFormat: Intl.DateTimeFormat;
    disabledDates?: Date[];
    disabledDays?: number[];
    fullDateFormat: Intl.DateTimeFormat;
    locale: string;
    max?: Date;
    min?: Date;
    weekNumberType?: WeekNumberType;
}
export interface CalendarInitBase {
    firstDayOfWeek?: number;
    showWeekNumber?: boolean;
    weekNumberTemplate?: string;
}
export interface CalendarList extends BaseCalendar {
    datesList: CalendarDay[];
    toJSON(): SerializableCalendarList;
}
export type CalendarMode = 'grid' | 'list';
export type CalendarResult<CM extends CalendarMode> = CM extends 'list' ? CalendarList : CalendarGrid;
export interface CalendarWeekday {
    label: string;
    value: string;
}
export interface DatesGridColumn extends CalendarDay {
}
export interface DatesGridRow {
    columns: DatesGridColumn[];
    key: string;
}
export type DateTimeFormatter = Intl.DateTimeFormat['format'];
type OmitKey<T extends object, K extends keyof T> = Omit<T, K>;
type SerializableBaseCalendar<T extends BaseCalendar> = {
    disabledDates: number[];
    disabledDays: number[];
} & OmitKey<T, 'disabledDatesSet' | 'disabledDaysSet'>;
export type SerializableCalendarGrid = SerializableBaseCalendar<OmitKey<CalendarGrid, 'toJSON'>>;
export type SerializableCalendarList = SerializableBaseCalendar<OmitKey<CalendarList, 'toJSON'>>;
export type WeekNumberType = 'first-4-day-week' | 'first-day-of-year' | 'first-full-week';
export {};
//# sourceMappingURL=types.d.ts.map