export interface EmbeddingProvider {
    /** Stable lowercase identifier (e.g. "ollama", "openai"). */
    name(): string;
    /** Embedding dimensionality this provider emits (e.g. 768, 1536). */
    dim(): number;
    /** Identifier of the underlying embedding model (e.g. "nomic-embed-text"). */
    model(): string;
    /** Embed a single text. */
    embed(text: string): Promise<number[]>;
    /**
     * Embed many texts. Default implementation loops; providers that
     * support real batch endpoints should override for throughput.
     */
    embedBatch(texts: string[]): Promise<number[][]>;
    /** Quick liveness probe. Should not throw — returns false on any error. */
    isAvailable(): Promise<boolean>;
}
/**
 * Convenience base class. Subclasses implement `embed` + `isAvailable`
 * + `model` + `dim` + `name`; `embedBatch` reuses the loop.
 */
export declare abstract class AbstractEmbeddingProvider implements EmbeddingProvider {
    abstract name(): string;
    abstract dim(): number;
    abstract model(): string;
    abstract embed(text: string): Promise<number[]>;
    abstract isAvailable(): Promise<boolean>;
    embedBatch(texts: string[]): Promise<number[][]>;
}
