import { DatabaseSync, type StatementSync } from "node:sqlite"; export type Database = DatabaseSync; export type Statement = StatementSync; export declare const CURRENT_DATA_VERSION = 10; export declare function createDatabase(dbPath: string): Database; /** * Read the stored data version. Returns 0 for fresh databases that * have never been tagged, so callers can treat any version < current * as "migrate me". */ export declare function getDataVersion(db: Database): number; /** * Stamp the database with the current data version. Call after a * migration completes (or on a fresh database after the first full * index, so subsequent runs don't waste time re-migrating). */ export declare function setDataVersion(db: Database, version: number): void; /** * Embedding fingerprint persisted to `meta` so the indexer can detect * silent provider/dimension changes across runs (issue #69). Stored as * JSON because `EmbeddingFingerprint` may grow new fields. Shape mirrors * `EmbeddingFingerprint` in embedding-providers.ts — we re-declare it as * a plain record here to keep storage/ free of indexer/ imports. */ export type StoredFingerprint = { provider: string; dimensions: number; }; export declare function getStoredFingerprint(db: Database): StoredFingerprint | null; export declare function setStoredFingerprint(db: Database, fp: StoredFingerprint): void; /** * BEGIN / COMMIT / ROLLBACK helper. better-sqlite3 had `db.transaction(fn)` * built in; node:sqlite doesn't, so we wrap the pattern explicitly. * Used by Indexer.index() for the bulk-insert path. */ export declare function transaction(db: Database, fn: () => T): T;