// Signature format: 4.0
package androidx.biometric {

  public class BiometricManager {
    method @Deprecated public int canAuthenticate();
    method public int canAuthenticate(int);
    method public static androidx.biometric.BiometricManager from(android.content.Context);
    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public androidx.biometric.BiometricManager.Strings? getStrings(int);
    field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
    field public static final int BIOMETRIC_ERROR_NONE_ENROLLED = 11; // 0xb
    field public static final int BIOMETRIC_ERROR_NO_HARDWARE = 12; // 0xc
    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
    field public static final int BIOMETRIC_ERROR_UNSUPPORTED = -2; // 0xfffffffe
    field public static final int BIOMETRIC_STATUS_UNKNOWN = -1; // 0xffffffff
    field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
  }

  public static interface BiometricManager.Authenticators {
    field public static final int BIOMETRIC_STRONG = 15; // 0xf
    field public static final int BIOMETRIC_WEAK = 255; // 0xff
    field public static final int DEVICE_CREDENTIAL = 32768; // 0x8000
  }

  public static class BiometricManager.Strings {
    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public CharSequence? getButtonLabel();
    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public CharSequence? getPromptMessage();
    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public CharSequence? getSettingName();
  }

  public class BiometricPrompt {
    ctor public BiometricPrompt(androidx.fragment.app.Fragment, androidx.biometric.BiometricPrompt.AuthenticationCallback);
    ctor public BiometricPrompt(androidx.fragment.app.Fragment, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
    ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, androidx.biometric.BiometricPrompt.AuthenticationCallback);
    ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
    method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
    method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
    method public void cancelAuthentication();
    field public static final int AUTHENTICATION_RESULT_TYPE_BIOMETRIC = 2; // 0x2
    field public static final int AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL = 1; // 0x1
    field public static final int AUTHENTICATION_RESULT_TYPE_UNKNOWN = -1; // 0xffffffff
    field public static final int ERROR_CANCELED = 5; // 0x5
    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
    field public static final int ERROR_LOCKOUT = 7; // 0x7
    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
    field public static final int ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
    field public static final int ERROR_NO_SPACE = 4; // 0x4
    field public static final int ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
    field public static final int ERROR_TIMEOUT = 3; // 0x3
    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
    field public static final int ERROR_USER_CANCELED = 10; // 0xa
    field public static final int ERROR_VENDOR = 8; // 0x8
  }

  public abstract static class BiometricPrompt.AuthenticationCallback {
    ctor public BiometricPrompt.AuthenticationCallback();
    method public void onAuthenticationError(int, CharSequence);
    method public void onAuthenticationFailed();
    method public void onAuthenticationSucceeded(androidx.biometric.BiometricPrompt.AuthenticationResult);
  }

  public static class BiometricPrompt.AuthenticationResult {
    method public int getAuthenticationType();
    method public androidx.biometric.BiometricPrompt.CryptoObject? getCryptoObject();
  }

  public static class BiometricPrompt.CryptoObject {
    ctor @RequiresApi(android.os.Build.VERSION_CODES.R) public BiometricPrompt.CryptoObject(android.security.identity.IdentityCredential);
    ctor @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public BiometricPrompt.CryptoObject(android.security.identity.PresentationSession);
    ctor public BiometricPrompt.CryptoObject(java.security.Signature);
    ctor public BiometricPrompt.CryptoObject(javax.crypto.Cipher);
    ctor public BiometricPrompt.CryptoObject(javax.crypto.Mac);
    method public javax.crypto.Cipher? getCipher();
    method @RequiresApi(android.os.Build.VERSION_CODES.R) public android.security.identity.IdentityCredential? getIdentityCredential();
    method public javax.crypto.Mac? getMac();
    method @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public android.security.identity.PresentationSession? getPresentationSession();
    method public java.security.Signature? getSignature();
  }

  public static class BiometricPrompt.PromptInfo {
    method public int getAllowedAuthenticators();
    method public CharSequence? getDescription();
    method public CharSequence getNegativeButtonText();
    method public CharSequence? getSubtitle();
    method public CharSequence getTitle();
    method public boolean isConfirmationRequired();
    method @Deprecated public boolean isDeviceCredentialAllowed();
  }

  public static class BiometricPrompt.PromptInfo.Builder {
    ctor public BiometricPrompt.PromptInfo.Builder();
    method public androidx.biometric.BiometricPrompt.PromptInfo build();
    method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setAllowedAuthenticators(int);
    method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setConfirmationRequired(boolean);
    method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setDescription(CharSequence?);
    method @Deprecated public androidx.biometric.BiometricPrompt.PromptInfo.Builder setDeviceCredentialAllowed(boolean);
    method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setNegativeButtonText(CharSequence);
    method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setSubtitle(CharSequence?);
    method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
  }

}

package androidx.biometric.auth {

  public interface AuthPrompt {
    method public void cancelAuthentication();
  }

  public abstract class AuthPromptCallback {
    ctor public AuthPromptCallback();
    method public void onAuthenticationError(androidx.fragment.app.FragmentActivity?, int, CharSequence);
    method public void onAuthenticationFailed(androidx.fragment.app.FragmentActivity?);
    method public void onAuthenticationSucceeded(androidx.fragment.app.FragmentActivity?, androidx.biometric.BiometricPrompt.AuthenticationResult);
  }

  public class AuthPromptHost {
    ctor public AuthPromptHost(androidx.fragment.app.Fragment);
    ctor public AuthPromptHost(androidx.fragment.app.FragmentActivity);
    method public androidx.fragment.app.FragmentActivity? getActivity();
    method public androidx.fragment.app.Fragment? getFragment();
  }

  public class Class2BiometricAuthPrompt {
    method public CharSequence? getDescription();
    method public CharSequence getNegativeButtonText();
    method public CharSequence? getSubtitle();
    method public CharSequence getTitle();
    method public boolean isConfirmationRequired();
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.auth.AuthPromptCallback);
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, java.util.concurrent.Executor, androidx.biometric.auth.AuthPromptCallback);
  }

  public static final class Class2BiometricAuthPrompt.Builder {
    ctor public Class2BiometricAuthPrompt.Builder(CharSequence, CharSequence);
    method public androidx.biometric.auth.Class2BiometricAuthPrompt build();
    method public androidx.biometric.auth.Class2BiometricAuthPrompt.Builder setConfirmationRequired(boolean);
    method public androidx.biometric.auth.Class2BiometricAuthPrompt.Builder setDescription(CharSequence);
    method public androidx.biometric.auth.Class2BiometricAuthPrompt.Builder setSubtitle(CharSequence);
  }

  public class Class2BiometricOrCredentialAuthPrompt {
    method public CharSequence? getDescription();
    method public CharSequence? getSubtitle();
    method public CharSequence getTitle();
    method public boolean isConfirmationRequired();
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.auth.AuthPromptCallback);
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, java.util.concurrent.Executor, androidx.biometric.auth.AuthPromptCallback);
  }

  public static final class Class2BiometricOrCredentialAuthPrompt.Builder {
    ctor public Class2BiometricOrCredentialAuthPrompt.Builder(CharSequence);
    method public androidx.biometric.auth.Class2BiometricOrCredentialAuthPrompt build();
    method public androidx.biometric.auth.Class2BiometricOrCredentialAuthPrompt.Builder setConfirmationRequired(boolean);
    method public androidx.biometric.auth.Class2BiometricOrCredentialAuthPrompt.Builder setDescription(CharSequence);
    method public androidx.biometric.auth.Class2BiometricOrCredentialAuthPrompt.Builder setSubtitle(CharSequence);
  }

  public class Class3BiometricAuthPrompt {
    method public CharSequence? getDescription();
    method public CharSequence getNegativeButtonText();
    method public CharSequence? getSubtitle();
    method public CharSequence getTitle();
    method public boolean isConfirmationRequired();
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.BiometricPrompt.CryptoObject?, androidx.biometric.auth.AuthPromptCallback);
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.BiometricPrompt.CryptoObject?, java.util.concurrent.Executor, androidx.biometric.auth.AuthPromptCallback);
  }

  public static final class Class3BiometricAuthPrompt.Builder {
    ctor public Class3BiometricAuthPrompt.Builder(CharSequence, CharSequence);
    method public androidx.biometric.auth.Class3BiometricAuthPrompt build();
    method public androidx.biometric.auth.Class3BiometricAuthPrompt.Builder setConfirmationRequired(boolean);
    method public androidx.biometric.auth.Class3BiometricAuthPrompt.Builder setDescription(CharSequence);
    method public androidx.biometric.auth.Class3BiometricAuthPrompt.Builder setSubtitle(CharSequence);
  }

  @RequiresApi(android.os.Build.VERSION_CODES.R) public class Class3BiometricOrCredentialAuthPrompt {
    method public CharSequence? getDescription();
    method public CharSequence? getSubtitle();
    method public CharSequence getTitle();
    method public boolean isConfirmationRequired();
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.BiometricPrompt.CryptoObject?, androidx.biometric.auth.AuthPromptCallback);
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.BiometricPrompt.CryptoObject?, java.util.concurrent.Executor, androidx.biometric.auth.AuthPromptCallback);
  }

  public static final class Class3BiometricOrCredentialAuthPrompt.Builder {
    ctor public Class3BiometricOrCredentialAuthPrompt.Builder(CharSequence);
    method public androidx.biometric.auth.Class3BiometricOrCredentialAuthPrompt build();
    method public androidx.biometric.auth.Class3BiometricOrCredentialAuthPrompt.Builder setConfirmationRequired(boolean);
    method public androidx.biometric.auth.Class3BiometricOrCredentialAuthPrompt.Builder setDescription(CharSequence);
    method public androidx.biometric.auth.Class3BiometricOrCredentialAuthPrompt.Builder setSubtitle(CharSequence);
  }

  @RequiresApi(android.os.Build.VERSION_CODES.R) public class CredentialAuthPrompt {
    method public CharSequence? getDescription();
    method public CharSequence getTitle();
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.BiometricPrompt.CryptoObject?, androidx.biometric.auth.AuthPromptCallback);
    method public androidx.biometric.auth.AuthPrompt startAuthentication(androidx.biometric.auth.AuthPromptHost, androidx.biometric.BiometricPrompt.CryptoObject?, java.util.concurrent.Executor, androidx.biometric.auth.AuthPromptCallback);
  }

  public static final class CredentialAuthPrompt.Builder {
    ctor public CredentialAuthPrompt.Builder(CharSequence);
    method public androidx.biometric.auth.CredentialAuthPrompt build();
    method public androidx.biometric.auth.CredentialAuthPrompt.Builder setDescription(CharSequence);
  }

}

