package net.teamlixo.eggcrack.authentication; import net.teamlixo.eggcrack.account.Account; import net.teamlixo.eggcrack.account.AuthenticatedAccount; import net.teamlixo.eggcrack.authentication.configuration.ServiceConfiguration; import net.teamlixo.eggcrack.credential.Credential; import java.net.Proxy; /** * Internal authentication service interface. */ public interface AuthenticationService { /** * Gets the friendly name for this authentication service. * @return Authentication service name. */ public String getName(); /** * Authenticates an account with a password. * @param account Account to authenticate. * @param credential Credential to authenticate with. * @param proxy Proxy to authenticate with. * @return AuthenticatedAccount instance. */ public AuthenticatedAccount authenticate(Account account, Credential credential, Proxy proxy) throws AuthenticationException; /** * Finds how many proxies are not available. * @return Available proxies. */ public int unavailableProxies(); /** * Gets the configuration for this service. * @return Configuration. */ public ServiceConfiguration getConfiguration(); }