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",
    MODAL = "modal"
}
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;
}) => import("react/jsx-runtime").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;
        duration: null | number;
    }): void;
    status(content: string, level: NoticeLevel, duration?: NoticeDuration): void;
    toast(content: string, level: NoticeLevel, duration?: number): void;
    notification(title: string, content: string, level: NoticeLevel, duration?: null | number, placement?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'top' | 'bottom'): void;
    modal(title: string, content: string, level: NoticeLevel, duration?: null | number, options?: {
        destroyOnClose?: boolean;
        maskClosable?: boolean;
        okText?: string;
        onOk?: () => void;
        onCancel?: () => void;
    }): void;
}
