import { BreakpointObserver } from '@angular/cdk/layout';
import { ElementRef, Injector, OnDestroy, OnInit } from '@angular/core';
import { AbstractControl, FormGroup, 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 { 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 mediaSubscription: Subscription;
    protected onLanguageChangeSubscription: Subscription;
    placeholderStartDay: string;
    placeholderEndDay: string;
    constructor(elRef: ElementRef, injector: Injector, momentDateAdapter: DateAdapter<OntimizeMomentDateAdapter>, breakpointObserver: BreakpointObserver);
    ngOnInit(): void;
    subscribeToMediaChanges(): void;
    open(): void;
    resolveValidators(): ValidatorFn[];
    isObjectDataRangeNull(objectValue: any): boolean;
    protected rangeDateValidator(control: AbstractControl): ValidationErrors;
    protected minDateValidator(control: AbstractControl): ValidationErrors;
    protected maxDateValidator(control: AbstractControl): ValidationErrors;
    protected parseDateValidator(control: AbstractControl): 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, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ODateRangeInputComponent, "o-daterange-input", never, { "separator": { "alias": "separator"; "required": false; }; "olocale": { "alias": "locale"; "required": false; }; "startKey": { "alias": "startKey"; "required": false; }; "endKey": { "alias": "endKey"; "required": false; }; "valueType": { "alias": "value-type"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "placeholderStartDay": { "alias": "placeholder-startday"; "required": false; }; "placeholderEndDay": { "alias": "placeholder-endday"; "required": false; }; "oformat": { "alias": "format"; "required": false; }; "oStartView": { "alias": "start-view"; "required": false; }; "oMinDate": { "alias": "min"; "required": false; }; "oMaxDate": { "alias": "max"; "required": false; }; "oTouchUi": { "alias": "touch-ui"; "required": false; }; "oStartAt": { "alias": "start-at"; "required": false; }; "filterDate": { "alias": "filter-date"; "required": false; }; "textInputEnabled": { "alias": "text-input-enabled"; "required": false; }; "dateClass": { "alias": "date-class"; "required": false; }; }, { "onChange": "onChange"; "onValueChange": "onValueChange"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, never, never, true, never>;
}
