/** * Every `command` string in a parsed hooks block. It looks for the key `command` * instead of following one layout, because the layout depends on the harness * (Claude Code nests commands under a matcher block, Codex's TOML is flat). */ export declare function commandsIn(node: unknown): string[]; export interface CheckPaths { /** Paths relative to the project, sorted, no duplicates: what the script tests. */ readonly paths: readonly string[]; /** * Paths the check found but cannot safely write into the script. `compile` * warns about each one, because a path left out is a hook the check does not * cover. */ readonly unsafe: readonly string[]; } /** * The files that the compiled-hook commands in `commands` need, as paths relative * to the project. Two kinds of path are left out on purpose: absolute paths * (another machine's checkout will not have them) and paths that use any variable * except the project root, such as `$HOME` or a plugin root (we cannot resolve * them here). */ export declare function checkPaths(commands: readonly string[]): CheckPaths; /** * The text of the script. The same paths always give the same text, so a * recompile that finds the same hooks writes the same bytes. * * The script prints JSON with an `additionalContext` field instead of plain text. * That form is confirmed for the start of a session on both Claude Code and * Codex; plain text is only confirmed on Claude Code. */ export declare function renderHookCheck(paths: readonly string[], cure?: string): string; //# sourceMappingURL=hook-check.d.ts.map