class ArchetypeServiceImpl implements ArchetypeService {

    @Override
    public Optional<Repository> getBaseKieTemplateRepository() {
        final Optional<Archetype> archetype = getBaseKieArchetype();

        if (!archetype.isPresent()) {
            LOGGER.warn("The base kie project template is not registered.");
            return Optional.empty();
        }

        if (archetype.get().getStatus() != ArchetypeStatus.VALID) {
            LOGGER.warn("The state of base kie project template is invalid.");
            return Optional.empty();
        }

        final String repositoryAlias = makeRepositoryAlias(BASE_KIE_PROJECT_TEMPLATE_GAV);

        return Optional.ofNullable(resolveRepository(repositoryAlias));
    }

    public  ArchetypeServiceImpl();
    @Inject public  ArchetypeServiceImpl(final @Named("ioStrategy") IOService ioService,
                                final RepositoryService repositoryService,
                                final OrganizationalUnitService ouService,
                                final Event<ArchetypeListUpdatedEvent> archetypeListUpdatedEvent,
                                final ArchetypeConfigStorage archetypeConfigStorage,
                                final PathUtil pathUtil,
                                final ArchetypePreferencesManager archetypePreferencesManager,
                                final KieModuleService moduleService,
                                final POMService pomService);

}