import { Node } from './node'; type Metric = 'cosine' | 'euclidean'; export declare class HNSW { metric: Metric; similarityFunction: (a: number[] | Float32Array, b: number[] | Float32Array) => number; d: number | null; M: number; efConstruction: number; efSearch: number; levelMax: number; entryPointId: number; nodes: Map; probs: number[]; /** * Creates an in-memory HNSW index. */ constructor(M?: number, efConstruction?: number, d?: number | null, metric?: string, efSearch?: number); private getMetric; private set_probs; private selectLevel; private greedySearch; private searchLayer; private connectNodeAtLevel; private addBidirectionalConnection; private removeReciprocalLinks; private insertNeighbor; private selectNeighborsHeuristic; private addNodeToGraph; /** * Adds a single vector to the graph. */ addPoint(id: number, vector: Float32Array | number[]): Promise; /** * Returns up to k nearest neighbors for the query vector. */ searchKNN(query: Float32Array | number[], k: number, options?: { efSearch?: number; }): { id: number; score: number; }[]; /** * Rebuilds the graph from the provided data. */ buildIndex(data: { id: number; vector: Float32Array | number[]; }[], options?: { onProgress?: (current: number, total: number) => void; progressInterval?: number; }): Promise; /** * Serializes the current in-memory index. */ toJSON(): { M: number; efConstruction: number; efSearch: number; metric: Metric; d: number | null; levelMax: number; entryPointId: number; nodes: (number | { id: number; level: number; vector: number[]; neighbors: number[][]; })[][]; }; /** * Restores an index from serialized JSON produced by toJSON(). */ static fromJSON(json: any): HNSW; } export {};