import { CSSProperties, DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { Key, VueNode } from '../_util/type';
import { NoticeProps } from './Notice';
export interface NoticeContent extends Omit<NoticeProps, 'prefixCls' | 'noticeKey' | 'onClose'> {
    prefixCls?: string;
    key?: Key;
    updateMark?: string;
    content?: string | ((arg: {
        prefixCls: string;
    }) => VueNode) | VueNode;
    onClose?: () => void;
    style?: CSSProperties;
    class?: string;
}
export type Placement = 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';
export interface OpenConfig extends NoticeProps {
    key: Key;
    placement?: Placement;
    content?: string | (() => VueNode) | VueNode;
    duration?: number | null;
}
export type NoticeFunc = (noticeProps: NoticeContent) => void;
export type HolderReadyCallback = (div: HTMLDivElement, noticeProps: NoticeProps & {
    key: Key;
}) => void;
export interface NotificationInstance {
    notice: NoticeFunc;
    removeNotice: (key: Key) => void;
    destroy: () => void;
    component: Notification;
}
export interface NotificationProps {
    prefixCls?: string;
    transitionName?: string;
    animation?: string | object;
    maxCount?: number;
    closeIcon?: any;
    hashId?: string;
}
declare const Notification: DefineComponent<{
    animation?: any;
    hashId?: any;
    prefixCls?: any;
    closeIcon?: any;
    transitionName?: any;
    maxCount?: any;
}, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{
    animation?: any;
    hashId?: any;
    prefixCls?: any;
    closeIcon?: any;
    transitionName?: any;
    maxCount?: any;
}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default Notification;
