import type { CSSProperties } from 'vue';
import type { Key } from '../_util/type';
import type { NoticeProps } from './Notice';
export type Placement = 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';
export type StackConfig = boolean | {
    /**
     * When number is greater than threshold, notifications will be stacked together.
     * @default 3
     */
    threshold?: number;
    /**
     * Offset when notifications are stacked together.
     * @default 8
     */
    offset?: number;
    /**
     * Spacing between each notification when expanded.
     */
    gap?: number;
};
export interface NoticeContent extends Omit<NoticeProps, 'prefixCls' | 'noticeKey' | 'onClose'> {
    prefixCls?: string;
    key?: Key;
    updateMark?: string;
    content?: any;
    onClose?: () => void;
    style?: CSSProperties;
    class?: String;
    placement?: Placement;
}
export type HolderReadyCallback = (div: HTMLDivElement, noticeProps: NoticeProps & {
    key: Key;
}) => void;
export type NotificationState = {
    notice: NoticeContent & {
        userPassKey?: Key;
    };
    holderCallback?: HolderReadyCallback;
}[];
