package com.airlock.iam.factor.domain.service.fido;

import com.airlock.iam.base.api.domain.model.user.UserId;
import com.airlock.iam.base.misc.result.Result;
import com.airlock.iam.factor.domain.model.fido.FidoAuthenticatorUnverifiedAttestationResponse;
import com.airlock.iam.factor.domain.model.fido.FidoCredentialDisplayName;
import com.airlock.iam.factor.domain.model.fido.FidoPublicKeyCredentialCreationOptions;
import com.airlock.iam.factor.domain.model.fido.FidoRegisteredCredential;
import com.airlock.iam.factor.domain.model.fido.FidoRegistrationCredential;
import com.airlock.iam.factor.domain.model.fido.FidoRelyingParty;
import com.airlock.iam.fido.api.domain.model.FidoRelyingPartyId;

public interface FidoRegistrationService {
   FidoPublicKeyCredentialCreationOptions generateChallenge(FidoRelyingPartyId var1, UserId var2, FidoCredentialDisplayName var3);

   Result<FidoRegistrationCredential, FidoRelyingParty.FidoRegistrationVerificationErrorCode> verifyAuthenticatorAttestation(
      FidoPublicKeyCredentialCreationOptions var1, FidoAuthenticatorUnverifiedAttestationResponse var2
   );

   FidoRegisteredCredential register(FidoRegistrationCredential var1);

   boolean isAutoGenerateDisplayNameEnabled();
}
