package org.apereo.cas.services;
import java.util.Collection;
/**
* This is {@link VariegatedMultifactorAuthenticationProvider}.
* Provides multiple instances of the same provider.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public interface VariegatedMultifactorAuthenticationProvider extends MultifactorAuthenticationProvider {
/**
* Add provider.
*
* @param provider the provider
*/
void addProvider(MultifactorAuthenticationProvider provider);
/**
* Gets providers.
*
* @return the providers
*/
Collection<MultifactorAuthenticationProvider> getProviders();
/**
* Find multifactor authentication provider.
*
* @param identifier the identifier
* @return the multifactor authentication provider
*/
MultifactorAuthenticationProvider findProvider(String identifier);
/**
* Find provider .
*
* @param <T> the type parameter
* @param identifier the identifier
* @param clazz the clazz
* @return the provider
*/
<T extends MultifactorAuthenticationProvider> T findProvider(String identifier, Class<T> clazz);
}