package com.airlock.iam.flow.shared.domain.model.cronto;

import com.airlock.iam.authentication.api.domain.model.step.AuthenticationFlowStep;
import com.airlock.iam.core.domain.model.cronto.CrontoOtp;
import com.airlock.iam.flow.api.domain.model.step.StepAction;
import com.airlock.iam.flow.api.domain.model.step.StepError;
import com.airlock.iam.flow.api.domain.model.step.StepResult;

public interface CrontoActivationStep extends AuthenticationFlowStep {
   StepResult retrieveFirstActivationChallenge();

   StepResult checkFirstActivationOtp(CrontoOtp var1);

   StepResult retrieveSecondActivationChallenge();

   StepResult checkSecondActivationOtp(CrontoOtp var1, String var2);

   enum CrontoActivationStepActions implements StepAction {
      CRONTO_ACTIVATION_START_REQUIRED,
      CRONTO_ACTIVATION_START_WITHOUT_LETTER_REQUIRED,
      CRONTO_ACTIVATION_COMPLETE_REQUIRED;
   }

   enum CrontoActivationStepErrors implements StepError {
      CRONTO_OTP_WRONG,
      CRONTO_LETTER_INVALID,
      ILLEGAL_CRONTO_PLATFORM,
      CRONTO_DEVICE_ALREADY_EXISTS,
      CRONTO_DEVICE_LIMIT_REACHED,
      CRONTO_LETTER_USAGE_LIMIT_REACHED;
   }
}
