import React, { PropsWithChildren } from "react";
import { NotificationTheme as Theme } from "../../theme/types";
export declare enum Severity {
    Error = "error",
    Warning = "warning",
    Message = "success"
}
export interface Notification {
    content: React.ReactNode;
    severity?: Severity;
    href?: string;
    onClick?: () => void;
    timeout?: number;
    visible?: boolean;
    id?: number;
    isInfinite?: boolean;
}
interface NotificationsProps {
    theme: Theme;
    decode?: (message: string, lang?: string) => string;
}
interface NotificationsState {
    notifications: Notification[];
    timeout: number;
}
interface NotificationsContext extends NotificationsState {
    notify: (notification: Notification) => void;
    sendError: (notification: Notification) => void;
    sendMessage: (notification: Notification) => void;
    hide: (notification: Notification) => void;
}
export declare const useNotifications: () => NotificationsContext;
export declare const NotificationsCtx: React.Context<NotificationsContext>;
export declare class NotificationsProvider extends React.Component<PropsWithChildren<NotificationsProps>, NotificationsState> {
    state: NotificationsState;
    private changeNumber;
    private latestHide;
    private notify;
    private sendError;
    private sendMessage;
    private hide;
    private remove;
    private close;
    render(): import("react/jsx-runtime").JSX.Element;
}
export {};
