import { type ButtonHTMLAttributes } from "react";
import { type ComponentWithRippleProps } from "../interaction/types.js";
import { type PropsWithRef } from "../types.js";
import { type FloatingActionButtonPosition, type FloatingActionButtonProps } from "./FloatingActionButton.js";
import { type ButtonClassNameThemeOptions } from "./styles.js";
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, ButtonClassNameThemeOptions, ComponentWithRippleProps {
    /** @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>;
}
/**
 * **Client Component**
 *
 * @example Simple Example
 * ```tsx
 * import { Button } from "@react-md/core/button/Button";
 * 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/button/Button";
 * 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/button/Button";
 * import FavoriteIcon from "@react-md/material-icons/FavoriteIcon";
 * import type { ReactElement } from "react";
 *
 * function Example(): ReactElement {
 *   return (
 *     <Button
 *       theme="secondary"
 *       themeType="outline"
 *       buttonType="icon"
 *       onClick={(event) => {
 *         // do something
 *       }}
 *     >
 *       <FavoriteIcon />
 *     </Button>
 *   );
 * }
 * ```
 *
 * @example Text Button with icons
 * ```tsx
 * import { Button } from "@react-md/core/button/Button";
 * import FavoriteIcon from "@react-md/material-icons/FavoriteIcon";
 * import type { ReactElement } from "react";
 *
 * function Example(): ReactElement {
 *   return (
 *     <Button
 *       onClick={(event) => {
 *         // do something
 *       }}
 *     >
 *       <FavoriteIcon />
 *       Content
 *     </Button>
 *   );
 * }
 * ```
 *
 * @see {@link https://react-md.dev/components/button | Button Demos}
 */
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
