import { type PropType, type StyleValue } from 'vue'; import { type LocaleTranslate } from '../locale'; import { type Bem } from '../utils'; export type CalendarType = 'single' | 'multiple' | 'range'; export interface CalendarDay { date: Date; disabled: boolean; type: 'same' | 'start' | 'middle' | 'end' | 'selected' | 'normal'; top: string; text: string | number; bottom: string; className?: string; style?: StyleValue; } export interface CalendarProps { rootStyle?: StyleValue; rootClass?: string; type?: CalendarType; modelValue?: Date | Date[]; min?: Date; max?: Date; currentDate?: Date; disabledDate?: (date: Date) => boolean; maxDays?: number; overMaxDays?: () => void; weekStartsOn?: number; formatter?: (day: CalendarDay) => void; allowSameDay?: boolean; severalMonths?: boolean; } export declare const calendarProps: { rootStyle: PropType; rootClass: StringConstructor; type: { type: PropType; default: string; }; modelValue: PropType; min: DateConstructor; max: DateConstructor; currentDate: DateConstructor; disabledDate: PropType<((date: Date) => boolean) | undefined>; maxDays: { type: NumberConstructor; default: number; }; overMaxDays: PropType<(() => void) | undefined>; weekStartsOn: { type: NumberConstructor; default: number; }; formatter: PropType<((day: CalendarDay) => void) | undefined>; allowSameDay: BooleanConstructor; severalMonths: BooleanConstructor; }; export interface CalendarEmits { (e: 'update:model-value', value: Date | Date[]): void; } export interface CalendarMonthProps { year: number; month: number; type: CalendarType; minDate: Date; maxDate: Date; currentDates: Date[]; formatter?: (day: CalendarDay) => void; disabledDate?: (date: Date) => boolean; todayNumber: number; weekStartsOn: number; severalMonths?: boolean; t: LocaleTranslate; bem: Bem; } export declare const calendarMonthProps: { year: { type: NumberConstructor; required: true; }; month: { type: NumberConstructor; required: true; }; type: { type: PropType; required: true; }; minDate: { type: DateConstructor; required: true; }; maxDate: { type: DateConstructor; required: true; }; currentDates: { type: PropType; required: true; }; formatter: PropType<((day: CalendarDay) => void) | undefined>; disabledDate: PropType<((date: Date) => boolean) | undefined>; todayNumber: { type: NumberConstructor; required: true; }; weekStartsOn: { type: NumberConstructor; required: true; }; severalMonths: BooleanConstructor; t: { type: PropType; required: true; }; bem: { type: PropType<{ b(): string; e(element: string | number | undefined, is?: (string | number | boolean | null) | undefined): string; m(modifier: string | number | undefined, is?: (string | number | boolean | null) | undefined): string; em(element: string | number, modifier: string | number | undefined, is?: (string | number | boolean | null) | undefined): string; bem(block: string | number, element?: string | number | undefined, modifier?: string | number | undefined, is?: string | number | boolean | null | undefined): string; }>; required: true; }; }; export interface CalendarMonthEmits { (e: 'day-click', date: Date): void; } export declare const getMinDate: (severalMonths?: boolean) => Date; export declare const getMaxDate: (severalMonths?: boolean) => Date; export declare const sortDates: (dates: Date[]) => Date[]; export declare const weeksIndex: number[];