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; } export declare function readNativeSettingsWitnessFile(path: string, budget: ClaudeSettingsWitnessBudget, filename?: "settings.json" | "config.toml" | "sumi.json" | "marketplace.json"): string; /** The same bounded, stable, strict-UTF8 read for root-exclusion inputs whose * filenames are selected by the owning agent adapter rather than settings. */ export declare function readNativeDiscoveryWitnessFile(path: string, budget: ClaudeSettingsWitnessBudget): string; export type NativeJsonObject = ObjectValue; export type NativeJsonValue = Value; type ObjectValue = { kind: "object"; entries: Array<[string, Value]>; }; type Value = ObjectValue | { kind: "array"; items: Value[]; } | { kind: "string"; value: string; } | { kind: "number"; value: string; } | { kind: "literal"; value: "true" | "false" | "null"; }; /** The same strict syntax tree for other bounded native JSON witnesses: * duplicate decoded keys refuse, numbers keep their spelling, and the byte, * depth, node, string and top-level field limits above apply unchanged. */ export declare function parseNativeJsonObject(text: string): NativeJsonObject; export declare const CLAUDE_BUILTIN_THEMES: readonly ["auto", "dark", "light", "dark-daltonized", "light-daltonized", "dark-ansi", "light-ansi"]; /** 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?: "bytes" | "claude-settings-v1" | "claude-settings-v2"; sha256: string; }, reviewedSettingsPath: string): ReturnType; /** Explicit review that additionally permits a built-in top-level theme. * v1/v2/v3 witnesses keep their meaning; nothing selects v4 implicitly. */ export declare function captureClaudeSettingsV4(path: string, budget?: ClaudeSettingsWitnessBudget): { path: string; hashMode: "claude-settings-v4"; sha256: string; }; export declare function hashClaudeSettingsReplacementV4(text: string, budget: ClaudeSettingsWitnessBudget): string; /** Explicit opt-in upgrade to v4 with an exact preserved preimage of the prior * review (raw bytes, v1, v2 or v3). It proves that every setting v4 binds is * unchanged; any other drift, including skipDangerousModePermissionPrompt, * refuses. A stored witness is never rewritten without this call. */ export declare function upgradeClaudeSettingsWitnessV4(previous: { path: string; hashMode?: "bytes" | "claude-settings-v1" | "claude-settings-v2" | "claude-settings-v3"; sha256: string; }, reviewedSettingsPath: string): ReturnType; /** Current discovery controls, parsed by the same bounded, duplicate-key-safe * adapter as the v5 witness. Root exclusion consumes this without changing a * stored review or accepting that review for native loading. */ export declare function claudeDiscoveryControlKeys(text: string): string[]; /** Discovery environment names from the same owning projection, without * returning their values or treating ordinary environment as discovery. */ export declare function claudeDiscoveryEnvironmentKeys(text: string): string[]; /** Explicit v5 review: the narrowed discovery projection above. v1-v4 * witnesses keep their meaning; nothing selects v5 implicitly. */ export declare function captureClaudeSettingsV5(path: string, budget?: ClaudeSettingsWitnessBudget): { path: string; hashMode: "claude-settings-v5"; sha256: string; }; export declare function hashClaudeSettingsReplacementV5(text: string, budget: ClaudeSettingsWitnessBudget): string; /** Explicit upgrade from any prior witness (raw bytes, v1-v4) with an exact * preserved preimage of its review. v5 binds a subset of what each earlier mode * binds, so only a difference in settings v5 ignores is accepted; a change to a * hook, plugin, marketplace, skill key, Skill rule, added directory or * discovery environment variable still refuses. */ export declare function upgradeClaudeSettingsWitnessV5(previous: { path: string; hashMode?: "bytes" | "claude-settings-v1" | "claude-settings-v2" | "claude-settings-v3" | "claude-settings-v4"; sha256: string; }, reviewedSettingsPath: string): ReturnType; /** Strict bounded JSON control witness; metadata exclusion must be explicit. */ export declare function hashNativeJsonControls(text: string, excludedMetadata?: "version"): string; /** Sumi's versioned review uses the same strict JSON parser and bounded syntax * tree. Unknown fields, permissions, routing and executable inputs stay bound. * Only schema/display strings and two presentation-only booleans may vary. */ export declare function hashSumiNativeJsonControls(text: string): string; export {};