/*!
 * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
 * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
 *
 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *
 * See the License for the specific language governing permissions and limitations under the License.
 */
import { DialogProps as MuiDialogProps } from "@mui/material";
import { ReactElement, ReactNode } from "react";
import type { HtmlProps } from "./HtmlProps.js";
import { Button } from "./Buttons/Button.js";
type MuiOnCloseEvent = Parameters<Required<MuiDialogProps>["onClose"]>[0];
type MuiOnCloseReason = Parameters<Required<MuiDialogProps>["onClose"]>[1];
export type DialogOnCloseReason = MuiOnCloseReason | "closeButtonClick";
export type DialogProps = {
    /**
     * @deprecated `aria-label` for close button comes from translation file
     */
    ariaLabel?: string;
    /**
     * @deprecated Will be removed in a future Odyssey version. Use `primaryCallToActionComponent` instead.
     */
    callToActionFirstComponent?: ReactElement<typeof Button>;
    /**
     * @deprecated Will be removed in a future Odyssey version. Use `tertiaryCallToActionComponent` instead.
     */
    callToActionLastComponent?: ReactElement<typeof Button>;
    /**
     * @deprecated Will be removed in a future Odyssey version. Use `secondaryCallToActionComponent` instead.
     */
    callToActionSecondComponent?: ReactElement<typeof Button>;
    /**
     * The content of the Dialog. May be a `string` or any other `ReactNode` or array of `ReactNode`s.
     */
    children: ReactNode;
    /**
     * When set to `true`, the Dialog will be visible.
     */
    isOpen: boolean;
    /**
     * Callback that controls what happens when the Dialog is dismissed.
     */
    onClose: (event: MuiOnCloseEvent, reason: DialogOnCloseReason) => void;
    /**
     * An optional Button object to be situated in the Dialog footer as the primary call to action.
     */
    primaryCallToActionComponent?: ReactElement<typeof Button>;
    /**
     * An optional Button object to be situated in the Dialog footer as the secondary call to action, alongside the `primaryCallToActionComponent`.
     */
    secondaryCallToActionComponent?: ReactElement<typeof Button>;
    /**
     * An optional Button object to be situated in the Dialog footer as the tertiary call to action, alongside the other `callToAction` components.
     */
    tertiaryCallToActionComponent?: ReactElement<typeof Button>;
    /**
     * The title of the Dialog.
     */
    title: string;
} & Pick<HtmlProps, "testId" | "translate">;
declare const MemoizedDialog: import("react").MemoExoticComponent<({ primaryCallToActionComponent, secondaryCallToActionComponent, tertiaryCallToActionComponent, callToActionFirstComponent, callToActionSecondComponent, callToActionLastComponent, children, isOpen, onClose, testId, title, translate, }: DialogProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
export { MemoizedDialog as Dialog };
//# sourceMappingURL=Dialog.d.ts.map