/**
 * KiroGraph Qdrant Index
 *
 * ANN vector search backed by Qdrant running in embedded mode.
 * The engine spawns the Qdrant binary as a managed child process, persisting
 * data to .kirograph/qdrant/ via QDRANT__STORAGE__STORAGE_PATH.
 *
 * Opt-in: set config.semanticEngine = 'qdrant'
 * Required optional dependency (not installed by default):
 *   npm install qdrant-local
 *
 * Uses @qdrant/qdrant-js (QdrantClient) for the REST API — available as a
 * transitive dependency of qdrant-local.
 *
 * Key characteristics:
 *   - Full Qdrant feature set: filtering, payload indexing, HNSW ANN search
 *   - Data persisted to disk across restarts
 *   - Async startup check via /readyz (no blocking sleep)
 *   - Cosine distance metric
 *   - Node IDs stored in payload; deterministic UUIDs used as Qdrant point IDs
 */
import type { Node } from '../types';
export declare const DASHBOARD_SUBDIR = "qdrant/dashboard";
export declare class QdrantIndex {
    private readonly kirographDir;
    private readonly dim;
    private client;
    private child;
    private _available;
    private _ownedProcess;
    private storagePath;
    private stateFile;
    constructor(kirographDir: string, dim?: number);
    isAvailable(): boolean;
    private readState;
    private writeState;
    private clearState;
    private isProcessAlive;
    /** The HTTP port of the running server, or null if not available. */
    getPort(): number | null;
    /**
     * Locate the Qdrant binary (via qdrant-local), spawn it with a project-scoped
     * storage path, wait until /readyz responds, then ensure the collection exists.
     * Silent no-op when qdrant-local is not installed.
     */
    initialize(): Promise<void>;
    private ensureCollection;
    /**
     * Upsert a node's embedding. Qdrant's upsert is idempotent — the same point
     * ID is overwritten if it already exists.
     */
    upsert(node: Node, embedding: Float32Array): Promise<void>;
    /**
     * Remove a point from the collection.
     */
    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 collection (paginated scroll).
     */
    getEmbeddedNodeIds(): Promise<string[]>;
    /** Disconnect the client. The Qdrant server keeps running as a daemon. */
    close(): void;
    /** Number of points currently in the collection. */
    count(): Promise<number>;
}
//# sourceMappingURL=qdrant-index.d.ts.map