import { type VariantProps } from 'class-variance-authority';
import * as React from 'react';
declare const buttonVariants: (props?: ({
    appearance?: "link" | "solid" | "gradient" | "soft" | "outline" | "ghost" | "ai" | null | undefined;
    variant?: "primary" | "secondary" | "info" | "success" | "warning" | "destructive" | null | undefined;
    size?: "default" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | "icon-xl" | "icon-2xl" | null | undefined;
    shape?: "round" | "rounded" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type DotColor = 'success' | 'error' | 'warning' | 'brand' | 'gray';
type ButtonAppearance = 'solid' | 'gradient' | 'soft' | 'outline' | 'ghost' | 'link' | 'ai';
type ButtonVariant = 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'destructive';
type ButtonShape = 'rounded' | 'round';
/**
 * Render prop type for polymorphic rendering.
 * Accepts either a React element or a function that receives props and returns an element.
 * @template Props The props to be passed to the rendered element
 */
type RenderProp<Props> = React.ReactElement | ((props: Props) => React.ReactElement);
export interface ButtonProps extends React.ComponentProps<'button'>, Pick<VariantProps<typeof buttonVariants>, 'size'> {
    /** Visual appearance - how the button renders */
    appearance?: ButtonAppearance;
    /** Semantic variant - what the button means */
    variant?: ButtonVariant;
    /** Shape of the button corners */
    shape?: ButtonShape;
    /** Shows a loading spinner and disables the button */
    loading?: boolean;
    /** Icon displayed at the start (inline-start) of the button text - respects RTL */
    startIcon?: React.ReactNode;
    /** Icon displayed at the end (inline-end) of the button text - respects RTL */
    endIcon?: React.ReactNode;
    /** Shows a colored dot indicator before the button text */
    dotIndicator?: boolean;
    /** Color of the dot indicator */
    dotColor?: DotColor;
    /** For icon-only buttons - renders just the icon without text wrapper */
    iconOnly?: boolean;
    /** Enables animated gradient border (only for appearance="ai"). Auto-true when loading. */
    animated?: boolean;
    /**
     * Render prop for polymorphic rendering. Accepts either a React element or a render function.
     * Use this to render the button as a different element (e.g., link) while preserving button styles.
     * Note: When render is provided, loading/startIcon/endIcon/dotIndicator are ignored.
     */
    render?: RenderProp<React.ComponentProps<'button'>>;
}
declare const Dot: ({ color, className, }: {
    color?: DotColor;
    className?: string;
}) => import("react/jsx-runtime").JSX.Element;
declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
/**
 * Clear/Close icon button - a ghost button specifically for close/clear actions
 * Commonly used in tags, dialogs, and dismissible elements
 */
export interface ClearButtonProps extends Omit<ButtonProps, 'appearance' | 'variant' | 'children' | 'startIcon' | 'endIcon' | 'dotIndicator'> {
    /** Size of the clear button */
    size?: 'icon-sm' | 'icon' | 'icon-lg' | 'icon-xl' | 'icon-2xl';
}
declare function ClearButton({ className, size, ...props }: ClearButtonProps): import("react/jsx-runtime").JSX.Element;
declare namespace ClearButton {
    var displayName: string;
}
export type { ButtonAppearance, ButtonShape, ButtonVariant };
export { Button, buttonVariants, ClearButton, Dot };
