import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { DaysOfWeek } from '../../utils/date-utils';
import type { Color, ControlValidity, ControlValidityEventDetail } from '../../types/shared';
import type { Dropdown } from '../dropdown/dropdown';
import type { DateInputChangeEventDetail, DuetLocalizedText, LocalDateOpts } from './date-input-interface';
import type { DateDisabledPredicate } from '../date-picker/date-picker-interface';
/**
 * Enables date selection and input in a form.
 *
 * @version 1.0.0
 * @status deprecated
 * @deprecated - use `nano-input` with `type="date"` instead.
 *
 * @slot label - if you do not set a label attribute, you can use this slot for more complex markup
 * @slot helper - helper text to accompany the form field underneath.
 * @slot start - input start slot
 * @slot end - input end slot
 */
export declare class DateInput implements ComponentInterface {
    private pickerEle;
    private trigger;
    private pickerCloseBtn;
    private dropdown;
    private input;
    private directInput;
    private dateOrderIndeces;
    private inputId;
    private locale;
    host: HTMLNanoDateInputElement;
    pattern: string;
    inputValue: string;
    /**
     * This will be true when the control is in an invalid state.
     * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly
     */
    get invalid(): boolean;
    _invalid: boolean;
    /**
     * Current validation message - if any. @readonly
     */
    get validityMessage(): string;
    /**
     * Whether to show a long form, confirmation date string of the one currently entered
     */
    helperText: boolean;
    /**
     * Options for the date string display. Refer to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString.
     */
    helperTextFormat: LocalDateOpts;
    /**
     * Enable floating label behaviour. Will disable placeholder if set.
     */
    floatLabel: boolean;
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * If `true`, the user cannot modify the value.
     */
    readonly: boolean;
    /**
     * The initial size (number of characters) of the control.
     */
    size?: number;
    /**
     * The form element to associate the select with (its form owner). Must be the id of a form.
     */
    form?: string | null;
    /**
     * 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;
    /**
     * If `true`, the user cannot interact with the input.
     */
    disabled: boolean;
    /**
     * The color to use from the application's color palette.
     */
    color?: Color;
    /**
     * This Boolean attribute lets you specify that a form control should have input focus when the page loads.
     */
    autofocus: boolean;
    /**
     * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.
     */
    clearable: boolean;
    /**
     * String to place within a label element. Alternatively you may use a label slot.
     */
    label?: string;
    /**
     * Instructional text that shows before the input has a value.
     * The pattern prop will be used to create a placeholder automatically if unused.
     */
    placeholder: string;
    /**
     * Current value. Must be in IS0-8601 format: YYYY-MM-DD.
     */
    value: string;
    handleValueChange(): void;
    /**
     * When should the field perform validation
     */
    validateOn?: 'dirty' | 'submit' | 'submitThenDirty';
    /**
     * Whether to show validation errors underneath input
     */
    showInlineError: boolean;
    /**
     * The order of the date parts for entry and display.
     * e.g. dmy = dd mm yyyy
     */
    dateOrder: 'dmy' | 'mdy' | 'ymd' | 'dym';
    handleDateOrderChange(): void;
    /**
     * If `true`, the user must fill in a value before submitting a form.
     */
    required: boolean;
    /**
     * 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;
    /**
     * Visually hide the label - but make it accessible.
     */
    hideLabel?: boolean;
    testDateValidity(): void;
    /**
     * Show a date picker. Date pickers are not very useful
     * if the potential input is too far in the distance or past
     * e.g. Birthdays
     */
    picker: boolean;
    /**
     * Initial picker date. Defaults to `value` if set and today's date if not.
     * Must be in IS0-8601 format: YYYY-MM-DD.
     */
    initialPickerDate?: string;
    /**
     * Set / read whether the picker is currently open.
     */
    pickerOpen: boolean;
    handlePickerOpenChange(): void;
    /**
     * Close the picker after a date is selected
     */
    closeAfterPicked: boolean;
    /** nano-dropdown config options you can pass to the nested dropdown component */
    get dropDownConfig(): Partial<Dropdown>;
    set dropDownConfig(ddc: Partial<Dropdown>);
    private _dropDownConfig;
    /** @readonly get the value as a `Date` */
    get dateValue(): Date;
    /** 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;
    /**
     * Event emitted when a date is selected.
     */
    nanoChange: EventEmitter<DateInputChangeEventDetail>;
    /**
     * Called when validation is performed (which depends on `validateOn`).
     * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.
     */
    nanoValidate: EventEmitter<ControlValidityEventDetail>;
    /**
     * Get the current state of the control.
     * @param validateFirst - perform validation first before reporting
     * @returns `{ isValid: boolean, errorMessage: string }`
     */
    reportValidity(validateFirst: boolean): Promise<ControlValidity>;
    /**
     * Sets focus on the child `nano-input`.
     */
    setFocus(): Promise<void>;
    /**
     * Returns the native `<input>` element used under the hood.
     * @returns `HTMLInputElement`
     */
    getInputElement(): Promise<HTMLTextAreaElement | HTMLInputElement>;
    /**
     * Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.
     */
    showError(message: string): Promise<void>;
    private onInputChange;
    private onInputValidate;
    private onInputKey;
    private onDatePicked;
    private onDropdownHide;
    private onTriggerClick;
    private onTriggerKey;
    private onCloseClick;
    private onCloseKeyDown;
    private setDatePattern;
    private formatIsoDate;
    private setValue;
    connectedCallback(): void;
    componentDidLoad(): void;
    render(): any;
}
