import * as i0 from '@angular/core';
import { EventEmitter, ElementRef, TemplateRef, NgZone, QueryList } from '@angular/core';
import { MotionOptions, MotionEvent } from '@primeuix/motion';
import * as i2 from 'primeng/api';
import { OverlayService, PrimeTemplate, PassThroughOption, PassThrough } from 'primeng/api';
import { BaseInput } from 'primeng/baseinput';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { ConnectedOverlayScrollHandler } from 'primeng/dom';
import { Nullable, VoidListener } from 'primeng/ts-helpers';
import { DatePickerPassThrough as DatePickerPassThrough$1, DatePickerResponsiveOptions as DatePickerResponsiveOptions$1, DatePickerTypeView as DatePickerTypeView$1, DatePickerMonthChangeEvent as DatePickerMonthChangeEvent$1, DatePickerYearChangeEvent as DatePickerYearChangeEvent$1, Month as Month$1, DatePickerDateTemplateContext, DatePickerDisabledDateTemplateContext, DatePickerDecadeTemplateContext, DatePickerInputIconTemplateContext, DatePickerButtonBarTemplateContext, NavigationState as NavigationState$1, LocaleSettings as LocaleSettings$1 } from 'primeng/types/datepicker';
import { Subscription } from 'rxjs';
import { BaseStyle } from 'primeng/base';
import { ButtonPassThrough } from 'primeng/types/button';
import { InputTextPassThrough } from 'primeng/types/inputtext';

/**
 *
 * DatePicker is a form component to work with dates.
 *
 * [Live Demo](https://www.primeng.org/datepicker/)
 *
 * @module datepickerstyle
 *
 */
declare enum DatePickerClasses {
    /**
     * Class name of the root element
     */
    root = "p-datepicker",
    /**
     * Class name of the input element
     */
    pcInputText = "p-datepicker-input",
    /**
     * Class name of the dropdown element
     */
    dropdown = "p-datepicker-dropdown",
    /**
     * Class name of the input icon container element
     */
    inputIconContainer = "p-datepicker-input-icon-container",
    /**
     * Class name of the input icon element
     */
    inputIcon = "p-datepicker-input-icon",
    /**
     * Class name of the panel element
     */
    panel = "p-datepicker-panel",
    /**
     * Class name of the calendar container element
     */
    calendarContainer = "p-datepicker-calendar-container",
    /**
     * Class name of the calendar element
     */
    calendar = "p-datepicker-calendar",
    /**
     * Class name of the header element
     */
    header = "p-datepicker-header",
    /**
     * Class name of the previous button element
     */
    pcPrevButton = "p-datepicker-prev-button",
    /**
     * Class name of the title element
     */
    title = "p-datepicker-title",
    /**
     * Class name of the select month element
     */
    selectMonth = "p-datepicker-select-month",
    /**
     * Class name of the select year element
     */
    selectYear = "p-datepicker-select-year",
    /**
     * Class name of the decade element
     */
    decade = "p-datepicker-decade",
    /**
     * Class name of the next button element
     */
    pcNextButton = "p-datepicker-next-button",
    /**
     * Class name of the day view element
     */
    dayView = "p-datepicker-day-view",
    /**
     * Class name of the week header element
     */
    weekHeader = "p-datepicker-weekheader",
    /**
     * Class name of the week number element
     */
    weekNumber = "p-datepicker-weeknumber",
    /**
     * Class name of the week label container element
     */
    weekLabelContainer = "p-datepicker-weeklabel-container",
    /**
     * Class name of the week day cell element
     */
    weekDayCell = "p-datepicker-weekday-cell",
    /**
     * Class name of the week day element
     */
    weekDay = "p-datepicker-weekday",
    /**
     * Class name of the day cell element
     */
    dayCell = "p-datepicker-day-cell",
    /**
     * Class name of the day element
     */
    day = "p-datepicker-day",
    /**
     * Class name of the month view element
     */
    monthView = "p-datepicker-month-view",
    /**
     * Class name of the month element
     */
    month = "p-datepicker-month",
    /**
     * Class name of the year view element
     */
    yearView = "p-datepicker-year-view",
    /**
     * Class name of the year element
     */
    year = "p-datepicker-year",
    /**
     * Class name of the time picker element
     */
    timePicker = "p-datepicker-time-picker",
    /**
     * Class name of the hour picker element
     */
    hourPicker = "p-datepicker-hour-picker",
    /**
     * Class name of the increment button element
     */
    pcIncrementButton = "p-datepicker-increment-button",
    /**
     * Class name of the decrement button element
     */
    pcDecrementButton = "p-datepicker-decrement-button",
    /**
     * Class name of the separator element
     */
    separator = "p-datepicker-separator",
    /**
     * Class name of the minute picker element
     */
    minutePicker = "p-datepicker-minute-picker",
    /**
     * Class name of the second picker element
     */
    secondPicker = "p-datepicker-second-picker",
    /**
     * Class name of the ampm picker element
     */
    ampmPicker = "p-datepicker-ampm-picker",
    /**
     * Class name of the buttonbar element
     */
    buttonbar = "p-datepicker-buttonbar",
    /**
     * Class name of the today button element
     */
    pcTodayButton = "p-datepicker-today-button",
    /**
     * Class name of the clear button element
     */
    pcClearButton = "p-datepicker-clear-button",
    /**
     * Class name of the clear icon
     */
    clearIcon = "p-datepicker-clear-icon"
}
declare class DatePickerStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-invalid': any;
            'p-datepicker-fluid': any;
            'p-inputwrapper-filled': any;
            'p-variant-filled': boolean;
            'p-inputwrapper-focus': any;
            'p-focus': any;
        })[];
        pcInputText: string;
        dropdown: string;
        inputIconContainer: string;
        inputIcon: string;
        panel: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-datepicker-panel p-component': boolean;
            'p-datepicker-panel-inline': any;
            'p-disabled': any;
            'p-datepicker-timeonly': any;
        })[];
        calendarContainer: string;
        calendar: string;
        header: string;
        pcPrevButton: string;
        title: string;
        selectMonth: string;
        selectYear: string;
        decade: string;
        pcNextButton: string;
        dayView: string;
        weekHeader: string;
        weekNumber: string;
        weekLabelContainer: string;
        weekDayCell: string;
        weekDay: string;
        dayCell: ({ date }: {
            date: any;
        }) => (string | {
            'p-datepicker-other-month': any;
            'p-datepicker-today': any;
        })[];
        day: ({ instance, date }: {
            instance: any;
            date: any;
        }) => {
            [x: string]: any;
            'p-datepicker-day': boolean;
            'p-datepicker-day-selected': any;
            'p-disabled': any;
        };
        monthView: string;
        month: ({ instance, index }: {
            instance: any;
            index: any;
        }) => (string | {
            'p-datepicker-month-selected': any;
            'p-disabled': any;
        })[];
        yearView: string;
        year: ({ instance, year }: {
            instance: any;
            year: any;
        }) => (string | {
            'p-datepicker-year-selected': any;
            'p-disabled': any;
        })[];
        timePicker: string;
        hourPicker: string;
        pcIncrementButton: string;
        pcDecrementButton: string;
        separator: string;
        minutePicker: string;
        secondPicker: string;
        ampmPicker: string;
        buttonbar: string;
        pcTodayButton: string;
        pcClearButton: string;
        clearIcon: string;
    };
    inlineStyles: {
        root: () => {
            position: string;
        };
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerStyle, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DatePickerStyle>;
}
interface DatePickerStyle extends BaseStyle {
}

declare const DATEPICKER_VALUE_ACCESSOR: any;
/**
 * DatePicker is a form component to work with dates.
 * @group Components
 */
declare class DatePicker extends BaseInput<DatePickerPassThrough$1> {
    private zone;
    overlayService: OverlayService;
    bindDirectiveInstance: Bind;
    $pcDatePicker: DatePicker | undefined;
    iconDisplay: 'input' | 'button';
    /**
     * Style class of the component.
     * @deprecated since v20.0.0, use `class` instead.
     * @group Props
     */
    styleClass: string | undefined;
    /**
     * Inline style of the input field.
     * @group Props
     */
    inputStyle: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Identifier of the focus input to match a label defined for the component.
     * @group Props
     */
    inputId: string | undefined;
    /**
     * Style class of the input field.
     * @group Props
     */
    inputStyleClass: string | undefined;
    /**
     * Placeholder text for the input.
     * @group Props
     */
    placeholder: string | undefined;
    /**
     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
     * @group Props
     */
    ariaLabelledBy: string | undefined;
    /**
     * Defines a string that labels the input for accessibility.
     * @group Props
     */
    ariaLabel: string | undefined;
    /**
     * Defines a string that labels the icon button for accessibility.
     * @group Props
     */
    iconAriaLabel: string | undefined;
    /**
     * Format of the date which can also be defined at locale settings.
     * @group Props
     */
    get dateFormat(): string | undefined;
    set dateFormat(value: string | undefined);
    /**
     * Separator for multiple selection mode.
     * @group Props
     */
    multipleSeparator: string;
    /**
     * Separator for joining start and end dates on range selection mode.
     * @group Props
     */
    rangeSeparator: string;
    /**
     * When enabled, displays the datepicker as inline. Default is false for popup mode.
     * @group Props
     */
    inline: boolean;
    /**
     * Whether to display dates in other months (non-selectable) at the start or end of the current month. To make these days selectable use the selectOtherMonths option.
     * @group Props
     */
    showOtherMonths: boolean;
    /**
     * Whether days in other months shown before or after the current month are selectable. This only applies if the showOtherMonths option is set to true.
     * @group Props
     */
    selectOtherMonths: boolean | undefined;
    /**
     * When enabled, displays a button with icon next to input.
     * @group Props
     */
    showIcon: boolean | undefined;
    /**
     * Icon of the datepicker button.
     * @group Props
     */
    icon: string | undefined;
    /**
     * When specified, prevents entering the date manually with keyboard.
     * @group Props
     */
    readonlyInput: boolean | undefined;
    /**
     * The cutoff year for determining the century for a date.
     * @group Props
     */
    shortYearCutoff: any;
    /**
     * Specifies 12 or 24 hour format.
     * @group Props
     */
    get hourFormat(): string;
    set hourFormat(value: string);
    /**
     * Whether to display timepicker only.
     * @group Props
     */
    timeOnly: boolean | undefined;
    /**
     * Hours to change per step.
     * @group Props
     */
    stepHour: number;
    /**
     * Minutes to change per step.
     * @group Props
     */
    stepMinute: number;
    /**
     * Seconds to change per step.
     * @group Props
     */
    stepSecond: number;
    /**
     * Whether to show the seconds in time picker.
     * @group Props
     */
    showSeconds: boolean;
    /**
     * When disabled, datepicker will not be visible with input focus.
     * @group Props
     */
    showOnFocus: boolean;
    /**
     * When enabled, datepicker will show week numbers.
     * @group Props
     */
    showWeek: boolean;
    /**
     * When enabled, datepicker will start week numbers from first day of the year.
     * @group Props
     */
    startWeekFromFirstDayOfYear: boolean;
    /**
     * When enabled, a clear icon is displayed to clear the value.
     * @group Props
     */
    showClear: boolean;
    /**
     * Type of the value to write back to ngModel, default is date and alternative is string.
     * @group Props
     */
    dataType: string;
    /**
     * Defines the quantity of the selection, valid values are "single", "multiple" and "range".
     * @group Props
     */
    selectionMode: 'single' | 'multiple' | 'range' | undefined;
    /**
     * Maximum number of selectable dates in multiple mode.
     * @group Props
     */
    maxDateCount: number | undefined;
    /**
     * Whether to display today and clear buttons at the footer
     * @group Props
     */
    showButtonBar: boolean | undefined;
    /**
     * Style class of the today button.
     * @group Props
     */
    todayButtonStyleClass: string | undefined;
    /**
     * Style class of the clear button.
     * @group Props
     */
    clearButtonStyleClass: string | undefined;
    /**
     * When present, it specifies that the component should automatically get focus on load.
     * @group Props
     */
    autofocus: boolean | undefined;
    /**
     * Whether to automatically manage layering.
     * @group Props
     */
    autoZIndex: boolean;
    /**
     * Base zIndex value to use in layering.
     * @group Props
     */
    baseZIndex: number;
    /**
     * Style class of the datetimepicker container element.
     * @group Props
     */
    panelStyleClass: string | undefined;
    /**
     * Inline style of the datetimepicker container element.
     * @group Props
     */
    panelStyle: any;
    /**
     * Keep invalid value when input blur.
     * @group Props
     */
    keepInvalid: boolean;
    /**
     * Whether to hide the overlay on date selection.
     * @group Props
     */
    hideOnDateTimeSelect: boolean;
    /**
     * When enabled, datepicker overlay is displayed as optimized for touch devices.
     * @group Props
     */
    touchUI: boolean | undefined;
    /**
     * Separator of time selector.
     * @group Props
     */
    timeSeparator: string;
    /**
     * When enabled, can only focus on elements inside the datepicker.
     * @group Props
     */
    focusTrap: boolean;
    /**
     * Transition options of the show animation.
     * @group Props
     * @deprecated since v21.0.0, use `motionOptions` instead.
     */
    showTransitionOptions: string;
    /**
     * Transition options of the hide animation.
     * @group Props
     * @deprecated since v21.0.0, use `motionOptions` instead.
     */
    hideTransitionOptions: string;
    /**
     * Index of the element in tabbing order.
     * @group Props
     */
    tabindex: number | undefined;
    /**
     * The minimum selectable date.
     * @group Props
     */
    get minDate(): Date | undefined | null;
    set minDate(date: Date | undefined | null);
    /**
     * The maximum selectable date.
     * @group Props
     */
    get maxDate(): Date | undefined | null;
    set maxDate(date: Date | undefined | null);
    /**
     * Array with dates that should be disabled (not selectable).
     * @group Props
     */
    get disabledDates(): Date[];
    set disabledDates(disabledDates: Date[]);
    /**
     * Array with weekday numbers that should be disabled (not selectable).
     * @group Props
     */
    get disabledDays(): number[];
    set disabledDays(disabledDays: number[]);
    /**
     * Whether to display timepicker.
     * @group Props
     */
    get showTime(): boolean;
    set showTime(showTime: boolean);
    /**
     * An array of options for responsive design.
     * @group Props
     */
    get responsiveOptions(): DatePickerResponsiveOptions$1[];
    set responsiveOptions(responsiveOptions: DatePickerResponsiveOptions$1[]);
    /**
     * Number of months to display.
     * @group Props
     */
    get numberOfMonths(): number;
    set numberOfMonths(numberOfMonths: number);
    /**
     * Defines the first of the week for various date calculations.
     * @group Props
     */
    get firstDayOfWeek(): number;
    set firstDayOfWeek(firstDayOfWeek: number);
    /**
     * Type of view to display, valid values are "date" for datepicker and "month" for month picker.
     * @group Props
     */
    get view(): DatePickerTypeView$1;
    set view(view: DatePickerTypeView$1);
    /**
     * Set the date to highlight on first opening if the field is blank.
     * @group Props
     */
    get defaultDate(): Date | null;
    set defaultDate(defaultDate: Date | null);
    get isBudhistYear(): boolean;
    set isBudhistYear(isBudhistYear: boolean);
    get yearBudhist(): number;
    /**
     * When true, assumes input values are in Buddhist Era (พ.ศ.).
     * The component will subtract 543 years for internal processing.
     * @group Props
     */
    inputBudhistYear: boolean;
    /**
     * When true, outputs dates in Buddhist Era (พ.ศ.).
     * The component will add 543 years to output values.
     * @group Props
     */
    outputBudhistYear: boolean;
    /**
     * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
     * @defaultValue 'self'
     * @group Props
     */
    appendTo: i0.InputSignal<any>;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: i0.InputSignal<MotionOptions>;
    computedMotionOptions: i0.Signal<MotionOptions>;
    /**
     * Callback to invoke on focus of input field.
     * @param {Event} event - browser event.
     * @group Emits
     */
    onFocus: EventEmitter<Event>;
    /**
     * Callback to invoke on blur of input field.
     * @param {Event} event - browser event.
     * @group Emits
     */
    onBlur: EventEmitter<Event>;
    /**
     * Callback to invoke when date panel closed.
     * @param {HTMLDivElement} element - The element being transitioned/animated.
     * @group Emits
     */
    onClose: EventEmitter<HTMLElement>;
    /**
     * Callback to invoke on date select.
     * @param {Date} date - date value.
     * @group Emits
     */
    onSelect: EventEmitter<Date>;
    /**
     * Callback to invoke when input field cleared.
     * @group Emits
     */
    onClear: EventEmitter<any>;
    /**
     * Callback to invoke when input field is being typed.
     * @param {Event} event - browser event
     * @group Emits
     */
    onInput: EventEmitter<any>;
    /**
     * Callback to invoke when today button is clicked.
     * @param {Date} date - today as a date instance.
     * @group Emits
     */
    onTodayClick: EventEmitter<Date>;
    /**
     * Callback to invoke when clear button is clicked.
     * @param {Event} event - browser event.
     * @group Emits
     */
    onClearClick: EventEmitter<any>;
    /**
     * Callback to invoke when a month is changed using the navigators.
     * @param {DatePickerMonthChangeEvent} event - custom month change event.
     * @group Emits
     */
    onMonthChange: EventEmitter<DatePickerMonthChangeEvent$1>;
    /**
     * Callback to invoke when a year is changed using the navigators.
     * @param {DatePickerYearChangeEvent} event - custom year change event.
     * @group Emits
     */
    onYearChange: EventEmitter<DatePickerYearChangeEvent$1>;
    /**
     * Callback to invoke when clicked outside of the date panel.
     * @group Emits
     */
    onClickOutside: EventEmitter<any>;
    /**
     * Callback to invoke when datepicker panel is shown.
     * @param {HTMLDivElement} element - The element being transitioned/animated.
     * @group Emits
     */
    onShow: EventEmitter<HTMLElement>;
    inputfieldViewChild: Nullable<ElementRef>;
    set content(content: ElementRef);
    _componentStyle: DatePickerStyle;
    contentViewChild: ElementRef;
    value: any;
    dates: Nullable<Date[]>;
    months: Month$1[];
    weekDays: Nullable<string[]>;
    currentMonth: number;
    currentYear: number;
    currentHour: Nullable<number>;
    currentMinute: Nullable<number>;
    currentSecond: Nullable<number>;
    p: any;
    pm: Nullable<boolean>;
    mask: Nullable<HTMLDivElement>;
    maskClickListener: VoidListener;
    overlay: Nullable<HTMLElement>;
    responsiveStyleElement: HTMLStyleElement | undefined | null;
    overlayVisible: Nullable<boolean>;
    overlayMinWidth: Nullable<number>;
    $appendTo: i0.Signal<any>;
    calendarElement: Nullable<HTMLElement | ElementRef>;
    timePickerTimer: any;
    documentClickListener: VoidListener;
    animationEndListener: VoidListener;
    ticksTo1970: Nullable<number>;
    yearOptions: Nullable<number[]>;
    focus: Nullable<boolean>;
    isKeydown: Nullable<boolean>;
    _minDate?: Date | null;
    _maxDate?: Date | null;
    _dateFormat: string | undefined;
    _hourFormat: string;
    _showTime: boolean;
    _yearRange: string;
    preventDocumentListener: Nullable<boolean>;
    _buddhist: boolean;
    dayClass(date: any): {
        [x: string]: any;
        'p-datepicker-day': boolean;
        'p-datepicker-day-selected': any;
        'p-disabled': any;
    };
    /**
     * Custom template for date cells.
     * @param {DatePickerDateTemplateContext} context - date template context.
     * @group Templates
     */
    dateTemplate: Nullable<TemplateRef<DatePickerDateTemplateContext>>;
    /**
     * Custom template for header section.
     * @group Templates
     */
    headerTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for footer section.
     * @group Templates
     */
    footerTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for disabled date cells.
     * @param {DatePickerDisabledDateTemplateContext} context - disabled date template context.
     * @group Templates
     */
    disabledDateTemplate: Nullable<TemplateRef<DatePickerDisabledDateTemplateContext>>;
    /**
     * Custom template for decade view.
     * @param {DatePickerDecadeTemplateContext} context - decade template context.
     * @group Templates
     */
    decadeTemplate: Nullable<TemplateRef<DatePickerDecadeTemplateContext>>;
    /**
     * Custom template for previous month icon.
     * @group Templates
     */
    previousIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for next month icon.
     * @group Templates
     */
    nextIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for trigger icon.
     * @group Templates
     */
    triggerIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for clear icon.
     * @group Templates
     */
    clearIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for decrement icon.
     * @group Templates
     */
    decrementIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for increment icon.
     * @group Templates
     */
    incrementIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Custom template for input icon.
     * @param {DatePickerInputIconTemplateContext} context - input icon template context.
     * @group Templates
     */
    inputIconTemplate: Nullable<TemplateRef<DatePickerInputIconTemplateContext>>;
    /**
     * Custom template for button bar.
     * @param {DatePickerButtonBarTemplateContext} context - button bar template context.
     * @group Templates
     */
    buttonBarTemplate: Nullable<TemplateRef<DatePickerButtonBarTemplateContext>>;
    _dateTemplate: TemplateRef<DatePickerDateTemplateContext> | undefined;
    _headerTemplate: TemplateRef<void> | undefined;
    _footerTemplate: TemplateRef<void> | undefined;
    _disabledDateTemplate: TemplateRef<DatePickerDisabledDateTemplateContext> | undefined;
    _decadeTemplate: TemplateRef<DatePickerDecadeTemplateContext> | undefined;
    _previousIconTemplate: TemplateRef<void> | undefined;
    _nextIconTemplate: TemplateRef<void> | undefined;
    _triggerIconTemplate: TemplateRef<void> | undefined;
    _clearIconTemplate: TemplateRef<void> | undefined;
    _decrementIconTemplate: TemplateRef<void> | undefined;
    _incrementIconTemplate: TemplateRef<void> | undefined;
    _inputIconTemplate: TemplateRef<DatePickerInputIconTemplateContext> | undefined;
    _buttonBarTemplate: TemplateRef<DatePickerButtonBarTemplateContext> | undefined;
    _disabledDates: Array<Date>;
    _disabledDays: Array<number>;
    selectElement: Nullable;
    todayElement: Nullable;
    focusElement: Nullable;
    scrollHandler: Nullable<ConnectedOverlayScrollHandler>;
    documentResizeListener: VoidListener;
    navigationState: Nullable<NavigationState$1>;
    isMonthNavigate: Nullable<boolean>;
    initialized: Nullable<boolean>;
    translationSubscription: Nullable<Subscription>;
    _locale: LocaleSettings$1;
    _responsiveOptions: DatePickerResponsiveOptions$1[];
    currentView: Nullable<string>;
    attributeSelector: Nullable<string>;
    panelId: Nullable<string>;
    _numberOfMonths: number;
    _firstDayOfWeek: number;
    _view: DatePickerTypeView$1;
    preventFocus: Nullable<boolean>;
    _defaultDate: Date;
    _focusKey: Nullable<string>;
    private window;
    get locale(): LocaleSettings$1;
    get iconButtonAriaLabel(): any;
    get prevIconAriaLabel(): any;
    get nextIconAriaLabel(): any;
    constructor(zone: NgZone, overlayService: OverlayService);
    onInit(): void;
    onAfterViewInit(): void;
    onAfterViewChecked(): void;
    templates: QueryList<PrimeTemplate>;
    onAfterContentInit(): void;
    getTranslation(option: string): any;
    populateYearOptions(start: number, end: number): void;
    createWeekDays(): void;
    monthPickerValues(): any[];
    yearPickerValues(): any[];
    createMonths(month: number, year: number): void;
    getWeekNumber(date: Date): number;
    createMonth(month: number, year: number): Month$1;
    initTime(date: Date): void;
    navBackward(event: any): void;
    navForward(event: any): void;
    decrementYear(): void;
    decrementDecade(): void;
    incrementDecade(): void;
    incrementYear(): void;
    switchToMonthView(event: Event): void;
    switchToYearView(event: Event): void;
    onDateSelect(event: Event, dateMeta: any): void;
    shouldSelectDate(dateMeta: any): boolean;
    onMonthSelect(event: Event, index: number): void;
    onYearSelect(event: Event, year: number): void;
    updateInputfield(): void;
    inputFieldValue: Nullable<string>;
    formatDateTime(date: any): any;
    formatDateMetaToDate(dateMeta: any): Date;
    formatDateKey(date: Date): string;
    setCurrentHourPM(hours: number): void;
    setCurrentView(currentView: DatePickerTypeView$1): void;
    selectDate(dateMeta: any): void;
    updateModel(value: any): void;
    /**
     * Convert date from Buddhist Era to Gregorian Era (subtract 543 years)
     */
    private convertFromBuddhist;
    /**
     * Convert date from Gregorian Era to Buddhist Era (add 543 years)
     */
    private convertToBuddhist;
    /**
     * Convert input value from Buddhist Era if inputBudhistYear is true
     */
    convertInputValue(value: any): any;
    /**
     * Convert output value to Buddhist Era if outputBudhistYear is true
     * Skip conversion if inputBudhistYear is true since value is already in Buddhist format
     */
    private convertOutputValue;
    getFirstDayOfMonthIndex(month: number, year: number): number;
    getDaysCountInMonth(month: number, year: number): number;
    getDaysCountInPrevMonth(month: number, year: number): number;
    getPreviousMonthAndYear(month: number, year: number): {
        month: any;
        year: any;
    };
    getNextMonthAndYear(month: number, year: number): {
        month: any;
        year: any;
    };
    getSundayIndex(): number;
    isSelected(dateMeta: any): boolean | undefined;
    isComparable(): boolean;
    isMonthSelected(month: any): any;
    isMonthDisabled(month: number, year?: number): boolean;
    isYearDisabled(year: number): boolean;
    isYearSelected(year: number): boolean;
    isDateEquals(value: any, dateMeta: any): boolean;
    isDateBetween(start: Date, end: Date, dateMeta: any): boolean;
    isSingleSelection(): boolean;
    isRangeSelection(): boolean;
    isMultipleSelection(): boolean;
    isToday(today: Date, day: number, month: number, year: number): boolean;
    isSelectable(day: any, month: any, year: any, otherMonth: any): boolean;
    isDateDisabled(day: number, month: number, year: number): boolean;
    isDayDisabled(day: number, month: number, year: number): boolean;
    onInputFocus(event: Event): void;
    onInputClick(): void;
    onInputBlur(event: Event): void;
    onButtonClick(event: Event, inputfield?: any): void;
    clear(): void;
    onOverlayClick(event: Event): void;
    getMonthName(index: number): any;
    getYear(month: any): any;
    switchViewButtonDisabled(): boolean;
    onPrevButtonClick(event: Event): void;
    onNextButtonClick(event: Event): void;
    onContainerButtonKeydown(event: KeyboardEvent): void;
    onInputKeydown(event: any): void;
    onDateCellKeydown(event: any, dateMeta: any, groupIndex: number): void;
    onMonthCellKeydown(event: any, index: number): void;
    onYearCellKeydown(event: any, index: number): void;
    navigateToMonth(prev: boolean, groupIndex: number, focusKey?: string): void;
    updateFocus(): void;
    initFocusableCell(): void;
    trapFocus(event: any): void;
    onMonthDropdownChange(m: string): void;
    onYearDropdownChange(y: string): void;
    convertTo24Hour(hours: number, pm: boolean): number;
    constrainTime(hour: number, minute: number, second: number, pm: boolean): number[];
    incrementHour(event: any): void;
    toggleAMPMIfNotMinDate(newPM: boolean): void;
    onTimePickerElementMouseDown(event: Event, type: number, direction: number): void;
    onTimePickerElementMouseUp(event: Event): void;
    onTimePickerElementMouseLeave(): void;
    repeat(event: Event | null, interval: number | null, type: number | null, direction: number | null): void;
    clearTimePickerTimer(): void;
    decrementHour(event: any): void;
    incrementMinute(event: any): void;
    decrementMinute(event: any): void;
    incrementSecond(event: any): void;
    decrementSecond(event: any): void;
    updateTime(): void;
    toggleAMPM(event: any): void;
    onUserInput(event: KeyboardEvent | any): void;
    isValidSelection(value: any): boolean;
    parseValueFromString(text: string): Date | Date[] | null;
    parseDateTime(text: any): Date;
    populateTime(value: any, timeString: any, ampm: any): void;
    isValidDate(date: any): boolean;
    updateUI(): void;
    showOverlay(): void;
    hideOverlay(): void;
    toggle(): void;
    onOverlayBeforeEnter(event: MotionEvent): void;
    onOverlayAfterLeave(event: MotionEvent): void;
    appendOverlay(): void;
    restoreOverlayAppend(): void;
    alignOverlay(): void;
    bindListeners(): void;
    setZIndex(): void;
    enableModality(element: any): void;
    disableModality(): void;
    destroyMask(): void;
    unbindMaskClickListener(): void;
    unbindAnimationEndListener(): void;
    getDateFormat(): any;
    getFirstDateOfWeek(): any;
    formatDate(date: any, format: any): string;
    formatTime(date: any): string;
    parseTime(value: any): {
        hour: number;
        minute: number;
        second: number;
    };
    parseDate(value: any, format: any): any;
    daylightSavingAdjust(date: any): any;
    isValidDateForTimeConstraints(selectedDate: Date): boolean;
    onTodayButtonClick(event: any): void;
    onClearButtonClick(event: any): void;
    createResponsiveStyle(): void;
    destroyResponsiveStyleElement(): void;
    bindDocumentClickListener(): void;
    unbindDocumentClickListener(): void;
    bindDocumentResizeListener(): void;
    unbindDocumentResizeListener(): void;
    bindScrollListener(): void;
    unbindScrollListener(): void;
    isOutsideClicked(event: Event): boolean;
    isNavIconClicked(event: any): boolean;
    onWindowResize(): void;
    onOverlayHide(): void;
    /**
     * @override
     *
     * @see {@link BaseEditableHolder.writeControlValue}
     * Writes the value to the control.
     */
    writeControlValue(value: any): void;
    onDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DatePicker, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DatePicker, "p-datePicker, p-datepicker, p-date-picker", never, { "iconDisplay": { "alias": "iconDisplay"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "inputStyle": { "alias": "inputStyle"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "inputStyleClass": { "alias": "inputStyleClass"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "iconAriaLabel": { "alias": "iconAriaLabel"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "multipleSeparator": { "alias": "multipleSeparator"; "required": false; }; "rangeSeparator": { "alias": "rangeSeparator"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "showOtherMonths": { "alias": "showOtherMonths"; "required": false; }; "selectOtherMonths": { "alias": "selectOtherMonths"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "readonlyInput": { "alias": "readonlyInput"; "required": false; }; "shortYearCutoff": { "alias": "shortYearCutoff"; "required": false; }; "hourFormat": { "alias": "hourFormat"; "required": false; }; "timeOnly": { "alias": "timeOnly"; "required": false; }; "stepHour": { "alias": "stepHour"; "required": false; }; "stepMinute": { "alias": "stepMinute"; "required": false; }; "stepSecond": { "alias": "stepSecond"; "required": false; }; "showSeconds": { "alias": "showSeconds"; "required": false; }; "showOnFocus": { "alias": "showOnFocus"; "required": false; }; "showWeek": { "alias": "showWeek"; "required": false; }; "startWeekFromFirstDayOfYear": { "alias": "startWeekFromFirstDayOfYear"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "dataType": { "alias": "dataType"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "maxDateCount": { "alias": "maxDateCount"; "required": false; }; "showButtonBar": { "alias": "showButtonBar"; "required": false; }; "todayButtonStyleClass": { "alias": "todayButtonStyleClass"; "required": false; }; "clearButtonStyleClass": { "alias": "clearButtonStyleClass"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "autoZIndex": { "alias": "autoZIndex"; "required": false; }; "baseZIndex": { "alias": "baseZIndex"; "required": false; }; "panelStyleClass": { "alias": "panelStyleClass"; "required": false; }; "panelStyle": { "alias": "panelStyle"; "required": false; }; "keepInvalid": { "alias": "keepInvalid"; "required": false; }; "hideOnDateTimeSelect": { "alias": "hideOnDateTimeSelect"; "required": false; }; "touchUI": { "alias": "touchUI"; "required": false; }; "timeSeparator": { "alias": "timeSeparator"; "required": false; }; "focusTrap": { "alias": "focusTrap"; "required": false; }; "showTransitionOptions": { "alias": "showTransitionOptions"; "required": false; }; "hideTransitionOptions": { "alias": "hideTransitionOptions"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "disabledDays": { "alias": "disabledDays"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "responsiveOptions": { "alias": "responsiveOptions"; "required": false; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; "view": { "alias": "view"; "required": false; }; "defaultDate": { "alias": "defaultDate"; "required": false; }; "isBudhistYear": { "alias": "isBudhistYear"; "required": false; }; "inputBudhistYear": { "alias": "inputBudhistYear"; "required": false; }; "outputBudhistYear": { "alias": "outputBudhistYear"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; }, { "onFocus": "onFocus"; "onBlur": "onBlur"; "onClose": "onClose"; "onSelect": "onSelect"; "onClear": "onClear"; "onInput": "onInput"; "onTodayClick": "onTodayClick"; "onClearClick": "onClearClick"; "onMonthChange": "onMonthChange"; "onYearChange": "onYearChange"; "onClickOutside": "onClickOutside"; "onShow": "onShow"; }, ["dateTemplate", "headerTemplate", "footerTemplate", "disabledDateTemplate", "decadeTemplate", "previousIconTemplate", "nextIconTemplate", "triggerIconTemplate", "clearIconTemplate", "decrementIconTemplate", "incrementIconTemplate", "inputIconTemplate", "buttonBarTemplate", "templates"], ["p-header", "p-footer"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_inline: unknown;
    static ngAcceptInputType_showOtherMonths: unknown;
    static ngAcceptInputType_selectOtherMonths: unknown;
    static ngAcceptInputType_showIcon: unknown;
    static ngAcceptInputType_readonlyInput: unknown;
    static ngAcceptInputType_timeOnly: unknown;
    static ngAcceptInputType_stepHour: unknown;
    static ngAcceptInputType_stepMinute: unknown;
    static ngAcceptInputType_stepSecond: unknown;
    static ngAcceptInputType_showSeconds: unknown;
    static ngAcceptInputType_showOnFocus: unknown;
    static ngAcceptInputType_showWeek: unknown;
    static ngAcceptInputType_showClear: unknown;
    static ngAcceptInputType_maxDateCount: unknown;
    static ngAcceptInputType_showButtonBar: unknown;
    static ngAcceptInputType_autofocus: unknown;
    static ngAcceptInputType_autoZIndex: unknown;
    static ngAcceptInputType_baseZIndex: unknown;
    static ngAcceptInputType_keepInvalid: unknown;
    static ngAcceptInputType_hideOnDateTimeSelect: unknown;
    static ngAcceptInputType_touchUI: unknown;
    static ngAcceptInputType_focusTrap: unknown;
    static ngAcceptInputType_tabindex: unknown;
    static ngAcceptInputType_inputBudhistYear: unknown;
    static ngAcceptInputType_outputBudhistYear: unknown;
}
declare class DatePickerModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DatePickerModule, never, [typeof DatePicker, typeof i2.SharedModule], [typeof DatePicker, typeof i2.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DatePickerModule>;
}

/**
 * Custom pass-through(pt) options.
 * @template I Type of instance.
 * @see {@link DatePicker.pt}
 * @group Interface
 */
interface DatePickerPassThroughOptions<I = unknown> {
    /**
     * Used to pass attributes to the root's DOM element.
     */
    root?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the InputText component.
     * @see {@link InputTextPassThrough}
     */
    pcInputText?: InputTextPassThrough;
    /**
     * Used to pass attributes to the dropdown button's DOM element.
     */
    dropdown?: PassThroughOption<HTMLButtonElement, I>;
    /**
     * Used to pass attributes to the dropdown icon's DOM element.
     */
    dropdownIcon?: PassThroughOption<SVGElement, I>;
    /**
     * Used to pass attributes to the input icon container's DOM element.
     */
    inputIconContainer?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the input icon's DOM element.
     */
    inputIcon?: PassThroughOption<SVGElement, I>;
    /**
     * Used to pass attributes to the panel's DOM element.
     */
    panel?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the calendar container's DOM element.
     */
    calendarContainer?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the calendar's DOM element.
     */
    calendar?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the header's DOM element.
     */
    header?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the previous button component.
     * @see {@link ButtonPassThrough}
     */
    pcPrevButton?: ButtonPassThrough;
    /**
     * Used to pass attributes to the title's DOM element.
     */
    title?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the select month's DOM element.
     */
    selectMonth?: PassThroughOption<HTMLSelectElement, I>;
    /**
     * Used to pass attributes to the select year's DOM element.
     */
    selectYear?: PassThroughOption<HTMLSelectElement, I>;
    /**
     * Used to pass attributes to the decade's DOM element.
     */
    decade?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the next button component.
     * @see {@link ButtonPassThrough}
     */
    pcNextButton?: ButtonPassThrough;
    /**
     * Used to pass attributes to the day view's DOM element.
     */
    dayView?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the table's DOM element.
     */
    table?: PassThroughOption<HTMLTableElement, I>;
    /**
     * Used to pass attributes to the table header's DOM element.
     */
    tableHeader?: PassThroughOption<HTMLTableSectionElement, I>;
    /**
     * Used to pass attributes to the table header row's DOM element.
     */
    tableHeaderRow?: PassThroughOption<HTMLTableRowElement, I>;
    /**
     * Used to pass attributes to the week header's DOM element.
     */
    weekHeader?: PassThroughOption<HTMLTableCellElement, I>;
    /**
     * Used to pass attributes to the week header label's DOM element.
     */
    weekHeaderLabel?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the table header cell's DOM element.
     */
    tableHeaderCell?: PassThroughOption<HTMLTableCellElement, I>;
    /**
     * Used to pass attributes to the week day cell's DOM element.
     */
    weekDayCell?: PassThroughOption<HTMLTableCellElement, I>;
    /**
     * Used to pass attributes to the week day's DOM element.
     */
    weekDay?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the table body's DOM element.
     */
    tableBody?: PassThroughOption<HTMLTableSectionElement, I>;
    /**
     * Used to pass attributes to the table body row's DOM element.
     */
    tableBodyRow?: PassThroughOption<HTMLTableRowElement, I>;
    /**
     * Used to pass attributes to the week number's DOM element.
     */
    weekNumber?: PassThroughOption<HTMLTableCellElement, I>;
    /**
     * Used to pass attributes to the week label container's DOM element.
     */
    weekLabelContainer?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the day cell's DOM element.
     */
    dayCell?: PassThroughOption<HTMLTableCellElement, I>;
    /**
     * Used to pass attributes to the day's DOM element.
     */
    day?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the month view's DOM element.
     */
    monthView?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the month's DOM element.
     */
    month?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the year view's DOM element.
     */
    yearView?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the year's DOM element.
     */
    year?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the time picker's DOM element.
     */
    timePicker?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the hour picker's DOM element.
     */
    hourPicker?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the hour's DOM element.
     */
    hour?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the separator container's DOM element.
     */
    separatorContainer?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the separator's DOM element.
     */
    separator?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the minute picker's DOM element.
     */
    minutePicker?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the minute's DOM element.
     */
    minute?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the second picker's DOM element.
     */
    secondPicker?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the second's DOM element.
     */
    second?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the ampm picker's DOM element.
     */
    ampmPicker?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the ampm's DOM element.
     */
    ampm?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the buttonbar's DOM element.
     */
    buttonbar?: PassThroughOption<HTMLDivElement, I>;
    /**
     * Used to pass attributes to the increment button component.
     * @see {@link ButtonPassThrough}
     */
    pcIncrementButton?: ButtonPassThrough;
    /**
     * Used to pass attributes to the decrement button component.
     * @see {@link ButtonPassThrough}
     */
    pcDecrementButton?: ButtonPassThrough;
    /**
     * Used to pass attributes to the today button component.
     * @see {@link ButtonPassThrough}
     */
    pcTodayButton?: ButtonPassThrough;
    /**
     * Used to pass attributes to the clear button component.
     * @see {@link ButtonPassThrough}
     */
    pcClearButton?: ButtonPassThrough;
    /**
     * Used to pass attributes to the hidden selected day's DOM element.
     */
    hiddenSelectedDay?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the hidden month's DOM element.
     */
    hiddenMonth?: PassThroughOption<HTMLSpanElement, I>;
    /**
     * Used to pass attributes to the hidden year's DOM element.
     */
    hiddenYear?: PassThroughOption<HTMLSpanElement, I>;
}
/**
 * Defines valid pass-through options in DatePicker.
 * @see {@link DatePickerPassThroughOptions}
 * @template I Type of instance.
 */
type DatePickerPassThrough<I = unknown> = PassThrough<I, DatePickerPassThroughOptions<I>>;
/**
 * Defines valid templates in DatePicker.
 * @group Templates
 */
interface DatePickerTemplates {
    /**
     * Custom header template.
     * @param {Object} context - date value instance.
     */
    date(context: {
        /**
         * Date value of the component.
         */
        $implicit: Date;
    }): TemplateRef<{
        $implicit: Date;
    }>;
    /**
     * Custom decade template
     * @param {Object} context - date value instance.
     */
    decade(context: {
        /**
         * An array containing the start and and year of a decade to display at header of the year picker.
         */
        $implicit: Date;
    }): TemplateRef<{
        $implicit: Date;
    }>;
    /**
     * Custom disabled date template.
     */
    disabledDate(): TemplateRef<any>;
    /**
     * Custom header template.
     */
    header(): TemplateRef<any>;
    /**
     * Custom input icon template.
     * @param {Object} context - input icon template params.
     */
    inputIconTemplate(context: {
        /**
         * Click callback
         */
        clickCallBack: () => void;
    }): TemplateRef<{
        clickCallBack: Function;
    }>;
    /**
     * Custom previous icon template.
     */
    previousicon(): TemplateRef<any>;
    /**
     * Custom next icon template.
     */
    nexticon(): TemplateRef<any>;
    /**
     * Custom dropdown trigger icon template.
     */
    triggericon(): TemplateRef<any>;
    /**
     * Custom clear icon template.
     */
    clearicon(): TemplateRef<any>;
    /**
     * Custom decrement icon template.
     */
    decrementicon(): TemplateRef<any>;
    /**
     * Custom increment icon template.
     */
    incrementicon(): TemplateRef<any>;
    /**
     * Custom footer template.
     */
    footer(): TemplateRef<any>;
    /**
     * Custom button bar template.
     * @param {Object} context - button bar template params.
     */
    buttonbar(context: {
        /**
         * Today button click callback
         */
        todayCallback: () => void;
        /**
         * Clear button click callback
         */
        clearCallback: () => void;
    }): TemplateRef<{
        todayCallback: Function;
        clearCallback: Function;
    }>;
}
/**
 * Locale settings options.
 * @group Interface
 */
interface LocaleSettings {
    /**
     * Day value.
     */
    firstDayOfWeek?: number;
    /**
     * Day names.
     */
    dayNames?: string[];
    /**
     * Shortened day names.
     */
    dayNamesShort?: string[];
    /**
     * Minimum days names.
     */
    dayNamesMin?: string[];
    /**
     * Month names.
     */
    monthNames?: string[];
    /**
     * Shortened month names.
     */
    monthNamesShort?: string[];
    /**
     * Value of today date string.
     */
    today?: string;
    /**
     * Clear.
     */
    clear?: string;
    /**
     * Date format.
     */
    dateFormat?: string;
    /**
     * Week header.
     */
    weekHeader?: string;
}
/**
 * Month interface.
 * @group Interface
 */
interface Month {
    /**
     * Mont value.
     */
    month?: number;
    /**
     * Year value.
     */
    year?: number;
    /**
     * Array of dates.
     */
    dates?: Date[];
    /**
     * Array of week numbers.
     */
    weekNumbers?: number[];
}
/**
 * Custom DatePicker responsive options metadata.
 * @group Interface
 */
interface DatePickerResponsiveOptions {
    /**
     * Breakpoint for responsive mode. Exp; @media screen and (max-width: ${breakpoint}) {...}
     */
    breakpoint?: string;
    /**
     * The number of visible months on breakpoint.
     */
    numMonths?: number;
}
/**
 * Custom type for the DatePicker views.
 * @group Types
 */
type DatePickerTypeView = 'date' | 'month' | 'year';
/**
 * Custom type for the DatePicker navigation state.
 * @group Types
 */
type NavigationState = {
    backward?: boolean;
    button?: boolean;
};
/**
 * Custom DatePicker year change event.
 * @see {@link DatePicker.onYearChange}
 * @group Events
 */
interface DatePickerYearChangeEvent {
    /**
     * New month.
     */
    month?: number;
    /**
     * New year.
     */
    year?: number;
}
/**
 * Custom DatePicker month change event.
 * @see {@link DatePicker.onMonthChange}
 * @group Events
 */
interface DatePickerMonthChangeEvent {
    /**
     * New month.
     */
    month?: number;
    /**
     * New year.
     */
    year?: number;
}

export { DATEPICKER_VALUE_ACCESSOR, DatePicker, DatePickerClasses, DatePickerModule, DatePickerStyle };
export type { DatePickerMonthChangeEvent, DatePickerPassThrough, DatePickerPassThroughOptions, DatePickerResponsiveOptions, DatePickerTemplates, DatePickerTypeView, DatePickerYearChangeEvent, LocaleSettings, Month, NavigationState };
