import { VuexModule } from "vuex-module-decorators";
import { TypesCount } from "../types/TypesCount";
import { NotificationCode, NotificationEvent } from "../types/NotificationEvent";
export default class NotificationsModule extends VuexModule {
    clientUid: string;
    isLoading: boolean;
    notifications: NotificationEvent[];
    popupNotifications: NotificationEvent[];
    currentCodes: NotificationCode[];
    typesCount: TypesCount;
    excludedCodes: string[];
    excludedPopupCodes: string[];
    isInitialisedWebsocket: boolean;
    get codes(): string[];
    get getCountByCode(): (code: NotificationCode) => number;
    get totalCount(): number;
    setCurrentCodes(codes: NotificationCode[]): void;
    toggleExcludeType(type: string): void;
    toggleExcludePopupType(type: string): void;
    setInitializeWebsocket(): void;
    setExcludedCodes(types: string[]): void;
    setExcludedPopupCodes(types: string[]): void;
    setClientUid(value: string): void;
    setTypesCount(typesCount: TypesCount): void;
    setNotifications(notifications: NotificationEvent[]): void;
    setIsLoading(value: boolean): void;
    addNotification(notification: NotificationEvent): void;
    removePopupNotification(notificationId: number): void;
    deleteNotification(notificationId: number): void;
    clearNotifications(): void;
    loadTypesCount(): Promise<void>;
    loadNotifications(): Promise<void>;
    loadNotificationsOnScroll(): Promise<NotificationEvent[]>;
    closeNotification(notificationId: number): Promise<import("axios").AxiosResponse<any>>;
    closeAllNotifications(): Promise<void>;
    initWebsocket(userId: string): Promise<void>;
}
