/**
 * @file useImperativeDialog.tsx
 * @input Uses React, Dialog
 * @output Exports useImperativeDialog hook
 * @position Utility hook; wraps Dialog with imperative show/hide API
 *
 * Eliminates boilerplate for dialogs that don't need controlled state.
 * Instead of managing isOpen + content state, call show() with content
 * and the dialog handles the rest.
 *
 * @example
 * ```
 * const dialog = useImperativeDialog();
 * <button onClick={() => dialog.show(<MyContent />)}>Open</button>
 * {dialog.element}
 * ```
 */
import { type ReactNode } from 'react';
import { type DialogProps } from './Dialog';
type DialogOptions = Omit<DialogProps, 'isOpen' | 'onOpenChange' | 'children'>;
export interface ImperativeDialogReturn {
    /** Show the dialog with the given content. */
    show: (content: ReactNode, options?: DialogOptions) => void;
    /** Hide the dialog. */
    hide: () => void;
    /** Whether the dialog is currently open. */
    isOpen: boolean;
    /** Render this in your JSX tree. */
    element: ReactNode;
}
/**
 * Imperative dialog — show/hide without managing state.
 *
 * @example
 * ```
 * const dialog = useImperativeDialog();
 * onClick={() => dialog.show(
 *   <CodeBlock code={output} language="bash" />
 * )}
 * return <>{dialog.element}</>;
 * ```
 */
export declare function useImperativeDialog(defaultOptions?: DialogOptions): ImperativeDialogReturn;
export {};
//# sourceMappingURL=useImperativeDialog.d.ts.map