/** * SLO/SLI Vault Integration * * Integrates SLO/SLI data storage and retrieval with the Evidence Vault. */ import type { Database } from 'sqlite3'; import type { SLO, SLI, SLIMeasurement, SLOViolation, SLOStatus } from './types.js'; /** * SLO Vault class */ export declare class SLOVault { private db; private dbRun; private dbAll; private dbGet; constructor(db: Database); /** * Initialize SLO/SLI tables */ initialize(): Promise; /** * Store an SLO definition */ storeSLO(slo: SLO): Promise; /** * Store an SLI definition */ storeSLI(sli: SLI): Promise; /** * Store an SLI measurement */ storeMeasurement(measurement: SLIMeasurement, runId?: string): Promise; /** * Store an SLO snapshot */ storeSLOSnapshot(sloId: string, data: { currentValue: number; target: number; status: SLOStatus; errorBudgetRemaining: number; burnRate?: number; windowStart: number; windowEnd: number; }, runId?: string): Promise; /** * Store an SLO violation */ storeViolation(violation: SLOViolation): Promise; /** * Get all SLO definitions */ getSLOs(): Promise; /** * Get an SLO by ID */ getSLO(id: string): Promise; /** * Get all SLI definitions */ getSLIs(): Promise; /** * Get measurements for an SLI */ getMeasurements(sliId: string, windowStart?: number, windowEnd?: number, limit?: number): Promise; /** * Get violations for an SLO */ getViolations(sloId?: string, resolved?: boolean): Promise; /** * Get SLO snapshots for trend analysis */ getSLOSnapshots(sloId: string, windowStart?: number, windowEnd?: number, limit?: number): Promise>; /** * Delete an SLO and its associated data */ deleteSLO(id: string): Promise; /** * Delete an SLI and its associated data */ deleteSLI(id: string): Promise; /** * Resolve a violation */ resolveViolation(violationId: string): Promise; /** * Get SLO statistics */ getStatistics(): Promise<{ totalSLOs: number; totalSLIs: number; statusCounts: Record; activeViolations: number; totalMeasurements: number; }>; }