/** * SLO Tracker * * Tracks Service Level Objectives and manages error budgets. * Monitors SLO compliance and generates reports. */ import type { SLO, SLI, SLIMeasurement, SLOResult, SLOReport, SLOViolation, ErrorBudget, BurnRate } from './types.js'; /** * SLO Tracker Options */ export interface SLOTrackerOptions { /** Warning threshold as % of target */ warningThreshold?: number; /** Enable violation tracking */ trackViolations?: boolean; /** Enable alerting */ enableAlerts?: boolean; /** Alert callback */ onAlert?: (alert: SLOAlert) => void; } /** * SLO Alert */ export interface SLOAlert { sloId: string; sloName: string; severity: 'warning' | 'critical'; message: string; currentValue: number; target: number; errorBudgetRemaining: number; timestamp: number; } /** * SLO Tracker class */ export declare class SLOTracker { private slos; private slis; private measurements; private violations; private calculator; private options; constructor(options?: SLOTrackerOptions); /** * Register an SLO */ registerSLO(slo: SLO): void; /** * Register an SLI */ registerSLI(sli: SLI): void; /** * Register multiple SLOs */ registerSLOs(slos: SLO[]): void; /** * Register multiple SLIs */ registerSLIs(slis: SLI[]): void; /** * Get an SLO by ID */ getSLO(id: string): SLO | undefined; /** * Get an SLI by ID */ getSLI(id: string): SLI | undefined; /** * Get all registered SLOs */ getAllSLOs(): SLO[]; /** * Get all registered SLIs */ getAllSLIs(): SLI[]; /** * Record a measurement for an SLI */ recordMeasurement(measurement: SLIMeasurement): void; /** * Get measurements for an SLI */ getMeasurements(sliId: string, windowMs?: number): SLIMeasurement[]; /** * Calculate SLO result */ calculateSLOResult(sloId: string): SLOResult | null; /** * Calculate all SLO results */ calculateAllResults(): SLOResult[]; /** * Generate SLO report */ generateReport(period?: { start: number; end: number; }): SLOReport; /** * Get error budget for an SLO */ getErrorBudget(sloId: string): ErrorBudget | null; /** * Calculate burn rate for an SLO */ calculateBurnRate(sloId: string): BurnRate | null; /** * Get violations for an SLO */ getViolations(sloId?: string): SLOViolation[]; /** * Clear violations */ clearViolations(sloId?: string): void; /** * Resolve a violation */ resolveViolation(violationId: string): void; /** * Calculate error budget from current value and target */ private calculateErrorBudget; /** * Update SLOs that depend on an SLI */ private updateDependentSLOs; /** * Check for SLO violation */ private checkForViolation; /** * Generate alerts for SLO status */ private generateAlerts; /** * Get the longest window from all SLOs */ private getLongestWindow; /** * Clear all data */ clear(): void; } /** * Create an SLO tracker */ export declare function createSLOTracker(options?: SLOTrackerOptions): SLOTracker;