import { Observable } from 'rxjs';
import { AlertGroupData, DismissAlertStrategy, DynamicComponentAlert } from './dynamic-component-alert.model';
import { AlertType } from '../alert';
export declare class DynamicComponentAlertAggregator {
    anyAlertExists$: Observable<boolean>;
    /**
     * Array containing grouped alerts with data necessary to display alerts and whether alert group should be dismissible.
     */
    alertGroups: Array<{
        type: AlertType;
        value: AlertGroupData;
    }>;
    /**
     * Private Map of alerts data.
     */
    private aggregatedAlertsData;
    private anyAlertExistsSubject;
    constructor(alerts?: DynamicComponentAlert[]);
    /**
     * Adds alert to aggregator.
     *
     * @param {DynamicComponentAlert[]} alerts List of alerts that should be added to aggregator.
     *
     */
    addAlerts(...alerts: DynamicComponentAlert[]): void;
    /**
     * Remove alerts in group by provided alert type or removes all alerts when no param is provided.
     *
     * @param {AlertType} type Type of alerts group that should be removed.
     *
     */
    clear(type?: AlertType): void;
    /**
     * Sets possibility of alert to be dismissed in specific way.
     *
     * @param {AlertType} alertType Type of alerts for which the dismissal strategy should be set.
     * @param {dismissStrategy} dismissStrategy Type of dismissal strategy that will be set for the alert type.
     *
     */
    setAlertGroupDismissStrategy(alertType: AlertType, dismissStrategy: DismissAlertStrategy): void;
    /**
     * Removes alerts in group due to dismissal dismissStrategy and sets userDismissalChoice property.
     * If group has dismissal strategy declared as TEMPORARY_OR_PERMANENT, its userDismissalChoice property can be set to
     * REMIND_ALLOWED or REMIND_DISALLOWED depending on parameter.
     *
     * @param {AlertType} alertType Type of alerts group that should be dismissed.
     * @param {boolean} permanent Determines whether the dismissal of alerts of a given type is permanent.
     *
     */
    dismissAlertGroup(alertType: AlertType, isPermanent?: boolean): void;
    /**
     * Alert aggregator as a widget property should not be serialized and stored in database.
     */
    toJSON(): any;
    private initAlertsGroups;
    private setAlerts;
    private onDataChanged;
}
//# sourceMappingURL=dynamic-component-alert-aggregator.d.ts.map