import { type StyleValue } from 'vue';
import { type LocaleTranslate } from '../locale';
import { type Bem } from '../../utils';
import { type DefaultProps } from '../config';
export type CalendarType = 'single' | 'multiple' | 'range';
export interface CalendarDay {
    date: Date;
    disabled: boolean;
    type: 'same' | 'start' | 'middle' | 'end' | 'selected' | 'normal';
    today: boolean;
    top: string;
    text: string | number;
    bottom: string;
    className?: string;
    style?: StyleValue;
}
export interface CalendarProps {
    rootStyle?: StyleValue;
    rootClass?: string;
    type?: CalendarType;
    modelValue?: Date | Date[] | string | string[];
    min?: Date;
    max?: Date;
    currentDate?: Date;
    disabledDate?: (date: Date) => boolean;
    maxDays?: number;
    overMaxDays?: () => void;
    weekStartsOn?: number;
    formatter?: (day: CalendarDay) => void;
    allowSameDay?: boolean;
    severalMonths?: boolean;
    valueFormat?: string;
    startDateText?: string;
    endDateText?: string;
    sameDateText?: string;
}
export declare const defaultCalendarProps: () => DefaultProps<CalendarProps>;
export interface CalendarEmits {
    (e: 'update:model-value', value: Date | Date[] | string | string[]): void;
    (e: 'change', value: Date | Date[] | string | string[]): 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;
    startDateText?: string;
    endDateText?: string;
    sameDateText?: string;
}
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[];
