package com.airlock.iam.oauth2.api.domain.service.clientauthentication;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.oauth2.api.application.configuration.clientauthentication.OAuth2ClientAuthenticationConfig;
import com.airlock.iam.oauth2.api.domain.model.clientauthentication.ClientAuthenticationMethod;
import com.airlock.iam.oauth2.api.domain.model.clientauthentication.OAuth2ClientAuthenticationPayload;
import java.util.List;

@LogicForConfig(OAuth2ClientAuthenticationConfig.class)
public interface OAuth2ClientAuthentication<P extends OAuth2ClientAuthenticationPayload> {
   List<ClientAuthenticationMethod> supportedAuthenticationMethods();

   OAuth2ClientAuthenticationParser<P> authenticationParser();

   OAuth2ClientAuthenticationVerifier<P> verifier();
}
