/** Marker that identifies a hook entry as Nexus-owned. */
export declare const NEXUS_HOOK_COMMAND_MARKER = "nexus-prime hook";
interface HookCommand {
    type: 'command';
    command: string;
    timeout?: number;
}
interface HookEntry {
    matcher?: string;
    hooks: HookCommand[];
}
/**
 * Canonical Nexus hook spec. Edit here, not in callers.
 * Timeouts protect Claude Code from a wedged Nexus process — leave them set.
 */
export declare function getNexusHookSpec(): Record<string, HookEntry[]>;
export interface NexusHookWriteResult {
    /** True when the file would be written (or was written). */
    changed: boolean;
    /** Hook event names that ended up with Nexus entries. */
    events: string[];
    /** Number of stale Nexus entries removed before re-adding. */
    staleRemoved: number;
}
/**
 * Idempotent writer for the Nexus hook block. Returns metadata so callers can
 * report status (`installed | unchanged | dry-run`) without re-implementing
 * the merge logic.
 */
export declare function writeNexusClaudeCodeHooks(settingsPath: string, options?: {
    dryRun?: boolean;
}): NexusHookWriteResult;
export {};
