package com.airlock.iam.admin.domain.service.token.airlock2fa;

import com.airlock.iam.airlock2fa.api.domain.model.Airlock2FAAccountId;
import com.airlock.iam.airlock2fa.api.domain.model.Airlock2FADeviceId;
import com.airlock.iam.factor.domain.model.airlock2fa.Airlock2FAAdminApiException;
import com.airlock.iam.factor.domain.model.airlock2fa.HardwareTokenArchiveError;
import com.airlock.iam.factor.domain.model.airlock2fa.HardwareTokenSynchronizeError;
import com.airlock.iam.factor.domain.model.airlock2fa.hardware.Airlock2FAAdminHardwareToken;
import com.airlock.iam.factor.domain.model.airlock2fa.hardware.Airlock2FAAdminHardwareTokenSynchronizationPasscodes;
import com.airlock.iam.factor.domain.model.airlock2fa.hardware.Airlock2FAHardwareTokenFilter;
import com.airlock.iam.factor.domain.model.airlock2fa.hardware.Airlock2FAHardwareTokenId;
import java.util.List;
import java.util.Optional;

public interface Airlock2FAAdminApiHardwareTokenService {
   List<Airlock2FAAdminHardwareToken> searchTokens(Airlock2FAHardwareTokenFilter var1) throws Airlock2FAAdminApiException;

   Airlock2FADeviceId assignTokenToAccount(Airlock2FAAccountId var1, Airlock2FAHardwareTokenId var2) throws Airlock2FAAdminApiException;

   Optional<HardwareTokenArchiveError> archiveToken(Airlock2FAHardwareTokenId var1);

   Optional<HardwareTokenSynchronizeError> synchronizeToken(Airlock2FAHardwareTokenId var1, Airlock2FAAdminHardwareTokenSynchronizationPasscodes var2);
}
