export interface ChunkPayload {
    /** Path of the source file (absolute). */
    file: string;
    /** 1-indexed inclusive start line of the chunk in the source file. */
    startLine: number;
    /** 1-indexed inclusive end line. */
    endLine: number;
    /** The raw chunk text — preserved so retrieval can quote it verbatim. */
    content: string;
    /** File mtime millis at index time — used for incremental detection. */
    mtime: number;
    /** SHA-1 hex of `content` — used as second-level idempotency key. */
    hash: string;
    /** Optional language tag (`ts`, `py`, etc.) inferred from extension. */
    language?: string;
}
export interface VectorChunk {
    id: string;
    vector: number[];
    payload: ChunkPayload;
}
export interface VectorSearchHit {
    id: string;
    score: number;
    payload: ChunkPayload;
}
export interface VectorStore {
    /** Embedding dimensionality this store was provisioned for. */
    dim(): number;
    /** Add/replace chunks by id. */
    upsert(chunks: VectorChunk[]): Promise<void>;
    /** Cosine-similarity KNN against `vec`. Returns hits sorted desc by score. */
    search(vec: number[], topK: number, filter?: {
        file?: string;
        language?: string;
    }): Promise<VectorSearchHit[]>;
    /** Remove all chunks belonging to a file (used by incremental indexer). */
    deleteByFile(filePath: string): Promise<void>;
    /** Total chunks in the store. */
    size(): Promise<number>;
    /** Close underlying handles (db, network, etc.). */
    close(): Promise<void>;
}
