import { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { FormArray, FormBuilder, NgForm } from '@angular/forms';
import { AlarmService, IAlarm, IResultList } from '@c8y/client';
import { AlertService, OnBeforeSave } from '@c8y/ngx-components';
import { AlarmsViewService } from '@c8y/ngx-components/alarms';
import { TranslateService } from '@ngx-translate/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { AlarmListWidgetConfig, DATE_SELECTION, AlarmListRefreshOption } from '../alarm-list-widget.model';
import { AlarmWidgetService } from '../alarm-widget.service';
import { Interval } from '@c8y/ngx-components/interval-picker';
import * as i0 from "@angular/core";
export declare class AlarmListWidgetConfigComponent implements OnInit, OnChanges, OnBeforeSave, OnDestroy {
    private alarmListWidgetService;
    private alarmService;
    private alarmsViewService;
    private alertService;
    private form;
    private formBuilder;
    private translateService;
    config: AlarmListWidgetConfig;
    readonly REFRESH_INTERVAL_IN_MILLISECONDS: number[];
    readonly SEVERITY_LABELS: {
        readonly CRITICAL: "CRITICAL";
        readonly MAJOR: "MAJOR";
        readonly MINOR: "MINOR";
        readonly WARNING: "WARNING";
    };
    readonly STATUS_LABELS: {
        readonly ACKNOWLEDGED: "ACKNOWLEDGED";
        readonly CLEARED: "CLEARED";
        readonly ACTIVE: "ACTIVE";
    };
    readonly ACKNOWLEDGE_STATUS_VALUE: "ACKNOWLEDGED";
    readonly CLEARED_STATUS_VALUE: "CLEARED";
    readonly BELL_SLASH_ICON: "bell-slash";
    readonly BELL_ICON: "bell";
    readonly C8Y_ALERT_IDLE_ICON: "c8y-alert-idle";
    readonly ALARM_ORDER_LABELS: {
        readonly BY_ACTIVE: "By active status";
        readonly BY_DATE_ASCENDING: "By date (ascending)";
        readonly BY_DATE_DESCENDING: "By date (descending)";
        readonly BY_SEVERITY: "By severity";
    };
    readonly GLOBAL_INTERVAL_OPTION: AlarmListRefreshOption;
    alarms$: BehaviorSubject<IResultList<IAlarm> | null>;
    formGroup: ReturnType<AlarmListWidgetConfigComponent['createForm']>;
    isLoading: boolean;
    orderList: ("BY_ACTIVE" | "BY_DATE_ASCENDING" | "BY_DATE_DESCENDING" | "BY_SEVERITY")[];
    refreshTypePopoverMessage: string;
    refreshTypeTitle: string;
    severityList: string[];
    showDateFilter: boolean;
    DATE_SELECTION: typeof DATE_SELECTION;
    dateSelection: DATE_SELECTION | undefined;
    dateSelectionHelp: any;
    refreshOption: AlarmListRefreshOption;
    /**
     * Order does matter.
     */
    statusList: ("ACKNOWLEDGED" | "CLEARED" | "ACTIVE")[];
    private formChangesSubscription;
    constructor(alarmListWidgetService: AlarmWidgetService, alarmService: AlarmService, alarmsViewService: AlarmsViewService, alertService: AlertService, form: NgForm, formBuilder: FormBuilder, translateService: TranslateService);
    ngOnInit(): Promise<void>;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    onBeforeSave(config?: AlarmListWidgetConfig): boolean | Promise<boolean> | Observable<boolean>;
    onDateFilterChange(event: {
        selectedDates: [Date, Date];
        interval: Interval['id'];
    }): void;
    removeType(index: number): void;
    addType(): void;
    updateRefreshOption(): void;
    get types(): FormArray;
    dateSelectionChange(dateSelection: DATE_SELECTION): void;
    private filterEmptyTypes;
    private isContainingOnlyEmptyTypes;
    private getAlarms;
    private initializeForm;
    private createForm;
    private isAutorefershDisabled;
    private minSelectedCheckboxes;
    private initializeTypes;
    private initDateSelection;
    /**
     * Initializes and handles the form change subscription for the Alarm list preview at Widget's configuration.
     *
     * This method subscribes to form value changes with a debounce time of 500ms.
     * It compares the previous and current form values to determine if the changes are relevant.
     * If the only change is in the `isAutoRefreshEnabled` property, the change is ignored.
     */
    private handlePreviewSubscription;
    /**
     * Determines if the only changes between two `AlarmListWidgetConfig` objects are in the `isAutoRefreshEnabled` and `refreshInterval` properties.
     *
     * This method compares two configurations by omitting `isAutoRefreshEnabled` and `refreshInterval`.
     * It returns true if these are the only properties that differ between the previous and current configurations.
     * Note that `refreshInterval` is relevant only when the refresh type is set to an interval.
     *
     * @param previousConfig - The previous configuration of `AlarmListWidgetConfig`.
     * @param currentConfig - The current configuration of `AlarmListWidgetConfig`.
     * @returns `true` if the differences are confined to `isAutoRefreshEnabled` and `refreshInterval`, `false` otherwise.
     */
    private isOnlyAutoRefreshOrIntervalChanged;
    private updateConfigBasedOnRefreshOption;
    static ɵfac: i0.ɵɵFactoryDeclaration<AlarmListWidgetConfigComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AlarmListWidgetConfigComponent, "c8y-alarm-list-widget-config", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=alarm-list-widget-config.component.d.ts.map