import { ReactNode, RefObject } from 'react';
import { GenericComponent } from '../../@types/types';
import { SIZES } from '../../constants';
import { BoxProps } from '../box/Box';
import * as DialogBody from './Body';
import * as DialogFooter from './Footer';
import * as DialogHeader from './Header';
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?: Exclude<typeof SIZES[number], 'tiny' | 'smallest' | 'hero'>;
    /** 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;
}
interface DialogBaseComponent extends GenericComponent<DialogBaseProps> {
    Header: GenericComponent<DialogHeader.HeaderProps>;
    Body: GenericComponent<DialogBody.BodyProps>;
    Footer: GenericComponent<DialogFooter.FooterProps>;
}
export declare const DialogBase: DialogBaseComponent;
export default DialogBase;
