import { ClaudeSettings } from './hook-registration'; declare class HookSpec { readonly key: string; readonly label: string; readonly matcher: string; readonly bin: string; constructor(key: string, label: string, matcher: string, bin: string); commandFor(target: InstallTarget, projectRoot: string): string; } export declare class InstallTarget { readonly choice: string; readonly label: string; readonly settingsPath: string; readonly absolute: boolean; constructor(choice: string, label: string, settingsPath: string, absolute: boolean); } export declare const RULES_HOOK: HookSpec; export declare const GUARDS_HOOK: HookSpec; export declare function installTargets(projectRoot: string, homeDir?: string): InstallTarget[]; type Json = Record; type RuleEntry = Json; type Section = Record; interface ConfigFile { extends?: string; rules: Section; hookGuards: Section; commands: Json; excludePaths: string[]; 'match-rules': Json[]; rulesDir: string[]; } interface MigrateResult { config: ConfigFile; changes: string[]; } export declare function migrate(existing: Json): MigrateResult; export declare function hasHook(settings: ClaudeSettings, bin: string): boolean; export declare function applyHook(hook: HookSpec, chosen: InstallTarget | null, targets: InstallTarget[], projectRoot: string): void; export declare function resolveTargetChoice(name: string): string | null; export declare function parseTargetArg(args: string[]): string | null; export declare function main(): Promise; export {};