import { type Ocr18Finding, type Ocr18Range, type Ocr18State, type Ocr18Summary } from './ocr-multilang-adapter.js'; import { type Ocr18Language } from './ocr-18-language-routing.js'; export type Ocr18Detection = { readonly languages: readonly Ocr18Language[]; readonly changedFileCount: number; /** Changed files whose format the CLI does not review as a routed language. */ readonly unsupportedFiles: readonly string[]; }; /** * Which routed languages (and which unrouted files) the requested range touches. * * @throws when git cannot answer — "could not detect" must not read as "nothing * to review", so the caller is given the choice of what to say. */ export declare function detectLanguages(cwd: string, range?: Ocr18Range): Ocr18Detection; export type Ocr18LanguageReport = { readonly language: Ocr18Language; readonly findings: readonly Ocr18Finding[]; readonly count: number; }; export type Ocr18MultiResult = { readonly state: Ocr18State; readonly detected: readonly Ocr18Language[]; readonly languages: readonly Ocr18LanguageReport[]; readonly changedFileCount: number; readonly unsupportedFiles: readonly string[]; /** * Findings on formats the caller did not route (a `.yaml` finding, say). * Reported rather than dropped: the review DID look at them. */ readonly unroutedFindings: readonly Ocr18Finding[]; readonly summary: Ocr18Summary | null; readonly durationMs: number; readonly rawOutput: string; }; export type Ocr18MultiOptions = Ocr18Range & { readonly cwd: string; /** Requested report set; omitted means every language detected in the range. */ readonly languages?: readonly Ocr18Language[]; readonly timeoutMs?: number; }; /** * One review for the whole change set, findings grouped by language. * * The four outcomes a caller must be able to tell apart: * 1. a language reported with findings (`count` > 0); * 2. a language reported with count 0 while the state is `ok` — it ran and was clean; * 3. `unsupportedFiles` — the file is in the diff but the CLI does not review it * as a routed language (with state `no-routed-language` when that is ALL * the range holds); * 4. a state of `ocr18-missing` / `execution-failed` with `languages: []` — it * never ran, so there is no zero to mistake for a clean result. */ export declare function runOcr18Multi(options: Ocr18MultiOptions): Ocr18MultiResult;