import { ToolIntegrator } from '../tool-integrator';
import { MetricsCalculator } from '../metrics-calculator';
import { IVerificationService } from './verification-service.interface';
import { EmbeddingService } from '../embedding-service';
/**
 * Conteneur de services amélioré pour l'injection de dépendances
 * Utilise le service de vérification amélioré
 */
export declare class ServiceContainer {
    private static instance;
    private services;
    /**
     * Constructeur privé pour implémenter le pattern Singleton
     */
    private constructor();
    /**
     * Méthode pour obtenir l'instance unique du conteneur
     */
    static getInstance(): ServiceContainer;
    /**
     * Initialise et enregistre les services principaux
     *
     * @param toolIntegrator L'intégrateur d'outils existant
     * @param metricsCalculator Le calculateur de métriques existant
     * @param embeddingService Le service d'embeddings existant
     */
    initializeServices(toolIntegrator: ToolIntegrator, metricsCalculator: MetricsCalculator, embeddingService: EmbeddingService): void;
    /**
     * Obtient un service par son nom
     *
     * @param serviceName Le nom du service
     * @returns L'instance du service ou null s'il n'existe pas
     */
    getService<T>(serviceName: string): T | null;
    /**
     * Obtient le service de vérification
     *
     * @returns Le service de vérification
     */
    getVerificationService(): IVerificationService;
    /**
     * Enregistre un service
     *
     * @param serviceName Le nom du service
     * @param serviceInstance L'instance du service
     */
    registerService(serviceName: string, serviceInstance: any): void;
    /**
     * Vérifie si un service est disponible
     *
     * @param serviceName Le nom du service à vérifier
     * @returns true si le service est disponible, false sinon
     */
    hasService(serviceName: string): boolean;
    /**
     * Réinitialise le conteneur de services (utile pour les tests)
     */
    static resetInstance(): void;
    /**
     * Affiche la liste des services disponibles
     * Utile pour le débogage
     */
    listServices(): string[];
}
