import { Evaluator, type AssignmentEvent, type EvaluatorOptions, type ParameterEvent } from './evaluator'; import { type Program, type Value } from './program'; import { type AnalysisBudget } from './program-stats-support'; import { type AnalyzeAsyncOptions, type AnalyzeOptions, type AnalyzeResult, type AsyncProgress, type BindingCapture, type BindingStats, type ConvergenceConfig, type FieldConvergence, type FieldStats, type TopLevelBindings } from './program-stats-types'; export declare function makeEvaluator(options?: EvaluatorOptions): Evaluator; /** * Build {@link EvaluatorOptions} for an analysis run, merging the caller's loop * budget ({@link AnalyzeOptions.maxTotalIterations} / `maxRepeatIterations`) * with any binding-capture hooks. Returns `undefined` when nothing is set, so * the Evaluator keeps its defaults. */ export declare function evaluatorOptions(options: AnalyzeOptions | undefined, hooks?: EvaluatorOptions): EvaluatorOptions | undefined; export declare function initBindingCapture(topLevel: TopLevelBindings): BindingCapture; export declare function bindingHooks(topLevel: TopLevelBindings, capture: BindingCapture): { onAssignment: (event: AssignmentEvent) => void; onParameter: (event: ParameterEvent) => void; }; export declare function buildPerBindingFromCapture(capture: BindingCapture, totalTrials: number): Map; /** Exported only for equivalence tests of the weighted aggregator (internal). */ export interface WeightedValue { value: Value; count: number; } /** Adapt a raw value array to weighted entries (first-seen order). Used by * the per-binding path, which still collects raw arrays per binding. */ export declare function toWeightedSamples(values: Value[]): WeightedValue[]; export declare function runMonteCarlo(program: Program, options: AnalyzeOptions | undefined, topLevel: TopLevelBindings | null, budget?: AnalysisBudget): AnalyzeResult; export declare function runMonteCarloAsync(program: Program, options: AnalyzeAsyncOptions | undefined, topLevel: TopLevelBindings | null, budget?: AnalysisBudget): AsyncGenerator; export declare function analyzeConvergence(entries: WeightedValue[], config: ConvergenceConfig, path: string): FieldConvergence[]; export declare function buildStats(entries: WeightedValue[], trialCount?: number, undefinedCount?: number): FieldStats;