import type { Assertion, AssertionResults, ExecutorFn, Sample, ToolCallInfo } from '../types/index.js';
export declare const ASYNC_ASSERTION_TYPES: Set<string>;
export interface AsyncAssertionContext {
    executor: ExecutorFn;
    judgeModel: string;
    sample: Sample;
    samplesDir: string;
}
export declare function ratioToScore(ratio: number): number;
/**
 * ROUGE-N (recall-oriented). N-gram overlap divided by the reference's
 * n-gram count. Multi-set form per Lin 2004 — repeated n-grams are clipped
 * to their reference count, so a candidate that repeats a single matching
 * n-gram many times can't game the score above 1.
 */
export declare function rougeN(candidate: string, reference: string, n: number): number;
/** Standard Levenshtein edit distance with O(min(m,n)) memory. */
export declare function levenshtein(a: string, b: string): number;
/**
 * BLEU score (corpus-level form, single reference). Geometric mean of
 * precision at n=1..maxN, multiplied by the brevity penalty for short
 * candidates. Unsmoothed — returns 0 if any n-gram precision is 0, which
 * is a known sharpness of the original BLEU; threshold accordingly.
 */
export declare function bleu(candidate: string, reference: string, maxN?: number): number;
export declare function validateJsonSchema(data: unknown, schema: Record<string, unknown>): boolean;
export declare function runAssertions(output: string, assertions: Assertion[], context?: {
    costUSD?: number;
    durationMs?: number;
    numTurns?: number;
    toolCalls?: ToolCallInfo[];
    mockStats?: {
        hits: number;
        misses: number;
        perMock: Record<string, number>;
    };
}): AssertionResults;
export declare function runAsyncAssertions(output: string, assertions: Assertion[], { executor, judgeModel, sample, samplesDir }: AsyncAssertionContext): Promise<AssertionResults>;
//# sourceMappingURL=assertions.d.ts.map