import { a as removeAckReactionAfterReply, c as resolveAckReaction, i as createAckReactionHandle, n as AckReactionHandle, o as removeAckReactionHandleAfterReply, r as AckReactionScope, s as shouldAckReaction, t as AckReactionGateParams } from "../ack-reactions-DVQVIUWX.js";
import { i as logTypingFailure, n as logAckFailure, t as LogFn } from "../logging-qxfDduLa.js";
//#region src/infra/outbound/target-errors.d.ts
/**
 * Builds an Error for missing outbound target failures.
 */
export declare function missingTargetError(provider: string, hint?: string): Error;
//#endregion
//#region src/channels/status-reactions.d.ts
/** Adapter implemented by channels that expose message reaction status updates. */
type StatusReactionAdapter = {
  /** Set/replace the current reaction emoji. */
  setReaction: (emoji: string) => Promise<void>;
  /** Clear all status reactions for single-slot platforms such as WhatsApp. */
  clearReaction?: () => Promise<void>;
  /** Remove a specific reaction emoji (optional — needed for Discord-style platforms). */
  removeReaction?: (emoji: string) => Promise<void>;
};
/** Optional emoji overrides for each status reaction state. */
type StatusReactionEmojis = {
  queued?: string;
  thinking?: string;
  tool?: string;
  coding?: string;
  web?: string;
  deploy?: string;
  build?: string;
  concierge?: string;
  done?: string;
  error?: string;
  stallSoft?: string;
  stallHard?: string;
  compacting?: string;
};
/** Timing controls for debounced status reactions and stall warnings. */
type StatusReactionTiming = {
  debounceMs?: number;
  stallSoftMs?: number;
  stallHardMs?: number;
  doneHoldMs?: number;
  errorHoldMs?: number;
};
/** Controller API for agent status reaction state transitions. */
type StatusReactionController = {
  setQueued: () => Promise<void> | void;
  setThinking: () => Promise<void> | void;
  setTool: (toolName?: string) => Promise<void> | void;
  setCompacting: () => Promise<void> | void;
  /** Cancel any pending debounced emoji (useful before forcing a state transition). */
  cancelPending: () => void;
  setDone: () => Promise<void>;
  setError: () => Promise<void>;
  clear: () => Promise<void>;
  restoreInitial: () => Promise<void>;
};
/** Default emoji set used by status reaction controllers. */
export declare const DEFAULT_EMOJIS: Required<StatusReactionEmojis>;
/** Default debounce, stall, and terminal hold timings for status reactions. */
export declare const DEFAULT_TIMING: Required<StatusReactionTiming>;
/** Tool-name tokens mapped to the coding status reaction. */
export declare const CODING_TOOL_TOKENS: string[];
/** Tool-name tokens mapped to the web status reaction. */
export declare const WEB_TOOL_TOKENS: string[];
/** Tool-name tokens mapped to the deploy status reaction. */
export declare const DEPLOY_TOOL_TOKENS: string[];
/** Tool-name tokens mapped to the build status reaction. */
export declare const BUILD_TOOL_TOKENS: string[];
/** Tool-name tokens mapped to the concierge/browser-control status reaction. */
export declare const CONCIERGE_TOOL_TOKENS: string[];
/** Resolves the appropriate emoji for a tool invocation. */
export declare function resolveToolEmoji(toolName: string | undefined, emojis: Required<StatusReactionEmojis>, emojiOverrides?: StatusReactionEmojis): 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)
 * - Defers reaction removals until final cleanup to avoid visible flicker on
 *   platforms without atomic reaction replacement
 */
export declare function createStatusReactionController(params: {
  enabled: boolean;
  adapter: StatusReactionAdapter;
  initialEmoji: string;
  /** Acknowledgement keeps one working reaction; only actual errors replace it. */
  presentation?: "activity" | "acknowledgement";
  emojis?: StatusReactionEmojis;
  timing?: StatusReactionTiming;
  onError?: (err: unknown) => void;
}): StatusReactionController;
//#endregion
//#region src/plugin-sdk/channel-feedback.d.ts
/** @deprecated Owner policy moved into the WhatsApp plugin (#121257). */
export type WhatsAppAckReactionMode = "always" | "mentions" | "never";
/**
 * @deprecated Load-only bridge: the published WhatsApp channel package
 * (2026.7.2-beta.7 and earlier) imports this at module top level, so removing
 * it makes the installed plugin fail to load after a core upgrade. Behavior
 * preserved verbatim from the pre-#121257 owner. Remove once managed releases
 * have replaced the old npm latest/extended-stable packages and their upgrade
 * window has closed.
 */
export declare function shouldAckReactionForWhatsApp(params: {
  emoji: string;
  isDirect: boolean;
  isGroup: boolean;
  directEnabled: boolean;
  groupMode: WhatsAppAckReactionMode;
  wasMentioned: boolean;
  groupActivated: boolean;
}): boolean;
//#endregion
export { type AckReactionGateParams, type AckReactionHandle, type AckReactionScope, type LogFn, type StatusReactionAdapter, type StatusReactionController, type StatusReactionEmojis, type StatusReactionTiming, createAckReactionHandle, logAckFailure, logTypingFailure, removeAckReactionAfterReply, removeAckReactionHandleAfterReply, resolveAckReaction, shouldAckReaction };