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

import com.airlock.iam.flow.api.application.configuration.flowprocessor.FlowProcessorConfig;
import com.airlock.iam.flow.api.application.configuration.sequence.FlowStepSequence;
import com.airlock.iam.flow.api.domain.model.flow.FlowId;
import com.airlock.iam.flow.application.configuration.flow.FlowConfigHash;
import java.util.List;

public interface FlowConfig {
   String STEPS_FIELD = "steps";

   FlowStepSequence getSteps();

   List<FlowProcessorConfig> getProcessors();

   default FlowConfigHash getFlowConfigHash() {
      return FlowConfigHash.of(this);
   }

   default FlowId getFlowId() {
      return new FlowId("default");
   }

   default boolean requiresUserPersistency() {
      return true;
   }
}
