import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport'; import { TurboModuleRegistry } from 'react-native'; type RNSensitiveInfoBiometryType = 'Touch ID' | 'Face ID'; type RNSensitiveInfoAccessControlOptions = | 'kSecAccessControlApplicationPassword' | 'kSecAccessControlPrivateKeyUsage' | 'kSecAccessControlDevicePasscode' | 'kSecAccessControlTouchIDAny' | 'kSecAccessControlTouchIDCurrentSet' | 'kSecAccessControlUserPresence' | 'kSecAccessControlBiometryAny' | 'kSecAccessControlBiometryCurrentSet'; type RNSensitiveInfoAttrAccessibleOptions = | 'kSecAttrAccessibleAfterFirstUnlock' | 'kSecAttrAccessibleAlways' | 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' | 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' | 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' | 'kSecAttrAccessibleAlwaysThisDeviceOnly' | 'kSecAttrAccessibleWhenUnlocked'; interface RNSensitiveInfoAndroidDialogStrings { header?: string; description?: string; hint?: string; success?: string; notRecognized?: string; cancel?: string; cancelled?: string; } export interface RNSensitiveInfoOptions { kSecAccessControl?: RNSensitiveInfoAccessControlOptions; kSecAttrAccessible?: RNSensitiveInfoAttrAccessibleOptions; kSecAttrSynchronizable?: boolean; keychainService?: string; sharedPreferencesName?: string; touchID?: boolean; showModal?: boolean; kSecUseOperationPrompt?: string; kLocalizedFallbackTitle?: string; strings?: RNSensitiveInfoAndroidDialogStrings; } interface SensitiveInfoEntry { key: string; value: string; service: string; } export interface Spec extends TurboModule { setItem: (key: string, value: string, options: RNSensitiveInfoOptions) => Promise; getItem: (key: string, options: RNSensitiveInfoOptions) => Promise; hasItem( key: string, options: RNSensitiveInfoOptions, ): Promise; getAllItems( options: RNSensitiveInfoOptions, ): Promise<[SensitiveInfoEntry[]]>; deleteItem( key: string, options: RNSensitiveInfoOptions, ): Promise; isSensorAvailable(): Promise< RNSensitiveInfoBiometryType | boolean >; hasEnrolledFingerprints(): Promise; cancelFingerprintAuth(): void; setInvalidatedByBiometricEnrollment(set: boolean): void; } export default TurboModuleRegistry.get('SensitiveInfoNativeModule') as Spec | null;