import type { DocumentChunk, SessionMeta, SessionSource, QueryResult, MessageRow, ToolCallRow, AnalyticsFilter, ToolUsageStat, MessageStat, OverviewStats, SessionAnalytics } from "../types"; import type { SectionFilterOptions, SessionRow, SessionFilter, ChunkRow } from "../database"; export interface QueryFilters { projectFilter?: string; sourceFilter?: SessionSource; fromMs?: number; toMs?: number; sectionFilter?: string; sectionOpts?: SectionFilterOptions; } export interface DatabaseProvider { /** Human-readable backend name ("sqlite" | "postgres") */ readonly backendType: "sqlite" | "postgres"; getSessionMeta(sessionId: string): Promise; upsertSessionMeta(meta: SessionMeta): Promise; insertChunks(chunks: DocumentChunk[], embeddings: number[][]): Promise; insertMessages(rows: MessageRow[]): Promise; insertToolCalls(rows: ToolCallRow[]): Promise; deleteToolCallsBySession(sessionId: string): Promise; queryByEmbedding(queryEmbedding: number[], topK: number, filters: QueryFilters): Promise; queryByKeyword(queryText: string, topK: number, filters: QueryFilters): Promise; queryHybrid(queryEmbedding: number[], queryText: string, topK: number, filters: QueryFilters): Promise; getChunksByUrl(url: string, startIndex?: number, endIndex?: number): Promise; getSessionContext(sessionId: string, chunkId: string, windowSize?: number): Promise; listSessionUrls(sessionId: string): Promise; getSessionChunksOrdered(sessionId: string): Promise; listSessions(filter?: SessionFilter): Promise; deleteSession(sessionId: string): Promise; deleteSessionsOlderThan(olderThanMs: number): Promise<{ sessions: number; chunks: number; }>; getToolUsageStats(filter?: AnalyticsFilter): Promise; getMessageStats(filter?: AnalyticsFilter): Promise; getOverviewStats(filter?: AnalyticsFilter): Promise; getSessionAnalytics(sessionId: string): Promise; /** Flush / checkpoint (no-op for Postgres). */ checkpoint(): Promise; close(): Promise; } //# sourceMappingURL=types.d.ts.map