import { OnDestroy } from '@angular/core';
import { Observable } from 'rxjs';
import { SdsViewTypeService } from '../layout/view-type.service';
import { SdsScreenMessage, SdsScreenMessageConfig, SdsScreenMessageGroupDefinitionProperty } from './screen-messages.model';
import * as i0 from "@angular/core";
export declare class SdsScreenMessagesService implements OnDestroy {
    private viewTypeService;
    private _config;
    private _groupedStack;
    private _groupedStackSubject;
    private _addMethod;
    private _destroySubject;
    constructor(viewTypeService: SdsViewTypeService, config: SdsScreenMessageConfig);
    ngOnDestroy(): void;
    /**
     * Extend configuration used by screen message service
     */
    extendConfig(config: SdsScreenMessageConfig): void;
    /**
     * Extend configuration for grouping of screen messages
     */
    extendGroupingConfig(message: SdsScreenMessage, definitions?: SdsScreenMessageGroupDefinitionProperty[], group?: any): void;
    /**
     * Get a list of current screen messages
     */
    get(): Observable<SdsScreenMessage[]>;
    /**
     * Hide particular screen message from a list
     */
    hide(item: SdsScreenMessage): void;
    /**
     * Show particular screen message in a list
     */
    show(item: SdsScreenMessage): void;
    /**
     * Add particular screen message to a list and group similar message if grouping configuration is provided
     */
    private group;
    /**
     * Check if particular screen message is in a list
     */
    private getItemIdx;
    /**
     * Check if there is any screen message in a list that belongs to particular group
     */
    private getGroupIdx;
    /**
     * Check if screen message should be grouped based on grouping configuration
     */
    private isGrouped;
    /**
     * Set screen message service configuration
     */
    private setConfig;
    /**
     * Add screen message to a list
     * In desktop/tablet view add message to top of a list, in mobiles to the end of a list
     *
     * @param item screen message to display
     * @param count number of similar screen message in a group
     * @param group name of group screen message belongs to
     */
    private setItem;
    static ɵfac: i0.ɵɵFactoryDeclaration<SdsScreenMessagesService, [null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SdsScreenMessagesService>;
}
