import { AccessibilityProps } from '../shared/index.js';

interface Reaction {
    /** The emoji character */
    emoji: string;
    /** Number of users who reacted with this emoji */
    count: number;
    /** Whether the current user has reacted */
    userReacted: boolean;
}
interface ReactionBarProps {
    /** Current reactions */
    reactions: Reaction[];
    /** Callback when a reaction is toggled */
    onToggle?: (emoji: string) => void;
    /** Callback when a new reaction is added */
    onAdd?: (emoji: string) => void;
}
interface ReactionBarAPI {
    /** Current reactions */
    reactions: Reaction[];
    /** Toggle a reaction */
    toggle(emoji: string): void;
    /** Add a new reaction */
    add(emoji: string): void;
    /** ARIA props for the reaction bar container */
    ariaProps: Partial<AccessibilityProps> & Record<string, unknown>;
    /** Get ARIA props for an individual reaction pill */
    getReactionAriaProps(reaction: Reaction): Record<string, unknown>;
    /** ARIA props for the "add reaction" button */
    addButtonAriaProps: Record<string, unknown>;
    /** Generated IDs */
    ids: {
        container: string;
        label: string;
    };
}
declare function createReactionBar(props: ReactionBarProps): ReactionBarAPI;

declare const reactionBarStyles = "flex flex-wrap items-center gap-1";
declare const reactionPillVariants: (props?: ({
    state?: "active" | "inactive" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const reactionAddButtonStyles = "inline-flex items-center justify-center h-6 w-6 rounded-full border border-dashed border-muted-foreground/30 text-muted-foreground hover:border-muted-foreground hover:text-foreground cursor-pointer transition-colors text-xs";
declare const reactionEmojiStyles = "text-sm";
declare const reactionCountStyles = "text-xs font-medium tabular-nums";

export { type Reaction, type ReactionBarAPI, type ReactionBarProps, createReactionBar, reactionAddButtonStyles, reactionBarStyles, reactionCountStyles, reactionEmojiStyles, reactionPillVariants };
