/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import type React from "react";
import type { JsonApiErrorParsed } from "@openlens/json-api";
export type NotificationId = string | number;
export type NotificationMessage = string | React.ReactElement | React.ReactElement[] | JsonApiErrorParsed | Error;
export declare enum NotificationStatus {
    OK = "ok",
    ERROR = "error",
    INFO = "info"
}
export interface CreateNotificationOptions {
    id?: NotificationId;
    timeout?: number;
    onClose?(): void;
}
export interface Notification {
    id?: NotificationId;
    message: NotificationMessage;
    status?: NotificationStatus;
    timeout?: number;
    onClose?(): void;
}
export declare class NotificationsStore {
    notifications: import("mobx").IObservableArray<{
        message: NotificationMessage;
        status?: NotificationStatus | undefined;
        timeout?: number | undefined;
        onClose?: (() => void) | undefined;
        id: NotificationId;
    }>;
    protected autoHideTimers: Map<NotificationId, number>;
    constructor();
    getById(id: NotificationId): {
        message: NotificationMessage;
        status?: NotificationStatus | undefined;
        timeout?: number | undefined;
        onClose?: (() => void) | undefined;
        id: NotificationId;
    } | undefined;
    addAutoHideTimer(id: NotificationId): void;
    removeAutoHideTimer(id: NotificationId): void;
    add(rawNotification: Notification): () => void;
    remove(id: NotificationId): void;
}
