import { EventEmitter } from '../../stencil.core';
import { DateRangeValidationParams, DatetimeChangeEvent, Time, ValidatorResponse } from '../../types/types';
import { InputController } from '../input/default-input-controller';
import { DateFormat } from '../locale/i18n.provider';
export declare class DatetimePicker implements InputController {
    private clock;
    private calendar;
    private clockListener;
    private calendarListener;
    private input;
    private inputBlurListener;
    private previouslyActiveElement;
    private overlay;
    private timeString;
    private overlayListener;
    private toggleClickListener;
    private strategy;
    private validator;
    /**
     * Enforce max date for selection
     */
    private max;
    /**
     * Enforce min date for selection
     */
    private min;
    element: HTMLElement;
    noTimeDate: Date;
    rangeParams: DateRangeValidationParams;
    time: Time;
    timeDate: Date;
    outerString: string;
    /**
     * @internal
     * Fed by anj-locale
     */
    locale: string;
    language: string;
    dateFormat: DateFormat;
    injectedPropWatcher(): void;
    /**
     * Bool to display time in meridiem or military
     */
    meridiem: boolean;
    meridiemHandler(value: any): void;
    /**
     * The dateAdapter is the brains of the datetime-picker.
     */
    adapter: any;
    /**
     * The date picker id
     */
    inputId: string;
    /**
     * Passthrough, allows for targeted handling of nested overlays
     */
    nested: boolean;
    /**
     * 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 datetime
     */
    anjDatetimeChange: EventEmitter<DatetimeChangeEvent>;
    /**
     * Fires when the control has loaded
     */
    anjInputControlDidLoad: EventEmitter<void>;
    connectedCallback(): Promise<void>;
    componentDidLoad(): void;
    disconnectedCallback(): void;
    /**
     * open the date picker
     */
    open(): Promise<void>;
    /**
     * close the date picker
     */
    close(): Promise<void>;
    /**
     * handle changes from the angular directive
     */
    setInputValue(inputValue: any): Promise<void>;
    /**
     * formatter, passed to anj-input, currently a pass-through
     */
    inputFormatter(inputValue: string): Promise<string>;
    /**
     * comparator, passed to anj-input, which compares two datetime strings 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 getDisplayMeridiem;
    private getDisplayTime;
    private handleBlur;
    private handleDateChange;
    private handleTimeChange;
    private manageDateRepresentations;
    private parseInputString;
    private processDateInput;
    private processTimeInput;
    private bindOverlay;
    private bindCalendar;
    private unbindCalendar;
    private bindClock;
    private unbindClock;
    render(): any;
}
