import { type ComponentPropsWithoutRef, type MouseEvent, type ReactNode } from "react";
export type BadgeVariant = "success" | "warning" | "error" | "info" | "neutral" | "accent";
export type BadgeSize = "sm" | "md" | "lg";
export interface BadgeProps extends Omit<ComponentPropsWithoutRef<"span">, "color" | "onClick"> {
    variant?: BadgeVariant;
    size?: BadgeSize;
    /** Render a colored dot before the text. Mutually exclusive with `icon`. */
    dot?: boolean;
    /** Custom icon node rendered before the text. If both `icon` and `dot`
     * are passed, `icon` wins. */
    icon?: ReactNode;
    /** Render a `×` button to remove the badge. */
    closable?: boolean;
    /** @deprecated Use `closable`. Kept as an alias for back-compat. */
    closeable?: boolean;
    /** Fires when the user clicks (or activates via keyboard) the close
     * button. Receives the MouseEvent so callers can `stopPropagation` /
     * `preventDefault` as needed. */
    onClose?: (event: MouseEvent<HTMLButtonElement>) => void;
    /** Accessible label for the close button. Defaults to "Remove". Override
     * for localization or contextual reads ("Remove tag 'cdc'"). */
    closeLabel?: string;
    /** Thin outline + transparent background instead of the filled chip. */
    outlined?: boolean;
    /** Truncate long text with an ellipsis and surface the full content as a
     * `title` tooltip. `true` uses the design default (200 px); a number sets
     * an explicit max-width in px. */
    truncate?: boolean | number;
    /** Numeric badge convenience. Renders the value (or "99+" if > 99).
     * Ignored when `children` is also set. */
    count?: number;
    /** Click handler for the entire badge. Sets `role="button"` and wires
     * Enter / Space keyboard activation. */
    onClick?: (event: MouseEvent<HTMLSpanElement>) => void;
    /** Render Badge's styling onto a custom child element (Radix-style Slot).
     * Useful for letting Badge own the chrome while a router link / tooltip
     * trigger / etc. owns the actual element semantics.
     *
     * Example:
     *   <Badge asChild variant="accent">
     *     <NextLink href="/pricing">Beta</NextLink>
     *   </Badge>
     *
     * When `asChild` is true, Badge does NOT render its internal `dot`,
     * `icon`, or close-button slots — the consumer fully owns the content.
     * For chips with built-in slots, use the regular form without asChild. */
    asChild?: boolean;
    children?: ReactNode;
}
export declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
//# sourceMappingURL=Badge.d.ts.map