/**
 * Service qui gère les embeddings vectoriels avec l'API Cohere
 * Version optimisée avec batching et LRU cache avec expiration
 */
export declare class EmbeddingService {
    private client;
    private cache;
    private cacheSize;
    private maxCacheSize;
    private cacheExpiration;
    private batchQueue;
    private batchTimeout;
    private batchSize;
    private batchDelay;
    constructor(apiKey: string);
    /**
     * Génère un embedding pour un texte donné
     * Utilise une file d'attente pour regrouper les requêtes en batch
     *
     * @param text Le texte pour lequel générer un embedding
     * @returns Un vecteur d'embedding
     */
    getEmbedding(text: string): Promise<number[]>;
    /**
     * Traite la file d'attente des embeddings en lot
     */
    private processBatch;
    /**
     * Ajoute un embedding au cache LRU avec expiration
     *
     * @param text Le texte clé
     * @param embedding Le vecteur à mettre en cache
     */
    private addToCache;
    /**
     * Génère des embeddings pour plusieurs textes
     * avec gestion optimisée des batchs et du cache
     *
     * @param texts Les textes pour lesquels générer des embeddings
     * @returns Un tableau de vecteurs d'embedding
     */
    getEmbeddings(texts: string[]): Promise<number[][]>;
    /**
     * Calcule la similarité cosinus entre deux vecteurs
     *
     * @param vecA Premier vecteur
     * @param vecB Second vecteur
     * @returns Score de similarité entre 0 et 1
     */
    calculateCosineSimilarity(vecA: number[], vecB: number[]): number;
    /**
     * Trouve les textes les plus similaires à un texte de référence
     * Utilise KNN pour la recherche de similarité
     *
     * @param referenceText Texte de référence
     * @param candidateTexts Textes candidats
     * @param limit Nombre maximum de résultats
     * @param threshold Seuil de similarité minimum (optionnel)
     * @returns Les textes les plus similaires avec leurs scores
     */
    findSimilarTexts(referenceText: string, candidateTexts: string[], limit?: number, threshold?: number): Promise<Array<{
        text: string;
        score: number;
    }>>;
    /**
     * Efface le cache d'embeddings ou supprime les entrées expirées
     *
     * @param all Si true, efface tout le cache, sinon seulement les entrées expirées
     */
    clearCache(all?: boolean): void;
    /**
     * Ajuste les paramètres du cache
     *
     * @param maxSize Taille maximale du cache
     * @param expiration Durée de validité en millisecondes
     */
    configureCacheParams(maxSize?: number, expiration?: number): void;
    /**
     * Réduit la taille du cache en supprimant les entrées les plus anciennes
     */
    private reduceCache;
    /**
     * Configure les paramètres de batch
     *
     * @param batchSize Taille maximale des lots
     * @param batchDelay Délai en ms pour regrouper les requêtes
     */
    configureBatchParams(batchSize?: number, batchDelay?: number): void;
}
