import { VCLDateRange } from '../dateadapter/index'; export declare type VCLCalendarView = 'month' | 'year' | 'years' | 'hours' | 'minutes'; export declare type VCLCalendarSelection = boolean | 'range' | 'range-start' | 'range-end' | 'range-start-end' | 'range-partial'; export interface VCLCalendarBase { readonly date: VCLDate; readonly label: string; } export interface VCLCalendarYearsYear extends VCLCalendarBase { readonly isCurrentYear: boolean; readonly selected: VCLCalendarSelection; } export interface VCLCalendarYears extends VCLCalendarBase { readonly years: ReadonlyArray>>; } export interface VCLCalendarYearMonth extends VCLCalendarBase { readonly isCurrentMonth: boolean; readonly selected: VCLCalendarSelection; readonly disabled: boolean; readonly class: string; } export interface VCLCalendarYear extends VCLCalendarBase { readonly months: ReadonlyArray>>; } export interface VCLCalendarMonth extends VCLCalendarBase { readonly yearAndMonthLabel: string; readonly weeks: ReadonlyArray>; } export interface VCLCalendarWeek extends VCLCalendarBase { readonly days: ReadonlyArray>; } export interface VCLCalendarDay extends VCLCalendarBase { readonly inMonth: boolean; readonly isToday: boolean; readonly selected: VCLCalendarSelection; readonly disabled: boolean; readonly class: string; } export interface VCLCalendarHours { readonly use24hTime: boolean; readonly hours: ReadonlyArray>; } export interface VCLCalendarMinutes { readonly minutes: ReadonlyArray>; } export interface VCLCalendarHour { hour: number; label: string; } export interface VCLCalendarMinute { minute: number; label: string; } export interface VCLCalendarDateModifier { match: VCLDate | VCLDate[] | VCLDateRange; view?: VCLCalendarView; class?: string; disabled?: boolean; } export declare abstract class VCLCalendarHandler { abstract readonly mode: string; abstract init(calendar: VCLCalendar): void; abstract handleValueChange(calendar: VCLCalendar, source: VCLCalendarView, date: VCLDate): void; abstract handleViewDateChange(calendar: VCLCalendar, source: VCLCalendarView, viewDate: VCLDate): void; abstract handleLabelClick(calendar: VCLCalendar, source: VCLCalendarView): void; } export interface VCLCalendar { readonly value: VCLDate | VCLDate[] | VCLDateRange | undefined; readonly view: VCLCalendarView; readonly maxSelectableDates?: number; readonly disabled: boolean; setValue(value: VCLDate | VCLDate[] | VCLDateRange, propagate: boolean): void; setViewDate(date: VCLDate, propagate: boolean): void; setView(view: VCLCalendarView): void; }