import { DatePickerPassThrough, DatePickerResponsiveOptions, DatePickerTypeView, DatePickerMonthChangeEvent, DatePickerYearChangeEvent, Month, DatePickerDateTemplateContext, DatePickerDisabledDateTemplateContext, DatePickerDecadeTemplateContext, DatePickerInputIconTemplateContext, DatePickerButtonBarTemplateContext, NavigationState, LocaleSettings } from 'primeng/types/datepicker';
export * from 'primeng/types/datepicker';
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 } 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 { Subscription } from 'rxjs';
import { BaseStyle } from 'primeng/base';

/**
 *
 * 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> {
    private zone;
    overlayService: OverlayService;
    componentName: string;
    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[];
    set responsiveOptions(responsiveOptions: DatePickerResponsiveOptions[]);
    /**
     * 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;
    set view(view: DatePickerTypeView);
    /**
     * Set the date to highlight on first opening if the field is blank.
     * @group Props
     */
    get defaultDate(): Date | null;
    set defaultDate(defaultDate: Date | null);
    /**
     * 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 | undefined>;
    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>;
    /**
     * Callback to invoke when a year is changed using the navigators.
     * @param {DatePickerYearChangeEvent} event - custom year change event.
     * @group Emits
     */
    onYearChange: EventEmitter<DatePickerYearChangeEvent>;
    /**
     * 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[];
    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>;
    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>;
    isMonthNavigate: Nullable<boolean>;
    initialized: Nullable<boolean>;
    translationSubscription: Nullable<Subscription>;
    _locale: LocaleSettings;
    _responsiveOptions: DatePickerResponsiveOptions[];
    currentView: Nullable<string>;
    attributeSelector: Nullable<string>;
    panelId: Nullable<string>;
    _numberOfMonths: number;
    _firstDayOfWeek: number;
    _view: DatePickerTypeView;
    preventFocus: Nullable<boolean>;
    _defaultDate: Date;
    _focusKey: Nullable<string>;
    private window;
    get locale(): LocaleSettings;
    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;
    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): void;
    selectDate(dateMeta: any): void;
    updateModel(value: any): void;
    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 | null;
    };
    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; }; "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;
}
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>;
}

export { DATEPICKER_VALUE_ACCESSOR, DatePicker, DatePickerClasses, DatePickerModule, DatePickerStyle };
