package com.airlock.iam.publicselfservice.infrastructure.factory.shared;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.factor.domain.model.fido.FidoApprovalData;
import com.airlock.iam.flow.shared.application.configuration.fido.FidoApprovalStepActions;
import com.airlock.iam.flow.shared.application.configuration.fido.FidoApprovalStepErrors;
import com.airlock.iam.flow.shared.domain.model.fido.FidoCheckingStep;
import com.airlock.iam.flow.shared.domain.model.fido.FidoCheckingStepImpl;
import com.airlock.iam.flow.shared.infrastructure.factory.step.FidoStepModuleForConfigBase;
import com.airlock.iam.publicselfservice.application.configuration.steps.PublicSelfServiceFidoApprovalStepConfig;
import com.google.inject.Exposed;
import com.google.inject.Provides;
import java.util.Optional;

@ModuleForConfig(PublicSelfServiceFidoApprovalStepConfig.class)
public final class PublicSelfServiceFidoApprovalStepModule extends FidoStepModuleForConfigBase {
   @Provides
   @Exposed
   FidoCheckingStep.FidoStepActions provideFidoStepActions() {
      return FidoApprovalStepActions.FIDO_APPROVAL_STEP_ACTIONS;
   }

   @Provides
   @Exposed
   FidoCheckingStep.FidoStepErrors provideFidoStepErrors() {
      return FidoApprovalStepErrors.FIDO_APPROVAL_STEP_ERRORS;
   }

   @Provides
   @Exposed
   Optional<FidoApprovalData> provideFidoApprovalData() {
      return Optional.empty();
   }

   @Provides
   @Exposed
   FidoCheckingStepImpl.FidoTransactionApprovalStepSettings provideFidoCheckingStepSettings() {
      return FidoCheckingStepImpl.FidoTransactionApprovalStepSettings.builder().verificationLogging(false).build();
   }

   @Override
   protected void configure() {
      super.configure();
   }
}
