export declare class Database { private backend; private constructor(); static create(): Promise; /** * Priority cascade: * 1. better-sqlite3 (native, ~5-10x faster for bulk inserts) * 2. sql.js (WASM, zero native deps, always works) */ private static createWithFallback; private initSchema; upsertCodebase(name: string, language: string, rootPath: string): number; getCodebase(name: string): { id: number; name: string; language: string; root_path: string; indexed_at: string | null; file_count: number; symbol_count: number; } | undefined; getAllCodebases(): { id: number; name: string; language: string; root_path: string; indexed_at: string | null; file_count: number; symbol_count: number; }[]; updateCodebaseStats(codebaseId: number): void; upsertFile(codebaseId: number, path: string, mtimeMs: number): number; getFile(codebaseId: number, path: string): { id: number; path: string; mtime_ms: number; } | undefined; getFilesByCodebase(codebaseId: number): { id: number; path: string; mtime_ms: number; }[]; deleteFileData(fileId: number): void; insertSymbol(codebaseId: number, fileId: number, name: string, qualified: string, kind: string, lineStart?: number, lineEnd?: number, exported?: boolean, metadata?: string): number; findSymbol(codebaseId: number, qualified: string): { id: number; name: string; qualified: string; kind: string; line_start: number | null; line_end: number | null; exported: number; metadata: string | null; file_id: number; } | undefined; findSymbolsByName(codebaseId: number, name: string): { id: number; name: string; qualified: string; kind: string; line_start: number | null; line_end: number | null; file_id: number; }[]; searchSymbols(codebaseId: number, pattern: string, kinds?: string[], limit?: number): { id: number; name: string; qualified: string; kind: string; line_start: number | null; line_end: number | null; file_path: string; exported: number; }[]; getSymbolsByFile(fileId: number, kinds?: string[]): { id: number; name: string; qualified: string; kind: string; line_start: number | null; line_end: number | null; exported: number; metadata: string | null; }[]; insertEdge(sourceId: number, targetId: number, kind: string): void; insertModuleDep(sourceFileId: number, targetFileId: number, depKind: string): void; traceCallees(codebaseId: number, qualified: string, maxDepth?: number): { id: number; name: string; qualified: string; kind: string; depth: number; path: string; }[]; traceCallers(codebaseId: number, qualified: string, maxDepth?: number): { id: number; name: string; qualified: string; kind: string; depth: number; path: string; }[]; traceModuleDeps(codebaseId: number, filePath: string, direction?: 'imports' | 'imported_by' | 'both', maxDepth?: number): { id: number; path: string; depth: number; direction: string; }[]; getDirectCallees(symbolId: number): { id: number; name: string; qualified: string; kind: string; edge_kind: string; }[]; getDirectCallers(symbolId: number): { id: number; name: string; qualified: string; kind: string; edge_kind: string; }[]; getEdgeCount(codebaseId: number): number; getModuleDepCount(codebaseId: number): number; runInTransaction(fn: () => R): R; /** Save database state (relevant for sql.js WASM backend). */ save(): void; close(): void; } //# sourceMappingURL=database.d.ts.map