import BetterSqlite3 from 'better-sqlite3';
import type { Lore, LoreType, CreateLoreInput, UpdateLoreInput, Realm, CreateRealmInput, CreateRelationInput, Relation, LoreRelation, Workspace, CreateWorkspaceInput, UpdateWorkspaceInput } from '../core/types.js';
export declare class Database {
    sqlite: BetterSqlite3.Database;
    private db;
    private embeddingService;
    private changeTracker;
    constructor(dbPath: string);
    private loadSqliteVec;
    private runMigrations;
    private runMigrationsForInMemory;
    close(): void;
    listTables(): string[];
    transaction<T>(fn: () => T): T;
    createRealm(input: CreateRealmInput): Realm;
    findRealm(id: string): Realm | null;
    findRealmByPath(path: string): Realm | null;
    updateRealmLastSeen(id: string): Realm | null;
    listRealms(): Realm[];
    getCurrentRealm(): Realm | null;
    createLore(input: CreateLoreInput): Promise<Lore>;
    findLore(id: string): Lore | null;
    updateLore(id: string, input: UpdateLoreInput): Promise<Lore | null>;
    deleteLore(id: string): Promise<void>;
    softDeleteLore(id: string): Promise<void>;
    restoreLore(id: string): void;
    listLoresByRealm(realmId: string): Lore[];
    listLoresByType(realmId: string, type: LoreType): Lore[];
    listLoresByProvince(realmId: string, province: string): Lore[];
    searchLores(realmId: string, query: string, limit?: number): Lore[];
    searchLoresGlobal(query: string, limit?: number): Lore[];
    getRealmLoreCount(realmId: string): number;
    semanticSearchLores(query: string, options?: {
        realmId?: string;
        threshold?: number;
        limit?: number;
        includeScore?: boolean;
    }): Promise<(Lore & {
        similarity?: number;
    })[]>;
    findSimilarLores(loreId: string, options?: {
        limit?: number;
        threshold?: number;
    }): Promise<(Lore & {
        similarity: number;
    })[]>;
    generateLoreEmbedding(loreId: string): Promise<void>;
    recreateLoresVecTable(dimensions: number): void;
    generateMissingEmbeddings(realmId?: string, batchSize?: number, force?: boolean): Promise<number>;
    checkForDuplicates(content: string, realmId: string, threshold?: number): Promise<(Lore & {
        similarity: number;
    })[]>;
    createRelation(input: CreateRelationInput): Promise<Relation>;
    listRelationsByLore(loreId: string): LoreRelation[];
    deleteRelation(fromLoreId: string, toLoreId: string, type: string): Promise<void>;
    exportData(realmId?: string): {
        realms: Realm[];
        lores: Lore[];
        relations: Relation[];
    };
    importData(data: {
        realms: CreateRealmInput[];
        lores: CreateLoreInput[];
        relations: CreateRelationInput[];
    }, mode?: 'replace' | 'merge'): Promise<void>;
    private dbRealmToRealm;
    private dbLoreToLore;
    private dbRelationToRelation;
    createWorkspace(input: CreateWorkspaceInput): Workspace;
    findWorkspace(id: string): Workspace | null;
    findWorkspaceByName(name: string): Workspace | null;
    getDefaultWorkspace(): Workspace | null;
    listWorkspaces(): Workspace[];
    updateWorkspace(id: string, input: UpdateWorkspaceInput): Workspace | null;
    deleteWorkspace(id: string): void;
    linkRealmToWorkspace(realmId: string, workspaceId: string): void;
    unlinkRealmFromWorkspace(realmId: string, workspaceId: string): void;
    getRealmWorkspaces(realmId: string): Workspace[];
    getWorkspaceRealms(workspaceId: string): Realm[];
    ensureDefaultWorkspace(): Workspace;
    private dbWorkspaceToWorkspace;
}
//# sourceMappingURL=database.d.ts.map