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

import com.airlock.iam.authentication.api.domain.model.step.AuthenticationFlowStep;
import com.airlock.iam.authentication.api.domain.model.step.AuthenticationStepResult;
import com.airlock.iam.factor.domain.model.fido.FidoAuthenticatorUnverifiedAssertionResponse;
import com.airlock.iam.factor.domain.model.fido.FidoClientFailure;
import com.airlock.iam.flow.api.domain.model.step.StepAction;
import com.airlock.iam.flow.api.domain.model.step.StepError;

public interface FidoCheckingStep extends AuthenticationFlowStep {
   AuthenticationStepResult verify(FidoAuthenticatorUnverifiedAssertionResponse var1);

   AuthenticationStepResult reportClientFailure(FidoClientFailure var1);

   interface FidoStepActions {
      StepAction challengeRetrievalRequired();

      StepAction assertionResponseRequired();
   }

   interface FidoStepErrors {
      StepError failed();

      StepError timeout();

      StepError aborted();

      StepError notAllowed();
   }
}
