import { EventEmitter } from '../../stencil-public-runtime';
import { IInputFeedbackProp, ModusSize, WeekStartDay } from '../types';
/**
 * A customizable date picker component used to create date inputs.
 *
 * Adheres to WCAG 2.2 standards.
 */
export declare class ModusWcDate {
    private inheritedAttributes;
    private popperInstance;
    private inputRef?;
    private calendarRef?;
    private minDate?;
    private maxDate?;
    /** Reference to the host element */
    el: HTMLElement;
    /** Show the calendar dropdown */
    private showCalendar;
    /** Calendar state object */
    private calendar;
    /** Currently focused date index in calendar */
    private focusedDateIndex;
    /** Tracks whether the component currently has focus */
    private hasFocus;
    /** Indicates that the input should have a border. */
    bordered?: boolean;
    /** Custom CSS class to apply to the input. */
    customClass?: string;
    /** Whether the form control is disabled. */
    disabled?: boolean;
    /** Feedback to render below the input. */
    feedback?: IInputFeedbackProp;
    /** The ID of the input element. */
    inputId?: string;
    /** Determine the control's relative ordering for sequential focus navigation (typically with the Tab key). */
    inputTabIndex?: number;
    /** The text to display within the label. */
    label?: string;
    /** Maximum date value. */
    max?: string;
    /** Minimum date value. */
    min?: string;
    /** Name of the form control. Submitted with the form as part of a name/value pair. */
    name?: string;
    /** Whether the value is editable. */
    readOnly?: boolean;
    /** A value is required or must be checked for the form to be submittable. */
    required?: boolean;
    /** The size of the input. */
    size?: ModusSize;
    /** The date format for display and input. */
    format?: 'yyyy-mm-dd' | 'dd-mm-yyyy' | 'yyyy/mm/dd' | 'dd/mm/yyyy' | 'MMM DD, YYYY';
    /** The value of the control. */
    value: string;
    /** The first day of the week for the calendar display */
    weekStartDay?: WeekStartDay;
    /** Displays ISO 8601 week numbers in the calendar.Week numbers are calculated with Monday as the first day of the week.*/
    showWeekNumbers?: boolean;
    /** Event emitted when the input loses focus. */
    inputBlur: EventEmitter<FocusEvent>;
    /** Event emitted when the input value changes. */
    inputChange: EventEmitter<InputEvent>;
    /** Event emitted when the input gains focus. */
    inputFocus: EventEmitter<FocusEvent>;
    /** Event emitted when the calendar month selection changes. */
    calendarMonthChange: EventEmitter<number>;
    /** Event emitted when the calendar year selection changes. */
    calendarYearChange: EventEmitter<number>;
    handleMinChange(newValue?: string): void;
    handleMaxChange(newValue?: string): void;
    handleValueChange(newValue?: string): void;
    handleWeekStartDayChange(): void;
    componentWillLoad(): void;
    componentDidUpdate(): void;
    disconnectedCallback(): void;
    private getClasses;
    private handleBlur;
    private handleFocus;
    private handleInput;
    private handleInputKeyDown;
    private setupPopper;
    private toggleCalendar;
    private handleDateSelect;
    private addMonthOffset;
    private handleMonthChange;
    private handleYearChange;
    private handleDateKeyDown;
    handleClickOutside(event: MouseEvent): void;
    handleEscapeKey(event: KeyboardEvent): void;
    private navigateToAdjacentMonth;
    handleArrowKeys(event: KeyboardEvent): void;
    private renderCalendarHeader;
    private renderCalendarBody;
    private compareDate;
    private parseISODate;
    private formatISODate;
    private cloneDate;
    private clampDate;
    private isDateDisabled;
    private ensureValueWithinBounds;
    private ensureCalendarWithinBounds;
    private setCalendarMonth;
    private updateCalendarAndEmitEvents;
    private syncValueFromInput;
    render(): any;
}
