import { AfterViewInit, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { FormBuilder } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { aggregationType } from '@c8y/client';
import { Interval } from '@c8y/ngx-components/interval-picker';
import { BsDropdownDirective } from 'ngx-bootstrap/dropdown';
import { ActionBarService } from '../../action-bar';
import { AggregationService } from '../../aggregation/aggregation.service';
import { DashboardChildActionComponent } from '../dashboard-child-action.component';
import { DashboardChildComponent } from '../dashboard-child.component';
import { WidgetsDashboardEventService } from '../widgets-dashboard-event.service';
import { WidgetTimeContextDateRangeService } from './widget-time-context-date-range.service';
import { WidgetTimeContextHelperService } from './widget-time-context-helper.service';
import { WidgetTimeContextQueryService } from './widget-time-context-query.service';
import { WidgetDisplaySettings } from './widget-time-context.model';
import * as i0 from "@angular/core";
export declare class WidgetTimeContextComponent implements OnInit, OnDestroy, AfterViewInit {
    private widgetEventService;
    private dashboardChild;
    private formBuilder;
    private queryService;
    private helperService;
    private router;
    private actionBarService;
    private aggregationService;
    private route;
    private widgetTimeContextDateRangeService;
    readonly INTERVAL_TITLES: Record<"custom" | "hours" | "minutes" | "days" | "weeks" | "months", string>;
    readonly DATE_FORMAT = "short";
    /**
     * Indicates if the component can decouple or not.
     */
    canDecouple: boolean;
    displaySettings: WidgetDisplaySettings;
    hidden: boolean;
    /**
     * Emits each change as an array of dates [from, to].
     */
    dateContextChange: EventEmitter<any>;
    /**
     * @ignore
     */
    action: DashboardChildActionComponent;
    dropdown: BsDropdownDirective;
    /**
     * Indicates if the time context is bound to the global scope.
     */
    isCoupled: boolean;
    decoupleTimeContextLabel: "Decouple time context";
    coupleTimeContextLabel: "Couple time context";
    form: ReturnType<WidgetTimeContextComponent['createForm']>;
    actionBarInGroupPriority: number;
    disabledAggregations: Partial<Record<aggregationType, boolean>>;
    isAutoRefreshEnabled: boolean;
    sliderChange: boolean;
    readonly DEFAULT_INTERVAL: Interval['id'];
    readonly ACTION_BAR_PRIORITY = 7;
    readonly ACTION_BAR_GROUP_ID = "timecontext";
    readonly REALTIME_INTERVAL = 1000;
    private subscription;
    private destroy$;
    private navigationInProgress;
    private realtimeSubscription;
    /**
     * @ignore only DI.
     */
    constructor(widgetEventService: WidgetsDashboardEventService, dashboardChild: DashboardChildComponent, formBuilder: FormBuilder, queryService: WidgetTimeContextQueryService, helperService: WidgetTimeContextHelperService, router: Router, actionBarService: ActionBarService, aggregationService: AggregationService, route: ActivatedRoute, widgetTimeContextDateRangeService: WidgetTimeContextDateRangeService);
    /**
     * @ignore Subscribing to the global context.
     */
    ngOnInit(): void;
    /**
     * @ignore Adding custom actions.
     */
    ngAfterViewInit(): void;
    /**
     * Toggles the coupling on or off.
     */
    toggleDecoupling(): void;
    /**
     * Applies form value to global or local date context.
     */
    applyDatetimeContext(): void;
    /**
     * Resets form to initial value and update context.
     */
    reset(): void;
    /**
     * @ignore unsubscribing.
     */
    ngOnDestroy(): void;
    private subscribeToIntervalChange;
    private subscribeToRealtimeChange;
    private subscribeToAggregationChange;
    private createForm;
    /**
     * Fires a new WidgetChangeEvent either on the local change emitter or on the global one.
     * @param widgetTimeContextState New widget time context value.*/
    private update;
    private subscribeToGlobalContext;
    private updateFormValues;
    private unsubscribeFromGlobalContext;
    private getInitialContext;
    private subscribeToQueryParamsChange;
    private clearQueryParamsIfNeeded;
    private subscribeToRouterEvents;
    private getDefaultContext;
    private startRealtime;
    private handleAutoRefreshChange;
    private onDisableAutoRefresh;
    private disableDateRangeAndAggregation;
    private enableDateRangeAndAggregation;
    private stopRealtime;
    private onRealtimeValueChange;
    private calculateAggregation;
    static ɵfac: i0.ɵɵFactoryDeclaration<WidgetTimeContextComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<WidgetTimeContextComponent, "c8y-widget-time-context", never, { "canDecouple": { "alias": "canDecouple"; "required": false; }; "displaySettings": { "alias": "displaySettings"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; }, { "dateContextChange": "dateContextChange"; }, never, never, true, never>;
}
//# sourceMappingURL=widget-time-context.component.d.ts.map