import type { AttachNode, LNode } from '../../common';
export interface TypeNotificationProps {
    closeBtn?: string | boolean | LNode;
    content?: string | LNode;
    default?: string | LNode;
    duration?: number;
    footer?: string | LNode;
    icon?: boolean | LNode;
    theme?: NotificationThemeList;
    title?: string | LNode;
    onCloseBtnClick?: (context: {
        e: MouseEvent;
    }) => void;
    onDurationEnd?: () => void;
}
export interface NotificationOptions extends TypeNotificationProps {
    attach?: AttachNode;
    offset?: Array<string | number>;
    placement?: NotificationPlacementList;
    zIndex?: number;
}
export type NotificationThemeList = 'info' | 'success' | 'warning' | 'error';
export type NotificationPlacementList = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
export interface NotificationInstance {
    close: () => void;
}
export type NotificationMethod = (theme: NotificationThemeList, options: NotificationOptions) => Promise<NotificationInstance>;
export type NotificationInfoOptions = Omit<NotificationOptions, 'theme'>;
export type NotificationInfoMethod = (options: NotificationInfoOptions) => Promise<NotificationInstance>;
export type NotificationWarningMethod = (options: NotificationInfoOptions) => Promise<NotificationInstance>;
export type NotificationErrorMethod = (options: NotificationInfoOptions) => Promise<NotificationInstance>;
export type NotificationSuccessMethod = (options: NotificationInfoOptions) => Promise<NotificationInstance>;
export type NotificationCloseMethod = (options: Promise<NotificationInstance>) => void;
export type NotificationCloseAllMethod = () => void;
