import { default as React } from 'react';
import { DialogContent } from '../components/dialog';
export interface DialogConfig {
    title?: React.ReactNode;
    description?: React.ReactNode;
    body?: React.ReactNode;
    confirmLabel?: string;
    cancelLabel?: string;
    onConfirm?: () => void | Promise<void>;
    onCancel?: () => void;
    /**
     * Optional callback to sync external state.
     * Called when the dialog opening state changes (mainly for closing).
     */
    onOpenChange?: (isOpen: boolean) => void;
    variant?: "basic" | "fullscreen";
    shape?: "full" | "minimal" | "sharp";
    destructive?: boolean;
    contentProps?: Partial<React.ComponentProps<typeof DialogContent>>;
}
interface DialogContextType {
    show: (config: DialogConfig) => Promise<boolean>;
    registerDialog: (name: string, component: React.FC<any>) => void;
    openDialog: <T = any>(name: string, props?: T) => Promise<any>;
    close: (id?: string) => void;
    lock: () => void;
    unlock: () => void;
    isLocked: boolean;
}
export declare const useDialog: () => DialogContextType;
export declare const DialogProvider: ({ children }: {
    children: React.ReactNode;
}) => import("react/jsx-runtime").JSX.Element;
export {};
