import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalConfigState } from '../../utils/config';
import { BalAriaForm, BalAriaFormLinking } from '../../utils/form';
import { LogInstance, Loggable } from '../../utils/log';
export declare class Date implements ComponentInterface, Loggable, BalAriaFormLinking {
    private inputId;
    private inheritedAttributes;
    private popupCleanup?;
    private referenceEl;
    private floatingEl;
    private inputEl;
    el: HTMLStencilElement;
    private isKeyboardMode;
    private hasFocus;
    private isExpanded;
    private language;
    private calendarValue;
    ariaForm: BalAriaForm;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * If `true` the component gets a invalid style.
     */
    invalid: boolean;
    /**
     * If `true` the attribute required is added to the native input.
     */
    required: boolean;
    /**
     * If `true`, the element is not mutable, focusable, or even submitted with the form. The user can neither edit nor focus on the control, nor its form control descendants.
     */
    disabled: boolean;
    /**
     * If `true` the element can not mutated, meaning the user can not edit the control.
     */
    readonly: boolean;
    /**
     * If `true` there will be no trigger icon visible, so no UX indicator for a picker
     */
    freeSolo: boolean;
    /**
     * The text to display when the select is empty.
     */
    placeholder?: string;
    /**
     * If `true` the datepicker only open on click of the icon
     */
    triggerIcon: boolean;
    /**
     * Closes the datepicker popover after selection
     */
    closeOnSelect: boolean;
    /**
     * Indicates whether the value of the control can be automatically completed by the browser.
     */
    autocomplete: BalProps.BalInputAutocomplete;
    /**
     * The value of the form field, which accepts ISO 8601 date strings (YYYY-MM-DD).
     */
    value: string | undefined;
    protected valueChanged(): void;
    /**
     * The minimum datetime allowed. Value must be a date string
     * following the
     * [ISO 8601 datetime format standard](https://www.w3.org/TR/NOTE-datetime),
     * such as `1996-12-19`. The format does not have to be specific to an exact
     * datetime. For example, the minimum could just be the year, such as `1994`.
     * Defaults to the beginning of the year, 100 years ago from today.
     */
    min?: string;
    /**
     * The maximum datetime allowed. Value must be a date string
     * following the
     * [ISO 8601 datetime format standard](https://www.w3.org/TR/NOTE-datetime),
     * `1996-12-19`. The format does not have to be specific to an exact
     * datetime. For example, the maximum could just be the year, such as `1994`.
     * Defaults to the end of this year.
     */
    max?: string;
    /**
     * Earliest year available for selection
     */
    minYearProp?: number;
    /**
     * Latest year available for selection
     */
    maxYearProp?: number;
    /**
     * The date to defines where the datepicker popup starts. The prop accepts ISO 8601 date strings (YYYY-MM-DD).
     */
    defaultDate?: string;
    /**
     * Callback to determine which date in the datepicker should be selectable.
     */
    allowedDates: BalProps.BalDateCallback | undefined;
    /**
     * If `true`, it returns the string `INVALID_VALUE` within the balChange event if the input provided is not valid.
     */
    allowInvalidValue: boolean;
    /**
     * Set the amount of time, in milliseconds, to wait to trigger the `ionChange` event after each keystroke. This also impacts form bindings such as `ngModel` or `v-model`.
     */
    debounce: number;
    protected debounceChanged(): void;
    /**
     * If `true`, in Angular reactive forms the control will not be set invalid
     */
    autoInvalidOff: boolean;
    /**
     * Emitted when a keyboard input occurred.
     */
    balInput: EventEmitter<BalEvents.BalDateInputDetail>;
    /**
     * Emitted when a option got selected.
     */
    balChange: EventEmitter<BalEvents.BalDateChangeDetail>;
    /**
     * Emitted before the animation starts
     */
    balWillAnimate: EventEmitter<BalEvents.BalDateWillAnimateDetail>;
    /**
     * Emitted after the animation has finished
     */
    balDidAnimate: EventEmitter<BalEvents.BalDateDidAnimateDetail>;
    /**
     * Emitted when the input loses focus.
     */
    balBlur: EventEmitter<BalEvents.BalDateBlurDetail>;
    /**
     * Emitted when the input has focus.
     */
    balFocus: EventEmitter<BalEvents.BalDateFocusDetail>;
    /**
     * Emitted when the input has clicked.
     */
    balInputClick: EventEmitter<BalEvents.BalDateInputClickDetail>;
    /**
     * Emitted when the icon has clicked.
     */
    balIconClick: EventEmitter<BalEvents.BalDateIconClickDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    hasConnected: boolean;
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentWillLoad(): void;
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * PUBLIC METHOD
     * ------------------------------------------------------
     */
    /**
     * Opens the accordion
     */
    open(): Promise<boolean>;
    /**
     * Closes the accordion
     */
    close(): Promise<boolean>;
    /**
     * Triggers the accordion
     */
    toggle(): Promise<boolean>;
    /**
     * Selects an option
     */
    select(dateString: string): Promise<void>;
    /**
     * Sets focus on the native `input` in `bal-input`. Use this method instead of the global
     * `input.focus()`.
     */
    setFocus(): Promise<void>;
    /**
     * Sets blur on the native `input` in `bal-input`. Use this method instead of the global
     * `input.blur()`.
     * @internal
     */
    setBlur(): Promise<void>;
    /**
     * Returns the native `<input>` element used under the hood.
     */
    getInputElement(): Promise<HTMLInputElement | undefined>;
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    /**
     * PRIVATE METHOD
     * ------------------------------------------------------
     */
    private handleKeydown;
    private handlePointerDown;
    private handleOutsideClick;
    private handleFocus;
    private handleBlur;
    private expand;
    private collapse;
    private updatePosition;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onIconClick;
    private onInputClick;
    private onCalendarChange;
    private onInputInput;
    private onInputChange;
    private onKeyPress;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
