import { EventEmitter, TemplateRef } from '@angular/core';
import { KbqToastData, KbqToastStyle } from '@koobiq/components/toast';
import { BehaviorSubject, Observable } from 'rxjs';
import * as i0 from "@angular/core";
export interface KbqNotificationItem extends Omit<KbqToastData, 'closeButton'> {
    id?: string;
    title?: string | TemplateRef<unknown>;
    style?: string | KbqToastStyle;
    icon?: boolean | TemplateRef<unknown>;
    iconClass?: string;
    caption?: string | TemplateRef<unknown>;
    content?: string | TemplateRef<unknown>;
    actions?: TemplateRef<unknown>;
    date: string;
    read?: boolean;
}
export declare const maxUnreadItemsLength = 99;
type KbqNotificationsGroup = {
    title: string;
    items: KbqNotificationItem[];
};
export declare class KbqNotificationCenterService {
    /** @docs-private */
    private readonly adapter;
    /** @docs-private */
    private readonly formatter;
    /** @docs-private */
    private readonly toastService;
    /** @docs-private */
    readonly silentMode: BehaviorSubject<boolean>;
    /** @docs-private */
    readonly loadingMode: BehaviorSubject<boolean>;
    /** @docs-private */
    readonly errorMode: BehaviorSubject<boolean>;
    /** @docs-private */
    readonly onRead: BehaviorSubject<KbqNotificationItem | null>;
    /** Triggers an event when the user presses the reload button. */
    readonly onReload: EventEmitter<void>;
    private originalItems;
    /** @docs-private */
    readonly groupedItems: Observable<KbqNotificationsGroup[]>;
    /** Emits an event whenever the changes. */
    readonly changes: Observable<boolean | KbqNotificationItem | KbqNotificationItem[] | null>;
    /** Notification items */
    get items(): KbqNotificationItem[];
    set items(values: KbqNotificationItem[]);
    /** Number of unread notifications */
    get unreadItemsCounter(): Observable<string>;
    /** true if there are no notifications. */
    get isEmpty(): boolean;
    constructor();
    /** Set silent mode */
    setSilentMode(value: boolean): void;
    /** Set loading mode */
    setLoadingMode(value: boolean): void;
    /** Set error mode */
    setErrorMode(value: boolean): void;
    /** Push new notification item in center */
    push(item: KbqNotificationItem): void;
    /** Remove notification item */
    remove(removedItem: KbqNotificationItem): void;
    /** Remove group of notification items */
    removeGroup(group: KbqNotificationsGroup): void;
    /** Remove all notification items */
    removeAll(): void;
    private makeGroup;
    private setIds;
    private setReadState;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqNotificationCenterService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<KbqNotificationCenterService>;
}
export {};
