/**
 * Embedding Provider Abstraction (#155)
 *
 * Decouples embedding logic from specific APIs. Supports:
 * - Cloud: Gemini (default), OpenAI, Voyage
 * - Local: Ollama (for air-gapped/high-security environments)
 *
 * Provider selection via environment variables:
 * - GEMINI_API_KEY → GeminiEmbeddingProvider
 * - OPENAI_API_KEY → OpenAIEmbeddingProvider
 * - OLLAMA_HOST → OllamaEmbeddingProvider
 *
 * @see https://github.com/stevehuang0115/crewly/issues/155
 * @module services/knowledge/embedding-provider
 */
/**
 * Abstract interface for embedding providers.
 * All providers must implement the embed() method.
 */
export interface EmbeddingProvider {
    /** Provider name for logging */
    readonly name: string;
    /** Embedding vector dimensions */
    readonly dimensions: number;
    /**
     * Generate an embedding vector for the given text.
     *
     * @param text - Text to embed
     * @returns Embedding vector, or null on failure
     */
    embed(text: string): Promise<number[] | null>;
}
/**
 * Gemini embedding provider (default cloud provider).
 */
export declare class GeminiEmbeddingProvider implements EmbeddingProvider {
    readonly name = "gemini";
    readonly dimensions = 768;
    private readonly apiKey;
    private readonly logger;
    constructor(apiKey: string);
    embed(text: string): Promise<number[] | null>;
}
/**
 * OpenAI embedding provider.
 * Uses the text-embedding-3-small model by default.
 */
export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
    readonly name = "openai";
    readonly dimensions = 1536;
    private readonly apiKey;
    private readonly model;
    private readonly logger;
    constructor(apiKey: string, model?: string);
    embed(text: string): Promise<number[] | null>;
}
/**
 * Ollama local embedding provider.
 * Runs entirely on-device for air-gapped environments.
 */
export declare class OllamaEmbeddingProvider implements EmbeddingProvider {
    readonly name = "ollama";
    readonly dimensions = 768;
    private readonly host;
    private readonly model;
    private readonly logger;
    constructor(host?: string, model?: string);
    embed(text: string): Promise<number[] | null>;
}
/**
 * Create the best available embedding provider based on environment config.
 *
 * Priority: GEMINI_API_KEY > OPENAI_API_KEY > OLLAMA_HOST > null
 *
 * @returns EmbeddingProvider instance, or null if none configured
 */
export declare function createEmbeddingProvider(): EmbeddingProvider | null;
//# sourceMappingURL=embedding-provider.d.ts.map