// Signature format: 4.0
package androidx.room {

  public class DatabaseConfiguration {
    ctor @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, boolean requireMigration, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom);
    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, java.util.concurrent.Executor transactionExecutor, android.content.Intent? multiInstanceInvalidationServiceIntent, boolean requireMigration, boolean allowDestructiveMigrationOnDowngrade, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom, String? copyFromAssetPath, java.io.File? copyFromFile, java.util.concurrent.Callable<java.io.InputStream>? copyFromInputStream, androidx.room.RoomDatabase.PrepackagedDatabaseCallback? prepackagedDatabaseCallback, java.util.List<?> typeConverters, java.util.List<? extends androidx.room.migration.AutoMigrationSpec> autoMigrationSpecs);
    ctor @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, java.util.concurrent.Executor transactionExecutor, boolean multiInstanceInvalidation, boolean requireMigration, boolean allowDestructiveMigrationOnDowngrade, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom);
    ctor @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, java.util.concurrent.Executor transactionExecutor, boolean multiInstanceInvalidation, boolean requireMigration, boolean allowDestructiveMigrationOnDowngrade, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom, String? copyFromAssetPath, java.io.File? copyFromFile);
    ctor @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, java.util.concurrent.Executor transactionExecutor, boolean multiInstanceInvalidation, boolean requireMigration, boolean allowDestructiveMigrationOnDowngrade, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom, String? copyFromAssetPath, java.io.File? copyFromFile, java.util.concurrent.Callable<java.io.InputStream>? copyFromInputStream);
    ctor @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, java.util.concurrent.Executor transactionExecutor, boolean multiInstanceInvalidation, boolean requireMigration, boolean allowDestructiveMigrationOnDowngrade, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom, String? copyFromAssetPath, java.io.File? copyFromFile, java.util.concurrent.Callable<java.io.InputStream>? copyFromInputStream, androidx.room.RoomDatabase.PrepackagedDatabaseCallback? prepackagedDatabaseCallback);
    ctor @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, java.util.concurrent.Executor transactionExecutor, boolean multiInstanceInvalidation, boolean requireMigration, boolean allowDestructiveMigrationOnDowngrade, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom, String? copyFromAssetPath, java.io.File? copyFromFile, java.util.concurrent.Callable<java.io.InputStream>? copyFromInputStream, androidx.room.RoomDatabase.PrepackagedDatabaseCallback? prepackagedDatabaseCallback, java.util.List<?> typeConverters);
    ctor @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public DatabaseConfiguration(android.content.Context context, String? name, androidx.sqlite.db.SupportSQLiteOpenHelper.Factory sqliteOpenHelperFactory, androidx.room.RoomDatabase.MigrationContainer migrationContainer, java.util.List<? extends androidx.room.RoomDatabase.Callback>? callbacks, boolean allowMainThreadQueries, androidx.room.RoomDatabase.JournalMode journalMode, java.util.concurrent.Executor queryExecutor, java.util.concurrent.Executor transactionExecutor, boolean multiInstanceInvalidation, boolean requireMigration, boolean allowDestructiveMigrationOnDowngrade, java.util.Set<java.lang.Integer>? migrationNotRequiredFrom, String? copyFromAssetPath, java.io.File? copyFromFile, java.util.concurrent.Callable<java.io.InputStream>? copyFromInputStream, androidx.room.RoomDatabase.PrepackagedDatabaseCallback? prepackagedDatabaseCallback, java.util.List<?> typeConverters, java.util.List<? extends androidx.room.migration.AutoMigrationSpec> autoMigrationSpecs);
    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 @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final android.content.Intent? multiInstanceInvalidationServiceIntent;
    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;
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class EntityDeletionOrUpdateAdapter<T> extends androidx.room.SharedSQLiteStatement {
    ctor public EntityDeletionOrUpdateAdapter(androidx.room.RoomDatabase database);
    method protected abstract void bind(androidx.sqlite.db.SupportSQLiteStatement statement, T entity);
    method public final int handle(T entity);
    method public final int handleMultiple(Iterable<? extends T> entities);
    method public final int handleMultiple(T![] entities);
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class EntityInsertionAdapter<T> extends androidx.room.SharedSQLiteStatement {
    ctor public EntityInsertionAdapter(androidx.room.RoomDatabase database);
    method protected abstract void bind(androidx.sqlite.db.SupportSQLiteStatement statement, T entity);
    method public final void insert(Iterable<? extends T> entities);
    method public final void insert(T entity);
    method public final void insert(T![] entities);
    method public final long insertAndReturnId(T entity);
    method public final long[] insertAndReturnIdsArray(java.util.Collection<? extends T> entities);
    method public final long[] insertAndReturnIdsArray(T![] entities);
    method public final Long![] insertAndReturnIdsArrayBox(java.util.Collection<? extends T> entities);
    method public final Long![] insertAndReturnIdsArrayBox(T![] entities);
    method public final java.util.List<java.lang.Long> insertAndReturnIdsList(java.util.Collection<? extends T> entities);
    method public final java.util.List<java.lang.Long> insertAndReturnIdsList(T![] entities);
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class EntityUpsertionAdapter<T> {
    ctor public EntityUpsertionAdapter(androidx.room.EntityInsertionAdapter<T> insertionAdapter, androidx.room.EntityDeletionOrUpdateAdapter<T> updateAdapter);
    method public void upsert(Iterable<? extends T> entities);
    method public void upsert(T entity);
    method public void upsert(T![] entities);
    method public long upsertAndReturnId(T entity);
    method public long[] upsertAndReturnIdsArray(java.util.Collection<? extends T> entities);
    method public long[] upsertAndReturnIdsArray(T![] entities);
    method public Long![] upsertAndReturnIdsArrayBox(java.util.Collection<? extends T> entities);
    method public Long![] upsertAndReturnIdsArrayBox(T![] entities);
    method public java.util.List<java.lang.Long> upsertAndReturnIdsList(java.util.Collection<? extends T> entities);
    method public java.util.List<java.lang.Long> upsertAndReturnIdsList(T![] entities);
  }

  @RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface ExperimentalRoomApi {
  }

  public class InvalidationTracker {
    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public InvalidationTracker(androidx.room.RoomDatabase database, java.lang.String... tableNames);
    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public InvalidationTracker(androidx.room.RoomDatabase database, java.util.Map<java.lang.String,java.lang.String> shadowTablesMap, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> viewTables, java.lang.String... tableNames);
    method @WorkerThread public void addObserver(androidx.room.InvalidationTracker.Observer observer);
    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addWeakObserver(androidx.room.InvalidationTracker.Observer observer);
    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T> androidx.lifecycle.LiveData<T> createLiveData(String![] tableNames, boolean inTransaction, java.util.concurrent.Callable<T> computeFunction);
    method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T> androidx.lifecycle.LiveData<T> createLiveData(String![] tableNames, java.util.concurrent.Callable<T> computeFunction);
    method public void refreshVersionsAsync();
    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @WorkerThread public void refreshVersionsSync();
    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 protected InvalidationTracker.Observer(String firstTable, java.lang.String... rest);
    ctor public InvalidationTracker.Observer(String![] tables);
    method public abstract void onInvalidated(java.util.Set<java.lang.String> tables);
  }

  @androidx.room.ExperimentalRoomApi public final class MultiInstanceInvalidationService extends android.app.Service {
    ctor public MultiInstanceInvalidationService();
    method public android.os.IBinder onBind(android.content.Intent intent);
  }

  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 @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void assertNotMainThread();
    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(androidx.sqlite.db.SupportSQLiteQuery query);
    method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query, optional android.os.CancellationSignal? signal);
    method public android.database.Cursor query(String query, Object![]? args);
    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 @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final int MAX_BIND_PARAMETER_CNT = 999; // 0x3e7
    field @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected java.util.List<? extends androidx.room.RoomDatabase.Callback>? mCallbacks;
    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 @androidx.room.ExperimentalRoomApi public androidx.room.RoomDatabase.Builder<T> setAutoCloseTimeout(@IntRange(from=0L) long autoCloseTimeout, java.util.concurrent.TimeUnit autoCloseTimeUnit);
    method public androidx.room.RoomDatabase.Builder<T> setJournalMode(androidx.room.RoomDatabase.JournalMode journalMode);
    method @androidx.room.ExperimentalRoomApi public androidx.room.RoomDatabase.Builder<T> setMultiInstanceInvalidationServiceIntent(android.content.Intent invalidationServiceIntent);
    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 value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
    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);
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class RoomOpenHelper extends androidx.sqlite.db.SupportSQLiteOpenHelper.Callback {
    ctor public RoomOpenHelper(androidx.room.DatabaseConfiguration configuration, androidx.room.RoomOpenHelper.Delegate delegate, String legacyHash);
    ctor public RoomOpenHelper(androidx.room.DatabaseConfiguration configuration, androidx.room.RoomOpenHelper.Delegate delegate, String identityHash, String legacyHash);
    method public void onCreate(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public void onUpgrade(androidx.sqlite.db.SupportSQLiteDatabase db, int oldVersion, int newVersion);
    field public static final androidx.room.RoomOpenHelper.Companion Companion;
  }

  public static final class RoomOpenHelper.Companion {
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract static class RoomOpenHelper.Delegate {
    ctor public RoomOpenHelper.Delegate(int version);
    method public abstract void createAllTables(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public abstract void dropAllTables(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public abstract void onCreate(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public abstract void onOpen(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public void onPostMigrate(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public void onPreMigrate(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public androidx.room.RoomOpenHelper.ValidationResult onValidateSchema(androidx.sqlite.db.SupportSQLiteDatabase db);
    method @Deprecated protected void validateMigration(androidx.sqlite.db.SupportSQLiteDatabase db);
    field public final int version;
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class RoomOpenHelper.ValidationResult {
    ctor public RoomOpenHelper.ValidationResult(boolean isValid, String? expectedFoundMsg);
    field public final String? expectedFoundMsg;
    field public final boolean isValid;
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class RoomSQLiteQuery implements androidx.sqlite.db.SupportSQLiteProgram androidx.sqlite.db.SupportSQLiteQuery {
    method public static androidx.room.RoomSQLiteQuery acquire(String query, int argumentCount);
    method public void bindBlob(int index, byte[] value);
    method public void bindDouble(int index, double value);
    method public void bindLong(int index, long value);
    method public void bindNull(int index);
    method public void bindString(int index, String value);
    method public void bindTo(androidx.sqlite.db.SupportSQLiteProgram statement);
    method public void clearBindings();
    method public void close();
    method public void copyArgumentsFrom(androidx.room.RoomSQLiteQuery other);
    method public static androidx.room.RoomSQLiteQuery copyFrom(androidx.sqlite.db.SupportSQLiteQuery supportSQLiteQuery);
    method public int getArgCount();
    method public int getCapacity();
    method public String getSql();
    method public void init(String query, int initArgCount);
    method public void release();
    property public int argCount;
    property public final int capacity;
    property public String sql;
    field public static final androidx.room.RoomSQLiteQuery.Companion Companion;
    field @VisibleForTesting public static final int DESIRED_POOL_SIZE = 10; // 0xa
    field @VisibleForTesting public static final int POOL_LIMIT = 15; // 0xf
    field @VisibleForTesting public final byte[]![] blobBindings;
    field @VisibleForTesting public final double[] doubleBindings;
    field @VisibleForTesting public final long[] longBindings;
    field @VisibleForTesting public static final java.util.TreeMap<java.lang.Integer,androidx.room.RoomSQLiteQuery> queryPool;
    field @VisibleForTesting public final String![] stringBindings;
  }

  public static final class RoomSQLiteQuery.Companion {
    method public androidx.room.RoomSQLiteQuery acquire(String query, int argumentCount);
    method public androidx.room.RoomSQLiteQuery copyFrom(androidx.sqlite.db.SupportSQLiteQuery supportSQLiteQuery);
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class SharedSQLiteStatement {
    ctor public SharedSQLiteStatement(androidx.room.RoomDatabase database);
    method public androidx.sqlite.db.SupportSQLiteStatement acquire();
    method protected void assertNotMainThread();
    method protected abstract String createQuery();
    method public void release(androidx.sqlite.db.SupportSQLiteStatement statement);
  }

}

package androidx.room.migration {

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

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

}

package androidx.room.paging {

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class LimitOffsetDataSource<T> extends androidx.paging.PositionalDataSource<T> {
    ctor protected LimitOffsetDataSource(androidx.room.RoomDatabase, androidx.room.RoomSQLiteQuery, boolean, boolean, java.lang.String!...);
    ctor protected LimitOffsetDataSource(androidx.room.RoomDatabase, androidx.room.RoomSQLiteQuery, boolean, java.lang.String!...);
    ctor protected LimitOffsetDataSource(androidx.room.RoomDatabase, androidx.sqlite.db.SupportSQLiteQuery, boolean, boolean, java.lang.String!...);
    ctor protected LimitOffsetDataSource(androidx.room.RoomDatabase, androidx.sqlite.db.SupportSQLiteQuery, boolean, java.lang.String!...);
    method protected abstract java.util.List<T!> convertRows(android.database.Cursor);
    method public void loadInitial(androidx.paging.PositionalDataSource.LoadInitialParams, androidx.paging.PositionalDataSource.LoadInitialCallback<T!>);
    method public void loadRange(androidx.paging.PositionalDataSource.LoadRangeParams, androidx.paging.PositionalDataSource.LoadRangeCallback<T!>);
  }

}

package androidx.room.util {

  @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class CursorUtil {
    method public static android.database.Cursor copyAndClose(android.database.Cursor c);
    method @VisibleForTesting public static int findColumnIndexBySuffix(String![] columnNames, String name);
    method public static int getColumnIndex(android.database.Cursor c, String name);
    method public static int getColumnIndexOrThrow(android.database.Cursor c, String name);
    method public static inline <R> R useCursor(android.database.Cursor, kotlin.jvm.functions.Function1<? super android.database.Cursor,? extends R> block);
    method public static android.database.Cursor wrapMappedColumns(android.database.Cursor cursor, String![] columnNames, int[] mapping);
  }

  @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class DBUtil {
    method public static android.os.CancellationSignal? createCancellationSignal();
    method public static void dropFtsSyncTriggers(androidx.sqlite.db.SupportSQLiteDatabase db);
    method public static void foreignKeyCheck(androidx.sqlite.db.SupportSQLiteDatabase db, String tableName);
    method @Deprecated public static android.database.Cursor query(androidx.room.RoomDatabase db, androidx.sqlite.db.SupportSQLiteQuery sqLiteQuery, boolean maybeCopy);
    method public static android.database.Cursor query(androidx.room.RoomDatabase db, androidx.sqlite.db.SupportSQLiteQuery sqLiteQuery, boolean maybeCopy, android.os.CancellationSignal? signal);
    method @kotlin.jvm.Throws(exceptionClasses=IOException::class) public static int readVersion(java.io.File databaseFile) throws java.io.IOException;
  }

  @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class FileUtil {
    method @kotlin.jvm.Throws(exceptionClasses=IOException::class) public static void copy(java.nio.channels.ReadableByteChannel input, java.nio.channels.FileChannel output) throws java.io.IOException;
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class FtsTableInfo {
    ctor public FtsTableInfo(String name, java.util.Set<java.lang.String> columns, String createSql);
    ctor public FtsTableInfo(String name, java.util.Set<java.lang.String> columns, java.util.Set<java.lang.String> options);
    method @VisibleForTesting public static java.util.Set<java.lang.String> parseOptions(String createStatement);
    method public static androidx.room.util.FtsTableInfo read(androidx.sqlite.db.SupportSQLiteDatabase database, String tableName);
    field public static final androidx.room.util.FtsTableInfo.Companion Companion;
    field public final java.util.Set<java.lang.String> columns;
    field public final String name;
    field public final java.util.Set<java.lang.String> options;
  }

  public static final class FtsTableInfo.Companion {
    method @VisibleForTesting public java.util.Set<java.lang.String> parseOptions(String createStatement);
    method public androidx.room.util.FtsTableInfo read(androidx.sqlite.db.SupportSQLiteDatabase database, String tableName);
  }

  @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class RelationUtil {
    method public static <K, V> void recursiveFetchArrayMap(androidx.collection.ArrayMap<K,V> map, boolean isRelationCollection, kotlin.jvm.functions.Function1<? super androidx.collection.ArrayMap<K,V>,kotlin.Unit> fetchBlock);
    method public static <K, V> void recursiveFetchHashMap(java.util.HashMap<K,V> map, boolean isRelationCollection, kotlin.jvm.functions.Function1<? super java.util.HashMap<K,V>,kotlin.Unit> fetchBlock);
    method public static <V> void recursiveFetchLongSparseArray(androidx.collection.LongSparseArray<V> map, boolean isRelationCollection, kotlin.jvm.functions.Function1<? super androidx.collection.LongSparseArray<V>,kotlin.Unit> fetchBlock);
  }

  @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class StringUtil {
    method public static void appendPlaceholders(StringBuilder builder, int count);
    method public static String? joinIntoString(java.util.List<java.lang.Integer>? input);
    method public static StringBuilder newStringBuilder();
    method public static java.util.List<java.lang.Integer>? splitToIntList(String? input);
    field public static final String![] EMPTY_STRING_ARRAY;
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TableInfo {
    ctor public TableInfo(String name, java.util.Map<java.lang.String,androidx.room.util.TableInfo.Column> columns, java.util.Set<androidx.room.util.TableInfo.ForeignKey> foreignKeys);
    ctor public TableInfo(String name, java.util.Map<java.lang.String,androidx.room.util.TableInfo.Column> columns, java.util.Set<androidx.room.util.TableInfo.ForeignKey> foreignKeys, optional java.util.Set<androidx.room.util.TableInfo.Index>? indices);
    method public static androidx.room.util.TableInfo read(androidx.sqlite.db.SupportSQLiteDatabase database, String tableName);
    field public static final int CREATED_FROM_DATABASE = 2; // 0x2
    field public static final int CREATED_FROM_ENTITY = 1; // 0x1
    field public static final int CREATED_FROM_UNKNOWN = 0; // 0x0
    field public static final androidx.room.util.TableInfo.Companion Companion;
    field public final java.util.Map<java.lang.String,androidx.room.util.TableInfo.Column> columns;
    field public final java.util.Set<androidx.room.util.TableInfo.ForeignKey> foreignKeys;
    field public final java.util.Set<androidx.room.util.TableInfo.Index>? indices;
    field public final String name;
  }

  public static final class TableInfo.Column {
    ctor @Deprecated public TableInfo.Column(String name, String type, boolean notNull, int primaryKeyPosition);
    ctor public TableInfo.Column(String name, String type, boolean notNull, int primaryKeyPosition, String? defaultValue, int createdFrom);
    method @VisibleForTesting public static boolean defaultValueEquals(String current, String? other);
    method public boolean isPrimaryKey();
    property public final boolean isPrimaryKey;
    field public static final androidx.room.util.TableInfo.Column.Companion Companion;
    field @androidx.room.ColumnInfo.SQLiteTypeAffinity public final int affinity;
    field public final int createdFrom;
    field public final String? defaultValue;
    field public final String name;
    field public final boolean notNull;
    field public final int primaryKeyPosition;
    field public final String type;
  }

  public static final class TableInfo.Column.Companion {
    method @VisibleForTesting public boolean defaultValueEquals(String current, String? other);
  }

  public static final class TableInfo.Companion {
    method public androidx.room.util.TableInfo read(androidx.sqlite.db.SupportSQLiteDatabase database, String tableName);
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final class TableInfo.ForeignKey {
    ctor public TableInfo.ForeignKey(String referenceTable, String onDelete, String onUpdate, java.util.List<java.lang.String> columnNames, java.util.List<java.lang.String> referenceColumnNames);
    field public final java.util.List<java.lang.String> columnNames;
    field public final String onDelete;
    field public final String onUpdate;
    field public final java.util.List<java.lang.String> referenceColumnNames;
    field public final String referenceTable;
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final class TableInfo.Index {
    ctor @Deprecated public TableInfo.Index(String name, boolean unique, java.util.List<java.lang.String> columns);
    ctor public TableInfo.Index(String name, boolean unique, java.util.List<java.lang.String> columns, java.util.List<java.lang.String> orders);
    field public static final androidx.room.util.TableInfo.Index.Companion Companion;
    field public static final String DEFAULT_PREFIX = "index_";
    field public final java.util.List<java.lang.String> columns;
    field public final String name;
    field public java.util.List<java.lang.String> orders;
    field public final boolean unique;
  }

  public static final class TableInfo.Index.Companion {
  }

  @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class UUIDUtil {
    method public static java.util.UUID convertByteToUUID(byte[] bytes);
    method public static byte[] convertUUIDToByte(java.util.UUID uuid);
  }

  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ViewInfo {
    ctor public ViewInfo(String name, String? sql);
    method public static androidx.room.util.ViewInfo read(androidx.sqlite.db.SupportSQLiteDatabase database, String viewName);
    field public static final androidx.room.util.ViewInfo.Companion Companion;
    field public final String name;
    field public final String? sql;
  }

  public static final class ViewInfo.Companion {
    method public androidx.room.util.ViewInfo read(androidx.sqlite.db.SupportSQLiteDatabase database, String viewName);
  }

}

