import React, { ReactNode } from 'react';
import { Emitter, EventType } from 'mitt';
import { Application } from './Application';
export declare enum NoticeLevel {
    INFO = "info",
    WARNING = "warning",
    SUCCESS = "success",
    ERROR = "error"
}
export declare enum NoticeType {
    STATUS = "status",
    TOAST = "toast",
    NOTIFICATION = "notification",
    CUSTOM = "custom"
}
export declare enum NoticeDuration {
    Short = "SHORT"
}
export interface NoticeManagerContextProps {
    manager: NoticeManager;
}
export declare const NoticeManagerContext: React.Context<NoticeManagerContextProps>;
export declare const NoticeManagerProvider: ({ children }: {
    children: ReactNode;
}) => React.JSX.Element;
export declare const useNoticeManager: () => NoticeManagerContextProps;
export declare const useNoticeSub: (name: string, handler: (...args: any) => void) => void;
export declare class NoticeManager {
    private app;
    private ws;
    emitter: Emitter<Record<EventType, unknown>>;
    constructor(app: Application);
    currentStatus: string;
    currentStatusUpdatedAt: number;
    on(data: {
        type: NoticeType;
        title?: string;
        content: string;
        level: NoticeLevel;
        eventType?: string;
        event?: any;
    }): void;
    status(content: string, level: NoticeLevel, duration?: NoticeDuration): void;
    toast(content: string, level: NoticeLevel): void;
    notification(title: string, content: string, level: NoticeLevel): void;
}
