#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * User verification options for enrollment and authentication.
 *
 * These values control how passkeys and biometrics are used during UMFA operations.
 */
typedef NS_ENUM(NSInteger, UserVerification) {
    /**
     * PasskeysPlus with user verification required.
     * Fails if the device doesn't support passkeys or biometrics.
     */
    UserVerificationRequired,

    /**
     * PasskeysPlus with user verification preferred.
     * Uses passkeys with biometrics if available, falls back gracefully.
     */
    UserVerificationPreferred,

    /**
     * PasskeysPlus with user verification discouraged.
     * Uses passkeys but minimizes biometric friction where possible.
     */
    UserVerificationDiscouraged,

    /**
     * MPC-only mode - no passkey involvement at all (default).
     * Use this to bypass passkeys entirely and use only MPC credentials.
     */
    UserVerificationPrevented
};

/**
 * Helper functions for UserVerification enum
 */
@interface UserVerificationHelper : NSObject

/**
 * Convert UserVerification enum to string value.
 * @param verification The UserVerification enum value
 * @return String representation ("required", "preferred", "discouraged", or "prevented")
 */
+ (NSString *)stringFromUserVerification:(UserVerification)verification;

/**
 * Convert string value to UserVerification enum.
 * @param value String value ("required", "preferred", "discouraged", or "prevented")
 * @return UserVerification enum value (defaults to UserVerificationPrevented if unrecognized)
 */
+ (UserVerification)userVerificationFromString:(NSString * _Nullable)value;

@end

NS_ASSUME_NONNULL_END
