package com.airlock.iam.transactionapproval.infrastructure.factory;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FAAuthTokenIdCoder;
import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FAAuthTokenIdCoderImpl;
import com.airlock.iam.transactionapproval.application.configuration.selection.Airlock2FAAuthTokenIdSelectionConditionConfig;
import com.airlock.iam.transactionapproval.domain.model.selection.Airlock2FAAuthTokenIdSelectionCondition;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

@ModuleForConfig(Airlock2FAAuthTokenIdSelectionConditionConfig.class)
public class Airlock2FAAuthTokenIdSelectionConditionModule extends PrivateModule {
   @Provides
   @Exposed
   Airlock2FAAuthTokenIdSelectionCondition.Airlock2FAAuthTokenIdSelectionConditionSettings provideIsSelectableIfNoAuthTokenIdPresent(
      Airlock2FAAuthTokenIdSelectionConditionConfig config
   ) {
      return new Airlock2FAAuthTokenIdSelectionCondition.Airlock2FAAuthTokenIdSelectionConditionSettings(config.isSelectableIfNoAuthTokenIdPresent());
   }

   @Provides
   @Exposed
   Airlock2FAAuthTokenIdCoder provideAirlock2FAAuthTokenIdCoder() {
      return new Airlock2FAAuthTokenIdCoderImpl();
   }

   protected void configure() {
   }
}
