import { type ButtonHTMLAttributes, type CSSProperties, type ReactNode } from "react";
export interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart"> {
    variant?: "primary" | "secondary" | "ghost" | "danger" | "icon";
    size?: "sm" | "md" | "lg";
    loading?: boolean;
    /** Override the rendered label while loading. Useful for action verbs that
     * change form mid-request — e.g. `"Sign in"` → `"Signing in…"`. */
    loadingText?: ReactNode;
    /** Accessible label for the spinner (announced by AT during loading).
     * Defaults to `"Loading"`. Customize for localization or context. */
    loadingLabel?: string;
    leftIcon?: ReactNode;
    rightIcon?: ReactNode;
    fullWidth?: boolean;
    /** Toggle-button state. When defined, the button advertises
     * `aria-pressed` and adds `--pressed` styling. */
    pressed?: boolean;
    children?: ReactNode;
    /**
     * Override the cursor shown on hover. When omitted, the cursor auto-resolves:
     *   - `not-allowed` when disabled (CSS handles this — see Button.module.scss)
     *   - `progress`    when loading (request in flight)
     *   - `pointer`     when the button has an action (onClick, type="submit",
     *                   or type="reset"). Anchors (href) get pointer too.
     *   - `default`     otherwise (decorative / placeholder buttons)
     * Pass an explicit value (e.g. `"text"`, `"grab"`) to override the
     * auto-resolve for the specific story / use case.
     */
    cursor?: CSSProperties["cursor"];
    /** Render Button's styling onto a custom child element (Radix-style Slot).
     *
     *   <Button asChild variant="primary">
     *     <NextLink href="/checkout">Continue</NextLink>
     *   </Button>
     *
     * When `asChild` is true, Button does NOT render its internal icon /
     * label / spinner slots — the consumer's element fully owns content. Use
     * the regular form (without `asChild`) when you want the built-in
     * slots / loading spinner / size-scaled icons. */
    asChild?: boolean;
}
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
//# sourceMappingURL=Button.d.ts.map