import type { ToolLoopDetectionConfig } from "../config/types.tools.js"; import type { AnyAgentTool } from "./tools/common.js"; import { isPlainObject } from "../utils.js"; export type HookContext = { agentId?: string; sessionKey?: string; /** Ephemeral session UUID — regenerated on /new and /reset. */ sessionId?: string; runId?: string; loopDetection?: ToolLoopDetectionConfig; }; type HookOutcome = { blocked: true; reason: string; } | { blocked: false; params: unknown; }; declare function buildAdjustedParamsKey(params: { runId?: string; toolCallId: string; }): string; export declare function runBeforeToolCallHook(args: { toolName: string; params: unknown; toolCallId?: string; ctx?: HookContext; }): Promise; export declare function wrapToolWithBeforeToolCallHook(tool: AnyAgentTool, ctx?: HookContext): AnyAgentTool; export declare function isToolWrappedWithBeforeToolCallHook(tool: AnyAgentTool): boolean; export declare function consumeAdjustedParamsForToolCall(toolCallId: string, runId?: string): unknown; export declare const __testing: { BEFORE_TOOL_CALL_WRAPPED: symbol; buildAdjustedParamsKey: typeof buildAdjustedParamsKey; adjustedParamsByToolCallId: Map; runBeforeToolCallHook: typeof runBeforeToolCallHook; isPlainObject: typeof isPlainObject; }; export {};