/*!
 * Copyright (c) 2024-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 { DrawerProps as MuiDrawerProps } from "@mui/material";
import { ReactElement, ReactNode } from "react";
import type { HtmlProps } from "./HtmlProps.js";
import { Button } from "./Buttons/Button.js";
type MuiOnCloseEvent = Parameters<Required<MuiDrawerProps>["onClose"]>[0];
type MuiOnCloseReason = Parameters<Required<MuiDrawerProps>["onClose"]>[1];
export type DrawerOnCloseReason = MuiOnCloseReason | "closeButtonClick";
export declare const variantValues: readonly ["temporary", "persistent"];
export type DrawerProps = {
    /**
     * The content of the Drawer. May be a `string` or any other `ReactNode` or array of `ReactNode`s.
     */
    children?: ReactNode;
    /**
     * When set to `true`, the Drawer will be visible.
     */
    isOpen?: boolean;
    /**
     * Callback that controls what happens when the Drawer is dismissed
     */
    onClose: (event: MuiOnCloseEvent, reason: DrawerOnCloseReason) => void;
    /**
     * An optional Button object to be situated in the Drawerfooter. Should almost always be of variant `primary`.
     */
    primaryCallToActionComponent?: ReactElement<typeof Button>;
    /**
     * An optional Button object to be situated in the Drawer footer, alongside the `callToActionPrimaryComponent`.
     */
    secondaryCallToActionComponent?: ReactElement<typeof Button>;
    /**
     * An optional Button object to be situated in the Drawer footer, alongside the other two `callToAction` components.
     */
    tertiaryCallToActionComponent?: ReactElement<typeof Button>;
    /**
     * The title of the Drawer
     */
    title?: string;
    /**
     * Type of Drawer
     */
    variant?: (typeof variantValues)[number];
} & Pick<HtmlProps, "ariaLabel" | "testId" | "translate"> & ({
    /**
     * Shows divider lines separating header, content, and footer (if using action buttons).
     */
    hasDividers?: never;
    /**
     * @deprecated use `hasDividers` instead.
     *
     * Shows divider lines separating header, content, and footer (if using action buttons).
     */
    showDividers: boolean;
} | {
    /**
     * Shows divider lines separating header, content, and footer (if using action buttons).
     */
    hasDividers: boolean;
    /**
     * @deprecated use `hasDividers` instead.
     *
     * Shows divider lines separating header, content, and footer (if using action buttons).
     */
    showDividers?: never;
});
declare const MemoizedDrawer: import("react").MemoExoticComponent<({ ariaLabel, children, hasDividers: hasDividersProp, isOpen, onClose, primaryCallToActionComponent, secondaryCallToActionComponent, showDividers, tertiaryCallToActionComponent, testId, title, translate, variant, }: DrawerProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
export { MemoizedDrawer as Drawer };
//# sourceMappingURL=Drawer.d.ts.map