import { type HookEntry, type HookEvent, type HookResultMode } from '../../store/hook-registry.js'; /** Where a declaration is actually installed once compiled. */ export type HookMountTarget = 'claude' | 'pi' | 'server'; /** When a change to a declaration starts having an effect. */ export type HookApplyTime = 'next-agent' | 'server-restart'; /** * The concrete mount points a declaration reaches. This is the field that answers "why isn't my * hook firing?": `agent:session-end`, `agent:pre-compact`, `agent:user-prompt` and `agent:turn-end` * look backend-neutral but have no Claude mount point, so they resolve to `['pi']` alone. */ export declare function hookMountTargets(entry: HookEntry): HookMountTarget[]; /** * The `result` modes the loader will accept for an event. Everything outside the five whitelisted * events is limited to `none`, so the editor can present a constrained choice rather than let the * user compose a declaration that validation will reject. */ export declare function legalResultModes(event: HookEvent): HookResultMode[]; /** * `cortex:*` hooks are dispatched by the HookBus, which snapshots the registry at startup, so a * change only lands after a restart. Everything else is re-read when the next agent spawns. */ export declare function hookAppliesAt(event: HookEvent): HookApplyTime;