import { CSSProperties, Key, PureComponent, ReactNode } from 'react';
import PropTypes from 'prop-types';
import { NotificationInterface } from 'choerodon-ui/shared/notification-manager';
import { NoticeProps } from './Notice';
export declare function newNotificationInstance(properties: NotificationProps & {
    getContainer?: (() => HTMLElement) | undefined;
}, callback: (api: NotificationInterface) => void): void;
export interface NotificationProps {
    prefixCls?: string;
    className?: string;
    transitionName?: string;
    animation?: string;
    style?: CSSProperties;
    contentClassName?: string;
    closeIcon?: ReactNode;
    maxCount?: number;
    foldCount?: number;
}
export interface NotificationState {
    notices: NoticeProps[];
    scrollHeight: string | number;
    totalHeight: number;
    offset: number;
}
export default class Notification extends PureComponent<NotificationProps, NotificationState> {
    static propTypes: {
        prefixCls: PropTypes.Requireable<string>;
        transitionName: PropTypes.Requireable<string>;
        animation: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        foldCount: PropTypes.Requireable<number>;
        closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        contentClassName: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        prefixCls: string;
        animation: string;
        style: {
            top: number;
            left: string;
        };
    };
    static newInstance: typeof newNotificationInstance;
    scrollRef: HTMLDivElement | null;
    scrollEvent?: any;
    isRemove: boolean;
    state: NotificationState;
    dispose(): void;
    componentWillUnmount(): void;
    getTransitionName(): string | undefined;
    onAnimateEnd: () => void;
    add(notice: NoticeProps): void;
    remove(key: Key): void;
    clearNotices: () => void;
    handleNoticeClose: (eventKey: any) => void;
    saveScrollRef: (dom: any) => void;
    render(): JSX.Element;
}
