import { Database } from "bun:sqlite"; /** Reduce a session id to the charset used for its DB filename and for echoing * the id into checkpoint content. Single source of truth for all three callers. */ export declare function sanitizeSessionId(id: string): string; export declare class SessionStore { private db; private dbPath; /** * @param projectSlug Optional. When supplied, session DBs are scoped into a * per-project subdirectory so a global dataDir cannot leak one project's * checkpoints into another's. Appended (not inserted) so existing two-arg * call sites keep working unchanged. */ constructor(dataDir: string, sessionId: string, projectSlug?: string); connect(): Database; close(): void; getMeta(key: string): string | undefined; setMeta(key: string, value: string): void; getQualityCache(): QualityCacheRow | null; writeQualityCache(cache: Omit): void; recordRead(idx: number, path: string): void; recordWrite(idx: number, path: string): void; recordToolResult(idx: number, toolName: string, resultSize: number, isFailure: boolean): void; recordMessage(idx: number, role: string, textLength: number, isSubstantive: boolean): void; recordAgentDispatch(idx: number, promptSize: number, resultSize: number): void; getRecentReads(limit: number): Array<{ idx: number; path: string; }>; getRecentWrites(limit: number): Array<{ idx: number; path: string; }>; getRecentToolResults(limit: number): Array<{ idx: number; tool_name: string; result_size: number; is_failure: number; }>; getRecentMessages(limit: number): Array<{ idx: number; role: string; text_length: number; is_substantive: number; }>; getRecentAgentDispatches(limit: number): Array<{ idx: number; prompt_size: number; result_size: number; }>; private safeParseInt; private atomicIncrement; /** * Cap each per-session signal table to its most recent `maxRows` rows. * Without this, a long session that never compacts grows these tables * unbounded. Table names are a fixed allowlist, never user input. */ capSignalTables(maxRows: number): void; getCompactionCount(): number; incrementCompaction(): number; getToolCallCount(): number; incrementToolCallCount(): number; getOperationIndex(): number; incrementOperationIndex(): number; resetSignalAccumulators(): void; } export interface QualityCacheRow { id: number; resource_health: number | null; session_efficiency: number | null; fill_pct: number | null; compactions: number; tool_calls: number; last_nudge_time: number; nudge_count: number; data: string | null; updated_at: number; } //# sourceMappingURL=session-store.d.ts.map