export interface TrustedHookLauncher { node: string; cli: string; } /** Resolve the exact external Node + OpenLore entry used by an installed hook. */ export declare function resolveTrustedHookLauncher(rootPath: string): Promise; export declare function shellQuote(value: string): string; export declare function renderTrustedHookCommand(launcher: TrustedHookLauncher, args: string[]): string; export interface GitHookTarget { effectiveHooksDir: string; hookPath: string; executionPath: string; resolvedByGit: boolean; manager?: 'husky' | 'lefthook' | 'disabled' | 'unavailable' | 'unconfined'; canInstall: boolean; } export declare function resolveGitPath(rootPath: string, name: string): Promise; export declare function resolveGitHookTarget(rootPath: string, hookName: 'pre-commit' | 'post-commit'): Promise; export interface HookFileUpdateResult { status: 'updated' | 'unchanged' | 'unavailable'; reason?: string; } /** * Insert an OpenLore-marked block into an existing hook script, or author a new one. * * The block goes in FIRST, directly after the shebang, and every other byte of the script is * left alone. Appending it at the end instead meant a hook ending in `exit 0` — the usual way * to swallow a non-zero status from a linter — never reached the block, and the fix for that * was to delete the user's `exit 0`: a silent change to what their own script does, applied by * four different installers. Going in first costs nothing (each OpenLore block exits non-zero * only on its own verdict) and leaves their semantics intact. * * `legacyBlocks` are OpenLore's own superseded markers, which ARE removed. */ export declare function insertHookBlock(existing: string | null, block: string, legacyBlocks?: readonly RegExp[]): string; /** Serialize cross-process hook edits and publish each rewrite with one atomic rename. */ export declare function updateHookFile(hookPath: string, update: (existing: string | null) => string | null | undefined): Promise; export declare function isResolvedGitRepository(rootPath: string, target: GitHookTarget): Promise; export declare function displayHookPath(path: string): string; export declare function hookManagerWarning(target: GitHookTarget, wiringLine: string): string; //# sourceMappingURL=git-hooks.d.ts.map