import { InjectionKey, Ref, Slots } from 'vue'; import { VirtualListInst } from 'vueuc'; import { NLocale, NDateLocale } from '../../locales'; import type { ScrollbarInst } from '../../_internal'; import { IsHourDisabled, IsMinuteDisabled, IsSecondDisabled } from '../../time-picker/src/interface'; import { MergedTheme } from '../../_mixins'; import { DatePickerTheme } from '../styles/light'; import { uniCalendarValidation, dualCalendarValidation } from './validation-utils'; export declare type Value = number | [number, number]; export declare type Shortcuts = Record | Record; export declare type OnUpdateValue = (value: number & (number | null) & [number, number] & ([number, number] | null)) => void; export declare type OnUpdateValueImpl = (value: Value | null) => void; export declare type OnPanelUpdateValue = (value: number & (number | null) & [ number, number ] & ([number, number] | null), doUpdate: boolean) => void; export declare type OnPanelUpdateValueImpl = (value: Value | null, doUpdate: boolean) => void; export declare type OnClose = (disableUpdateOnClose: boolean) => void; export interface PanelRef { $el: HTMLElement; monthScrollRef?: ScrollbarInst | null; yearScrollRef?: VirtualListInst | null; } export declare type FirstDayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6; export declare type DatePickerInjection = { mergedClsPrefixRef: Ref; mergedThemeRef: Ref>; timePickerSizeRef: Ref<'small' | 'medium' | 'large'>; localeRef: Ref; dateLocaleRef: Ref; isDateDisabledRef: Ref; rangesRef: Ref | undefined>; closeOnSelectRef: Ref; updateValueOnCloseRef: Ref; firstDayOfWeekRef: Ref; datePickerSlots: Slots; scrollYearMonth: (value?: number) => void; } & ReturnType & ReturnType; export declare const datePickerInjectionKey: InjectionKey; export declare type IsDateDisabled = IsSingleDateDisabled | IsRangeDateDisabled; export declare type IsSingleDateDisabled = (date: number) => boolean; export declare type IsRangeDateDisabled = (date: number, position: 'start' | 'end', value: [number, number] | null) => boolean; export interface TimeValidator { isHourDisabled?: IsHourDisabled; isMinuteDisabled?: IsMinuteDisabled; isSecondDisabled?: IsSecondDisabled; } export declare type IsTimeDisabled = IsSingleTimeDisabled | IsRangeTimeDisabled; export declare type IsSingleTimeDisabled = (date: number) => TimeValidator; export declare type IsRangeTimeDisabled = (date: number, position: 'start' | 'end', value: [number, number]) => TimeValidator;