import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { DaysOfWeek } from '../../utils/date-utils';
import { type DuetLocalizedText } from './duet-date-picker/date-localization';
import type { DateDisabledPredicate, PickerChangeEvent } from './date-picker-interface';
/**
 * Enables the selection of a date from a calendar view.
 *
 * @version 1.0.0
 * @status stable
 */
export declare class NanoDatePicker implements ComponentInterface {
    private dateId;
    private monthSelectId;
    private yearSelectId;
    private dialogLabelId;
    private firstFocusableElement;
    private monthSelectNode;
    private focusedDayNode;
    private focusTimeoutId;
    private initialTouchX;
    private initialTouchY;
    host: HTMLNanoDatePickerElement;
    activeFocus: boolean;
    focusedDay: Date;
    private _selectedDate;
    /** Selected Date. Must be in IS0-8601 format: YYYY-MM-DD. */
    get selectedDate(): string;
    set selectedDate(value: string);
    /** Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.
     * This setting can be used alone or together with the max property. */
    min: string;
    /** Maximum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.
     * This setting can be used alone or together with the min property. */
    max: string;
    /** Which day is considered first day of the week. `0` for Sunday, `1` for Monday, etc.
     * Default is Monday. */
    firstDayOfWeek: DaysOfWeek;
    /** Button labels, day names, month names, etc, used for localization.
     * Default is English. */
    localization: DuetLocalizedText;
    /**
     * Controls which days are disabled and therefore disallowed.
     * For example, this can be used to disallow selection of weekends.
     * @returns `false` for not disabled and `true` for disabled
     */
    isDateDisabled: DateDisabledPredicate;
    /** Controls whether the picker is within a modal control and will therefore keep focus within the control */
    isModal: boolean;
    /** @internal First focusable element. Relevant for keeping focus within the control */
    firstFocusEle: HTMLElement;
    /** Event emitted when a date is selected. */
    nanoDatePicked: EventEmitter<PickerChangeEvent>;
    /** Focus to the calendar
     * @param day - focus to the current selected day
     */
    setFocus(day?: boolean): Promise<void>;
    handleSelectedDateChange(): void;
    private enableActiveFocus;
    private disableActiveFocus;
    private addDays;
    private addMonths;
    private addYears;
    private startOfWeek;
    private endOfWeek;
    private setMonth;
    private setYear;
    private setFocusedDay;
    private handleTouchStart;
    private handleTouchMove;
    private handleTouchEnd;
    private handleNextMonthClick;
    private handlePreviousMonthClick;
    private handleKeyboardNavigation;
    private handleDaySelect;
    private handleMonthSelect;
    private handleYearSelect;
    private setValue;
    private processFocusedDayNode;
    componentWillLoad(): void;
    render(): any;
}
