import { default as React, ReactNode, CSSProperties } from 'react';
import { ButtonProps } from './Button';
export interface ModalProps {
    isOpen: boolean;
    onClose: () => void;
    children: ReactNode;
    disableOverlayClose?: boolean;
    /** Also block Escape. Defaults to `disableOverlayClose`. */
    disableEscapeClose?: boolean;
    /** Accessible name for the dialog when no ModalHeader is used. */
    ariaLabel?: string;
    overlayClassName?: string;
    overlayStyle?: CSSProperties;
    style?: CSSProperties;
    /** The `role="dialog"` wrapper around `children`. */
    dialogClassName?: string;
}
export declare function Modal({ isOpen, onClose, children, disableOverlayClose, disableEscapeClose, ariaLabel, overlayClassName, overlayStyle, style, dialogClassName, }: ModalProps): import("react/jsx-runtime").JSX.Element;
export interface ModalContentProps {
    children: ReactNode;
    className?: string;
    style?: CSSProperties;
    maxWidth?: string;
    onClose?: () => void;
    showCloseButton?: boolean;
    closeButtonClassName?: string;
    closeButtonStyle?: CSSProperties;
}
export declare function ModalContent({ children, className, style, maxWidth, onClose, showCloseButton, closeButtonClassName, closeButtonStyle, }: ModalContentProps): import("react/jsx-runtime").JSX.Element;
export interface ModalHeaderProps {
    title?: string;
    icon?: ReactNode;
    onClose?: () => void;
    className?: string;
    style?: CSSProperties;
    /** Wrapper around `icon` + `title`. */
    titleWrapperClassName?: string;
    iconClassName?: string;
    titleClassName?: string;
    closeButtonClassName?: string;
}
export declare function ModalHeader({ title, icon, onClose, className, style, titleWrapperClassName, iconClassName, titleClassName, closeButtonClassName, }: ModalHeaderProps): import("react/jsx-runtime").JSX.Element;
export interface ModalBodyProps {
    children: ReactNode;
    className?: string;
    style?: CSSProperties;
}
export declare function ModalBody({ children, className, style }: ModalBodyProps): import("react/jsx-runtime").JSX.Element;
export interface ModalFooterProps {
    children: ReactNode;
    className?: string;
    style?: CSSProperties;
}
export declare function ModalFooter({ children, className, style }: ModalFooterProps): import("react/jsx-runtime").JSX.Element;
export interface ModalButtonProps extends ButtonProps {
    onClose?: () => void;
    closeOnClick?: boolean;
    action?: () => void | Promise<void>;
}
export declare function ModalButton({ onClose, closeOnClick, action, onClick, disabled, ...rest }: ModalButtonProps): import("react/jsx-runtime").JSX.Element;
export interface ModalTriggerButtonProps extends ButtonProps {
    children: React.ReactNode;
    modalContent: (props: {
        close: () => void;
    }) => React.ReactNode;
    /** Forwarded to the underlying <Modal />. */
    modalProps?: Omit<ModalProps, "isOpen" | "onClose" | "children">;
}
export declare function ModalTriggerButton({ children, modalContent, modalProps, onClick, ...props }: ModalTriggerButtonProps): import("react/jsx-runtime").JSX.Element;
