package com.airlock.iam.common.application.configuration.secretquestion;

import com.airlock.iam.common.domain.model.token.secretquestions.SecretQuestionsNormalization;
import com.airlock.iam.core.misc.persistency.token.TokenDataProvider;
import com.airlock.iam.core.misc.util.password.hash.PasswordHash;
import java.util.List;
import java.util.Optional;
import java.util.regex.Pattern;

public interface GeneralSecretQuestionsSettings {
   List<String> getQuestionResourceKeys();

   int getAllowedNumberOfAttempts();

   PasswordHash getHashFunctionPlugin();

   TokenDataProvider getTokenDataProvider();

   int getRequiredNumberOfProvisionedAnswers();

   @Deprecated
   default Optional<Integer> getNumberOfChallengeAnswers() {
      return Optional.empty();
   }

   @Deprecated
   default Optional<Integer> getNumberOfChallengeQuestions() {
      return Optional.empty();
   }

   boolean areDuplicateAnswersForbidden();

   boolean isCheckUsingLatin1Encoding();

   SecretQuestionsNormalization getNormalization();

   Optional<Pattern> getAnswerRegexPattern();

   int getMinLength();

   int getMaxLength();
}
