using Bit.Core.Utilities.Fido2;
namespace Bit.Core.Abstractions
{
public interface IFido2MakeCredentialConfirmationUserInterface : IFido2MakeCredentialUserInterface
{
///
/// Call this method after the user chose where to save the new Fido2 credential.
///
///
/// Cipher ID where to save the new credential.
/// If null a new default passkey cipher item will be created
///
///
/// Whether the user has been verified or not.
/// If null verification has not taken place yet.
///
void Confirm(string cipherId, bool? userVerified);
///
/// Call this method after the user chose where to save the new Fido2 credential.
///
///
/// Cipher ID where to save the new credential.
/// If null a new default passkey cipher item will be created
///
///
/// If the cipher corresponding to the already has a Fido2 credential.
///
///
/// Whether the user has been verified or not.
/// If null verification has not taken place yet.
///
Task ConfirmAsync(string cipherId, bool alreadyHasFido2Credential, bool? userVerified);
///
/// Cancels the current flow to make a credential
///
void Cancel();
///
/// Call this if an exception needs to happen on the credential making process
///
void OnConfirmationException(Exception ex);
///
/// True if we are already confirming a new credential.
///
bool IsConfirmingNewCredential { get; }
///
/// Call this after the vault was unlocked so that Fido2 credential creation can proceed.
///
void ConfirmVaultUnlocked();
///
/// True if we are waiting for the vault to be unlocked.
///
bool IsWaitingUnlockVault { get; }
Fido2UserVerificationOptions? GetCurrentUserVerificationOptions();
void SetCheckHasVaultBeenUnlockedInThisTransaction(Func checkHasVaultBeenUnlockedInThisTransaction);
}
}