import type { Embedder, PairwiseSimilarityResult, SimilarityItem } from './types.js'; export interface PairwiseSimilarityArgs { /** The texts to compare — e.g. `{ id: toolName, text: description }`. */ readonly items: readonly SimilarityItem[]; /** * Injected embedder. Wrap in an `EmbeddingCache` so catalog * descriptions embed once across lint runs (RFC-002 §3). */ readonly embedder: Embedder; /** Abort signal threaded to the embedder (network backends). */ readonly signal?: AbortSignal; } /** * Embed every item once (deduplicated batch) and compute the full * cosine matrix plus ranked upper-triangle pairs (descending; ties * keep input pair order). * * Invariants (pinned by property tests): * - `matrix[i][j] === matrix[j][i]` — computed once, mirrored. * - `matrix[i][i] === 1` EXACTLY — set by definition, so * self-similarity is an invariant rather than a float artifact * (and duplicate texts at different ids still compare via cosine). * - N items → N·(N−1)/2 pairs. */ export declare function pairwiseSimilarity(args: PairwiseSimilarityArgs): Promise;