/**
 * Registry für benutzerdefinierte Client-Erweiterungen
 *
 * Diese Datei bietet eine zentrale Registry für alle verfügbaren
 * benutzerdefinierten Client-Erweiterungen. Sie erleichtert das
 * dynamische Laden und Instanziieren von erweiterten Clients.
 *
 * @module sap-integration-suite-client/custom-registry
 */
import { BaseCustomClient, CustomClientFactory } from './base-custom-client';
import { IntegrationContentAdvancedClient } from './integration-content-advanced-client';
import { MessageProcessingLogsAdvancedClient } from './message-processing-logs-advanced-client';
import { IntegrationContentClient } from '../integration-content-client';
import { MessageProcessingLogsClient } from '../message-processing-logs-client';
/**
 * Typen von benutzerdefinierten Clients, die in der Registry registriert sind
 */
export declare enum CustomClientType {
    /**
     * Erweiterter Integration Content Client
     */
    INTEGRATION_CONTENT_ADVANCED = "integration-content-advanced",
    /**
     * Erweiterter Message Processing Logs Client
     */
    MESSAGE_PROCESSING_LOGS_ADVANCED = "message-processing-logs-advanced"
}
/**
 * Registry für benutzerdefinierte Client-Factories
 *
 * Diese Klasse verwaltet alle verfügbaren benutzerdefinierten Client-Erweiterungen
 * und ermöglicht den einheitlichen Zugriff darauf.
 */
export declare class CustomClientRegistry {
    /**
     * Singleton-Instanz der Registry
     */
    private static instance;
    /**
     * Map der registrierten Factory-Instanzen
     */
    private factories;
    /**
     * Privater Konstruktor für Singleton-Pattern
     */
    private constructor();
    /**
     * Gibt die Singleton-Instanz der Registry zurück
     *
     * @returns Die CustomClientRegistry-Instanz
     */
    static getInstance(): CustomClientRegistry;
    /**
     * Registriert die Standard-Factories
     */
    private registerDefaults;
    /**
     * Registriert eine benutzerdefinierte Client-Factory
     *
     * @param type - Der Typ des benutzerdefinierten Clients
     * @param factory - Die Factory für die Erstellung des Clients
     */
    register<T, C extends BaseCustomClient<T>>(type: string, factory: CustomClientFactory<T, C>): void;
    /**
     * Erstellt einen benutzerdefinierten Client mit dem angegebenen Typ
     *
     * @param type - Der Typ des zu erstellenden benutzerdefinierten Clients
     * @param baseClient - Der zugrundeliegende Standard-Client
     * @returns Eine Instanz des benutzerdefinierten Clients
     * @throws Error, wenn kein passender Factory für den angegebenen Typ gefunden wurde
     */
    create<T, C extends BaseCustomClient<T>>(type: string, baseClient: T): C;
    /**
     * Erstellt einen IntegrationContentAdvancedClient
     *
     * @param baseClient - Der zugrundeliegende IntegrationContentClient
     * @returns Eine Instanz des IntegrationContentAdvancedClient
     */
    createIntegrationContentAdvancedClient(baseClient: IntegrationContentClient): IntegrationContentAdvancedClient;
    /**
     * Erstellt einen MessageProcessingLogsAdvancedClient
     *
     * @param baseClient - Der zugrundeliegende MessageProcessingLogsClient
     * @returns Eine Instanz des MessageProcessingLogsAdvancedClient
     */
    createMessageProcessingLogsAdvancedClient(baseClient: MessageProcessingLogsClient): MessageProcessingLogsAdvancedClient;
    /**
     * Prüft, ob ein bestimmter benutzerdefinierter Client-Typ registriert ist
     *
     * @param type - Der zu prüfende Typ
     * @returns true, wenn der Typ registriert ist, sonst false
     */
    isRegistered(type: string): boolean;
    /**
     * Gibt alle registrierten benutzerdefinierten Client-Typen zurück
     *
     * @returns Ein Array der registrierten Typen
     */
    getRegisteredTypes(): string[];
}
