import type { AgentHookEvidence, Finding } from "./gate-report-types.js";
/** Injectable boundaries, so tests never read the real home directory. */
export interface AgentHookDependencies {
    /** Home directory holding the installed marketplaces. */
    readonly homedir?: () => string;
}
/**
 * Whether a matcher selects a tool that writes a file.
 *
 * Compared alternative by alternative rather than by substring, because
 * `TodoWrite` contains `Write` and a substring test therefore reports a hook
 * on the task list as edit-time enforcement. Over-reporting here is not a
 * harmless surplus: the count it feeds is an operator's measure of how much
 * runs that they cannot govern.
 * @param matcher - The matcher as the manifest spells it
 * @returns True when it selects a file-writing tool
 */
export declare function matchesEditTool(matcher: string): boolean;
/**
 * The script a hook command runs.
 *
 * A command is not always a bare path — some are a small shell pipeline — so
 * the last path-like token wins and a command with no script falls back to its
 * first word rather than to a slice of shell syntax.
 * @param command - The registered command
 * @returns A short, operator-readable name
 */
export declare function scriptNameOf(command: string): string;
/**
 * Every edit-time hook proved installed and active for this project.
 *
 * Degrades to `unknown` rather than to an empty list. "No agent hooks run
 * here" and "this run could not see which plugins are installed" are different
 * answers, and only the first of them is a finding.
 * @param projectRoot - Project root
 * @param dependencies - Injectable boundaries
 * @returns The evidence, or an honest unknown
 */
export declare function collectAgentHooks(projectRoot: string, dependencies?: AgentHookDependencies): Promise<Finding<readonly AgentHookEvidence[]>>;
//# sourceMappingURL=gate-report-agent-hooks.d.ts.map