package com.airlock.iam.oauth2.domain.service.codegrant;

import com.airlock.iam.common.api.domain.model.persistency.exception.PersisterException;
import com.airlock.iam.oauth2.api.domain.model.clientauthentication.OAuth2ClientAuthentication;
import com.airlock.iam.oauth2.domain.model.client.OAuth2Client;
import com.airlock.iam.oauth2.domain.model.token.AuthorizationCodeInfo;
import com.airlock.iam.oauth2.domain.model.token.OAuth2RawAccessTokenContainer;
import com.airlock.iam.oauth2.domain.model.token.RawOAuth2TokenWithHash;
import com.airlock.iam.oauth2.domain.model.token.SessionInfo;
import java.util.Optional;

public interface OAuth2CodeGrantTokenManager {
   Optional<RawOAuth2TokenWithHash> generateAuthorizationCode(AuthorizationCodeInfo var1, SessionInfo var2) throws PersisterException;

   Optional<OAuth2RawAccessTokenContainer> exchangeAuthorizationCodeForAccessToken(
      String var1, OAuth2Client var2, OAuth2ClientAuthentication var3, Optional<String> var4, Optional<String> var5
   ) throws PersisterException;

   Optional<OAuth2RawAccessTokenContainer> refreshAccessToken(String var1, OAuth2Client var2, OAuth2ClientAuthentication var3) throws PersisterException;
}
