// Signature format: 4.0
package androidx.room {

  public class DatabaseConfiguration {
    method public boolean isMigrationRequired(int fromVersion, int toVersion);
    method @Deprecated public boolean isMigrationRequiredFrom(int version);
    field public final boolean allowDestructiveMigrationOnDowngrade;
    field public final boolean allowMainThreadQueries;
    field public final java.util.List<androidx.room.migration.AutoMigrationSpec> autoMigrationSpecs;
    field public final java.util.List<androidx.room.RoomDatabase.Callback>? callbacks;
    field public final android.content.Context context;
    field public final String? copyFromAssetPath;
    field public final java.io.File? copyFromFile;
    field public final java.util.concurrent.Callable<java.io.InputStream>? copyFromInputStream;
    field public final androidx.room.RoomDatabase.JournalMode journalMode;
    field public final androidx.room.RoomDatabase.MigrationContainer migrationContainer;
    field public final boolean multiInstanceInvalidation;
    field public final String? name;
    field public final androidx.room.RoomDatabase.PrepackagedDatabaseCallback? prepackagedDatabaseCallback;
    field public final java.util.concurrent.Executor queryExecutor;
    field public final boolean requireMigration;
    field public final androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory;
    field public final java.util.concurrent.Executor transactionExecutor;
    field public final java.util.List<java.lang.Object> typeConverters;
  }

  public final class EntityUpsertionAdapterKt {
  }

  public class InvalidationTracker {
    method @WorkerThread public void addObserver(androidx.room.InvalidationTracker.Observer observer);
    method public void refreshVersionsAsync();
    method @WorkerThread public void removeObserver(androidx.room.InvalidationTracker.Observer observer);
    field public static final androidx.room.InvalidationTracker.Companion Companion;
  }

  public static final class InvalidationTracker.Companion {
  }

  public abstract static class InvalidationTracker.Observer {
    ctor public InvalidationTracker.Observer(String![] tables);
    ctor protected InvalidationTracker.Observer(String firstTable, java.lang.String... rest);
    method public abstract void onInvalidated(java.util.Set<java.lang.String> tables);
  }

  public final class Room {
    method public static <T extends androidx.room.RoomDatabase> androidx.room.RoomDatabase.Builder<T> databaseBuilder(android.content.Context context, Class<T> klass, String? name);
    method public static <T extends androidx.room.RoomDatabase> androidx.room.RoomDatabase.Builder<T> inMemoryDatabaseBuilder(android.content.Context context, Class<T> klass);
    field public static final androidx.room.Room INSTANCE;
    field public static final String MASTER_TABLE_NAME = "room_master_table";
  }

  public abstract class RoomDatabase {
    ctor public RoomDatabase();
    method @Deprecated public void beginTransaction();
    method @WorkerThread public abstract void clearAllTables();
    method public void close();
    method public androidx.sqlite.db.SupportSQLiteStatement compileStatement(String sql);
    method protected abstract androidx.room.InvalidationTracker createInvalidationTracker();
    method protected abstract androidx.sqlite.db.SupportSQLiteOpenHelper createOpenHelper(androidx.room.DatabaseConfiguration config);
    method @Deprecated public void endTransaction();
    method public androidx.room.InvalidationTracker getInvalidationTracker();
    method public androidx.sqlite.db.SupportSQLiteOpenHelper getOpenHelper();
    method public java.util.concurrent.Executor getQueryExecutor();
    method public java.util.concurrent.Executor getTransactionExecutor();
    method public <T> T? getTypeConverter(Class<T> klass);
    method public boolean inTransaction();
    method @CallSuper public void init(androidx.room.DatabaseConfiguration configuration);
    method protected void internalInitInvalidationTracker(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public boolean isOpen();
    method public android.database.Cursor query(String query, Object![]? args);
    method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query, optional android.os.CancellationSignal? signal);
    method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query);
    method public void runInTransaction(Runnable body);
    method public <V> V! runInTransaction(java.util.concurrent.Callable<V> body);
    method @Deprecated public void setTransactionSuccessful();
    property public androidx.room.InvalidationTracker invalidationTracker;
    property public boolean isOpen;
    property public androidx.sqlite.db.SupportSQLiteOpenHelper openHelper;
    property public java.util.concurrent.Executor queryExecutor;
    property public java.util.concurrent.Executor transactionExecutor;
    field public static final androidx.room.RoomDatabase.Companion Companion;
    field @Deprecated @kotlin.jvm.Volatile protected volatile androidx.sqlite.db.SupportSQLiteDatabase? mDatabase;
  }

  public static class RoomDatabase.Builder<T extends androidx.room.RoomDatabase> {
    method public androidx.room.RoomDatabase.Builder<T> addAutoMigrationSpec(androidx.room.migration.AutoMigrationSpec autoMigrationSpec);
    method public androidx.room.RoomDatabase.Builder<T> addCallback(androidx.room.RoomDatabase.Callback callback);
    method public androidx.room.RoomDatabase.Builder<T> addMigrations(androidx.room.migration.Migration... migrations);
    method public androidx.room.RoomDatabase.Builder<T> addTypeConverter(Object typeConverter);
    method public androidx.room.RoomDatabase.Builder<T> allowMainThreadQueries();
    method public T build();
    method public androidx.room.RoomDatabase.Builder<T> createFromAsset(String databaseFilePath);
    method public androidx.room.RoomDatabase.Builder<T> createFromAsset(String databaseFilePath, androidx.room.RoomDatabase.PrepackagedDatabaseCallback callback);
    method public androidx.room.RoomDatabase.Builder<T> createFromFile(java.io.File databaseFile);
    method public androidx.room.RoomDatabase.Builder<T> createFromFile(java.io.File databaseFile, androidx.room.RoomDatabase.PrepackagedDatabaseCallback callback);
    method public androidx.room.RoomDatabase.Builder<T> createFromInputStream(java.util.concurrent.Callable<java.io.InputStream> inputStreamCallable);
    method public androidx.room.RoomDatabase.Builder<T> createFromInputStream(java.util.concurrent.Callable<java.io.InputStream> inputStreamCallable, androidx.room.RoomDatabase.PrepackagedDatabaseCallback callback);
    method public androidx.room.RoomDatabase.Builder<T> enableMultiInstanceInvalidation();
    method public androidx.room.RoomDatabase.Builder<T> fallbackToDestructiveMigration();
    method public androidx.room.RoomDatabase.Builder<T> fallbackToDestructiveMigrationFrom(int... startVersions);
    method public androidx.room.RoomDatabase.Builder<T> fallbackToDestructiveMigrationOnDowngrade();
    method public androidx.room.RoomDatabase.Builder<T> openHelperFactory(androidx.sqlite.db.SupportSQLiteOpenHelper.Factory? factory);
    method public androidx.room.RoomDatabase.Builder<T> setJournalMode(androidx.room.RoomDatabase.JournalMode journalMode);
    method public androidx.room.RoomDatabase.Builder<T> setQueryCallback(androidx.room.RoomDatabase.QueryCallback queryCallback, java.util.concurrent.Executor executor);
    method public androidx.room.RoomDatabase.Builder<T> setQueryExecutor(java.util.concurrent.Executor executor);
    method public androidx.room.RoomDatabase.Builder<T> setTransactionExecutor(java.util.concurrent.Executor executor);
  }

  public abstract static class RoomDatabase.Callback {
    ctor public RoomDatabase.Callback();
    method public void onCreate(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public void onDestructiveMigration(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public void onOpen(androidx.sqlite.db.SupportSQLiteDatabase db);
  }

  public static final class RoomDatabase.Companion {
  }

  public enum RoomDatabase.JournalMode {
    method public static androidx.room.RoomDatabase.JournalMode valueOf(String name) throws java.lang.IllegalArgumentException;
    method public static androidx.room.RoomDatabase.JournalMode[] values();
    enum_constant public static final androidx.room.RoomDatabase.JournalMode AUTOMATIC;
    enum_constant public static final androidx.room.RoomDatabase.JournalMode TRUNCATE;
    enum_constant public static final androidx.room.RoomDatabase.JournalMode WRITE_AHEAD_LOGGING;
  }

  public static class RoomDatabase.MigrationContainer {
    ctor public RoomDatabase.MigrationContainer();
    method public void addMigrations(androidx.room.migration.Migration... migrations);
    method public void addMigrations(java.util.List<? extends androidx.room.migration.Migration> migrations);
    method public final boolean contains(int startVersion, int endVersion);
    method public java.util.List<androidx.room.migration.Migration>? findMigrationPath(int start, int end);
    method public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,androidx.room.migration.Migration>> getMigrations();
  }

  public abstract static class RoomDatabase.PrepackagedDatabaseCallback {
    ctor public RoomDatabase.PrepackagedDatabaseCallback();
    method public void onOpenPrepackagedDatabase(androidx.sqlite.db.SupportSQLiteDatabase db);
  }

  public static interface RoomDatabase.QueryCallback {
    method public void onQuery(String sqlQuery, java.util.List<?> bindArgs);
  }

}

package androidx.room.migration {

  public interface AutoMigrationSpec {
    method public default void onPostMigrate(androidx.sqlite.db.SupportSQLiteDatabase);
  }

  public abstract class Migration {
    ctor public Migration(int, int);
    method public abstract void migrate(androidx.sqlite.db.SupportSQLiteDatabase);
    field public final int endVersion;
    field public final int startVersion;
  }

}

package androidx.room.util {

  public final class TableInfoKt {
  }

}

