/**
 * Active learning — agent-as-scenario-author.
 *
 * Analyzes an existing Dataset + trace corpus for coverage gaps and
 * weak spots, returns a prioritized list of *synthesis targets*:
 * (gap description, existing-neighbor examples, suggested direction).
 *
 * Does NOT call an LLM itself — the proposer agent is caller-supplied.
 * This module's job is to identify WHERE new scenarios would compound
 * the most information, not to author them.
 *
 * Gaps we detect:
 *   - dimensions with high score variance (unstable, need more data)
 *   - dimensions with low coverage count (undersampled)
 *   - failure classes with clusters (systematic weakness)
 *   - difficulty bins with no coverage
 */
import type { Dataset, DatasetScenario } from './dataset';
import type { TraceStore } from './trace/store';
export type SynthesisReason = 'high-variance' | 'undersampled' | 'failure-cluster' | 'difficulty-gap';
export interface SynthesisTarget {
    reason: SynthesisReason;
    description: string;
    /** Existing scenarios that are closest to the gap; caller feeds these to
     *  their LLM proposer as few-shot examples. */
    neighbors: DatasetScenario[];
    /** Suggested direction — e.g. "harder variants", "edge cases of X", "failure class Y". */
    direction: string;
    /** Priority score — higher = more information-dense gap. 0..1. */
    priority: number;
}
export interface ActiveLearningOptions {
    /** Minimum scenarios per difficulty band to count as "covered". */
    minPerBand?: number;
    /** Variance threshold above which a scenario's dimension is "unstable". */
    varianceThreshold?: number;
    /** Max synthesis targets returned. */
    topK?: number;
}
export declare function proposeSynthesisTargets(dataset: Dataset, traceStore: TraceStore, options?: ActiveLearningOptions): Promise<SynthesisTarget[]>;
//# sourceMappingURL=active-learning.d.ts.map