import { VNodeChild, Component } from 'vue';
import { DialogCloseReason, DialogProps, DialogBeforeCloseFn, DialogTransition } from './dialog.js';
import { DialogAlertOptions, DialogConfirmOptions, DialogPromptOptions, DialogServiceAction, DialogServiceHandle, DialogServiceOpenOptions, DialogServiceResult, DialogServiceUpdateOptions, DialogServiceFooterContext, DialogServiceActionContext, DialogPromptValidator } from './dialog-service.js';
import { ButtonProps } from '../../index.js';
type DialogServiceMode = "open" | "alert" | "confirm" | "prompt";
export interface DialogServiceEntry {
    id: string;
    mode: DialogServiceMode;
    title: string;
    visible: boolean;
    dialogProps?: Partial<DialogProps>;
    message?: string;
    render?: () => VNodeChild;
    component?: DialogServiceOpenOptions["component"];
    componentProps?: Record<string, unknown>;
    footerRender?: DialogServiceOpenOptions["footerRender"];
    showCancelButton: boolean;
    confirmButtonText: string;
    cancelButtonText: string;
    confirmButtonProps?: DialogServiceOpenOptions["confirmButtonProps"];
    cancelButtonProps?: DialogServiceOpenOptions["cancelButtonProps"];
    beforeConfirm?: DialogServiceOpenOptions["beforeConfirm"];
    beforeCancel?: DialogServiceOpenOptions["beforeCancel"];
    pendingAction: DialogServiceAction;
    confirming: boolean;
    cancelling: boolean;
    promptValue: string;
    promptError: string;
    inputPlaceholder: string;
    inputType: "text" | "textarea" | "password";
    inputProps: Record<string, unknown>;
    inputValidator?: DialogPromptOptions["inputValidator"];
    result: Promise<DialogServiceResult>;
    resolveResult: (result: DialogServiceResult) => void;
}
export interface DialogServiceState {
    current: DialogServiceEntry | null;
    queue: DialogServiceEntry[];
}
export declare const dialogServiceState: DialogServiceState;
export declare function createDialogServiceHandle(id: string, result: Promise<DialogServiceResult>): DialogServiceHandle;
export declare function enqueueDialogServiceEntry(mode: DialogServiceMode, options: DialogServiceOpenOptions | DialogAlertOptions | DialogConfirmOptions | DialogPromptOptions): {
    id: string;
    mode: DialogServiceMode;
    title: string;
    visible: true;
    dialogProps: {
        modelValue?: boolean | undefined;
        title?: string | undefined;
        appendToBody?: boolean | undefined;
        appendTo?: (string | HTMLElement) | undefined;
        beforeClose?: DialogBeforeCloseFn | undefined;
        destroyOnClose?: boolean | undefined;
        closeOnClickModal?: boolean | undefined;
        closeOnPressEscape?: boolean | undefined;
        lockScroll?: boolean | undefined;
        modal?: boolean | undefined;
        modalPenetrable?: boolean | undefined;
        openDelay?: number | undefined;
        closeDelay?: number | undefined;
        top?: string | undefined;
        modalClass?: string | undefined;
        panelClass?: string | undefined;
        width?: string | number | undefined;
        zIndex?: number | undefined;
        center?: boolean | undefined;
        alignCenter?: boolean | undefined;
        closeIcon?: (string | Component) | undefined;
        draggable?: boolean | undefined;
        overflow?: boolean | undefined;
        fullscreen?: boolean | undefined;
        resizable?: boolean | undefined;
        minWidth?: string | number | undefined;
        maxWidth?: string | number | undefined;
        minHeight?: string | number | undefined;
        maxHeight?: string | number | undefined;
        maximizable?: boolean | undefined;
        stickyHeader?: boolean | undefined;
        stickyFooter?: boolean | undefined;
        bodyMaxHeight?: string | number | undefined;
        loading?: boolean | undefined;
        loadingText?: string | undefined;
        headerClass?: string | undefined;
        bodyClass?: string | undefined;
        footerClass?: string | undefined;
        showClose?: boolean | undefined;
        headerAriaLevel?: string | undefined;
        transition?: DialogTransition | undefined;
    };
    message: string | undefined;
    render: (() => VNodeChild) | undefined;
    component: Component | undefined;
    componentProps: Record<string, unknown> | undefined;
    footerRender: ((ctx: DialogServiceFooterContext) => VNodeChild) | undefined;
    showCancelButton: boolean;
    confirmButtonText: string;
    cancelButtonText: string;
    confirmButtonProps: Partial< ButtonProps> | undefined;
    cancelButtonProps: Partial< ButtonProps> | undefined;
    beforeConfirm: ((ctx: DialogServiceActionContext) => void | Promise<void>) | undefined;
    beforeCancel: ((ctx: DialogServiceActionContext) => void | Promise<void>) | undefined;
    pendingAction: DialogServiceAction;
    confirming: false;
    cancelling: false;
    promptValue: string;
    promptError: string;
    inputPlaceholder: string;
    inputType: "textarea" | "text" | "password";
    inputProps: Record<string, unknown>;
    inputValidator: DialogPromptValidator | undefined;
    result: Promise<DialogServiceResult>;
    resolveResult: (_result: DialogServiceResult) => void;
};
export declare function requestCloseDialogServiceEntry(id: string, action: DialogServiceAction): void;
export declare function finishDialogServiceEntry(id: string): void;
export declare function updateDialogServiceEntry(id: string, patch: DialogServiceUpdateOptions): void;
export declare function closeAllDialogServiceEntries(): void;
export declare function setDialogServiceEntryPendingAction(entry: DialogServiceEntry, reason: DialogCloseReason | DialogServiceAction): void;
export {};
