import type { EmbeddingMeta } from "../types.js";
/**
 * Get the embedding file path from an index path.
 * {hash}.index.json → {hash}.embeddings.ndjson
 */
export declare function getEmbeddingPath(indexPath: string): string;
/**
 * Get the embedding metadata file path.
 * {hash}.index.json → {hash}.embeddings.meta.json
 */
export declare function getEmbeddingMetaPath(indexPath: string): string;
/**
 * Load all embeddings from an ndjson file.
 * Returns a Map of symbolId → Float32Array vector.
 */
export declare function loadEmbeddings(embeddingPath: string): Promise<Map<string, Float32Array>>;
/**
 * Save all embeddings to an ndjson file using streaming writes.
 * Avoids building a single huge string (30K+ symbols × 1536 floats = >300MB).
 */
export declare function saveEmbeddings(embeddingPath: string, embeddings: Map<string, Float32Array>): Promise<void>;
/**
 * Save embedding metadata atomically.
 */
export declare function saveEmbeddingMeta(metaPath: string, meta: EmbeddingMeta): Promise<void>;
/**
 * Load embedding metadata.
 * Returns null if not found or invalid.
 */
export declare function loadEmbeddingMeta(metaPath: string): Promise<EmbeddingMeta | null>;
/**
 * Batch-embed symbols using the given provider, appending to existing embeddings.
 * Skips symbols whose ID exists AND content hash hasn't changed.
 * Re-embeds symbols whose content changed even if ID is the same.
 *
 * @param symbolTexts - Map of symbolId → text to embed
 * @param existing - Existing embeddings to skip
 * @param embedFn - The provider's embed function
 * @param batchSize - How many texts per API call
 * @param cacheKey - Optional key to track content hashes across calls
 * @returns Map of symbolId → Float32Array (existing + new)
 */
export declare function batchEmbed(symbolTexts: Map<string, string>, existing: Map<string, Float32Array>, embedFn: (texts: string[]) => Promise<number[][]>, batchSize: number, cacheKey?: string): Promise<Map<string, Float32Array>>;
//# sourceMappingURL=embedding-store.d.ts.map