import { type HookEntry } from '../../store/hook-registry.js'; import type { ExtensionAPI, ExtensionContext, ToolCallEvent, ToolResultEvent, ToolCallReturn } from './pi-ext-types.js'; /** Map a PI lowercase/snake_case tool name to the Claude-native PascalCase name. */ export declare function toClaude(piName: string): string; /** * Normalize PI tool input for hook scripts. * PI's built-in read/write/edit use `path`; Claude hook scripts expect `file_path`. * Copies `input.path → input.file_path` for those three tools. * Grep passes through unchanged (memory-ref-tracker reads `tool_input.path` for Grep). */ export declare function normalizePiInput(toolName: string, input: Record): Record; /** * Derive the Cortex session ID from the PI extension context. * Falls back to CORTEX_SESSION_ID env var, then 'unknown'. * Guards for getSessionFile() returning undefined (PI --no-session or pre-session state). */ export declare function getSessionId(ctx: ExtensionContext): string; interface ClaudeHookPayload { hook_event_name: string; session_id: string; tool_name: string; tool_input: Record; tool_use_id: string; cwd?: string; tool_response?: unknown; tool_output?: string; is_error?: boolean; } interface HookSpecificOutput { permissionDecision?: string; permissionDecisionReason?: string; updatedInput?: Record; additionalContext?: string; } interface HookResult extends Record { hookSpecificOutput?: HookSpecificOutput; } export declare function runHookScript(scriptPath: string, payload: ClaudeHookPayload, timeoutMs?: number): HookResult; export declare function handlePreToolUse(event: ToolCallEvent, ctx: ExtensionContext, entries?: HookEntry[]): ToolCallReturn; export declare function handlePostToolUse(event: ToolResultEvent, ctx: ExtensionContext, entries?: HookEntry[]): { content?: unknown; } | void; export default function hookBridge(pi: ExtensionAPI): void; export {};