import type { Assertion, AssertionResults, ExecutorFn, Sample, ToolCallInfo } from '../types/index.js'; export { ASYNC_ASSERTION_TYPES } from '../shared/assertion-types.js'; 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): 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; }; }): AssertionResults; export declare function runAsyncAssertions(output: string, assertions: Assertion[], { executor, judgeModel, sample, samplesDir }: AsyncAssertionContext): Promise;