import { TNoopDefine } from '@flatbiz/utils';
import { FormInstance } from 'antd';
import { CSSProperties, ReactElement } from 'react';

export type DialogDragModalProps = {
	/** 相同的modalKey，最多只有一个弹起状态 */
	modalKey?: string;
	className?: string;
	style?: CSSProperties;
	styles?: {
		header?: CSSProperties;
		body?: CSSProperties;
		footer?: CSSProperties;
	};
	width?: number;
	bodyHeight?: number;
	/** 触发弹起点击事件event，用于计算鼠标位置 */
	event?: React.MouseEvent<HTMLElement>;
	/** 定义弹出层距离触发点的x轴偏移量 */
	xOffset?: number;
	title?: string;
	okText?: string | ReactElement;
	cancelText?: string | ReactElement;
	okHidden?: boolean;
	cancelHidden?: boolean;
	onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
	onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
	content: string | ReactElement | ((form: FormInstance, operate: {
		onClose: TNoopDefine;
	}) => ReactElement);
	/** 覆盖当前footer，自定义操作按钮 */
	footer?: null | ((form: FormInstance, operate: {
		onClose: TNoopDefine;
	}) => ReactElement);
	/** 当前footer操作按钮，左侧扩展 */
	footerOperateBeforeRender?: (form: FormInstance, operate: {
		onClose: TNoopDefine;
	}) => ReactElement;
	/** 当前footer操作按钮，右侧扩展 */
	footerOperateAfterRender?: (form: FormInstance, operate: {
		onClose: TNoopDefine;
	}) => ReactElement;
};
/**
 * 可移动弹框
 * ```
 * 1. 设置 event 后，弹起位置受鼠标点击位置控制
 * 2. 相同的modalKey，最多只有一个弹起状态
 * ```
 */
export declare const dialogDragModal: {
	open: (props: DialogDragModalProps) => {
		close: () => void;
	} | undefined;
	/**
	 * ```
	 * 1. 关闭最新弹框，如果有多个弹框只能关闭最后一个
	 * 2. 多个弹框主动关闭，只能使用 dialogDrawer.open()返回值中的close
	 * ```
	 */
	close: (modalKey?: string) => void;
};

export {};
