import { AccessibilityProps, KeyboardHandlerMap, FocusTrapConfig } from '../shared/index.js';

interface DialogProps {
    /** Whether the dialog is open (controlled) */
    open?: boolean;
    /** Whether the dialog starts open (uncontrolled) */
    defaultOpen?: boolean;
    /** Callback when open state changes */
    onOpenChange?: (open: boolean) => void;
    /** Whether the dialog is modal (default: true) */
    modal?: boolean;
}
interface DialogState {
    open: boolean;
}
interface DialogAPI {
    /** Current dialog state */
    state: DialogState;
    /** ARIA attributes for the trigger button */
    triggerProps: Partial<AccessibilityProps> & Record<string, unknown>;
    /** ARIA attributes for the dialog content */
    contentProps: Partial<AccessibilityProps> & Record<string, unknown>;
    /** Data attributes for the overlay */
    overlayProps: Record<string, string>;
    /** Open the dialog */
    open(): void;
    /** Close the dialog */
    close(): void;
    /** Toggle the dialog */
    toggle(): void;
    /** Keyboard handlers (Escape to close) */
    keyboardHandlers: KeyboardHandlerMap;
    /** Generated IDs for aria linking */
    ids: {
        content: string;
        title: string;
        description: string;
    };
    /**
     * Focus trap configuration for framework wrappers.
     * Pass this to createFocusTrap() with a container element.
     */
    focusTrapConfig: Omit<FocusTrapConfig, 'container'>;
}
declare function createDialog(props?: DialogProps): DialogAPI;

declare const overlayStyles = "fixed inset-0 z-50 bg-black/80";
declare const dialogContentVariants: (props?: ({
    [x: string]: string | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type DialogAPI, type DialogProps, type DialogState, createDialog, dialogContentVariants, overlayStyles };
