/** * Channel-agnostic status reaction controller. * Provides a unified interface for displaying agent status via message reactions. */ export type StatusReactionAdapter = { /** Set/replace the current reaction emoji. */ setReaction: (emoji: string) => Promise; /** Remove a specific reaction emoji (optional — needed for Discord-style platforms). */ removeReaction?: (emoji: string) => Promise; }; export type StatusReactionEmojis = { queued?: string; thinking?: string; tool?: string; coding?: string; web?: string; done?: string; error?: string; stallSoft?: string; stallHard?: string; }; export type StatusReactionTiming = { debounceMs?: number; stallSoftMs?: number; stallHardMs?: number; doneHoldMs?: number; errorHoldMs?: number; }; export type StatusReactionController = { setQueued: () => Promise | void; setThinking: () => Promise | void; setTool: (toolName?: string) => Promise | void; setDone: () => Promise; setError: () => Promise; clear: () => Promise; restoreInitial: () => Promise; }; export declare const DEFAULT_EMOJIS: Required; export declare const DEFAULT_TIMING: Required; export declare const CODING_TOOL_TOKENS: string[]; export declare const WEB_TOOL_TOKENS: string[]; /** * Resolve the appropriate emoji for a tool invocation. */ export declare function resolveToolEmoji(toolName: string | undefined, emojis: Required): string; /** * Create a status reaction controller. * * Features: * - Promise chain serialization (prevents concurrent API calls) * - Debouncing (intermediate states debounce, terminal states are immediate) * - Stall timers (soft/hard warnings on inactivity) * - Terminal state protection (done/error mark finished, subsequent updates ignored) */ export declare function createStatusReactionController(params: { enabled: boolean; adapter: StatusReactionAdapter; initialEmoji: string; emojis?: StatusReactionEmojis; timing?: StatusReactionTiming; onError?: (err: unknown) => void; }): StatusReactionController;