import type { CanonSession } from './canonPull.js'; export interface TouchedIndex { /** session REL (unique — uuids repeat across dual-lineage copies) → absolute file path → touch count */ byRel: Map>; /** tier-3 (Bash command-string parsing) — heuristic, INFERRED-grade; structured evidence wins */ inferredByRel: Map>; /** tier-3b (interpreter-body write idioms in heredocs/-e code) — AMBIGUOUS-grade */ ambiguousByRel: Map>; /** sessions actually re-scanned this run (rest served from cache) */ scanned: number; cached: number; /** archived sessions neither cached nor local (partial clone) — skipped, never fetched */ notLocal: number; } /** * Tier 3 — parse a Bash `command` string for file paths the command reads or * mutates. Deliberately CONSERVATIVE (heuristic ⇒ INFERRED-grade downstream): * only unambiguous idioms, only extension-bearing paths, relative paths only * when the record carries a cwd, no expansion of variables/substitutions. * Idioms: redirection targets (>, >>), tee, sed -i targets, cp/mv source+dest, * touch targets, and direct cat/head/tail read args. */ export declare function bashCommandPaths(cmd: string, cwd: string | undefined, out: Map): void; /** * Tier 3b — parse INTERPRETER BODIES (heredoc scripts, quoted -e code) for * WRITE idioms with string-literal paths. This is exactly the content tier 3 * deliberately excludes (heredoc truncation + quote stripping), so it is * heuristic-on-heuristic => AMBIGUOUS-grade downstream. Write idioms only * (reads inside scripts are unbounded noise): python open(p,'w'|'a'), * Path(p).write_text, node writeFileSync/appendFileSync/writeFile. */ export declare function interpreterBodyPaths(cmd: string, cwd: string | undefined, out: Map): void; /** * Build (or refresh) the touched index for the given sessions. * Streams each changed session once; unchanged sessions come from cache. */ export declare function buildTouchedIndex(sessions: CanonSession[], opts?: { home?: string; }): Promise; //# sourceMappingURL=canonTouched.d.ts.map