import type { ToolDef } from '../providers/index.js'; export interface ToolExecutionEvent { type: 'chunk'; data: string; stream?: 'stdout' | 'stderr'; } export interface ToolExecutionContext { onEvent?: (event: ToolExecutionEvent) => void; signal?: AbortSignal; } export interface Tool { name: string; displayName?: string; description: string; parameters: Record; execute(args: Record): Promise; executeWithEvents?(args: Record, context: ToolExecutionContext): Promise; } export type PermissionMode = 'ask' | 'bypass' | 'deny'; export type PermissionReply = 'once' | 'always' | 'deny'; export type ToolHookEvent = 'preToolUse' | 'postToolUse' | 'toolFailure'; export type ToolHookDecision = 'allow' | 'deny' | 'ask' | 'defer'; export interface ToolHookRequest { event: ToolHookEvent; toolName: string; args: Record; result?: string; status?: 'success' | 'error'; errorType?: string; sessionId?: string; turnId?: string; } export interface ToolHookResult { decision?: ToolHookDecision; reason?: string; message?: string; } export type ToolHookHandler = (request: ToolHookRequest) => Promise | ToolHookResult; export interface ToolPermissionRequest { toolName: string; description: string; risk: 'read' | 'write' | 'execute' | 'network' | 'external'; summary: string; arguments: Record; } export type PermissionHandler = (request: ToolPermissionRequest) => Promise; export declare class ToolRegistry { private tools; constructor(); private allowedTools; private permissionMode; private permissionHandler?; private hookHandler?; private readFiles; register(tool: Tool): void; unregister(name: string): boolean; has(name: string): boolean; get(name: string): Tool | undefined; list(): Tool[]; setPermissionHandler(handler: PermissionHandler): void; getPermissionHandler(): PermissionHandler | undefined; setHookHandler(handler: ToolHookHandler): void; getHookHandler(): ToolHookHandler | undefined; setPermissionMode(mode: PermissionMode): void; getPermissionMode(): PermissionMode; clearPermissionRules(): void; clearReadFiles(): void; listPermissionRules(): string[]; getToolDefs(toolNames?: Iterable): ToolDef[]; execute(name: string, args: Record): Promise; executeWithEvents(name: string, args: Record, context?: ToolExecutionContext): Promise; private runHook; private runTool; private getPermissionRequest; } //# sourceMappingURL=Registry.d.ts.map