import React, { type ReactNode } from "react";
import { type IconProp } from "src/shared/renderIcon";
type BadgeVariant = "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | "gray" | "gray-subtle" | "blue" | "blue-subtle" | "purple" | "purple-subtle" | "amber" | "amber-subtle" | "red" | "red-subtle" | "pink" | "pink-subtle" | "green" | "green-subtle" | "teal" | "teal-subtle";
type BadgeSize = "sm" | "default" | "lg";
type BadgeShape = "pill" | "rounded";
export type IndicatorVariant = "default" | "secondary" | "destructive" | "blue" | "green" | "amber" | "red" | "purple" | "pink" | "teal" | "gray";
export interface BadgeProps extends Omit<React.ComponentProps<"span">, "children"> {
    /** Visual variant of the badge. */
    variant?: BadgeVariant;
    /** Size of the badge. */
    size?: BadgeSize;
    /** Corner shape: `pill` (fully rounded, default) or `rounded` (4px). */
    shape?: BadgeShape;
    /** Text label rendered inside the badge. */
    label?: string;
    /** Icon component, element, or class-name string. */
    icon?: IconProp;
    /** Placement of the icon relative to the label. */
    iconPosition?: "left" | "right";
    /** Colored status indicator dot. */
    indicator?: IndicatorVariant;
    /** Callback when the badge is dismissed. Renders a dismiss button when provided. */
    onDismiss?: () => void;
    /** Disables the badge and hides the dismiss button. */
    disabled?: boolean;
    /** Render as a custom element (polymorphic via Radix Slot). */
    asChild?: boolean;
    /** Children rendered inside the badge (fallback for `label`). */
    children?: ReactNode;
}
declare const Badge: React.ForwardRefExoticComponent<Omit<BadgeProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
export { Badge };
