/** * SQLiteMetricsCollector — SQLite-backed metrics persistence * * Drop-in replacement for the in-memory MetricsCollector. * Persists metric records to SQLite for survival across restarts. */ import Database from 'better-sqlite3'; import type { AggregatedMetrics, TimeWindow } from './metrics-types.js'; export interface SQLiteMetricsCollectorOptions { db: Database.Database; } export declare class SQLiteMetricsCollector { private readonly db; constructor(options: SQLiteMetricsCollectorOptions); private initSchema; recordSearch(query: string, resultCount: number): void; recordGapDetection(totalQuestions: number, coveredQuestions: number): void; recordDistribution(ruleId: string, targetCount: number, successCount: number, failureCount: number): void; recordConflict(produced: number, resolved: number, pending: number): void; aggregate(window?: TimeWindow): AggregatedMetrics; getRawRecords(): { search: { timestamp: Date; query: string; resultCount: number; hit: boolean; }[]; gapDetection: { timestamp: Date; totalQuestions: number; coveredQuestions: number; uncoveredQuestions: number; }[]; distribution: { timestamp: Date; ruleId: string; targetCount: number; successCount: number; failureCount: number; }[]; conflict: { timestamp: Date; produced: number; resolved: number; pending: number; }[]; }; clear(): void; } //# sourceMappingURL=sqlite-metrics-collector.d.ts.map