/**
 * src/compute/strategies/bon-mav.ts
 *
 * BoN-MAV — Best-of-N with Multi-Agent Verification.
 *
 * Reference: Lifshitz et al. 2025, "Multi-Agent Verification: Scaling
 * Test-Time Compute with Multiple Verifiers", arXiv:2502.20379.
 *
 * Algorithm (paper § 2.3):
 *   1. Sample N candidate outputs from the generator.
 *   2. For each candidate, run M aspect verifiers in parallel → score matrix [N][M].
 *   3. Aggregate per-candidate score (paper baseline: unweighted mean of binary votes,
 *      Eq. 1 § 2.2). We expose four modes: mean | median | min | majority-vote.
 *   4. Return argmax candidate (ties → first occurrence).
 *
 * See docs/papers/bon-mav-notes.md for the paper distillation.
 */
import type { Strategy, StrategyResult } from "../types.js";
import type { Verifier } from "../verifier.js";
export type MAVAggregation = "mean" | "median" | "min" | "majority-vote";
export interface BonMavOptions<TOutput> {
    /** Candidate count (>= 1). */
    n: number;
    /** Aspect verifiers (M >= 1). All run on every candidate. */
    verifiers: readonly Verifier<TOutput>[];
    /** Aggregation across verifiers. Default "mean" (paper baseline on continuous scores). */
    aggregation?: MAVAggregation;
    /** Generate candidates concurrently. Default true. */
    parallel?: boolean;
    /**
     * Threshold for "majority-vote" aggregation: a verifier score >= threshold
     * counts as a "yes" vote. Default 0.5. Ignored for other aggregations.
     */
    voteThreshold?: number;
}
/**
 * BoN-MAV-specific metadata extension.
 * `verifier_scores[i]` = AGGREGATED score of candidate i (length N).
 * `mavMatrix[i][j]` = raw score from verifier j on candidate i (N × M).
 */
export interface BonMavMetadata {
    strategy: string;
    candidates: number;
    verifier_scores: number[];
    mavMatrix: number[][];
    aggregation: MAVAggregation;
    cost: {
        calls: number;
    };
    latency_ms: number;
}
export interface BonMavResult<TOutput> extends StrategyResult<TOutput> {
    metadata: BonMavMetadata;
}
/**
 * Construct a BoN-MAV {@link Strategy}.
 *
 * Validation:
 * - `n < 1` → RangeError
 * - `verifiers.length < 1` → Error
 * - unknown `aggregation` → Error
 * - `voteThreshold` out of [0,1] → RangeError
 */
export declare function bonMavStrategy<TInput, TOutput>(opts: BonMavOptions<TOutput>): Strategy<TInput, TOutput>;
//# sourceMappingURL=bon-mav.d.ts.map