package com.airlock.iam.techclient.api.domain.model.oauth2;

import com.airlock.iam.oauth2.api.domain.model.AuthorizationServerId;
import com.airlock.iam.oauth2.api.domain.model.OAuth2ClientId;
import com.airlock.iam.oauth2.api.domain.model.OAuth2ClientSecret;
import com.airlock.iam.oauth2.api.domain.model.OAuth2Scope;
import java.net.URI;
import java.time.Instant;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.Set;

public interface OAuth2TechnicalClientMetadata {
   OAuth2ClientId getClientId();

   AuthorizationServerId getAuthorizationServerId();

   Optional<OAuth2ClientSecret> getClientSecret();

   Optional<String> getClientName();

   Map<Locale, String> getClientNameTranslations();

   Optional<Instant> getClientIdIssuedAt();

   Set<URI> getRedirectUris();

   Optional<String> getTokenEndpointAuthMethod();

   List<String> getGrantTypes();

   List<String> getResponseTypes();

   Optional<URI> getClientUri();

   Map<Locale, URI> getClientUriTranslations();

   Optional<URI> getLogoUri();

   Map<Locale, URI> getLogoUriTranslations();

   List<OAuth2Scope> getScopes();

   List<String> getContacts();

   Optional<URI> getTosUri();

   Map<Locale, URI> getTosUriTranslations();

   Optional<URI> getPolicyUri();

   Map<Locale, URI> getPolicyUriTranslations();

   Optional<URI> getJwksUri();

   Optional<String> getSoftwareId();

   Optional<String> getSoftwareVersion();

   Optional<MtlsCertificate> getMtlsCertificate();

   Optional<String> getClientName(Locale var1);

   Optional<URI> getClientUri(Locale var1);

   Optional<URI> getLogoUri(Locale var1);

   Optional<URI> getTosUri(Locale var1);

   Optional<URI> getPolicyUri(Locale var1);
}
