import { ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { BehaviorSubject } from 'rxjs';
import { LogService } from '@ironsource/fusion-ui/services/log';
import { UniqueIdService } from '@ironsource/fusion-ui/services/unique-id';
import { DropdownSelectConfigurations } from '@ironsource/fusion-ui/components/dropdown-select/entities';
import { IconData } from '@ironsource/fusion-ui/components/icon/v1';
import { DaterangeCustomPreset, DaterangeOptions, DaterangePresets, DaterangeSelection } from '@ironsource/fusion-ui/components/daterange/entities';
import { CalendarComponentConfigurations } from '@ironsource/fusion-ui/components/calendar/common/base';
import { Day } from '@ironsource/fusion-ui/components/calendar/entities';
import { CalendarService } from '@ironsource/fusion-ui/components/calendar/common/base';
import { DaterangeService } from './daterange.service';
import { ApiBase } from '@ironsource/fusion-ui/components/api-base';
import { InputConfiguration } from '@ironsource/fusion-ui/components/input';
import * as i0 from "@angular/core";
export declare abstract class DaterangeBaseComponent extends ApiBase implements OnInit, OnDestroy, ControlValueAccessor {
    /** @internal */
    daterangeService: DaterangeService;
    private calendarService;
    private elemRef;
    private logService;
    private uniqueIdService;
    /** @internal */
    id: string;
    /** @internal */
    presetsHeaderTemplate: TemplateRef<any>;
    /** @internal */
    minDate: Date;
    /** @internal */
    maxDate: Date;
    /** @internal */
    extraParams: any;
    set options(value: DaterangeOptions);
    get options(): DaterangeOptions;
    /** @internal */
    closed: EventEmitter<any>;
    /** @internal */
    applied: EventEmitter<any>;
    /** @internal */
    daySelected: EventEmitter<DaterangeSelection>;
    /** @internal */
    overlay: ElementRef;
    /** @internal */
    chipContent: TemplateRef<any>;
    /** @internal */
    trigger: ElementRef;
    /** @internal */
    dropdownSelectConfigurations$: BehaviorSubject<DropdownSelectConfigurations>;
    /** @internal */
    pevIconName: IconData;
    /** @internal */
    nextIconName: IconData;
    /** @internal */
    isOpen$: BehaviorSubject<boolean>;
    /** @internal */
    error: string;
    /** @internal */
    currentMonths: Date[];
    /** @internal */
    defaultOptions: DaterangeOptions;
    /** @internal */
    selection: DaterangeSelection;
    /** @internal */
    currentSelectionFormatted: string;
    /** @internal */
    selectionStarted: Day;
    /** @internal */
    originalSelection: DaterangeSelection;
    /** @internal */
    currentPreset: DaterangePresets | DaterangeCustomPreset;
    /** @internal */
    overlayAlign$: BehaviorSubject<string>;
    /** @internal */
    selected$: BehaviorSubject<string>;
    /** @internal */
    defaultPlaceholder: string;
    /** @internal for time selector */
    fcHasTimeSelector: FormControl<boolean>;
    /** @internal */
    fcStartTime: FormControl<string>;
    /** @internal */
    fcEndTime: FormControl<string>;
    /** @internal */
    inputTimeOptions: InputConfiguration;
    protected daterangeOptions: DaterangeOptions;
    get isPresetsShown(): boolean;
    get isSingleDatePicker(): boolean;
    private originalMaxDate;
    private onDestroy$;
    constructor(
    /** @internal */
    daterangeService: DaterangeService, calendarService: CalendarService, elemRef: ElementRef, logService: LogService, uniqueIdService: UniqueIdService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    /** @internal */
    changeConfig(val: string): void;
    /** @internal */
    valueSelected(): import("rxjs").Observable<{
        value: string;
        isSelected: boolean;
    }>;
    /** @internal */
    open(): void;
    /** @internal */
    selectPreset(preset: any, cohort?: number): void;
    /** @internal */
    getCalendarConfigurations(month: Date): CalendarComponentConfigurations;
    /** @internal */
    toggle(): void;
    /** @internal */
    onOutsideClick(target: HTMLElement): void;
    /** @internal */
    apply(): void;
    /** @internal */
    close(): void;
    /** @internal */
    onMonthChange(direction: string): void;
    /** @internal */
    onSelectDay(day: Day): void;
    /** @internal */
    getCurrentSelectionFormatted(): string;
    /** @internal */
    onWriteValue(value: DaterangeSelection): void;
    /** @internal */
    setPlaceholder(configurations?: DropdownSelectConfigurations): void;
    private validateClickOutside;
    private calculateOverlayAlignPosition;
    private determinePreset;
    private initMonth;
    protected onOptionsChanges(): void;
    private onSelectStartDate;
    private onSelectEndDate;
    private setRangeDaysLimit;
    private clearRangeDaysLimit;
    private isTimeSelectorValid;
    setValueToPropagate(value: DaterangeSelection): DaterangeSelection;
    /** @internal */
    propagateChange: (_: DaterangeSelection) => void;
    /** @internal */
    writeValue(value: DaterangeSelection): void;
    /** @internal */
    registerOnChange(fn: any): void;
    /** @internal */
    registerOnTouched(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DaterangeBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DaterangeBaseComponent, never, never, { "id": { "alias": "id"; "required": false; }; "presetsHeaderTemplate": { "alias": "presetsHeaderTemplate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "extraParams": { "alias": "extraParams"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "closed": "closed"; "applied": "applied"; "daySelected": "daySelected"; }, never, never, false, never>;
}
