import type { CSSProperties } from 'vue'; import type { Key, VueNode } from '../_util/type'; export type NotificationPlacement = | 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight'; export type IconType = 'success' | 'info' | 'error' | 'warning'; export interface ArgsProps { message: (() => VueNode) | VueNode; description?: (() => VueNode) | VueNode; btn?: (() => VueNode) | VueNode; key?: Key; onClose?: () => void; duration?: number | null; icon?: (() => VueNode) | VueNode; placement?: NotificationPlacement; style?: CSSProperties; class?: string; readonly type?: IconType; onClick?: () => void; closeIcon?: (() => VueNode) | VueNode; } type StaticFn = (args: ArgsProps) => void; export interface NotificationInstance { success: StaticFn; error: StaticFn; info: StaticFn; warning: StaticFn; open: StaticFn; destroy(key?: Key): void; } export interface GlobalConfigProps { top?: number | string; bottom?: number | string; duration?: number; prefixCls?: string; getContainer?: () => HTMLElement; placement?: NotificationPlacement; closeIcon?: (() => VueNode) | VueNode; rtl?: boolean; maxCount?: number; } export interface NotificationConfig { top?: number | string; bottom?: number | string; prefixCls?: string; getContainer?: () => HTMLElement; placement?: NotificationPlacement; maxCount?: number; rtl?: boolean; }