import { AfterContentInit, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';
import { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';
import { OwlDateTimeComponent } from './date-time-picker.component';
import { DateTimeAdapter } from './adapter/date-time-adapter.class';
import { OwlDateTimeFormats } from './adapter/date-time-format.class';
import { SelectMode } from './date-time.class';
export declare const OWL_DATETIME_VALUE_ACCESSOR: any;
export declare const OWL_DATETIME_VALIDATORS: any;
export declare class OwlDateTimeInputDirective<T> implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor, Validator {
    private elmRef;
    private renderer;
    private dateTimeAdapter;
    private dateTimeFormats;
    owlDateTime: OwlDateTimeComponent<T>;
    owlDateTimeFilter: (date: T | null) => boolean;
    private _dateTimeFilter;
    readonly dateTimeFilter: (date: T) => boolean;
    private _disabled;
    disabled: boolean;
    private _min;
    min: T | null;
    private _max;
    max: T | null;
    private _selectMode;
    selectMode: SelectMode;
    rangeSeparator: string;
    private _value;
    value: T | null;
    private _values;
    values: T[];
    dateTimeChange: EventEmitter<any>;
    dateTimeInput: EventEmitter<any>;
    readonly elementRef: ElementRef;
    readonly isInSingleMode: boolean;
    readonly isInRangeMode: boolean;
    dtPicker: OwlDateTimeComponent<T>;
    private dtPickerSub;
    private localeSub;
    private lastValueValid;
    private onModelChange;
    private onModelTouched;
    private validatorOnChange;
    private parseValidator;
    private minValidator;
    private maxValidator;
    private filterValidator;
    private rangeValidator;
    private validator;
    valueChange: EventEmitter<T | T[]>;
    disabledChange: EventEmitter<boolean>;
    readonly owlDateTimeInputAriaHaspopup: boolean;
    readonly owlDateTimeInputAriaOwns: string;
    readonly minIso8601: string;
    readonly maxIso8601: string;
    readonly owlDateTimeInputDisabled: boolean;
    constructor(elmRef: ElementRef, renderer: Renderer2, dateTimeAdapter: DateTimeAdapter<T>, dateTimeFormats: OwlDateTimeFormats);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    validate(c: AbstractControl): {
        [key: string]: any;
    };
    registerOnValidatorChange(fn: () => void): void;
    handleKeydownOnHost(event: KeyboardEvent): void;
    handleBlurOnHost(event: Event): void;
    handleInputOnHost(event: any): void;
    handleChangeOnHost(event: any): void;
    formatNativeInputValue(): void;
    private registerDateTimePicker;
    private getValidDate;
    private convertTimeStringToDateTimeString;
    private changeInputInSingleMode;
    private changeInputInRangeFromToMode;
    private changeInputInRangeMode;
    private isSameValue;
}
