/*!
 * 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 type { ButtonProps as MuiButtonProps } from "@mui/material";
import { HTMLAttributes, ReactElement, ReactNode, RefObject } from "react";
import type { HtmlProps } from "../HtmlProps.js";
import { FocusHandle } from "../inputUtils.js";
export declare const buttonSizeValues: readonly ["small", "medium", "large"];
export declare const buttonTypeValues: readonly ["button", "submit", "reset"];
export declare const buttonVariantValues: readonly ["primary", "secondary", "danger", "dangerSecondary", "floating", "floatingAction"];
export type BaseButtonProps = {
    /**
     * The ref forwarded to the Button
     */
    buttonRef?: RefObject<FocusHandle>;
    /**
     * The contents of the button. Only available internal to Odyssey here in BaseButton. If set, label is ignored.
     */
    children?: ReactNode;
    /**
     * The icon element to display at the end of the Button
     */
    endIcon?: ReactElement;
    /**
     * Optional href to render the button as a link
     */
    href?: string;
    /**
     * The ID of the Button
     */
    id?: string;
    /**
     * Determines whether the Button is disabled
     */
    isDisabled?: boolean;
    /**
     * Determines whether the Button should take up the full available width
     */
    isFullWidth?: boolean;
    /**
     * The text content of the Button
     */
    label?: string;
    /**
     * The click event handler for the Button
     */
    onClick?: MuiButtonProps["onClick"];
    /**
     * The size of the button
     */
    size?: (typeof buttonSizeValues)[number];
    /**
     * The icon element to display at the start of the Button
     */
    startIcon?: ReactElement;
    tabIndex?: HTMLAttributes<HTMLElement>["tabIndex"];
    /**
     * The tooltip text for the Button if it's icon-only
     */
    tooltipText?: string;
    /**
     * The type of the HTML button element
     */
    type?: (typeof buttonTypeValues)[number];
    /**
     * The variant of the Button
     */
    variant: (typeof buttonVariantValues)[number] | "tertiary";
};
export type AdditionalBaseButtonProps = Pick<HtmlProps, "ariaControls" | "ariaDescribedBy" | "ariaExpanded" | "ariaHasPopup" | "ariaLabel" | "ariaLabelledBy" | "tabIndex" | "testId" | "translate">;
declare const MemoizedBaseButton: import("react").MemoExoticComponent<({ ariaControls, ariaDescribedBy, ariaExpanded, ariaHasPopup, ariaLabel, ariaLabelledBy, buttonRef, children, endIcon, href, id, isDisabled, isFullWidth: isFullWidthProp, label, onClick, size, startIcon, tabIndex, testId, tooltipText, translate, type, variant: variantProp, }: BaseButtonProps & AdditionalBaseButtonProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
export { MemoizedBaseButton as BaseButton };
//# sourceMappingURL=BaseButton.d.ts.map