import { ReactionSet } from '../../../services/reactions/types'; export interface ReactionBarMetadata { /** Referencia a la entidad a reaccionar */ entityRef: { entityType: string; entityId: string; }; /** ID del set de reacciones a mostrar. Si no se provee, se carga desde el binding. */ reactionSetId?: string; /** Set completo (si ya se tiene, evita fetch) */ reactionSet?: ReactionSet; /** Max reacciones permitidas por usuario: 1=swap, 0=multiples */ maxReactions?: number; /** Tamano visual */ size?: 'sm' | 'md' | 'lg'; /** Mostrar conteos numericos junto al emoji */ showCounts?: boolean; /** Layout: row=barra horizontal, picker=popup selector */ layout?: 'row' | 'picker'; /** Modo readonly */ readonly?: boolean; /** appId para la API */ appId?: string; /** Reacciones del usuario ya conocidas (evita fetch inicial) */ initialMyReactions?: string[]; /** Conteos ya conocidos (evita fetch inicial) */ initialCounts?: Record; /** Omitir carga inicial desde API */ skipInitialLoad?: boolean; } export interface ReactionBarState { reactionSet: ReactionSet | null; myReactions: string[]; counts: Record; isLoading: boolean; error: string | null; } export interface ReactionBarEvent { token: string; active: boolean; entityRef: { entityType: string; entityId: string; }; counts: Record; } export interface EnrichedReaction { token: string; emoji: string; label: string; icon: string; order: number; count: number; active: boolean; }