import { BoxProps } from '../box';
import { ButtonProps, IconButtonProps } from '../button';
import { HeadingProps } from '../heading';
import { IconProp, IconProps } from '../icon';
import { ModalProps } from '../modal';
import { SystemProps } from '../system';
import { ThemingProps } from '../theme';
import { PropsOf } from '../utils';
export type DialogBodyProps = PropsOf<'div', BoxProps>;
export type DialogCancelButtonProps = PropsOf<'button', ButtonProps>;
export type DialogCloseButtonProps = PropsOf<'button', IconButtonProps>;
export type DialogContext = Pick<DialogProps, 'icon' | 'isOpen' | 'onClose' | 'size' | 'status' | 'variant'> & {
    bodyId?: string;
    titleId?: string;
};
export type DialogFooterProps = PropsOf<'div', BoxProps & Pick<DialogProps, 'cancelButton' | 'submitButton'>>;
export type DialogHeaderProps = PropsOf<'div', BoxProps & Pick<DialogProps, 'closeButton' | 'icon' | 'title'>>;
export type DialogIconProps = PropsOf<'svg', IconProps>;
export type DialogPlacement = 'left' | 'center' | 'right';
export type DialogProps = SystemProps & ThemingProps<'Dialog'> & Pick<ModalProps, 'isOpen' | 'onClose'> & {
    /** Socket for the main Dialog content. */
    body?: string | number | DialogBodyProps | JSX.Element;
    /** Socket for a cancel button in the Dialog Footer. */
    cancelButton?: DialogCancelButtonProps | JSX.Element;
    /** Socket for a close icon button in the Dialog Header. */
    closeButton?: boolean | DialogCloseButtonProps | JSX.Element;
    /** Clicking Backdrop element will not trigger 'onClose'. */
    disableBackdropClose?: boolean;
    /** Socket for a footer with buttons below Dialog Body. */
    footer?: DialogFooterProps | JSX.Element;
    /** Socket for a header with title and icon above the Dialog Body */
    header?: DialogHeaderProps | JSX.Element;
    /** Socket for a custom icon in the Dialog Header. */
    icon?: IconProp | DialogIconProps | JSX.Element;
    /** The props being passed into the internal Modal component. */
    modalProps?: ModalProps;
    /** Position of the dialog @default center */
    placement?: DialogPlacement;
    /** Adds an icon for a given status, such as error or warning. */
    status?: DialogStatus;
    /** Socket for a submit button in the Dialog Footer. */
    submitButton?: DialogSubmitButtonProps | JSX.Element;
    /** Socket for a title in the Dialog Header. */
    title?: HeadingProps['text'] | DialogTitleProps | JSX.Element;
};
export type DialogStatus = 'danger' | 'error' | 'info' | 'warning';
export type DialogStatusMapping = Record<string, {
    iconProps: IconProps;
}>;
export type DialogSubmitButtonProps = PropsOf<'button', ButtonProps>;
export type DialogTitleProps = PropsOf<'h4', HeadingProps>;
//# sourceMappingURL=dialog.types.d.ts.map