import { ButtonProps } from '../button';
import { TNode } from '../common';
export interface TdCalendarProps {
    allowSameDay?: boolean;
    confirmBtn?: string | ButtonProps | TNode | null;
    firstDayOfWeek?: number;
    format?: CalendarFormatType;
    maxDate?: number | Date;
    minDate?: number | Date;
    readonly?: boolean;
    switchMode?: 'none' | 'month' | 'year-month';
    title?: string | TNode;
    type?: 'single' | 'multiple' | 'range';
    usePopup?: boolean;
    value?: CalendarValue;
    defaultValue?: CalendarValue;
    modelValue?: CalendarValue;
    visible?: boolean;
    onChange?: (value: CalendarValue) => void;
    onClose?: (trigger: CalendarTrigger) => void;
    onConfirm?: (value: CalendarValue) => void;
    onPanelChange?: (context: {
        year: number;
        month: number;
    }) => void;
    onScroll?: (context: {
        e: Event;
    }) => void;
    onSelect?: (value: Date) => void;
}
export type CalendarFormatType = (day: TDate) => TDate;
export type TDateType = 'selected' | 'disabled' | 'start' | 'start-end' | 'centre' | 'end' | '';
export interface TDate {
    date: Date;
    day: number;
    type: TDateType;
    className?: string;
    prefix?: string;
    suffix?: string;
}
export type CalendarValue = TCalendarValue | TCalendarValue[];
export type TCalendarValue = number | Date;
export type CalendarTrigger = 'close-btn' | 'confirm-btn' | 'overlay';
