import type { HookContext } from '../hooks/types'; import type { HookPlugin } from '../hooks/plugin'; export interface ClaudeHookInput { session_id: string; transcript_path: string; cwd: string; hook_event_name: string; tool_name: string; tool_input: Record; tool_use_id: string; } export interface ClaudeHookOutput { hookSpecificOutput: { hookEventName: string; permissionDecision: 'allow' | 'deny' | 'ask'; permissionDecisionReason?: string; additionalContext?: string; }; } export interface CodexHookOutput { hookSpecificOutput: { hookEventName: string; permissionDecision: 'allow' | 'deny' | 'ask'; permissionDecisionReason?: string; systemMessage?: string; }; } export interface ProviderHookOutput { hookSpecificOutput: { hookEventName: string; permissionDecision: 'allow' | 'deny' | 'ask'; permissionDecisionReason?: string; additionalContext?: string; systemMessage?: string; }; } export type Provider = 'claude' | 'codex'; export interface HookDispatchResult { exitCode: number; stdout: ProviderHookOutput; injected: boolean; } export declare function sanitizeDenyReason(reason: string): string; export declare function sanitizeInjectMessage(message: string): string; export declare function isPathSafe(pluginPath: string, projectRoot: string): boolean; export declare function formatInjectOutput(provider: Provider, hookEventName: string, message: string): ProviderHookOutput; export declare function formatDenyOutput(_provider: Provider, hookEventName: string, reason: string): ProviderHookOutput; export declare function buildHookContext(input: ClaudeHookInput, cwd: string, provider?: string): HookContext; export declare function evaluateHook(plugin: HookPlugin, input: ClaudeHookInput, cwd: string, provider?: string): Promise;