import type { HookConventionReport } from './scan-types.js'; /** * Reads the CONTENTS of a consumer project's hook directories and reports the * OBSERVED convention: per exported function its name and return shape, per * directory the dominant naming pattern / return shape / mapper delegation, * and the deviations from those dominants. * * What this deliberately is NOT: a type-flow checker. "This hook consumes a * `*DTO` directly" is a property of a VALUE'S TYPE, not of its text — a regex * for it fires on the one legal mapper import and misses the real violation. * Every field below is therefore labelled observed, and anything the text * cannot answer is reported as null rather than guessed. * * Known limits of a text scan without a compiler: string literals and comments * are masked out first, so a commented-out hook is never counted; a return * whose shape is produced by a call or held in an identifier cannot be * classified; a generic parameter list with nested angle brackets is not * matched; `.vue`/`.tsx` script blocks are not read (the extension set matches * the existing hook sampler). */ export type HookConventionScanOptions = { projectRoot: string; /** Candidate hook directories relative to `projectRoot`, in report order. */ hookDirs: string[]; }; export declare function scanHookConvention(options: HookConventionScanOptions): Promise;