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.Collection;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import lombok.NonNull;

public interface OAuth2TechnicalClientMetadataBuilder {
   OAuth2TechnicalClientMetadataBuilder clientId(@NonNull OAuth2ClientId var1);

   OAuth2TechnicalClientMetadataBuilder authorizationServerId(@NonNull AuthorizationServerId var1);

   OAuth2TechnicalClientMetadataBuilder clientSecret(Optional<OAuth2ClientSecret> var1);

   OAuth2TechnicalClientMetadataBuilder clientName(Optional<String> var1);

   OAuth2TechnicalClientMetadataBuilder clientNameTranslation(Locale var1, String var2);

   OAuth2TechnicalClientMetadataBuilder clientNameTranslations(Map<? extends Locale, ? extends String> var1);

   OAuth2TechnicalClientMetadataBuilder clearClientNameTranslations();

   OAuth2TechnicalClientMetadataBuilder clientIdIssuedAt(Optional<Instant> var1);

   OAuth2TechnicalClientMetadataBuilder redirectUris(Set<URI> var1);

   OAuth2TechnicalClientMetadataBuilder tokenEndpointAuthMethod(Optional<String> var1);

   OAuth2TechnicalClientMetadataBuilder grantType(String var1);

   OAuth2TechnicalClientMetadataBuilder grantTypes(Collection<? extends String> var1);

   OAuth2TechnicalClientMetadataBuilder clearGrantTypes();

   OAuth2TechnicalClientMetadataBuilder responseType(String var1);

   OAuth2TechnicalClientMetadataBuilder responseTypes(Collection<? extends String> var1);

   OAuth2TechnicalClientMetadataBuilder clearResponseTypes();

   OAuth2TechnicalClientMetadataBuilder clientUri(Optional<URI> var1);

   OAuth2TechnicalClientMetadataBuilder clientUriTranslation(Locale var1, URI var2);

   OAuth2TechnicalClientMetadataBuilder clientUriTranslations(Map<? extends Locale, ? extends URI> var1);

   OAuth2TechnicalClientMetadataBuilder clearClientUriTranslations();

   OAuth2TechnicalClientMetadataBuilder logoUri(Optional<URI> var1);

   OAuth2TechnicalClientMetadataBuilder logoUriTranslation(Locale var1, URI var2);

   OAuth2TechnicalClientMetadataBuilder logoUriTranslations(Map<? extends Locale, ? extends URI> var1);

   OAuth2TechnicalClientMetadataBuilder clearLogoUriTranslations();

   OAuth2TechnicalClientMetadataBuilder scope(OAuth2Scope var1);

   OAuth2TechnicalClientMetadataBuilder scopes(Collection<? extends OAuth2Scope> var1);

   OAuth2TechnicalClientMetadataBuilder clearScopes();

   OAuth2TechnicalClientMetadataBuilder contacts(List<String> var1);

   OAuth2TechnicalClientMetadataBuilder tosUri(Optional<URI> var1);

   OAuth2TechnicalClientMetadataBuilder tosUriTranslation(Locale var1, URI var2);

   OAuth2TechnicalClientMetadataBuilder tosUriTranslations(Map<? extends Locale, ? extends URI> var1);

   OAuth2TechnicalClientMetadataBuilder clearTosUriTranslations();

   OAuth2TechnicalClientMetadataBuilder policyUri(Optional<URI> var1);

   OAuth2TechnicalClientMetadataBuilder policyUriTranslation(Locale var1, URI var2);

   OAuth2TechnicalClientMetadataBuilder policyUriTranslations(Map<? extends Locale, ? extends URI> var1);

   OAuth2TechnicalClientMetadataBuilder clearPolicyUriTranslations();

   OAuth2TechnicalClientMetadataBuilder jwksUri(Optional<URI> var1);

   OAuth2TechnicalClientMetadataBuilder softwareId(Optional<String> var1);

   OAuth2TechnicalClientMetadataBuilder softwareVersion(Optional<String> var1);

   OAuth2TechnicalClientMetadataBuilder mtlsCertificate(Optional<MtlsCertificate> var1);

   OAuth2TechnicalClientMetadata build();
}
