import { DoCheck, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';
import { MatDatepickerInputEvent } from '@angular/material/datepicker';
import { DateAdapter } from '@angular/material/core';
import { TranslateService } from '@ngx-translate/core';
import 'moment/min/locales';
import { LocaleService } from '@eui/core';
import { EuiDateRangeSelectorDates } from './models/eui-date-range-selector-dates.model';
import { EuiTimeRangepickerComponent } from './eui-time-range-picker/eui-time-range-picker.component';
import * as i0 from "@angular/core";
export declare class EuiDateRangeSelectorComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, DoCheck {
    selectedDates: EuiDateRangeSelectorDates;
    isInvalid: boolean;
    isTouched: boolean;
    startRangeFormControl: FormControl<any>;
    endRangeFormControl: FormControl<any>;
    /**
     * Event emitted when the first date is selected.
     */
    firstSelectedDate: EventEmitter<any>;
    /**
     * Event emitted when the second date is selected.
     */
    secondSelectedDate: EventEmitter<any>;
    get class(): string;
    e2eAttr: string;
    /**
     * Sets the minimum date that can be selected.
     */
    minDate: any;
    /**
     * Sets the maximum date that can be selected.
     */
    maxDate: any;
    /**
     * Sets the svg icon for the toggler button.
     * @default 'eui-calendar-outline'
     */
    togglerIconSvg: string;
    /**
     * Sets the label of the toggler button.
     * @type {string}
     */
    togglerLabel: string;
    /**
     * Sets the placeholder of the first input field.
     * @type {string}
     */
    firstInputPlaceholder: string;
    /**
     * Sets the placeholder of the second input field.
     * @type {string}
     */
    secondInputPlaceholder: string;
    /**
     * Sets the aria-label of the first input field.
     * @type {string}
     */
    firstInputAriaLabel: string;
    /**
     * Sets the aria-label of the second input field.
     * @type {string}
     */
    secondInputAriaLabel: string;
    /**
     * Sets the default start date value.
     */
    startDateDefaultValue: any;
    /**
     * Sets the default end date value.
     */
    endDateDefaultValue: any;
    /**
     * Sets the first comparison date range.
     */
    comparisonStart: any;
    /**
     * Sets the second comparison date range.
     */
    comparisonEnd: any;
    /**
     * Sets the starting view of the calendar.
     * @type {('month' | 'year' | 'multi-year')}
     * @default 'month'
     */
    startView: 'month' | 'year' | 'multi-year';
    /**
     * Sets a unique id for the first input field.
     * @default 'start-date-<uniqueId>'
     */
    startDateId: string;
    /**
     * Sets the step value for the hours in the time picker.
     * @default 1
     */
    stepHours: number;
    /**
     * Sets the step value for the minutes in the time picker.
     * @default 1
     */
    stepMinutes: number;
    /**
     * Sets the step value for the seconds in the time picker.
     * @default 1
     */
    stepSeconds: number;
    /**
     * Option to define a long date format.
     * @default false
     */
    islongDateFormat: boolean;
    /**
     * Option to enable the clearable button in the input field.
     * @default false
     */
    isClearable: boolean;
    /**
     * Option to enable the readonly state.
     * @default false
     */
    isReadOnly: boolean;
    /**
     * Option to enable the disabled state.
     * @default false
     */
    isDisabled: boolean;
    /**
     * Option to make the date range field responsive.
     * @default false
     */
    isResponsive: boolean;
    /**
     * Option to enable the time range picker.
     * @default false
     */
    isTimeRange: boolean;
    /**
     * Option to enable seconds in the time range picker.
     * @default false
     */
    hasSeconds: boolean;
    protected hasAriaRequiredAttribute: boolean;
    private destroy$;
    private portalHost;
    private portal;
    protected timeRangeInstance: EuiTimeRangepickerComponent;
    protected translateService: TranslateService;
    protected localeService: LocaleService<import("@eui/base").LocaleState>;
    protected adapter: DateAdapter<any, any>;
    protected control: NgControl;
    private injector;
    private appRef;
    constructor();
    ngOnInit(): void;
    ngDoCheck(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    /**
     * Method fired when the first date field changes.
     * @param e Event emitted when the first date changes.
     */
    onFirstDateChange(e: MatDatepickerInputEvent<any>): void;
    /**
     * Method fired when the second date field changes.
     * @param e Event emitted when the second date changes.
     */
    onSecondDateChange(e: MatDatepickerInputEvent<any>): void;
    /**
     * Method fired when the first date field is cleared.
     */
    onFirstDateClear(): void;
    /**
     * Method fired when the second date field is cleared.
     */
    onSecondDateClear(): void;
    writeValue(values: EuiDateRangeSelectorDates): void;
    /**
     * Sets the disabled state of the component based on the boolean value passed.
     * @param isDisabled - The boolean value indicating whether the component should be disabled or not.
     */
    setDisabledState?(isDisabled: boolean): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    /**
     * Creates an injector for the timepicker component.
     * @param data - The data to be passed to the timepicker component.
     * @return {Injector} - The created injector.
     * @protected
     */
    protected createInjector(data: any): Injector;
    /**
     * Fires when the picker opens.
     * @protected
     */
    protected onOpened(): void;
    /**
     * Fires then the time of the first date field changes.
     * @param e The event emitted when the time changes.
     * @protected
     */
    protected onStartTimeChange(e: string | Event): void;
    /**
     * Fires then the time of the second date field changes.
     * @param e The event emitted when the time changes.
     * @protected
     */
    protected onEndTimeChange(e: string | Event): void;
    /**
     * Extracts the time from the date input field.
     * @param e The event or string containing the time.
     * @return {hours: number, mins: number, secs: number} The extracted time.
     * @protected
     */
    protected extractTime(e: string | Event): {
        hours: number;
        mins: number;
        secs: number;
    };
    /**
     * Updates the start date time based on the provided hours, minutes, and seconds.
     * @param hours The hours to set.
     * @param mins The minutes to set.
     * @param secs The seconds to set.
     * @protected
     */
    protected updateStartDateTime(hours: number, mins: number, secs: number): void;
    /**
     * Updates the end date time based on the provided hours, minutes, and seconds.
     * @param hours The hours to set.
     * @param mins The minutes to set.
     * @param secs The seconds to set.
     * @protected
     */
    protected updateEndDateTime(hours: number, mins: number, secs: number): void;
    /**
     * Returns the class for the container based on the time range and hasSeconds conditions.
     * @return {string} The class for the container.
     * @protected
     */
    protected adaptContainerClasses(): string;
    private propagateChange;
    private propagateTouched;
    /**
     * Updates the `aria-required` attribute on the input element.
     * @param control The NgControl instance to check for required validators.
     * @private
     */
    private updateInputAriaRequiredAttribute;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiDateRangeSelectorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiDateRangeSelectorComponent, "eui-date-range-selector", never, { "e2eAttr": { "alias": "e2eAttr"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "togglerIconSvg": { "alias": "togglerIconSvg"; "required": false; }; "togglerLabel": { "alias": "togglerLabel"; "required": false; }; "firstInputPlaceholder": { "alias": "firstInputPlaceholder"; "required": false; }; "secondInputPlaceholder": { "alias": "secondInputPlaceholder"; "required": false; }; "firstInputAriaLabel": { "alias": "firstInputAriaLabel"; "required": false; }; "secondInputAriaLabel": { "alias": "secondInputAriaLabel"; "required": false; }; "startDateDefaultValue": { "alias": "startDateDefaultValue"; "required": false; }; "endDateDefaultValue": { "alias": "endDateDefaultValue"; "required": false; }; "comparisonStart": { "alias": "comparisonStart"; "required": false; }; "comparisonEnd": { "alias": "comparisonEnd"; "required": false; }; "startView": { "alias": "startView"; "required": false; }; "startDateId": { "alias": "startDateId"; "required": false; }; "stepHours": { "alias": "stepHours"; "required": false; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; }; "stepSeconds": { "alias": "stepSeconds"; "required": false; }; "islongDateFormat": { "alias": "islongDateFormat"; "required": false; }; "isClearable": { "alias": "isClearable"; "required": false; }; "isReadOnly": { "alias": "isReadOnly"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "isResponsive": { "alias": "isResponsive"; "required": false; }; "isTimeRange": { "alias": "isTimeRange"; "required": false; }; "hasSeconds": { "alias": "hasSeconds"; "required": false; }; }, { "firstSelectedDate": "firstSelectedDate"; "secondSelectedDate": "secondSelectedDate"; }, never, never, true, never>;
    static ngAcceptInputType_islongDateFormat: unknown;
    static ngAcceptInputType_isClearable: unknown;
    static ngAcceptInputType_isReadOnly: unknown;
    static ngAcceptInputType_isDisabled: unknown;
    static ngAcceptInputType_isResponsive: unknown;
    static ngAcceptInputType_isTimeRange: unknown;
    static ngAcceptInputType_hasSeconds: unknown;
}
//# sourceMappingURL=eui-date-range-selector.component.d.ts.map