package com.airlock.iam.saml2.infrastructure.service.sp;

import com.airlock.iam.saml2.domain.model.Saml2Binding;
import com.airlock.iam.saml2.domain.model.idp.Saml2IdpEntityId;
import com.airlock.iam.saml2.domain.model.sp.Saml2AuthnRequestId;
import com.airlock.iam.saml2.domain.model.sp.Saml2SpEntityId;
import com.airlock.iam.saml2.domain.model.sp.Saml2SpMetaAlias;
import com.airlock.iam.saml2.infrastructure.sp.AssertionData;
import com.sun.identity.saml2.profile.LogoutRequestDataContainer;
import java.net.URI;
import java.util.Optional;

public interface Saml2SpFederationLibrary {
   AssertionData processAssertionFromSamlResponse();

   Saml2AuthnRequestId generateNewSpInitiatedSsoRequestId();

   void initiateAuthnRequest(Saml2SpEntityId var1, Saml2IdpEntityId var2, String var3, Saml2AuthnRequestId var4, Saml2Binding var5);

   LogoutRequestDataContainer validateIdpInitiatedSloRequest();

   void continueIdpInitiatedSlo(LogoutRequestDataContainer var1);

   boolean initiateLogoutRequest(Saml2SpMetaAlias var1, Saml2IdpEntityId var2, URI var3);

   Optional<URI> relayStateUriFromLogoutResponse();

   void processSpInitiatedLogoutResponse(URI var1);
}
