class ApiMediationClientImpl implements ApiMediationClient {

    @Override
    public synchronized void register(ApiMediationServiceConfig config) throws ServiceDefinitionException {
        if (eurekaClient != null) {
            throw new ServiceDefinitionException("EurekaClient was previously registered for this instance of ApiMediationClient. Call your ApiMediationClient unregister() method before attempting other registration.");
        }

        EurekaClientConfig clientConfiguration = eurekaClientConfigProvider.config(config);
        ApplicationInfoManager infoManager = initializeApplicationInfoManager(config);
        eurekaClient = initializeEurekaClient(infoManager, clientConfiguration, config);
    }

    public  ApiMediationClientImpl();
    public  ApiMediationClientImpl(EurekaClientProvider eurekaClientProvider);
    public  ApiMediationClientImpl(EurekaClientProvider eurekaClientProvider, EurekaClientConfigProvider eurekaClientConfigProvider);
    public  ApiMediationClientImpl(EurekaClientProvider eurekaClientProvider, EurekaClientConfigProvider eurekaClientConfigProvider, EurekaInstanceConfigCreator instanceConfigCreator);

}