import type { RequestType } from '../artifacts/artifact-prerequisites.js'; export type FileCategory = 'source' | 'config' | 'docs' | 'lockfile' | 'test' | 'unknown'; export type FileBreakdown = { category: FileCategory; count: number; examples: string[]; }; export type TypeSanityReport = { declaredType: RequestType; gitAvailable: boolean; changedFiles: string[]; breakdown: FileBreakdown[]; suggestedTypes: ReadonlyArray; consistent: boolean; rationale: string; }; export type TypeSanityOptions = { projectRoot: string; declaredType: RequestType; /** Compare working tree against this ref. Default 'HEAD' (covers staged + unstaged). */ baseRef?: string; }; /** * Peaks' own artifact workspace. Changes here (PRD/RD/QA markdown, session * state) are never the "code change" a request type describes, so they must be * excluded from the diff — otherwise a PRD-planning-phase handoff that only * wrote `.peaks/**` markdown would be misclassified as a docs change. */ export declare function isArtifactWorkspaceFile(filePath: string): boolean; /** The ONE git enumeration: tracked changes vs `baseRef` plus untracked files. * `readGitChangeSet` is NUL-safe and `--relative`, so non-ASCII names and a * nested project root are both read correctly. */ export declare function tryGitDiffFiles(projectRoot: string, baseRef: string): { ok: boolean; files: string[]; }; export declare function checkTypeSanity(options: TypeSanityOptions): TypeSanityReport;