{
  "api": {
    "name": "NativeBiometricPlugin",
    "slug": "nativebiometricplugin",
    "docs": "",
    "tags": [],
    "methods": [
      {
        "name": "isAvailable",
        "signature": "(options?: IsAvailableOptions | undefined) => Promise<AvailableResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "IsAvailableOptions | undefined"
          }
        ],
        "returns": "Promise<AvailableResult>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "1.0.0"
          }
        ],
        "docs": "Checks if biometric authentication hardware is available.",
        "complexTypes": [
          "AvailableResult",
          "IsAvailableOptions"
        ],
        "slug": "isavailable"
      },
      {
        "name": "addListener",
        "signature": "(eventName: 'biometryChange', listener: BiometryChangeListener) => Promise<PluginListenerHandle>",
        "parameters": [
          {
            "name": "eventName",
            "docs": "- Must be 'biometryChange'",
            "type": "'biometryChange'"
          },
          {
            "name": "listener",
            "docs": "- Callback function that receives the updated AvailableResult",
            "type": "BiometryChangeListener"
          }
        ],
        "returns": "Promise<PluginListenerHandle>",
        "tags": [
          {
            "name": "param",
            "text": "eventName - Must be 'biometryChange'"
          },
          {
            "name": "param",
            "text": "listener - Callback function that receives the updated AvailableResult"
          },
          {
            "name": "returns",
            "text": "Handle to remove the listener"
          },
          {
            "name": "since",
            "text": "7.6.0"
          },
          {
            "name": "example",
            "text": "```typescript\nconst handle = await NativeBiometric.addListener('biometryChange', (result) => {\n  console.log('Biometry availability changed:', result.isAvailable);\n});\n\n// To remove the listener:\nawait handle.remove();\n```"
          }
        ],
        "docs": "Adds a listener that is called when the app resumes from background.\nThis is useful to detect if biometry availability has changed while\nthe app was in the background (e.g., user enrolled/unenrolled biometrics).",
        "complexTypes": [
          "PluginListenerHandle",
          "BiometryChangeListener"
        ],
        "slug": "addlistenerbiometrychange-"
      },
      {
        "name": "verifyIdentity",
        "signature": "(options?: BiometricOptions | undefined) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "BiometricOptions | undefined"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "1.0.0"
          }
        ],
        "docs": "Prompts the user to authenticate with biometrics.",
        "complexTypes": [
          "BiometricOptions"
        ],
        "slug": "verifyidentity"
      },
      {
        "name": "getCredentials",
        "signature": "(options: GetCredentialOptions) => Promise<Credentials>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetCredentialOptions"
          }
        ],
        "returns": "Promise<Credentials>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "1.0.0"
          }
        ],
        "docs": "Gets the stored credentials for a given server.",
        "complexTypes": [
          "Credentials",
          "GetCredentialOptions"
        ],
        "slug": "getcredentials"
      },
      {
        "name": "setCredentials",
        "signature": "(options: SetCredentialOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "SetCredentialOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "1.0.0"
          }
        ],
        "docs": "Stores the given credentials for a given server.",
        "complexTypes": [
          "SetCredentialOptions"
        ],
        "slug": "setcredentials"
      },
      {
        "name": "deleteCredentials",
        "signature": "(options: DeleteCredentialOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "DeleteCredentialOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "1.0.0"
          }
        ],
        "docs": "Deletes the stored credentials for a given server.",
        "complexTypes": [
          "DeleteCredentialOptions"
        ],
        "slug": "deletecredentials"
      },
      {
        "name": "getSecureCredentials",
        "signature": "(options: GetSecureCredentialsOptions) => Promise<Credentials>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetSecureCredentialsOptions"
          }
        ],
        "returns": "Promise<Credentials>",
        "tags": [
          {
            "name": "see",
            "text": "BiometricAuthError.NO_PROTECTED_CREDENTIALS_FOUND *"
          },
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "8.4.0"
          }
        ],
        "docs": "Gets the stored credentials for a given server, requiring biometric authentication.\nCredentials must have been stored with accessControl set to BIOMETRY_CURRENT_SET or BIOMETRY_ANY.\n\nOn iOS, the system automatically shows the biometric prompt when accessing the protected Keychain item.\nOn Android, BiometricPrompt is shown with a CryptoObject bound to the credential decryption key.\n\nIf no protected credentials exist for the server, the promise rejects with code `21`\n(`BiometricAuthError.NO_PROTECTED_CREDENTIALS_FOUND`). This is stable, expected\nbehavior — for example when credentials were never saved with biometric protection,\nwere deleted, or were invalidated after biometric enrollment changes.\n`isCredentialsSaved()` returns true when any credentials (protected or unprotected) exist,\nso it does not guarantee a biometric-protected entry is present — handle code `21` in\nyour catch block or only call after storing with `accessControl` BIOMETRY_CURRENT_SET\nor BIOMETRY_ANY.\nPlatform messages: Android `No protected credentials found`, iOS\n`No protected credentials found for server`.",
        "complexTypes": [
          "Credentials",
          "GetSecureCredentialsOptions"
        ],
        "slug": "getsecurecredentials"
      },
      {
        "name": "isCredentialsSaved",
        "signature": "(options: IsCredentialsSavedOptions) => Promise<IsCredentialsSavedResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "IsCredentialsSavedOptions"
          }
        ],
        "returns": "Promise<IsCredentialsSavedResult>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "7.3.0"
          }
        ],
        "docs": "Checks if credentials are already saved for a given server.",
        "complexTypes": [
          "IsCredentialsSavedResult",
          "IsCredentialsSavedOptions"
        ],
        "slug": "iscredentialssaved"
      },
      {
        "name": "setData",
        "signature": "(options: SetDataOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "SetDataOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "8.6.0"
          }
        ],
        "docs": "Stores an arbitrary string value under the given key.\nValues are encrypted at rest using the platform secure storage backend\n(Android Keystore + SharedPreferences, iOS Keychain).\n\nFor biometric-protected storage, set `accessControl` and retrieve the value\nwith `getSecureData()`. Credential helpers remain available for username/password flows.",
        "complexTypes": [
          "SetDataOptions"
        ],
        "slug": "setdata"
      },
      {
        "name": "getData",
        "signature": "(options: GetDataOptions) => Promise<StoredData>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetDataOptions"
          }
        ],
        "returns": "Promise<StoredData>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "8.6.0"
          }
        ],
        "docs": "Gets a previously stored value for the given key.\nOnly returns values stored without biometric `accessControl`.",
        "complexTypes": [
          "StoredData",
          "GetDataOptions"
        ],
        "slug": "getdata"
      },
      {
        "name": "getSecureData",
        "signature": "(options: GetSecureDataOptions) => Promise<StoredData>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetSecureDataOptions"
          }
        ],
        "returns": "Promise<StoredData>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "8.6.0"
          }
        ],
        "docs": "Gets a biometric-protected value for the given key.\nThe value must have been stored with `accessControl` set to BIOMETRY_CURRENT_SET or BIOMETRY_ANY.",
        "complexTypes": [
          "StoredData",
          "GetSecureDataOptions"
        ],
        "slug": "getsecuredata"
      },
      {
        "name": "deleteData",
        "signature": "(options: DeleteDataOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "DeleteDataOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "8.6.0"
          }
        ],
        "docs": "Deletes the stored value for the given key (protected and unprotected).",
        "complexTypes": [
          "DeleteDataOptions"
        ],
        "slug": "deletedata"
      },
      {
        "name": "isDataSaved",
        "signature": "(options: IsDataSavedOptions) => Promise<IsDataSavedResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "IsDataSavedOptions"
          }
        ],
        "returns": "Promise<IsDataSavedResult>",
        "tags": [
          {
            "name": "param",
            "text": "options"
          },
          {
            "name": "returns"
          },
          {
            "name": "memberof",
            "text": "NativeBiometricPlugin"
          },
          {
            "name": "since",
            "text": "8.6.0"
          }
        ],
        "docs": "Checks whether a value is already saved for the given key.",
        "complexTypes": [
          "IsDataSavedResult",
          "IsDataSavedOptions"
        ],
        "slug": "isdatasaved"
      },
      {
        "name": "getPluginVersion",
        "signature": "() => Promise<{ version: string; }>",
        "parameters": [],
        "returns": "Promise<{ version: string; }>",
        "tags": [
          {
            "name": "returns",
            "text": "Promise that resolves with the plugin version"
          },
          {
            "name": "since",
            "text": "1.0.0"
          }
        ],
        "docs": "Get the native Capacitor plugin version.",
        "complexTypes": [],
        "slug": "getpluginversion"
      }
    ],
    "properties": []
  },
  "interfaces": [
    {
      "name": "AvailableResult",
      "slug": "availableresult",
      "docs": "Result from isAvailable() method indicating biometric authentication availability.",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "isAvailable",
          "tags": [],
          "docs": "Whether authentication is available.\n\nOn Android, weak-only biometrics (such as some face unlock implementations)\nare available for `verifyIdentity()` when no `allowedBiometryTypes` filter\nexcludes them. If `useFallback` is true, PIN/pattern/password can also make\nthis value true.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "authenticationStrength",
          "tags": [],
          "docs": "The strength of available authentication method (STRONG, WEAK, or NONE)",
          "complexTypes": [
            "AuthenticationStrength"
          ],
          "type": "AuthenticationStrength"
        },
        {
          "name": "biometryType",
          "tags": [],
          "docs": "The primary biometry type available on the device.\nOn Android devices with multiple biometry types, this returns MULTIPLE.\nUse this for display purposes only - always use isAvailable for logic decisions.",
          "complexTypes": [
            "BiometryType"
          ],
          "type": "BiometryType"
        },
        {
          "name": "deviceIsSecure",
          "tags": [],
          "docs": "Whether the device has a secure lock screen (PIN, pattern, or password).\nThis is independent of biometric enrollment.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "strongBiometryIsAvailable",
          "tags": [],
          "docs": "Whether strong biometry (Face ID, Touch ID, or fingerprint on devices that consider it strong)\nis specifically available, separate from weak biometry or device credentials.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "errorCode",
          "tags": [
            {
              "text": "BiometricAuthError",
              "name": "see"
            }
          ],
          "docs": "Error code from BiometricAuthError enum. Only present when isAvailable is false.\nIndicates why biometric authentication is not available.",
          "complexTypes": [
            "BiometricAuthError"
          ],
          "type": "BiometricAuthError"
        }
      ]
    },
    {
      "name": "IsAvailableOptions",
      "slug": "isavailableoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "useFallback",
          "tags": [],
          "docs": "Whether passcode or device credentials should count toward biometric availability\nwhen no biometric is enrolled or available.\n\n- On iOS, this affects both `isAvailable()` and `verifyIdentity()`.\n- On Android, this is honored by `isAvailable()` only — the native check computes\n  `fallbackAvailable = useFallback && deviceIsSecure` and reports availability\n  accordingly. The `verifyIdentity()` flow ignores this option on Android due to\n  BiometricPrompt API constraints (DEVICE_CREDENTIAL authenticator and negative\n  button are mutually exclusive); use `BiometricOptions.useFallback` (iOS-only) to\n  control the auth-dialog fallback there.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "preferMultipleBiometryType",
          "tags": [
            {
              "text": "false",
              "name": "default"
            },
            {
              "text": "8.6.5",
              "name": "since"
            }
          ],
          "docs": "Android only. Report `BiometryType.MULTIPLE` whenever a fingerprint is enrolled and the device\nalso advertises a face or iris sensor, even when that second modality cannot be confirmed as\nenrolled.\n\nYou normally do not need this. On Android 12 and newer a face enrolled next to a fingerprint is\nusually detected and reported as `BiometryType.MULTIPLE` on its own. Detection is best-effort,\nand is not possible on Android 11 and older, for the rare Class 3 (Strong) face sensor, or on a\nvendor build whose biometric labels name only the preferred modality. Undetected devices report\n`BiometryType.FINGERPRINT`, because most devices advertise a face sensor the user never\nenrolled. Set this to `true` if your UI would rather over-report `MULTIPLE` there.\n\n`verifyIdentity()` is unaffected and still offers every enrolled biometric the device supports;\nthis only changes the reported type. The most recent value is reused for `biometryChange`\nevents.",
          "complexTypes": [],
          "type": "boolean | undefined"
        }
      ]
    },
    {
      "name": "PluginListenerHandle",
      "slug": "pluginlistenerhandle",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "remove",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "() => Promise<void>"
        }
      ]
    },
    {
      "name": "BiometricOptions",
      "slug": "biometricoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "reason",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "title",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "subtitle",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "description",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "negativeButtonText",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "useFallback",
          "tags": [],
          "docs": "Only for iOS.\nSpecifies if should fallback to passcode authentication if biometric authentication fails.\nOn Android, this parameter is ignored due to BiometricPrompt API constraints:\nDEVICE_CREDENTIAL authenticator and negative button (cancel) are mutually exclusive.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "fallbackTitle",
          "tags": [],
          "docs": "Only for iOS.\nSet the text for the fallback button in the authentication dialog.\nIf this property is not specified, the default text is set by the system.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "maxAttempts",
          "tags": [
            {
              "text": "1",
              "name": "default"
            }
          ],
          "docs": "Only for Android.\nSet a maximum number of attempts for biometric authentication. The maximum allowed by android is 5.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "allowedBiometryTypes",
          "tags": [
            {
              "text": "[BiometryType.FINGERPRINT, BiometryType.FACE_AUTHENTICATION]",
              "name": "example"
            }
          ],
          "docs": "Only for Android.\nSpecify which biometry types are allowed for authentication.\nIf not specified, all enrolled biometric classes (strong and weak) are allowed.\nOn Android, face unlock is often classified as weak biometrics — include\n`BiometryType.FACE_AUTHENTICATION` or omit this option to allow it.\nUse `BiometryType.DEVICE_CREDENTIAL` for PIN/pattern/password (disables the cancel button).",
          "complexTypes": [
            "BiometryType"
          ],
          "type": "BiometryType[] | undefined"
        }
      ]
    },
    {
      "name": "Credentials",
      "slug": "credentials",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "username",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "password",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "GetCredentialOptions",
      "slug": "getcredentialoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "server",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "SetCredentialOptions",
      "slug": "setcredentialoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "username",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "password",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "server",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "accessControl",
          "tags": [
            {
              "text": "AccessControl.NONE",
              "name": "default"
            },
            {
              "text": "8.4.0",
              "name": "since"
            }
          ],
          "docs": "Access control level for the stored credentials.\nWhen set to BIOMETRY_CURRENT_SET or BIOMETRY_ANY, the credentials are\nhardware-protected and require biometric authentication to access.\n\nOn iOS, this adds SecAccessControl to the Keychain item.\nOn Android, this creates a biometric-protected Keystore key and requires\nBiometricPrompt authentication for both storing and retrieving credentials.",
          "complexTypes": [
            "AccessControl"
          ],
          "type": "AccessControl"
        },
        {
          "name": "authValidityDuration",
          "tags": [
            {
              "text": "0",
              "name": "default"
            },
            {
              "text": "8.5.0",
              "name": "since"
            }
          ],
          "docs": "Only for Android. Ignored on iOS and web.\nOnly meaningful together with `accessControl` set to BIOMETRY_CURRENT_SET or BIOMETRY_ANY.\n\nNumber of seconds a successful biometric authentication remains valid for\nKeystore key use. When `0` or omitted (the default), the Keystore key requires\na fresh authentication for every operation — each `getSecureCredentials()` call\nshows a `BiometricPrompt` cryptographically bound to that specific read via a\n`CryptoObject`. This is the strongest mode: it guarantees no code path can use\nthe key without a live biometric check.\n\nWhen set to a value greater than `0`, one successful biometric authentication\nauthorizes Keystore key use for that many seconds. Subsequent\n`getSecureCredentials()` calls within the window succeed without showing a\nprompt. This trades security for convenience: any in-app code that can reach\nthe decryption call — not just the code path that triggered the prompt — can\nsilently read the credentials for the remainder of the window.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "title",
          "tags": [
            {
              "text": "\"Protect Credentials\"",
              "name": "default"
            },
            {
              "text": "8.4.14",
              "name": "since"
            }
          ],
          "docs": "Title for the biometric prompt shown while protecting credentials.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "negativeButtonText",
          "tags": [
            {
              "text": "\"Cancel\"",
              "name": "default"
            },
            {
              "text": "8.4.14",
              "name": "since"
            }
          ],
          "docs": "Text for the negative/cancel button in the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "maxAttempts",
          "tags": [
            {
              "text": "1",
              "name": "default"
            }
          ],
          "docs": "Set a maximum number of attempts for biometric authentication. The maximum allowed by Android is 5.\nOnly for Android.",
          "complexTypes": [],
          "type": "number | undefined"
        }
      ]
    },
    {
      "name": "DeleteCredentialOptions",
      "slug": "deletecredentialoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "server",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "GetSecureCredentialsOptions",
      "slug": "getsecurecredentialsoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "server",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "reason",
          "tags": [],
          "docs": "Explanation text shown as the subtitle of the Touch ID prompt. Face ID does not display it.\nOnly for iOS.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "title",
          "tags": [],
          "docs": "Title for the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "subtitle",
          "tags": [],
          "docs": "Subtitle for the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "description",
          "tags": [],
          "docs": "Description for the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "negativeButtonText",
          "tags": [],
          "docs": "Text for the negative/cancel button.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "maxAttempts",
          "tags": [
            {
              "text": "1",
              "name": "default"
            }
          ],
          "docs": "Set a maximum number of attempts for biometric authentication. The maximum allowed by Android is 5.\nOnly for Android.",
          "complexTypes": [],
          "type": "number | undefined"
        }
      ]
    },
    {
      "name": "IsCredentialsSavedResult",
      "slug": "iscredentialssavedresult",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "isSaved",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "boolean"
        }
      ]
    },
    {
      "name": "IsCredentialsSavedOptions",
      "slug": "iscredentialssavedoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "server",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "SetDataOptions",
      "slug": "setdataoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "key",
          "tags": [],
          "docs": "Unique identifier for the stored value.\nUse a stable app-specific namespace (e.g. `pin`, `session.token`).",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "value",
          "tags": [],
          "docs": "Arbitrary string payload. Serialize objects with `JSON.stringify()` before storing.\n\nPlatform limits apply: Android Keystore-backed encryption works best with payloads\nunder ~8 KB; iOS Keychain practical limits are higher but very large values are discouraged.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "accessControl",
          "tags": [
            {
              "text": "AccessControl.NONE",
              "name": "default"
            },
            {
              "text": "8.6.0",
              "name": "since"
            }
          ],
          "docs": "Access control level for the stored value.\nWhen set to BIOMETRY_CURRENT_SET or BIOMETRY_ANY, the value is hardware-protected\nand requires biometric authentication to access via `getSecureData()`.",
          "complexTypes": [
            "AccessControl"
          ],
          "type": "AccessControl"
        },
        {
          "name": "authValidityDuration",
          "tags": [
            {
              "text": "0",
              "name": "default"
            },
            {
              "text": "8.6.0",
              "name": "since"
            }
          ],
          "docs": "Only for Android. Ignored on iOS and web.\nOnly meaningful together with `accessControl` set to BIOMETRY_CURRENT_SET or BIOMETRY_ANY.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "title",
          "tags": [
            {
              "text": "\"Protect Data\"",
              "name": "default"
            },
            {
              "text": "8.6.0",
              "name": "since"
            }
          ],
          "docs": "Title for the biometric prompt shown while protecting data.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "negativeButtonText",
          "tags": [
            {
              "text": "\"Cancel\"",
              "name": "default"
            },
            {
              "text": "8.6.0",
              "name": "since"
            }
          ],
          "docs": "Text for the negative/cancel button in the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "maxAttempts",
          "tags": [
            {
              "text": "1",
              "name": "default"
            }
          ],
          "docs": "Set a maximum number of attempts for biometric authentication. The maximum allowed by Android is 5.\nOnly for Android.",
          "complexTypes": [],
          "type": "number | undefined"
        }
      ]
    },
    {
      "name": "StoredData",
      "slug": "storeddata",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "value",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "GetDataOptions",
      "slug": "getdataoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "key",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "GetSecureDataOptions",
      "slug": "getsecuredataoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "key",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "reason",
          "tags": [],
          "docs": "Explanation text shown as the subtitle of the Touch ID prompt. Face ID does not display it.\nOnly for iOS.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "title",
          "tags": [],
          "docs": "Title for the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "subtitle",
          "tags": [],
          "docs": "Subtitle for the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "description",
          "tags": [],
          "docs": "Description for the biometric prompt.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "negativeButtonText",
          "tags": [],
          "docs": "Text for the negative/cancel button.\nOnly for Android.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "fallbackTitle",
          "tags": [],
          "docs": "Set the text for the fallback button in the authentication dialog.\nIf this property is not specified, the default text is set by the system.\nSet it to an empty string to hide the button.\nOnly for iOS.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "maxAttempts",
          "tags": [
            {
              "text": "1",
              "name": "default"
            }
          ],
          "docs": "Set a maximum number of attempts for biometric authentication. The maximum allowed by Android is 5.\nOnly for Android.",
          "complexTypes": [],
          "type": "number | undefined"
        }
      ]
    },
    {
      "name": "DeleteDataOptions",
      "slug": "deletedataoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "key",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "IsDataSavedResult",
      "slug": "isdatasavedresult",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "isSaved",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "boolean"
        }
      ]
    },
    {
      "name": "IsDataSavedOptions",
      "slug": "isdatasavedoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "key",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    }
  ],
  "enums": [
    {
      "name": "AuthenticationStrength",
      "slug": "authenticationstrength",
      "members": [
        {
          "name": "NONE",
          "value": "0",
          "tags": [],
          "docs": "No authentication available, even if PIN is available but useFallback = false"
        },
        {
          "name": "STRONG",
          "value": "1",
          "tags": [],
          "docs": "Strong authentication: Face ID on iOS, fingerprints on devices that consider fingerprints strong (Android).\nNote: PIN/pattern/password is NEVER considered STRONG, even when useFallback = true."
        },
        {
          "name": "WEAK",
          "value": "2",
          "tags": [],
          "docs": "Weak authentication: Face authentication on Android devices that consider face weak,\nor PIN/pattern/password if useFallback = true (PIN is always WEAK, never STRONG)."
        }
      ]
    },
    {
      "name": "BiometryType",
      "slug": "biometrytype",
      "members": [
        {
          "name": "NONE",
          "value": "0",
          "tags": [],
          "docs": ""
        },
        {
          "name": "TOUCH_ID",
          "value": "1",
          "tags": [],
          "docs": ""
        },
        {
          "name": "FACE_ID",
          "value": "2",
          "tags": [],
          "docs": ""
        },
        {
          "name": "FINGERPRINT",
          "value": "3",
          "tags": [],
          "docs": ""
        },
        {
          "name": "FACE_AUTHENTICATION",
          "value": "4",
          "tags": [],
          "docs": ""
        },
        {
          "name": "IRIS_AUTHENTICATION",
          "value": "5",
          "tags": [],
          "docs": ""
        },
        {
          "name": "MULTIPLE",
          "value": "6",
          "tags": [],
          "docs": ""
        },
        {
          "name": "DEVICE_CREDENTIAL",
          "value": "7",
          "tags": [],
          "docs": ""
        }
      ]
    },
    {
      "name": "BiometricAuthError",
      "slug": "biometricautherror",
      "members": [
        {
          "name": "UNKNOWN_ERROR",
          "value": "0",
          "tags": [],
          "docs": "Unknown error occurred"
        },
        {
          "name": "BIOMETRICS_UNAVAILABLE",
          "value": "1",
          "tags": [],
          "docs": "Biometrics are unavailable (no hardware or hardware error)\nPlatform: Android, iOS"
        },
        {
          "name": "USER_LOCKOUT",
          "value": "2",
          "tags": [],
          "docs": "User has been locked out due to too many failed attempts\nPlatform: Android, iOS"
        },
        {
          "name": "BIOMETRICS_NOT_ENROLLED",
          "value": "3",
          "tags": [],
          "docs": "No biometrics are enrolled on the device\nPlatform: Android, iOS"
        },
        {
          "name": "USER_TEMPORARY_LOCKOUT",
          "value": "4",
          "tags": [],
          "docs": "User is temporarily locked out (Android: 30 second lockout)\nPlatform: Android"
        },
        {
          "name": "AUTHENTICATION_FAILED",
          "value": "10",
          "tags": [],
          "docs": "Authentication failed (user did not authenticate successfully)\nPlatform: Android, iOS"
        },
        {
          "name": "APP_CANCEL",
          "value": "11",
          "tags": [],
          "docs": "App canceled the authentication (iOS only)\nPlatform: iOS"
        },
        {
          "name": "INVALID_CONTEXT",
          "value": "12",
          "tags": [],
          "docs": "Invalid context (iOS only)\nPlatform: iOS"
        },
        {
          "name": "NOT_INTERACTIVE",
          "value": "13",
          "tags": [],
          "docs": "Authentication was not interactive (iOS only)\nPlatform: iOS"
        },
        {
          "name": "PASSCODE_NOT_SET",
          "value": "14",
          "tags": [],
          "docs": "Passcode/PIN is not set on the device\nPlatform: Android, iOS"
        },
        {
          "name": "SYSTEM_CANCEL",
          "value": "15",
          "tags": [],
          "docs": "System canceled the authentication (e.g., due to screen lock)\nPlatform: Android, iOS"
        },
        {
          "name": "USER_CANCEL",
          "value": "16",
          "tags": [],
          "docs": "User canceled the authentication\nPlatform: Android, iOS"
        },
        {
          "name": "USER_FALLBACK",
          "value": "17",
          "tags": [],
          "docs": "User chose to use fallback authentication method\nPlatform: Android, iOS"
        },
        {
          "name": "NO_PROTECTED_CREDENTIALS_FOUND",
          "value": "21",
          "tags": [
            {
              "text": "8.4.0",
              "name": "since"
            }
          ],
          "docs": "No biometric-protected credentials or data exist for the requested server or key.\nPlatform: Android, iOS (`getSecureCredentials()`, `getSecureData()`).\n\nThrown when `getSecureCredentials()` or `getSecureData()` is called but nothing was stored\nwith `accessControl` BIOMETRY_CURRENT_SET or BIOMETRY_ANY — for example after deletion,\na fresh install, or items removed from the secure enclave after biometric enrollment changes.\n\nRejection message differs by platform and method:\n- `getSecureCredentials()`: Android `No protected credentials found`, iOS\n  `No protected credentials found for server`\n- `getSecureData()`: Android `No protected data found`, iOS\n  `No protected data found for key`"
        }
      ]
    },
    {
      "name": "AccessControl",
      "slug": "accesscontrol",
      "members": [
        {
          "name": "NONE",
          "value": "0",
          "tags": [],
          "docs": "No biometric protection. Credentials are accessible without authentication.\nThis is the default behavior for backward compatibility."
        },
        {
          "name": "BIOMETRY_CURRENT_SET",
          "value": "1",
          "tags": [],
          "docs": "Biometric authentication required for credential access.\nCredentials are invalidated if biometrics change (e.g., new fingerprint enrolled).\nMore secure but credentials are lost if user modifies their biometric enrollment."
        },
        {
          "name": "BIOMETRY_ANY",
          "value": "2",
          "tags": [],
          "docs": "Biometric authentication required for credential access.\nCredentials survive new biometric enrollment (e.g., adding a new fingerprint).\nMore lenient — recommended for most apps."
        }
      ]
    }
  ],
  "typeAliases": [
    {
      "name": "BiometryChangeListener",
      "slug": "biometrychangelistener",
      "docs": "Callback type for biometry change listener",
      "types": [
        {
          "text": "(result: AvailableResult): void",
          "complexTypes": [
            "AvailableResult"
          ]
        }
      ]
    }
  ],
  "pluginConfigs": []
}