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 CrontoCheckingStep extends AuthenticationFlowStep {
   StepResult checkOtp(CrontoOtp var1);

   StepResult retrieveChallenge();

   StepResult pollOnlineValidation(boolean var1);

   StepResult selectOfflineAuthentication();

   StepResult getPushDeviceChoices();

   StepResult selectPushDevice(String var1);

   enum CrontoAuthStepActions implements StepAction {
      CRONTO_OTP_REQUIRED,
      CRONTO_DEVICE_CHOICE_REQUIRED;
   }

   enum CrontoAuthStepErrors implements StepError {
      CRONTO_OTP_WRONG,
      CRONTO_DEVICE_CHOICE_FAILED,
      CANCELLED_BY_USER;
   }
}
