import { ReactNode, ForwardRefExoticComponent, PropsWithChildren } from 'react';
import type { MouseEvent, CSSProperties } from 'react';
import { WebOverlayProps } from "../../../types";
import { BasicComponent } from "../../../utils/typings";
export type DialogConfigType = {
    prefixCls?: string;
    simple?: boolean;
};
export type DialogCloseIconPosition = 'top-right' | 'top-left' | 'bottom';
export type DialogFooterDirection = 'horizontal' | 'vertical';
export interface BaseContentProps extends BasicComponent {
    visible: boolean;
    title: ReactNode;
    header: ReactNode;
    footer: ReactNode;
    close: ReactNode;
    footerDirection: DialogFooterDirection;
}
export interface DialogWrapProps extends WebOverlayProps, Omit<BaseContentProps, 'onClick'> {
    visible: boolean;
    overlay: boolean;
    overlayStyle: CSSProperties;
    overlayClassName: string;
    onCancel: () => void;
    onClose: () => void;
    onOverlayClick: (e: MouseEvent) => boolean | void;
}
export interface BaseDialog extends DialogWrapProps {
    /**
    * 对话框的内容，适用于函数式调用
    */
    content: ReactNode
    /**
    * 确认按钮文案
    */
    confirmText: ReactNode
    /**
    * 取消按钮文案
    */
    cancelText: ReactNode
    confirmBadge: ReactNode;
    cancelBadge: ReactNode;
    /**
    * 是否隐藏确定按钮
    */
    hideConfirmButton: boolean
    /**
    * 是否隐藏取消按钮
    */
    hideCancelButton: boolean
    /**
    * 禁用确定按钮
    */
    disableConfirmButton: boolean
    /**
    * 关闭按钮位置
    */
    closeIconPosition: DialogCloseIconPosition
    /**
    * 关闭按钮
    */
    closeIcon: boolean | ReactNode
    /**
    * 关闭前回调
    */
    beforeClose: () => boolean
    /**
    * 取消前回调，点击取消时触发
    */
    beforeCancel: () => boolean
    /**
    * 确定按钮回调
    */
    onConfirm: (e?: MouseEvent<HTMLButtonElement>) => PromiseLike<any> | void
}
export type DialogReturnProps = {
    update: (newConfig: Partial<BaseDialog>) => void;
    close: () => void;
};
export interface DialogComponent extends ForwardRefExoticComponent<PropsWithChildren<Partial<BaseDialog>>> {
    confirm: (props: Partial<BaseDialog>) => DialogReturnProps;
    alert: (props: Partial<BaseDialog>) => DialogReturnProps;
    config: (config: DialogConfigType) => void;
    destroyAll: () => void;
}
export declare const destroyList: Array<() => void>;
