export interface EmbeddingProvider { /** * Stable identifier. Stored in the index metadata so we can detect * provider changes on startup and trigger a reindex. */ readonly name: string; /** * Vector dimension this provider produces. Must be constant — if a * provider can produce multiple dimensions (e.g. OpenAI * text-embedding-3-small has a `dimensions` parameter), pick one * at construction time and don't change it. */ readonly dimensions: number; /** * One-time setup (loading model files, validating API keys). * Called by the indexer before any embed() calls. If init fails, * the indexer falls back to the default provider with a warning * logged — we never hard-fail on a missing external dependency * because that would brick the CLI for offline users. */ init(): Promise; /** * Embed a batch of strings. Returns the same number of vectors as * input strings, in the same order. Each vector must have length * equal to `dimensions`. */ embed(texts: string[]): Promise; } import type { SverkloConfig } from "../utils/config-file.js"; export declare function createEmbeddingProvider(env?: NodeJS.ProcessEnv, sverkloConfig?: SverkloConfig | null): Promise; export interface EmbeddingFingerprint { provider: string; dimensions: number; } export declare function fingerprintOf(p: EmbeddingProvider): EmbeddingFingerprint;