
/**
 * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
 *
 * Do not edit this file as changes may cause incorrect behavior and will be lost
 * once the code is regenerated.
 *
 * @generated by codegen project: GenerateModuleJavaSpec.js
 *
 * @nolint
 */

package com.authgear.reactnative;

import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public abstract class NativeAuthgearReactNativeSpec extends ReactContextBaseJavaModule implements TurboModule {
  public static final String NAME = "AuthgearReactNative";

  public NativeAuthgearReactNativeSpec(ReactApplicationContext reactContext) {
    super(reactContext);
  }

  @Override
  public @Nonnull String getName() {
    return NAME;
  }

  protected final void emitOnAuthgearReactNative(ReadableMap value) {
    mEventEmitterCallback.invoke("onAuthgearReactNative", value);
  }

  @ReactMethod
  @DoNotStrip
  public abstract void storageGetItem(String key, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void storageSetItem(String key, String value, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void storageDeleteItem(String key, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void getDeviceInfo(Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void randomBytes(double length, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void sha256String(String input, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void generateUUID(Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void openAuthorizeURL(String url, String callbackURL, boolean prefersEphemeralWebBrowserSession, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void openAuthorizeURLWithWebView(ReadableMap options, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void dismiss(Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void getAnonymousKey(@Nullable String kid, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void signAnonymousToken(String kid, String tokenData, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void createBiometricPrivateKey(ReadableMap options, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void signWithBiometricPrivateKey(ReadableMap options, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void removeBiometricPrivateKey(String kid, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void checkBiometricSupported(ReadableMap options, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void checkDPoPSupported(ReadableMap stub, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void createDPoPPrivateKey(ReadableMap options, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void signWithDPoPPrivateKey(ReadableMap options, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void checkDPoPPrivateKey(ReadableMap options, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void computeDPoPJKT(ReadableMap options, Promise promise);
}
