import { EventEmitter } from '../../stencil.core';
import { DateChangeEvent, DateRangeValidationParams, ValidatorResponse } from '../../types/types';
import { InputController } from '../input/default-input-controller';
import { DateFormat } from '../locale/i18n.provider';
export declare class DatePicker implements InputController {
    get date(): Date;
    private calendar;
    private calendarListener;
    private input;
    private inputBlurListener;
    private inputKeyListener;
    private previouslyActiveElement;
    private toggleClickListener;
    private overlay;
    private overlayListener;
    private validator;
    /**
     * Enforce max date for selection
     */
    private max;
    /**
     * Enforce min date for selection
     */
    private min;
    element: HTMLElement;
    innerDateValue: Date;
    outerValue: string;
    rangeParams: DateRangeValidationParams;
    /**
     * @internal
     * Fed by anj-locale
     */
    locale: string;
    language: string;
    timezoneOverride: string;
    dateFormat: DateFormat;
    injectedPropWatcher(): void;
    /**
     * The adapter is the brains of the date-picker.
     */
    adapter: any;
    /**
     * The date picker id
     */
    inputId: string;
    /**
     * How to align the overlay when it opens.
     * Options are `"bottom-end"` or `"bottom-start"` which is the default.
     */
    placement: 'bottom-start' | 'bottom-end';
    /**
     * Fires when the user has selected a value
     */
    anjDateChange: EventEmitter<DateChangeEvent>;
    /**
     * Fires when the control has loaded
     */
    anjInputControlDidLoad: EventEmitter<void>;
    connectedCallback(): void;
    componentDidLoad(): void;
    disconnectedCallback(): void;
    /**
     * open the date picker
     */
    open(): Promise<void>;
    /**
     * close the date picker
     */
    close(): Promise<void>;
    /**
     * handle changes from the anj-input
     */
    processInputValue(inputValue: string | number | Date): void;
    /**
     * handle changes from the angular directive
     */
    setInputValue(inputValue: any): Promise<void>;
    /**
     * formatter, passed to anj-input, which supports conversion to short-date
     */
    inputFormatter(inputValue: string): Promise<string>;
    /**
     * comparator, passed to anj-input, which compares two dates of various formats for parity
     */
    hasValueChanged(newVal: any, oldVal: any): Promise<boolean>;
    innerValue(): Promise<any>;
    remoteCustomValidator(valueString: number | string): Promise<ValidatorResponse>;
    private configureValidationParameters;
    private setCustomValidator;
    private updateCustomValidity;
    private assignAdapter;
    private connectToggle;
    private handleBlur;
    private handleCalendarSelection;
    private handleInputKey;
    private bindOverlay;
    private bindCalendar;
    private unbindCalendar;
    render(): any;
}
