export declare const LAB_SUMMARY_SCHEMA = "humanish.lab-summary.v1"; export interface LabCaps { /** Per-lane blast-radius budget. */ laneUsd?: number; /** Shared study budget across every lane. */ studyUsd?: number; } export interface LabSummary { communications?: string; analysis?: { model: string; maxCostUsd: number; }; schema: typeof LAB_SUMMARY_SCHEMA; labId: string; title?: string; description?: string; /** "clone drawdb-io/drawdb", "app-url http://127.0.0.1:3000/", "this-repo". */ subject?: string; /** How many participants and who they are: `1 × synthetic-new-user`. */ participants?: string; /** The model that will actually run, override or default. */ model?: string; /** * The reasoning effort that will actually run, override or default — and "per-lane" when the * roster declares more than one, because a single value would be a lie about half the lanes. * * Shown because it was a silent constant: unreachable from a lab, so every run took the provider * default. A study variable you cannot see is one nobody chose (#497). */ reasoningEffort?: string; caps: LabCaps; /** * Whether the configured route's required keys resolve. Dry runs require none. This checks key * presence, not local CLI authentication or provider validity. Undefined when not checked. */ keysReady?: boolean; missingKeys?: string[]; } export interface ReadLabSummaryOptions { /** Skip the key probe (it touches vendor stores); the screen then shows no keys line. */ checkKeys?: boolean; env?: NodeJS.ProcessEnv; } /** * Describe one lab. Returns null when the manifest cannot be resolved — the caller already knows * the lab exists from the listing, so this failing means the file changed underneath them. */ export declare function readLabSummary(cwd: string, lab: string, options?: ReadLabSummaryOptions): Promise;