package org.apereo.cas.authentication;
import org.apereo.cas.authentication.principal.Principal;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
/**
* This is {@link PrincipalElectionStrategy} that attempts to nominate a given principal
* as the primary principal object amongst many authentication events.
*
* @author Misagh Moayyed
* @since 4.2.0
*/
public interface PrincipalElectionStrategy extends Serializable {
/**
* Elect the principal.
*
* @param authentications the authentications
* @param principalAttributes the principal attributes
* @return the principal
*/
Principal nominate(Collection<Authentication> authentications, Map<String, Object> principalAttributes);
}