import React, { ReactNode, RefObject } from 'react';
import * as DialogHeader from './Header';
import * as DialogBody from './Body';
import * as DialogFooter from './Footer';
import { BoxProps } from '../box/Box';
export interface DialogBaseProps extends Omit<BoxProps, 'form' | 'size'> {
    /** If true, the dialog will show on screen. */
    active?: boolean;
    /** Specify which backdrop the dialog should show. */
    backdrop?: string;
    /** The content to display inside the dialog. */
    children?: ReactNode;
    /** A class name for the wrapper to give custom styles. */
    className?: string;
    /** Callback function that is fired when the escape key is pressed. */
    onEscKeyDown?: () => void;
    /** Callback function that is fired when the mouse clicks on the overlay. */
    onOverlayClick?: () => void;
    /** If true, the content of the dialog will be scrollable when it exceeds the available height. */
    scrollable?: boolean;
    /** The size of the dialog. */
    size?: 'small' | 'medium' | 'large' | 'fullscreen';
    /** The initial part of the dialog where the focus will be set, useful to avoid focusing on the close button */
    initialFocusRef?: RefObject<HTMLElement>;
    /** The element used to drag a dialog, @see Dialog component header for an example */
    dragHandleRef?: RefObject<HTMLElement>;
    /** If true the dialog will render as a form element. */
    form?: boolean;
    /** Optional callback if the dialog is a form and is being submitted */
    onSubmit?: () => void;
}
export declare const DialogBase: {
    ({ active, backdrop, children, className, onEscKeyDown, onOverlayClick, scrollable, size, initialFocusRef, dragHandleRef, form, onSubmit, }: DialogBaseProps): React.ReactPortal | null;
    Header: {
        ({ icon, onCloseClick, children, ...rest }: DialogHeader.HeaderProps): JSX.Element;
        displayName: string;
    };
    Body: React.ForwardRefExoticComponent<Pick<DialogBody.BodyProps, keyof DialogBody.BodyProps> & React.RefAttributes<unknown>>;
    Footer: ({ children, ...rest }: DialogFooter.FooterProps) => JSX.Element;
};
export default DialogBase;
