package org.apereo.cas.services;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
/**
* This is {@link MultifactorAuthenticationProviderResolver}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public interface MultifactorAuthenticationProviderResolver {
/**
* Consolidate providers collection.
* If the provider is multi-instance in the collection, consolidate and flatten.
*
* @param providers the providers
* @return the collection
*/
Collection<MultifactorAuthenticationProvider> flattenProviders(Collection<? extends MultifactorAuthenticationProvider> providers);
/**
* Locate the provider in the collection, and have it match the requested mfa.
* If the provider is multi-instance, resolve based on inner-registered providers.
*
* @param providers the providers
* @param requestMfaMethod the request mfa method
* @return the optional
*/
Optional<MultifactorAuthenticationProvider> resolveProvider(Map<String, MultifactorAuthenticationProvider> providers,
Collection<String> requestMfaMethod);
}