package com.airlock.iam.common.api.infrastructure;

import com.airlock.iam.base.api.domain.model.event.DomainEventSubscriber;
import com.airlock.iam.common.api.infrastructure.mapper.MapperConfiguration;
import com.google.inject.Module;
import java.util.Collection;
import java.util.function.Consumer;

public interface ApplicationComponentProvider {
   Collection<Class<?>> jaxRsComponents();

   Collection<Class<? extends Module>> guiceModules();

   Collection<Class<?>> pluginLogics();

   Collection<Class<? extends DomainEventSubscriber>> domainEventSubscribers();

   Collection<Consumer<MapperConfiguration>> beanMappers();

   Collection<Class<? extends ApplicationInitializationHook>> initializationHooks();
}
