import React from "react";
declare type DialogContainerProps = {
    /** The dialog's trigger and its body, in order */
    children: [React.ReactElement, (close: () => void) => React.ReactElement];
    /** Title of the dialog */
    title: string;
    /** A short description about what this dialog accomplishes. */
    subtitle: string;
    /** A decorative icon */
    icon: string;
    /** Controls if this dialog is open by default (when mounted) */
    defaultOpen?: boolean;
    /** Controls if this dialog should close when it goes out of focus */
    shouldCloseOnBlur?: boolean;
    /** Callback invoked when this Dialog is closed */
    onClose?: () => void;
};
declare function DialogContainer({ children, title, subtitle, icon, defaultOpen, shouldCloseOnBlur, onClose, }: DialogContainerProps): JSX.Element;
/** The Dialog's Body that will be visible when opened */
export declare type DialogBodyProps = {
    /** An HTML ID attribute that will be attached to the the rendered component. Useful for targeting it from tests */
    id?: string;
    /** The Dialog's body and footer, in order */
    children: React.ReactElement | [React.ReactElement, React.ReactElement];
};
declare function DialogBody({ id, children }: DialogBodyProps): JSX.Element;
export declare type DialogFooterProps = {
    /** Content of the footer, ideally a Button or a ButtonGroup. */
    children: React.ReactElement;
};
declare function DialogFooter({ children }: DialogFooterProps): JSX.Element;
export declare const Dialog: {
    Container: typeof DialogContainer;
    Body: typeof DialogBody;
    Footer: typeof DialogFooter;
};
export {};
