/**
 * Inline allowlist annotation gather pass.
 *
 * Walks the source tree looking for `<lineComment> dxkit-allow:<category>`
 * comments and records each occurrence as a `(file, line, category)`
 * tuple. The `stale-allow` producer uses this list together with the
 * current scan's secret/code/config findings to detect orphaned
 * annotations — annotations whose underlying finding is no longer
 * present, which the developer should remove.
 *
 * Architectural posture:
 *
 *   - File walk goes through the canonical `walkSourceFiles` helper
 *     so `.gitignore` + `.dxkit-ignore` + bundled defaults are
 *     honored uniformly. No custom recursion / exclusion logic
 *     (per CLAUDE.md G_v4_7).
 *   - Per-language comment marker comes from each pack's
 *     `LanguageSupport.commentSyntax` via the inline annotation
 *     parser. No hardcoded `'//'` / `'#'` literals in this module
 *     (arch-check rule 2 enforces).
 *   - Annotation parsing reuses `parseAnnotation` from `inline.ts`
 *     — single source of grammar truth.
 *
 * Test files ARE walked (intentional — annotations often live in
 * test fixtures suppressing scanner findings against deliberate
 * placeholder credentials). Auto-generated files are NOT walked
 * (the developer doesn't author annotations in generated code, and
 * `walkSourceFiles` already excludes them by default).
 */
import { type AnnotationPosition } from './inline';
export interface InlineAllowlistOccurrence {
    /** Project-relative POSIX path. */
    readonly file: string;
    /** 1-based line number where the annotation comment LIVES. For
     *  above-line annotations the value is the line just before the
     *  finding's target; for same-line it's the finding's own line. */
    readonly line: number;
    /** Category named in the annotation (`test-fixture` / `false-positive` /
     *  etc.). Free-form at gather level; the producer cross-checks
     *  against the canonical `AllowlistCategory` union. */
    readonly category: string;
    /** Where the annotation sits relative to the suppressed line. */
    readonly position: AnnotationPosition;
}
export interface GatherInlineOpts {
    /** Walk test files too. Default: true (test fixtures legitimately
     *  carry intentional placeholders + suppressions). */
    readonly includeTests?: boolean;
}
/**
 * Walk source files under `cwd` and collect every inline allowlist
 * annotation occurrence. Cheap on small repos; on large ones the
 * `walkSourceFiles` cache amortizes the cost across multiple gather
 * passes within a single baseline-create run.
 *
 * Returns occurrences in stable order (file path lexicographic, then
 * line ascending) so downstream deterministic-output requirements
 * are satisfied automatically.
 */
export declare function gatherInlineAllowlistAnnotations(cwd: string, opts?: GatherInlineOpts): InlineAllowlistOccurrence[];
//# sourceMappingURL=gather.d.ts.map