import type { InteractionCategory, Interaction, InteractionAudit, NecessityJudgment, CategoryScore } from "../types/scoring.js"; /** * How each audit dimension contributes to a category's raw score. * * Environment and service evaluate EXECUTION QUALITY only (success + speed). * The agent's choice of what to invoke, with what parameters, and whether * it was necessary is evaluated under the agent dimension. */ export declare const CATEGORY_DIMENSION_WEIGHTS: Record>; /** Calibration parameters for the log-normal CDF mapping. */ export interface CalibrationParams { /** The raw score (0-1) that maps to 50/100. */ median: number; /** Controls the spread — lower = steeper curve. */ sigma: number; } /** Default calibration. median = raw score that maps to 50/100. */ export declare const DEFAULT_CALIBRATION: Record; export declare const DEFAULT_AUDIT_SCORES: { readonly success: 1; readonly speed: 1; readonly weight: 1; readonly contextRelevance: 1; }; /** * Approximation of the standard normal CDF using Abramowitz & Stegun. */ export declare function normalCDF(x: number): number; /** * Map a raw 0-1 score through a log-normal CDF to produce 0-100. * * The log-normal mapping ensures: * - Improving from bad (20) to mediocre (50) is "easier" (smaller raw improvement needed) * - Improving from good (80) to great (95) requires significant raw improvement * - The mapping is S-shaped, rewarding getting out of the "bad" zone */ export declare function logNormalScore(rawScore: number, median: number, sigma: number): number; /** * Severity-weighted average: bad scores pull harder than good scores push. * * Each value's effective weight is `(1 - value)² + 1`. Perfect scores (1.0) * get weight 1, while worse scores get progressively heavier, making outlier * problems hard to hide behind many good results. * * @param values - Scores in the 0-1 range */ export declare function severityWeightedAverage(values: number[]): number; /** * Aggregate a single audit dimension across interactions in a category, * weighted by each interaction's contextBytes. */ export declare function aggregateDimension(audits: InteractionAudit[], interactions: Interaction[], dimension: "success" | "speed" | "weight" | "contextRelevance"): number; /** * Compute the full category score from audits, necessity judgment, and interactions. * Applies dimension weights and log-normal mapping. */ export declare function computeCategoryScore(category: InteractionCategory, audits: InteractionAudit[], necessity: NecessityJudgment, interactions: Interaction[], calibration?: CalibrationParams): CategoryScore; //# sourceMappingURL=category-score.d.ts.map