package com.airlock.iam.flow.shared.domain.service.airlock2fa;

import com.airlock.iam.airlock2fa.api.domain.model.Airlock2FADeviceId;
import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FAAuthTokenId;
import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FAFactor;
import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FAFactorSet;
import com.airlock.iam.factor.domain.service.airlock2fa.Airlock2FACooldownInformationServiceImpl;
import com.airlock.iam.flow.shared.domain.model.airlock2fa.Airlock2FAAuthDeviceAttribute;
import java.time.Duration;
import java.time.Instant;
import java.util.Optional;

public interface Airlock2FAFlowSessionAttributesService {
   void saveAuthTokenId(Airlock2FAFactor var1, Airlock2FADeviceId var2, Airlock2FAFactorSet var3);

   void saveAuthDevice(
      Airlock2FADeviceId var1,
      Airlock2FACooldownInformationServiceImpl.Airlock2FAAuthDeviceCooldownStatus var2,
      Optional<Instant> var3,
      Optional<Duration> var4
   );

   Optional<Airlock2FAAuthDeviceAttribute> loadAuthDevice();

   Optional<Airlock2FAAuthTokenId> loadAuthTokenId();
}
