/** * SLI Calculator * * Calculates Service Level Indicators from various data sources. * Supports ratio-based, threshold-based, and percentile-based SLIs. */ import type { SLI, SLIMeasurement, SLIAggregation, SLOStatus, BurnRate } from './types.js'; /** * Event data for ratio calculation */ export interface GoodBadEvents { good: number; bad: number; } /** * Time series data point */ export interface TimeSeriesPoint { timestamp: number; value: number; success?: boolean; } /** * SLI Calculator class */ export declare class SLICalculator { /** * Calculate SLI from good/bad events (ratio-based) */ calculateFromEvents(sli: SLI, events: GoodBadEvents): SLIMeasurement; /** * Calculate SLI from time series data */ calculateFromTimeSeries(sli: SLI, data: TimeSeriesPoint[], windowMs: number): SLIMeasurement; /** * Calculate SLI from QA360 test results */ calculateFromTestResults(sli: SLI, results: { total: number; passed: number; failed: number; skipped: number; }): SLIMeasurement; /** * Calculate SLI from latency measurements */ calculateLatency(sli: SLI, latencies: number[], percentile?: 'p50' | 'p95' | 'p99' | 'p99_9'): SLIMeasurement; /** * Calculate multiple SLIs from a single data source */ calculateBatch(slis: SLI[], data: TimeSeriesPoint[] | GoodBadEvents | { total: number; passed: number; failed: number; skipped: number; }): SLIMeasurement[]; /** * Calculate percentile value */ private percentile; /** * Parse percentile string to number */ private parsePercentile; /** * Create empty measurement */ private emptyMeasurement; /** * Aggregate measurements over time */ aggregateMeasurements(measurements: SLIMeasurement[], aggregation: SLIAggregation): SLIMeasurement; /** * Check if measurement meets threshold */ meetsThreshold(measurement: SLIMeasurement, threshold: { operator: string; value: number; }): boolean; /** * Calculate burn rate for error budget */ calculateBurnRate(measurements: SLIMeasurement[], target: number, windowMs: number): BurnRate; /** * Determine SLO status from current value and target */ determineStatus(current: number, target: number, warningThreshold?: number): SLOStatus; } /** * Create an SLI calculator */ export declare function createSLICalculator(): SLICalculator;