interface ToolCallEvent { toolName: string; input: Record; } interface ToolResultEvent { toolName: string; input: Record; output: string; isError: boolean; } interface ExtensionUI { confirm(title: string, message: string, opts?: { timeout?: number; }): Promise; notify(msg: string, type?: 'info' | 'warning' | 'error'): void; setStatus(key: string, text: string): void; } interface ExtensionContext { ui: ExtensionUI; sessionId: string; workingDirectory: string; } type ToolCallHandler = (event: ToolCallEvent, ctx: ExtensionContext) => Promise<{ block: true; reason: string; } | void>; type ToolResultHandler = (event: ToolResultEvent, ctx: ExtensionContext) => Promise; type SessionHandler = (event: unknown, ctx: ExtensionContext) => Promise; interface ExtensionAPI { on(event: 'session_start', handler: SessionHandler): void; on(event: 'session_shutdown', handler: SessionHandler): void; on(event: 'tool_call', handler: ToolCallHandler): void; on(event: 'tool_result', handler: ToolResultHandler): void; registerCommand(name: string, opts: { description?: string; handler: (args: string, ctx: ExtensionContext) => Promise; }): void; } type ExtensionFactory = (pi: ExtensionAPI) => void; declare const piGovernance: ExtensionFactory; export { type ExtensionAPI, type ExtensionContext, type ExtensionFactory, type ExtensionUI, type ToolCallEvent, type ToolResultEvent, piGovernance as default };