export declare const CLAUDE_SETTINGS_WITNESS_LIMITS: Readonly<{ bytes: number; rows: 1024; depth: 32; nodes: 65536; stringCharacters: 16384; pathCharacters: 4096; }>; export interface ClaudeSettingsWitnessBudget { remaining: number; } /** Cooperating installers may replace only their explicitly selected event. Compare the strict syntax * trees, not JSON.parse values or the preference-tolerant witness digest: all * other hooks, discovery settings, unknown values and number spellings remain * identical. Whitespace and object-key order have no configuration meaning. */ export declare const CLAUDE_COORDINATED_HOOK_EVENTS: readonly ["PreToolUse", "PostToolUse", "Stop", "Notification", "SessionStart", "SessionEnd", "UserPromptSubmit", "SubagentStart"]; export type ClaudeCoordinatedHookEvent = typeof CLAUDE_COORDINATED_HOOK_EVENTS[number]; export declare function assertClaudeHookEventsReplacement(before: string | null, replacement: string, events: readonly ClaudeCoordinatedHookEvent[]): void; export declare function assertClaudeStopHookReplacement(before: string | null, replacement: string): void; export declare function assertClaudePreToolUseHookReplacement(before: string | null, replacement: string): void; /** Hash only reviewed installer-rendered settings after the disk preimage has been verified. */ export declare function hashClaudeSettingsReplacement(text: string, budget: ClaudeSettingsWitnessBudget): string; /** Explicit capture never converts a stored legacy raw witness or changes settings. */ export declare function captureClaudeSettings(path: string, budget?: ClaudeSettingsWitnessBudget): { path: string; hashMode: "claude-settings-v1"; sha256: string; }; /** A new explicit review is required; v1 witnesses retain their old meaning. */ export declare function captureClaudeSettingsV2(path: string, budget?: ClaudeSettingsWitnessBudget): { path: string; hashMode: "claude-settings-v2"; sha256: string; }; export declare function hashClaudeSettingsReplacementV2(text: string, budget: ClaudeSettingsWitnessBudget): string; /** Explicit review of model-independent effort preferences; v1/v2 stay exact. */ export declare function captureClaudeSettingsV3(path: string, budget?: ClaudeSettingsWitnessBudget): { path: string; hashMode: "claude-settings-v3"; sha256: string; }; export declare function hashClaudeSettingsReplacementV3(text: string, budget: ClaudeSettingsWitnessBudget): string; /** Upgrade only with an exact semantic preimage of the prior review. This * proves every non-preference setting is unchanged; it never refreshes drift. * Both files are bounded regular settings.json files, read without symlinks. */ export declare function upgradeClaudeSettingsWitness(previous: { path: string; hashMode: "claude-settings-v1" | "claude-settings-v2"; sha256: string; }, reviewedSettingsPath: string): ReturnType;