import { type DevCredential } from "../../harnesses/inference/resolve.js"; import type { ExtractionHarness } from "../extract/harness.js"; /** One available rung: the harness, the human credential label its availability * check reported, and the `--engine` family that rung speaks for. */ export interface AvailableEngine { harness: ExtractionHarness; credential: string; family: string; } export interface ResolveEngineOptions { root: string; env: Record; /** Explicit family pin (claude | codex | npx). Unavailable pin → null, loudly. */ engine?: string; /** Test seams. */ harnesses?: ExtractionHarness[]; resolveCredential?: (options: { env: Record; }) => Promise; } /** * The ordered ladder: Agent SDK → claude CLI → codex CLI → npx-fetched engine. * A rung whose availability() is null (binary missing, or present but * unauthenticated) is skipped; ladder order encodes preference, and the npx rung * is last on purpose because it is the only one with a real first-run cost. * The first available rung of a family speaks for that family. */ export declare function selectJudgmentEngines(input: { root: string; env: Record; harnesses?: ExtractionHarness[]; }): Promise; export declare function resolveJudgmentEngine(options: ResolveEngineOptions): Promise<{ engine: AvailableEngine | null; reason?: string; }>;