/**
 * KiroGraph LanceDB Index
 *
 * ANN vector search backed by @lancedb/lancedb (Apache Arrow / Lance format).
 * The database is persisted to .kirograph/lancedb/ (Lance columnar file storage).
 *
 * Opt-in: set config.semanticEngine = 'lancedb'
 * Required optional dependency (not installed by default):
 *   npm install @lancedb/lancedb
 *
 * Key characteristics:
 *   - Pure JS/WASM, no native compilation required
 *   - Columnar storage (Apache Lance format) — efficient for batch reads/writes
 *   - ANN search via IVF-PQ or HNSW index for sub-linear query time
 *   - Native upsert via mergeInsert (single round-trip, no delete+insert dance)
 */
import type { Node } from '../types';
export declare class LanceDBIndex {
    private readonly kirographDir;
    private readonly dim;
    private db;
    private table;
    private _available;
    private dbPath;
    constructor(kirographDir: string, dim?: number);
    isAvailable(): boolean;
    /**
     * Load @lancedb/lancedb, open the file-persisted database, and open or create
     * the kg_nodes table. Silent no-op when the optional dep is missing.
     */
    initialize(): Promise<void>;
    /**
     * Insert or update a node using LanceDB's native mergeInsert — a single
     * round-trip that updates the row if node_id exists, inserts it otherwise.
     */
    upsert(node: Node, embedding: Float32Array): Promise<void>;
    /**
     * Remove a node's record from the index.
     */
    delete(nodeId: string): Promise<void>;
    /**
     * ANN vector search. Returns node IDs ordered by cosine similarity (descending).
     */
    search(queryVec: Float32Array, topN?: number): Promise<string[]>;
    /** Return all node IDs currently stored in the index. */
    getEmbeddedNodeIds(): Promise<string[]>;
    /** Number of records currently in the index. */
    count(): Promise<number>;
}
//# sourceMappingURL=lancedb-index.d.ts.map