import type { AgentId } from "../types.js";
type HookDrift = "desired-on-actual-off" | "desired-off-actual-on";
/** Per-agent hook installation/config state for one registry hook. */
interface HookAgentState extends Record<"supported", boolean> {
    installed: boolean;
    scriptPath: string | null;
    configPath: string | null;
    drift?: HookDrift;
    reason?: string;
}
/** Dashboard-facing hook state including defaults, drift, and per-agent registration status. */
export interface HookState extends Record<"togglable" | "enabled", boolean> {
    id: string;
    name: string;
    description: string;
    defaultEnabled: boolean;
    requiresConfirmDialog: boolean;
    agents: Record<AgentId, HookAgentState>;
}
/** HTTP-safe hook registrar failure with the status code routes should return. */
declare class HookRegistrarError extends Error {
    readonly statusCode: number;
    constructor(message: string, statusCode: number);
}
export { HookRegistrarError };
export declare function readAllHookStates(projectPath: string): HookState[];
export declare function applyHookState(hookId: string, enabled: boolean, projectPath: string): HookState;
export declare function syncHookStates(projectPath: string): HookState[];
//# sourceMappingURL=hook-registrar.d.ts.map