// Signature format: 4.0
package androidx.javascriptengine {

  public final class DataInputException extends androidx.javascriptengine.JavaScriptException {
    ctor public DataInputException();
    ctor public DataInputException(String);
  }

  public final class EvaluationFailedException extends androidx.javascriptengine.JavaScriptException {
    ctor public EvaluationFailedException(String);
  }

  public final class EvaluationResultSizeLimitExceededException extends androidx.javascriptengine.JavaScriptException {
    ctor public EvaluationResultSizeLimitExceededException();
    ctor public EvaluationResultSizeLimitExceededException(String);
  }

  public final class IsolateStartupParameters {
    ctor public IsolateStartupParameters();
    method @IntRange(from=0) public int getMaxEvaluationReturnSizeBytes();
    method @IntRange(from=0) public long getMaxHeapSizeBytes();
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_EVALUATE_WITHOUT_TRANSACTION_LIMIT, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public void setMaxEvaluationReturnSizeBytes(@IntRange(from=0) int);
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_ISOLATE_MAX_HEAP_SIZE, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public void setMaxHeapSizeBytes(@IntRange(from=0) long);
    field public static final long AUTOMATIC_MAX_HEAP_SIZE = 0L; // 0x0L
    field public static final int DEFAULT_MAX_EVALUATION_RETURN_SIZE_BYTES = 20971520; // 0x1400000
  }

  public class IsolateTerminatedException extends androidx.javascriptengine.JavaScriptException {
    ctor public IsolateTerminatedException();
    ctor public IsolateTerminatedException(String);
  }

  public interface JavaScriptConsoleCallback {
    method public default void onConsoleClear();
    method public void onConsoleMessage(androidx.javascriptengine.JavaScriptConsoleCallback.ConsoleMessage);
  }

  public static final class JavaScriptConsoleCallback.ConsoleMessage {
    ctor public JavaScriptConsoleCallback.ConsoleMessage(int, String, String, int, int, String?);
    method public int getColumn();
    method public int getLevel();
    method public int getLine();
    method public String getMessage();
    field public static final int LEVEL_DEBUG = 2; // 0x2
    field public static final int LEVEL_ERROR = 8; // 0x8
    field public static final int LEVEL_INFO = 4; // 0x4
    field public static final int LEVEL_LOG = 1; // 0x1
    field public static final int LEVEL_WARNING = 16; // 0x10
  }

  public class JavaScriptException extends java.lang.Exception {
    ctor public JavaScriptException();
    ctor public JavaScriptException(String);
  }

  @javax.annotation.concurrent.ThreadSafe public final class JavaScriptIsolate implements java.lang.AutoCloseable {
    method public void addOnTerminatedCallback(androidx.core.util.Consumer<androidx.javascriptengine.TerminationInfo!>);
    method public void addOnTerminatedCallback(java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.javascriptengine.TerminationInfo!>);
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_CONSOLE_MESSAGING, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public void clearConsoleCallback();
    method public void close();
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_EVALUATE_FROM_FD, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public com.google.common.util.concurrent.ListenableFuture<java.lang.String!> evaluateJavaScriptAsync(android.content.res.AssetFileDescriptor);
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_EVALUATE_FROM_FD, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public com.google.common.util.concurrent.ListenableFuture<java.lang.String!> evaluateJavaScriptAsync(android.os.ParcelFileDescriptor);
    method public com.google.common.util.concurrent.ListenableFuture<java.lang.String!> evaluateJavaScriptAsync(String);
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_PROVIDE_CONSUME_ARRAY_BUFFER, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public void provideNamedData(String, byte[]);
    method public void removeOnTerminatedCallback(androidx.core.util.Consumer<androidx.javascriptengine.TerminationInfo!>);
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_CONSOLE_MESSAGING, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public void setConsoleCallback(androidx.javascriptengine.JavaScriptConsoleCallback);
    method @RequiresFeature(name=androidx.javascriptengine.JavaScriptSandbox.JS_FEATURE_CONSOLE_MESSAGING, enforcement="androidx.javascriptengine.JavaScriptSandbox#isFeatureSupported") public void setConsoleCallback(java.util.concurrent.Executor, androidx.javascriptengine.JavaScriptConsoleCallback);
  }

  @javax.annotation.concurrent.ThreadSafe public final class JavaScriptSandbox implements java.lang.AutoCloseable {
    method public void close();
    method public static com.google.common.util.concurrent.ListenableFuture<androidx.javascriptengine.JavaScriptSandbox!> createConnectedInstanceAsync(android.content.Context);
    method public androidx.javascriptengine.JavaScriptIsolate createIsolate();
    method public androidx.javascriptengine.JavaScriptIsolate createIsolate(androidx.javascriptengine.IsolateStartupParameters);
    method public boolean isFeatureSupported(String);
    method public static boolean isSupported();
    field public static final String JS_FEATURE_CONSOLE_MESSAGING = "JS_FEATURE_CONSOLE_MESSAGING";
    field public static final String JS_FEATURE_EVALUATE_FROM_FD = "JS_FEATURE_EVALUATE_FROM_FD";
    field public static final String JS_FEATURE_EVALUATE_WITHOUT_TRANSACTION_LIMIT = "JS_FEATURE_EVALUATE_WITHOUT_TRANSACTION_LIMIT";
    field public static final String JS_FEATURE_ISOLATE_MAX_HEAP_SIZE = "JS_FEATURE_ISOLATE_MAX_HEAP_SIZE";
    field public static final String JS_FEATURE_ISOLATE_TERMINATION = "JS_FEATURE_ISOLATE_TERMINATION";
    field public static final String JS_FEATURE_PROMISE_RETURN = "JS_FEATURE_PROMISE_RETURN";
    field public static final String JS_FEATURE_PROVIDE_CONSUME_ARRAY_BUFFER = "JS_FEATURE_PROVIDE_CONSUME_ARRAY_BUFFER";
    field public static final String JS_FEATURE_WASM_COMPILATION = "JS_FEATURE_WASM_COMPILATION";
  }

  public final class MemoryLimitExceededException extends androidx.javascriptengine.IsolateTerminatedException {
    ctor public MemoryLimitExceededException();
    ctor public MemoryLimitExceededException(String);
  }

  public final class SandboxDeadException extends androidx.javascriptengine.IsolateTerminatedException {
    ctor public SandboxDeadException();
    ctor public SandboxDeadException(String);
  }

  public final class SandboxUnsupportedException extends java.lang.RuntimeException {
    ctor public SandboxUnsupportedException(String);
  }

  public final class TerminationInfo {
    method public String getMessage();
    method public int getStatus();
    method public String getStatusString();
    field public static final int STATUS_MEMORY_LIMIT_EXCEEDED = 3; // 0x3
    field public static final int STATUS_SANDBOX_DEAD = 2; // 0x2
    field public static final int STATUS_UNKNOWN_ERROR = 1; // 0x1
  }

}

