import { ElementRef, Injector, OnDestroy, OnInit } from '@angular/core';
import { MediaObserver } from '@angular/flex-layout';
import { DateAdapter } from '@angular/material/core';
import { MatDatepicker, MatDatepickerInput, MatDatepickerInputEvent } from '@angular/material/datepicker';
import { Subscription } from 'rxjs';
import { OntimizeMomentDateAdapter } from '../../../shared/material/date/ontimize-moment-date-adapter';
import { DateCustomClassFunction } from '../../../types/date-custom-class.type';
import { DateFilterFunction } from '../../../types/date-filter-function.type';
import { FormValueOptions } from '../../../types/form-value-options.type';
import { ODateValueType } from '../../../types/o-date-value.type';
import { OFormComponent } from '../../form/o-form.component';
import { OFormDataComponent } from '../../o-form-data-component.class';
import { OFormControl } from '../o-form-control.class';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_DATE_INPUT: string[];
export declare class ODateInputComponent extends OFormDataComponent implements OnDestroy, OnInit {
    textInputEnabled: boolean;
    protected _oformat: string;
    protected olocale: string;
    protected updateLocaleOnChange: boolean;
    protected oStartView: 'month' | 'year';
    set oMinDate(value: string);
    set oMaxDate(value: string);
    protected oTouchUi: boolean;
    protected oStartAt: string;
    protected _filterDate: DateFilterFunction;
    protected _dateClass: DateCustomClassFunction;
    protected _valueType: ODateValueType;
    protected _minDateString: string;
    protected _maxDateString: string;
    protected media: MediaObserver;
    protected mediaSubscription: Subscription;
    protected onLanguageChangeSubscription: Subscription;
    protected dateValue: Date;
    datepicker: MatDatepicker<Date>;
    datepickerInput: MatDatepickerInput<Date>;
    private matInputRef;
    private momentSrv;
    private momentDateAdapter;
    constructor(form: OFormComponent, dateAdapter: DateAdapter<OntimizeMomentDateAdapter>, elRef: ElementRef, injector: Injector);
    ngOnInit(): void;
    subscribeToMediaChanges(): void;
    ngOnDestroy(): void;
    getValueAsDate(): any;
    getValue(): any;
    get showClearButton(): boolean;
    open(): void;
    clearValue(options?: FormValueOptions, setDirty?: boolean): void;
    onChangeEvent(event: MatDatepickerInputEvent<any>): void;
    onClickInput(e: Event): void;
    get filterDate(): DateFilterFunction;
    set filterDate(val: DateFilterFunction);
    get dateClass(): DateCustomClassFunction;
    set dateClass(val: DateCustomClassFunction);
    get oformat(): string;
    set oformat(val: string);
    get minDateString(): string;
    set minDateString(val: string);
    get maxDateString(): string;
    set maxDateString(val: string);
    get touchUi(): boolean;
    set touchUi(val: boolean);
    protected ensureODateValueType(val: any): void;
    protected setFormValue(val: any, options?: FormValueOptions, setDirty?: boolean): void;
    set valueType(val: any);
    get valueType(): any;
    createFormControl(cfg: any, validators: any): OFormControl;
    protected getValueAsMoment(val: any): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<ODateInputComponent, [{ optional: true; }, null, null, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ODateInputComponent, "o-date-input", never, { "valueType": "value-type"; "oformat": "format"; "olocale": "locale"; "oStartView": "start-view"; "oMinDate": "min"; "oMaxDate": "max"; "oTouchUi": "touch-ui"; "oStartAt": "start-at"; "filterDate": "filter-date"; "textInputEnabled": "text-input-enabled"; "dateClass": "date-class"; }, {}, never, never, false, never>;
}
