/**
 * `structureFindings` — the deferred structuring pass (DSPy TwoStepAdapter /
 * HALO `synthesize_traces` analog). The agentic actor reasons FREE-FORM and
 * emits a prose `report` (which any model does reliably); this separate, cheap
 * call's ONLY job is to turn that report into `AnalystFinding[]`. Decoupling
 * reasoning from structuring is what makes the SEMANTIC findings model-agnostic
 * — the reasoning model never has to satisfy a strict typed-array contract
 * while it diagnoses.
 *
 * Forgiving: the response runs through `coerceToFindingRows` (de-fence, lift
 * single→array) before Zod, and on a zero-finding extraction from a substantive
 * report it reasks ONCE with the schema restated. Returns a typed outcome so a
 * legitimate "nothing to report" is distinguishable from a failed extraction
 * (no silent empty).
 */
import { type LlmClientOptions } from '../llm-client';
import { type AnalystFinding } from './types';
export interface StructureFindingsOptions {
    /** The actor's free-form diagnosis prose. */
    report: string;
    analystId: string;
    /** Coarse classification stamped on every extracted finding. */
    area: string;
    model: string;
    baseUrl: string;
    apiKey?: string;
    /** Max reask attempts after a zero/invalid extraction. Default 1. */
    maxReasks?: number;
    /** Test seam: inject a fetch (no network in unit tests). */
    fetchImpl?: LlmClientOptions['fetch'];
}
export interface StructureFindingsResult {
    findings: AnalystFinding[];
    outcome: 'ok' | 'extraction_failed';
}
export declare function structureFindings(opts: StructureFindingsOptions): Promise<StructureFindingsResult>;
//# sourceMappingURL=structure-findings.d.ts.map