/**
 * Hook predicate evaluator.
 *
 * Evaluates the optional `matches:` block on a hook manifest entry against
 * the runtime input passed by the agent CLI on a hook event. All declared
 * predicates AND together — the hook fires only if every one passes.
 *
 * Empty/missing matches => always passes (backward compat with hooks
 * authored before predicate support).
 *
 * Used at hook-fire time by either:
 *   (a) generated hook wrappers we install alongside the script, or
 *   (b) the script itself, by calling shouldFire() with parsed JSON input.
 */
import type { HookMatches } from '../types.js';
/** Runtime context passed to a hook by the agent CLI. */
export interface HookInput {
    hook_event_name?: string;
    prompt?: string;
    tool_name?: string;
    tool_args?: unknown;
    cwd?: string;
    permission_mode?: string;
    /** Grok-style camelCase spelling of permission_mode. */
    permissionMode?: string;
}
export declare function isSafeHookRegex(source: string): boolean;
/**
 * Decide whether a hook with the given match config should fire on this input.
 * Pure function — no side effects, no IO except git/cwd checks for predicates
 * that explicitly require them.
 *
 * Returns true if the hook should fire (all declared predicates pass), false
 * if it should be skipped.
 */
export declare function shouldFire(matches: HookMatches | undefined, input: HookInput): boolean;
