/**
 * SLO gates — quantified pass/fail primitives beyond score thresholds.
 *
 * Lifted from ADC's sandbox eval suite. Each SLO defines a metric, a
 * threshold, and a severity (critical | warning). Critical breaches fail
 * the eval; warnings are reported but don't gate CI. Margin is the
 * ratio of actual to threshold for histogramming "how close are we?"
 *
 * Consumers assemble their own SLO arrays; DEFAULT_AGENT_SLOS covers
 * the generic agent flow (provision, first token, pass rate, cost).
 */
export type SloSeverity = 'critical' | 'warning';
export type SloComparator = 'lte' | 'gte';
export interface Slo {
    /** Stable identifier — must be unique within an SLO set. */
    id: string;
    /** Human description, shown in reports. */
    description: string;
    /** Metric key looked up in the candidate record. */
    metric: string;
    /** Whether the metric should stay below (lte) or above (gte) threshold. */
    comparator: SloComparator;
    /** Threshold value. */
    threshold: number;
    severity: SloSeverity;
}
export interface SloCheckResult {
    slo: Slo;
    actual: number | undefined;
    passed: boolean;
    /** actual/threshold for lte, threshold/actual for gte. >1 means safe margin; <1 means breach. 0 when actual is missing. */
    margin: number;
    detail: string;
}
export interface SloReport {
    results: SloCheckResult[];
    passedCritical: boolean;
    criticalBreaches: SloCheckResult[];
    warnings: SloCheckResult[];
}
/**
 * Evaluate an SLO set against a candidate metrics object. Missing metrics
 * count as breaches — if you declared it, you must measure it.
 */
export declare function checkSlos(metrics: Record<string, number>, slos: Slo[]): SloReport;
/** Reference SLO set for agent-style evals. Tune per-product by cloning + overriding. */
export declare const DEFAULT_AGENT_SLOS: Slo[];
//# sourceMappingURL=slo.d.ts.map