package com.airlock.iam.authentication.application.configuration;

import com.airlock.iam.flow.api.application.configuration.flowprocessor.FlowProcessorConfig;
import com.airlock.iam.flow.application.configuration.FlowConfig;
import com.airlock.iam.flow.shared.application.configuration.FlowRequestAttributeConfig;
import com.airlock.iam.flow.shared.application.configuration.FlowUserNameTransformerConfig;
import java.util.List;

public interface AuthenticationFlowConfigSpec extends FlowConfig, FlowUserNameTransformerConfig, FlowRequestAttributeConfig {
   String AUTHENTICATION_FLOW_DISPLAY_NAME = "Authentication Flow";
   String TEMP_LOCKING_ACTIVE_DISPLAY_NAME = "Enable Temporary Locking";
   String PERSISTENCY_LESS_FIELD = "persistencyless";

   static AuthenticationFlowConfig.AuthenticationFlowConfigBuilder builder() {
      return new AuthenticationFlowConfig.AuthenticationFlowConfigBuilder();
   }

   boolean isPreventUserEnumeration();

   boolean isTemporaryLockingActive();

   boolean isAddRemainingAttemptsInfo();

   boolean isPersistencyless();

   List<FlowProcessorConfig> getInititalizedProcessors();
}
