import { ReactNode, ReactElement, SyntheticEvent, MouseEvent } from 'react';
import { AccentType } from '../button';
import './modal.less';
export type AriaProps = {
    /** Defines an id of another element that labels the current element. */
    labelledby?: string;
    /** Defines an string value that labels the current element. */
    label?: string;
    /** Identifies the element (or elements) that describes the object. */
    describedby?: string;
};
export type ModalProps = {
    show: boolean;
    onConfirmModal?: (event?: SyntheticEvent) => void;
    onDismissModal?: (event?: SyntheticEvent) => void;
    confirmButtonText?: string;
    dismissButtonText?: string;
    showConfirmButton?: boolean;
    showDismissButton?: boolean;
    showCloseIcon?: boolean;
    disableConfirmButton?: boolean;
    disableDismissButton?: boolean;
    confirmButtonTooltip?: string;
    confirmButtonAccentType?: AccentType;
    isLoading?: boolean;
    aria?: AriaProps;
    hideFooter?: boolean;
    hideHeader?: boolean;
    shouldCloseOnOverlayClick?: boolean;
    shouldCloseOnEsc?: boolean;
    header?: ReactElement;
    footer?: ReactElement;
    children?: ReactNode;
    title?: ReactNode;
    contentClassName?: string;
    overlayClassName?: string;
    modalBodyClassName?: string;
    testId?: string;
    formId?: string;
    modalKey: string;
    forceOpen?: boolean;
    supportsStacking?: boolean;
    labelText?: string;
    closeButtonTestId?: string;
    contentRef?: (instance: HTMLDivElement) => void;
};
type RegisterModalType = {
    key: string;
    triggerClose: (e: MouseEvent<HTMLButtonElement>) => void;
    forceOpen: boolean;
    supportsStacking: boolean;
};
export type ModelServiceType = {
    closeAllDropdowns: () => void;
    registerModal: (registerModal?: RegisterModalType) => void;
    clearModal: (modalKey?: string) => void;
};
/** A modal dialog with configurable layout
 * @midnight-gray-supported.
 * @alpine-light-supported.
 * */
export declare const Modal: ({ show, contentClassName, modalBodyClassName, header, title, children, footer, hideFooter, hideHeader, disableConfirmButton, testId, disableDismissButton, formId, aria, onConfirmModal, onDismissModal, confirmButtonText: confirmButtonTextParam, dismissButtonText, labelText, modalKey, isLoading, shouldCloseOnEsc, shouldCloseOnOverlayClick, showConfirmButton, showDismissButton, confirmButtonTooltip, confirmButtonAccentType, showCloseIcon, forceOpen, supportsStacking, overlayClassName, closeButtonTestId, contentRef, }: ModalProps) => import("react/jsx-runtime").JSX.Element;
export {};
