import { TNode, Value, Renderable } from '@tempots/dom';
import { OverlayEffect } from '../theme';
export interface ModalOptions {
    /** Size of the modal */
    size?: Value<'sm' | 'md' | 'lg' | 'xl'>;
    /** Whether the modal can be closed by clicking outside or pressing escape */
    dismissable?: Value<boolean>;
    /** Whether to show the close button in header (only applies if header is provided) */
    showCloseButton?: Value<boolean>;
    /** Callback when modal is closed */
    onClose?: () => void;
    /** Overlay effect */
    overlayEffect?: Value<OverlayEffect>;
    /** Container for the overlay: 'body' (default) or 'element' (current element) */
    container?: 'body' | 'element';
    /** Position of the modal: 'center' (default), 'top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end' */
    position?: Value<'center' | 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'>;
}
export interface ModalContentOptions {
    /** Optional header content - if provided, overrides title */
    header?: TNode;
    /** Main body content */
    body: TNode;
    /** Optional footer content with action items */
    footer?: TNode;
}
/**
 * Modal component that provides a structured dialog with optional header, body, and footer
 * Built on top of the overlay component
 */
export declare function Modal(options: ModalOptions, fn: (open: (content: ModalContentOptions) => void, close: () => void) => TNode): Renderable;
/**
 * Convenience function to create a confirmation modal
 */
export declare function ConfirmModal(options: ModalOptions & {
    confirmText?: Value<string>;
    cancelText?: Value<string>;
    onConfirm?: () => void;
    onCancel?: () => void;
}, fn: (open: (message: TNode) => void, close: () => void) => TNode): Renderable;
