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

import com.airlock.iam.factor.domain.model.fido.FidoAuthenticatorUnverifiedAttestationResponse;
import com.airlock.iam.factor.domain.model.fido.FidoClientFailure;
import com.airlock.iam.flow.api.domain.model.step.FlowStep;
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 FidoRegistrationStep extends FlowStep {
   StepResult retrieveRegistrationChallenge(String var1);

   StepResult verify(FidoAuthenticatorUnverifiedAttestationResponse var1);

   StepResult reportClientFailure(FidoClientFailure var1);

   enum FidoRegistrationStepAction implements StepAction {
      FIDO_REGISTRATION_CHALLENGE_RETRIEVAL_REQUIRED,
      FIDO_REGISTRATION_ATTESTATION_RESPONSE_REQUIRED;
   }

   enum FidoRegistrationStepError implements StepError {
      FIDO_REGISTRATION_FAILED,
      FIDO_REGISTRATION_ATTESTATION_INVALID,
      FIDO_REGISTRATION_TIMEOUT,
      FIDO_REGISTRATION_ABORTED,
      FIDO_REGISTRATION_NOT_ALLOWED,
      FIDO_REGISTRATION_NOT_SUPPORTED,
      FIDO_WEB_AUTHN_NOT_AVAILABLE;
   }
}
