package com.l7tech.identity;

import com.l7tech.identity.cert.ClientCertManager;
import com.l7tech.objectmodel.EntityHeaderSet;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.IdentityHeader;
import java.security.cert.X509Certificate;
import org.jetbrains.annotations.Nullable;

public interface IdentityProvider<UT extends User, GT extends Group, UMT extends UserManager<UT>, GMT extends GroupManager<UT, GT>> {
   IdentityProviderConfig getConfig();

   UMT getUserManager();

   GMT getGroupManager();

   EntityHeaderSet<IdentityHeader> search(EntityType[] var1, String var2) throws FindException;

   String getAuthRealm();

   void test(boolean var1, @Nullable String var2, @Nullable char[] var3) throws InvalidIdProviderCfgException;

   void preSaveClientCert(UT var1, X509Certificate[] var2) throws ClientCertManager.VetoSave;

   void setUserManager(UMT var1);

   void setGroupManager(GMT var1);

   void validate(UT var1) throws ValidationException;

   boolean hasClientCert(String var1) throws AuthenticationException;
}
