import type { Ref, Slots, UnwrapNestedRefs } from 'vue'; import { type VirtualListInst } from 'vueuc'; import type { NLocale, NDateLocale } from '../../locales'; import type { ScrollbarInst } from '../../_internal'; import type { IsHourDisabled, IsMinuteDisabled, IsSecondDisabled } from '../../time-picker/src/interface'; import type { TimePickerProps } from '../../time-picker/src/TimePicker'; import type { MergedTheme } from '../../_mixins'; import type { DatePickerTheme } from '../styles/light'; import type { uniCalendarValidation, dualCalendarValidation } from './validation-utils'; export type Value = number | [number, number]; export type DefaultTime = string | [string | undefined, string | undefined]; export type FormattedValue = string | [string, string]; export type Shortcuts = Record number)> | Record [number, number] | readonly [number, number])>; export type OnUpdateValue = (value: number & (number | null) & [ number, number ] & ([number, number] | null), formattedValue: string & (string | null) & [ string, string ] & ([string, string] | null)) => void; export type OnConfirm = OnUpdateValue; export type OnConfirmImpl = OnUpdateValueImpl; export type OnUpdateFormattedValue = (value: string & (string | null) & [ string, string ] & ([string, string] | null), timestampValue: number & (number | null) & [ number, number ] & ([number, number] | null)) => void; export type OnUpdateFormattedValueImpl = (value: string | [string, string] | null, timestampValue: number | [number, number] | null) => void; export type OnUpdateValueImpl = (value: Value | null, formattedValue: string | [string, string] | null) => void; export type OnPanelUpdateValue = (value: number & (number | null) & [ number, number ] & ([number, number] | null), doUpdate: boolean) => void; export type OnPanelUpdateValueImpl = (value: Value | null, doUpdate: boolean) => void; export type OnClose = (disableUpdateOnClose: boolean) => void; export interface RangePanelChildComponentRefs { startYearScrollbarRef: Ref; endYearScrollbarRef: Ref; startMonthScrollbarRef: Ref; endMonthScrollbarRef: Ref; startYearVlRef: Ref; endYearVlRef: Ref; } export interface PanelChildComponentRefs { monthScrollbarRef: Ref; yearScrollbarRef: Ref; yearVlRef: Ref; } export interface PanelRef extends Partial> { $el: HTMLElement; } export type FirstDayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6; export type DatePickerInjection = { mergedClsPrefixRef: Ref; mergedThemeRef: Ref>; timePickerSizeRef: Ref<'small' | 'medium' | 'large'>; timePickerPropsRef: Ref; localeRef: Ref; dateLocaleRef: Ref; isDateDisabledRef: Ref; rangesRef: Ref | undefined>; closeOnSelectRef: Ref; updateValueOnCloseRef: Ref; firstDayOfWeekRef: Ref; monthFormatRef: Ref; yearFormatRef: Ref; quarterFormatRef: Ref; datePickerSlots: Slots; } & ReturnType & ReturnType; export declare const datePickerInjectionKey: import("vue").InjectionKey; export type IsDateDisabled = IsSingleDateDisabled | IsRangeDateDisabled; export type IsSingleDateDisabledDetail = { type: 'date'; year: number; month: number; date: number; } | { type: 'month'; year: number; month: number; } | { type: 'year'; year: number; } | { type: 'quarter'; year: number; quarter: number; } | { type: 'input'; }; export type IsSingleDateDisabled = (timestamp: number, detail: IsSingleDateDisabledDetail) => boolean; export type IsRangeDateDisabled = (timestamp: number, position: 'start' | 'end', value: [number, number] | null) => boolean; export interface TimeValidator { isHourDisabled?: IsHourDisabled; isMinuteDisabled?: IsMinuteDisabled; isSecondDisabled?: IsSecondDisabled; } export type IsTimeDisabled = IsSingleTimeDisabled | IsRangeTimeDisabled; export type IsSingleTimeDisabled = (date: number) => TimeValidator; export type IsRangeTimeDisabled = (date: number, position: 'start' | 'end', value: [number, number]) => TimeValidator; export interface DatePickerInst { focus: () => void; blur: () => void; }