import { type ButtonHTMLAttributes } from "react";
import { type PropsWithRef } from "../types.js";
import { type FloatingActionButtonPosition, type FloatingActionButtonProps } from "./FloatingActionButton.js";
import { type ButtonClassNameThemeOptions } from "./buttonStyles.js";
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, ButtonClassNameThemeOptions {
    /** @defaultValue `"button"` */
    type?: "button" | "reset" | "submit";
    /**
     * The position within the viewport to display the button as a floating action
     * button.
     */
    floating?: FloatingActionButtonPosition;
    /**
     * Any additional props to provide the to `FAB` container element when the
     * `floating` prop is provided
     */
    floatingProps?: PropsWithRef<FloatingActionButtonProps, HTMLSpanElement>;
}
/**
 * **Client Component**
 *
 * @example
 * Simple Example
 * ```tsx
 * import { Button } from "@react-md/core";
 * import type { ReactElement } from "react";
 *
 * function Example(): ReactElement {
 *   return (
 *     <Button
 *       onClick={(event) => {
 *         // do something
 *       }}
 *     >
 *       Content
 *     </Button>
 *   );
 * }
 * ```
 *
 * @example
 * Theme Example
 * ```tsx
 * import { Button } from "@react-md/core";
 * import type { ReactElement } from "react";
 *
 * function Example(): ReactElement {
 *   return (
 *     <Button
 *       theme="primary"
 *       themeType="contained"
 *       onClick={(event) => {
 *         // do something
 *       }}
 *     >
 *       Content
 *     </Button>
 *   );
 * }
 * ```
 *
 * @example
 * Icon Button Example
 * ```tsx
 * import { Button } from "@react-md/core";
 * import { FavoriteSVGIcon } from "@react-md/material-icons";
 * import type { ReactElement } from "react";
 *
 * function Example(): ReactElement {
 *   return (
 *     <Button
 *       theme="secondary"
 *       themeType="outline"
 *       buttonType="icon"
 *       onClick={(event) => {
 *         // do something
 *       }}
 *     >
 *       <FavoriteSVGIcon />
 *     </Button>
 *   );
 * }
 * ```
 *
 * @example
 * Text Button with icons
 * ```tsx
 * import { Button } from "@react-md/core";
 * import { FavoriteSVGIcon } from "@react-md/material-icons";
 * import type { ReactElement } from "react";
 *
 * function Example(): ReactElement {
 *   return (
 *     <Button
 *       onClick={(event) => {
 *         // do something
 *       }}
 *     >
 *       <FavoriteSVGIcon />
 *       Content
 *     </Button>
 *   );
 * }
 * ```
 */
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
