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

import com.airlock.iam.oauth2.api.domain.model.OAuth2ClientId;
import com.airlock.iam.oauth2.api.domain.model.OAuth2Scope;
import com.airlock.iam.oauth2.domain.model.OAuth2ResponseMode;
import com.airlock.iam.oauth2.domain.model.State;
import com.airlock.iam.oauth2.domain.model.authorization.OAuth2ResponseType;
import com.airlock.iam.oauth2.domain.model.session.PkceCodeChallenge;
import java.net.URI;
import java.util.List;
import java.util.Optional;

public interface OAuth2OidcAuthorizationRequestAttributes {
   OAuth2ClientId clientId();

   Optional<URI> requestedRedirectUri();

   URI effectiveRedirectUri();

   Optional<State> state();

   Optional<PkceCodeChallenge> pkceChallenge();

   OAuth2ResponseType responseType();

   List<OAuth2Scope> requestedScopes();

   OAuth2ResponseMode responseMode();

   boolean isOpenIdConnect();
}
