import type { Tool, ToolContext } from './tool-types.js'; export type PreToolUseDecision = { action: 'allow'; } | { action: 'block'; reason: string; } | { action: 'modify'; input: Record; reason?: string; }; export interface PreToolUseHook { name: string; priority: number; check(params: { tool: Tool; input: Record; ctx: ToolContext; sessionId: string; }): Promise; } export interface PostToolUseHook { name: string; priority: number; process(params: { tool: Tool; input: Record; result: string; isError: boolean; durationMs: number; ctx: ToolContext; sessionId: string; }): Promise<{ result: string; } | null>; } export interface PostToolUseFailureHook { name: string; priority: number; process(params: { tool: Tool; input: Record; result: string; durationMs: number; ctx: ToolContext; sessionId: string; }): Promise<{ result: string; } | null>; } export declare class ToolHookRegistry { private preHooks; private postHooks; private postFailureHooks; registerPre(hook: PreToolUseHook): void; registerPost(hook: PostToolUseHook): void; registerPostFailure(hook: PostToolUseFailureHook): void; unregisterPre(name: string): boolean; unregisterPost(name: string): boolean; unregisterPostFailure(name: string): boolean; runPreHooks(params: { tool: Tool; input: Record; ctx: ToolContext; sessionId: string; }): Promise<{ decision: PreToolUseDecision; hookName?: string; }>; runPostHooks(params: { tool: Tool; input: Record; result: string; isError: boolean; durationMs: number; ctx: ToolContext; sessionId: string; }): Promise; runPostFailureHooks(params: { tool: Tool; input: Record; result: string; durationMs: number; ctx: ToolContext; sessionId: string; }): Promise; } export declare function createPreToolSecretScanHook(containsSecretsFn: (text: string) => boolean): PreToolUseHook; export declare function createEgressDomainGuardHook(allowedDomains?: ReadonlySet): PreToolUseHook; export declare function createSecretSanitizerHook(sanitize: (text: string) => string): PostToolUseHook; export declare function createTimingHook(onTiming: (toolName: string, durationMs: number, isError: boolean) => void): PostToolUseHook; export declare function createReadOnlyHook(isWriteTool: (toolName: string) => boolean): PreToolUseHook; export declare function createExecLikeFailureHintHook(isExecLike?: (toolName: string) => boolean): PostToolUseFailureHook; //# sourceMappingURL=tool-hooks.d.ts.map