import { BreakpointObserver } from '@angular/cdk/layout';
import { ElementRef, Injector, OnDestroy, OnInit } from '@angular/core';
import { MediaObserver } from '@angular/flex-layout';
import { FormGroup, UntypedFormControl, ValidationErrors, ValidatorFn } from '@angular/forms';
import { DateAdapter } from '@angular/material/core';
import { MatDatepickerInputEvent, MatDateRangeInput, MatDateRangePicker } from '@angular/material/datepicker';
import { Subscription } from 'rxjs';
import { OntimizeMomentDateAdapter } from '../../../shared';
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 { DateCustomClassFunction } from '../../../types/date-custom-class.type';
import * as i0 from "@angular/core";
export declare const DEFAULT_OUTPUTS_O_DATERANGE_INPUT: string[];
export declare const DEFAULT_INPUTS_O_DATERANGE_INPUT: string[];
export declare class ODateRangeInputComponent extends OFormDataComponent implements OnDestroy, OnInit {
    protected momentDateAdapter: DateAdapter<OntimizeMomentDateAdapter>;
    protected breakpointObserver: BreakpointObserver;
    picker: MatDateRangePicker<Date>;
    textInputEnabled: boolean;
    oTouchUi: boolean;
    dateRangeInput: MatDateRangeInput<Date>;
    mode: 'mobile' | 'desktop' | 'auto';
    startDateValue: Date;
    endDateValue: Date;
    range: FormGroup<{
        [x: string]: OFormControl;
    }>;
    protected _dateClass: DateCustomClassFunction;
    get dateClass(): DateCustomClassFunction;
    set dateClass(val: DateCustomClassFunction);
    protected _oMinDate: Date;
    set oMinDate(value: any);
    get oMinDate(): any;
    protected _oMaxDate: Date;
    set oMaxDate(value: any);
    get oMaxDate(): any;
    protected _startKey: string;
    get startKey(): string;
    set startKey(value: string);
    protected _endKey: string;
    get endKey(): string;
    set endKey(value: string);
    protected _valueType: ODateValueType;
    separator: string;
    get showClearButton(): boolean;
    get touchUi(): boolean;
    set touchUi(val: boolean);
    isMobileMode(): boolean;
    isDesktopMode(): boolean;
    oformat: string;
    protected olocale: string;
    private momentSrv;
    protected media: MediaObserver;
    protected mediaSubscription: Subscription;
    protected onLanguageChangeSubscription: Subscription;
    placeholderStartDay: string;
    placeholderEndDay: string;
    constructor(form: OFormComponent, elRef: ElementRef, injector: Injector, momentDateAdapter: DateAdapter<OntimizeMomentDateAdapter>, breakpointObserver: BreakpointObserver);
    ngOnInit(): void;
    subscribeToMediaChanges(): void;
    open(): void;
    resolveValidators(): ValidatorFn[];
    isObjectDataRangeNull(objectValue: any): boolean;
    protected rangeDateValidator(control: UntypedFormControl): ValidationErrors;
    protected minDateValidator(control: UntypedFormControl): ValidationErrors;
    protected maxDateValidator(control: UntypedFormControl): ValidationErrors;
    protected parseDateValidator(control: UntypedFormControl): ValidationErrors;
    set valueType(val: any);
    get valueType(): any;
    ngOnDestroy(): void;
    protected setFormValue(val: any, options?: FormValueOptions, setDirty?: boolean): void;
    protected ensureODateValueType(val: any): any;
    protected convertToDate(val: any): Date | null;
    onChangeEvent(event: MatDatepickerInputEvent<Date>): void;
    onClickInput(e: Event): void;
    onClickClearValue(event: Event): void;
    protected markFormGroupTouched(): void;
    protected getValueAsMoment(val: any): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<ODateRangeInputComponent, [{ optional: true; }, null, null, null, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ODateRangeInputComponent, "o-daterange-input", never, { "separator": "separator"; "olocale": "locale"; "startKey": "startKey"; "endKey": "endKey"; "valueType": "value-type"; "mode": "mode"; "placeholderStartDay": "placeholder-startday"; "placeholderEndDay": "placeholder-endday"; "oformat": "format"; "oStartView": "start-view"; "oMinDate": "min"; "oMaxDate": "max"; "oTouchUi": "touch-ui"; "oStartAt": "start-at"; "filterDate": "filter-date"; "textInputEnabled": "text-input-enabled"; "dateClass": "date-class"; }, { "onChange": "onChange"; "onValueChange": "onValueChange"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, never, never, false, never>;
}
