import { App, VNode } from "vue";
import { JSX } from "vue/jsx-runtime";
import { IResizeEvent } from "./resizeable/resize-event";
/** 自定义按钮结构 */
export interface ModalButton {
    name?: string;
    class: string;
    styles?: string;
    focusedByDefault?: boolean;
    disabled?: boolean;
    iconClass?: string;
    handle: ($event: MouseEvent, context: any) => any;
    text: string;
}
export interface ModalOptions {
    class?: string;
    title?: string;
    width?: number;
    height?: number;
    minWidth?: number;
    minHeight?: number;
    showButtons?: boolean;
    showHeader?: boolean;
    showFloatingClose?: boolean;
    content?: {
        render(): JSX.Element;
    };
    render?: (app: App) => JSX.Element;
    fitContent?: boolean;
    buttons?: ModalButton[];
    draggable?: boolean;
    dragHandle?: string | HTMLElement;
    resizeable?: boolean;
    showMaxButton?: boolean;
    showCloseButton?: boolean;
    beforeClose?: () => boolean;
    acceptCallback?: () => void;
    rejectCallback?: () => void;
    closedCallback?: ($event?: Event, from?: 'esc' | 'icon' | 'button') => void;
    openedCallback?: ($event?: Event) => void;
    resizeHandle?: (event: IResizeEvent) => void;
    stopMoveHandle?: (event?: MouseEvent) => void;
    enableEsc?: boolean;
    dialogType?: string;
    src?: string;
    host?: string | HTMLElement;
    maximized?: boolean;
}
export interface ModalFunctions {
    update: (options: ModalOptions) => void;
    destroy: () => void;
    modalRef: any;
    close: (modalRef?: any) => void;
    disableButtons: (buttonNames: string[], disabled?: boolean) => void;
}
export interface UseModal {
    FModalContextHolder: () => VNode;
}
