
/**
 * 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.speech;

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;

public abstract class NativeSpeechSpec extends ReactContextBaseJavaModule implements TurboModule {
  public static final String NAME = "Speech";

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

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

  protected final void emitOnError(ReadableMap value) {
    mEventEmitterCallback.invoke("onError", value);
  }

  protected final void emitOnStart(ReadableMap value) {
    mEventEmitterCallback.invoke("onStart", value);
  }

  protected final void emitOnFinish(ReadableMap value) {
    mEventEmitterCallback.invoke("onFinish", value);
  }

  protected final void emitOnPause(ReadableMap value) {
    mEventEmitterCallback.invoke("onPause", value);
  }

  protected final void emitOnResume(ReadableMap value) {
    mEventEmitterCallback.invoke("onResume", value);
  }

  protected final void emitOnStopped(ReadableMap value) {
    mEventEmitterCallback.invoke("onStopped", value);
  }

  protected final void emitOnProgress(ReadableMap value) {
    mEventEmitterCallback.invoke("onProgress", value);
  }

  @ReactMethod
  @DoNotStrip
  public abstract void reset();

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

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

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

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

  @ReactMethod
  @DoNotStrip
  public abstract void speak(String text, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void initialize(ReadableMap options);

  @ReactMethod
  @DoNotStrip
  public abstract void getAvailableVoices(String language, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void speakWithOptions(String text, ReadableMap options, Promise promise);
}
