/** * MetricsStore — SQLite-backed metrics storage (STORY-019) * * Provides record()/query()/cleanup() for operational metrics. * Singleton per database path; uses WAL mode for concurrent reads. */ export interface MetricRecord { name: string; value: number; labels?: Record; timestamp?: number; } export interface MetricRow { id: number; name: string; value: number; labels: string | null; timestamp: number; } export interface MetricQueryOptions { name: string; startTs?: number; endTs?: number; labels?: Record; limit?: number; } export interface MetricAggregation { name: string; count: number; sum: number; avg: number; min: number; max: number; } export declare class MetricsStore { private static instances; private db; private insertStmt; private constructor(); static getInstance(dbPath: string): MetricsStore; /** For testing: reset all singleton instances */ static resetInstances(): void; record(metric: MetricRecord): void; recordBatch(metrics: MetricRecord[]): void; query(options: MetricQueryOptions): MetricRow[]; aggregate(name: string, startTs?: number, endTs?: number): MetricAggregation | null; cleanup(olderThanMs: number): number; count(name?: string): number; countSince(startTs: number): number; close(): void; } //# sourceMappingURL=metrics-store.d.ts.map