import type { MouseEvent, ReactNode, RefAttributes } from "react";
import type { DOMProps } from "../../types/dom";
import type { UseButtonProps } from "../../hooks/useButton";
import "./Button.css";
export type ButtonElementType = HTMLButtonElement;
export type Variant = "primary" | "secondary" | "ghost" | "basic" | "link";
export type Size = "sm" | "md" | "lg";
export interface ButtonProps extends UseButtonProps, DOMProps, RefAttributes<ButtonElementType> {
    /** The name of the button when submitted in a form */
    name?: string | undefined;
    /** The value of the button when submitted in a form */
    value?: string | undefined;
    /** Custom class name for setting specific CSS */
    className?: string;
    /** Shortlist of styles */
    variant?: Variant;
    size?: Size;
    /** Display loading spinner */
    isLoading?: boolean;
    /** Display success style */
    isSuccess?: boolean;
    onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
    children?: ReactNode;
}
declare function Button({ ref, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
declare namespace Button {
    var displayName: string;
}
export { Button };
