import type Database from 'better-sqlite3'; import { type FtsResult, type LabelFilter } from '../storage/fts-store-search.js'; /** Turns text into L2-normalised vectors. Supplied by the host; monograph has no model dependency. */ export interface Embedder { /** Identifies the model; a change invalidates every stored vector. */ model: string; dim: number; embedPassages(texts: string[]): Promise; embedQuery(query: string): Promise; } export declare function quantize(vec: Float32Array): Buffer; export interface EmbeddingStatus { /** Symbols and files with a summary — the number that can be embedded. */ total: number; embedded: number; model: string | null; } export declare function embeddingStatus(db: Database.Database): EmbeddingStatus; export interface EmbedOptions { batchSize?: number; /** Stop after roughly this long; the next call resumes where this one stopped. */ maxMs?: number; onProgress?: (done: number, pending: number) => void; } export interface EmbedResult { embedded: number; /** Still without a current vector after this call. */ remaining: number; } /** Embeds every summary that has no vector yet, or whose text changed since its vector was made. */ export declare function embedPending(db: Database.Database, embedder: Embedder, options?: EmbedOptions): Promise; export interface SemanticHit extends FtsResult { /** Cosine similarity to the query, roughly -1..1. */ similarity: number; } /** Nearest summaries to `queryVec` by cosine similarity, optionally restricted to some node labels. */ export declare function semanticSearch(db: Database.Database, queryVec: Float32Array, limit: number, label?: LabelFilter): SemanticHit[]; //# sourceMappingURL=store.d.ts.map