/** Platform projections for the neutral opt-in hook contract. */ import type { ArtifactIntent, InstallScope, PlatformAdapter } from '../types.js'; export type HookTimeoutUnit = 'seconds' | 'milliseconds'; export interface HookRenderOptions { scope?: InstallScope; enableHooks?: boolean; enableBlockingHooks?: boolean; command?: string; } export interface HookRenderResult { intents: ArtifactIntent[]; diagnostics: string[]; } export interface HookTransport { exitCode: 0 | 2; stderr?: string; } /** * Render no hook configuration unless the caller opted in and the adapter has * a verified native hook capability. SessionStart is intentionally absent: * Monomind never installs prompt-injection hooks. */ export declare function renderHooks(adapter: PlatformAdapter, options?: HookRenderOptions): string; /** * A plan owns both sides of a hook integration: a verified configuration and * the locally executable neutral bridge it invokes. Never install either * half until a caller explicitly opts in. */ export declare function renderHookArtifacts(adapter: PlatformAdapter, options?: HookRenderOptions): HookRenderResult; /** The native command-hook protocol shared by Codex and Kimi. */ export declare function mapHookDecision(platform: PlatformAdapter['id'], decision: { action: 'allow' | 'block' | 'observe'; reason?: string; }): HookTransport | undefined; /** Testable unit assertion kept next to the renderer data it protects. */ export declare function assertTimeoutUnit(rendered: string, unit: HookTimeoutUnit): boolean; //# sourceMappingURL=hooks.d.ts.map