import typing

import android.content
import android.database.sqlite
import android.net
import android.os
import java
import java.chaquopy
import java.io
import java.lang
import java.util

class AbstractCursor(CrossProcessCursor):
    mClosed: bool = ...
    mContentResolver: android.content.ContentResolver = ...
    mPos: int = ...
    def __init__(self) -> None: ...
    def checkPosition(self) -> None: ...
    def close(self) -> None: ...
    def copyStringToBuffer(self, columnIndex: int | java.jint | java.lang.Integer, buffer: CharArrayBuffer, /) -> None: ...
    def deactivate(self) -> None: ...
    def fillWindow(self, position: int | java.jint | java.lang.Integer, window: CursorWindow, /) -> None: ...
    def finalize(self) -> None: ...
    def getBlob(self, column: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def getColumnCount(self) -> int: ...
    def getColumnIndex(self, columnName: str | java.lang.String, /) -> int: ...
    def getColumnIndexOrThrow(self, columnName: str | java.lang.String, /) -> int: ...
    def getColumnName(self, columnIndex: int | java.jint | java.lang.Integer, /) -> str: ...
    def getColumnNames(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
    def getCount(self) -> int: ...
    def getDouble(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getFloat(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    def getInt(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getLong(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getNotificationUri(self) -> android.net.Uri: ...
    def getNotificationUris(self) -> java.util.List[android.net.Uri]: ...
    def getPosition(self) -> int: ...
    def getShort(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getString(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getType(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getUpdatedField(self, columnIndex: int | java.jint | java.lang.Integer, /) -> java.lang.Object: ...
    def getWantsAllOnMoveCalls(self) -> bool: ...
    def getWindow(self) -> CursorWindow | None: ...
    def isAfterLast(self) -> bool: ...
    def isBeforeFirst(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def isFieldUpdated(self, columnIndex: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isFirst(self) -> bool: ...
    def isLast(self) -> bool: ...
    def isNull(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def move(self, offset: int | java.jint | java.lang.Integer, /) -> bool: ...
    def moveToFirst(self) -> bool: ...
    def moveToLast(self) -> bool: ...
    def moveToNext(self) -> bool: ...
    def moveToPosition(self, position: int | java.jint | java.lang.Integer, /) -> bool: ...
    def moveToPrevious(self) -> bool: ...
    def onChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onMove(self, oldPosition: int | java.jint | java.lang.Integer, newPosition: int | java.jint | java.lang.Integer, /) -> bool: ...
    def registerContentObserver(self, observer: ContentObserver, /) -> None: ...
    def registerDataSetObserver(self, observer: DataSetObserver, /) -> None: ...
    def requery(self) -> bool: ...
    def respond(self, extras: android.os.Bundle, /) -> android.os.Bundle: ...
    def setExtras(self, extras: android.os.Bundle, /) -> None: ...
    def setNotificationUri(self, cr: android.content.ContentResolver, notifyUri: android.net.Uri, /) -> None: ...
    def setNotificationUris(self, cr: android.content.ContentResolver, notifyUris: java.util.List[android.net.Uri], /) -> None: ...
    def unregisterContentObserver(self, observer: ContentObserver, /) -> None: ...
    def unregisterDataSetObserver(self, observer: DataSetObserver, /) -> None: ...

    class SelfContentObserver(ContentObserver):
        def __init__(self, cursor: AbstractCursor, /) -> None: ...
        def deliverSelfNotifications(self) -> bool: ...
        def onChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class AbstractWindowedCursor(AbstractCursor):
    mWindow: CursorWindow = ...
    def __init__(self) -> None: ...
    def checkPosition(self) -> None: ...
    def copyStringToBuffer(self, columnIndex: int | java.jint | java.lang.Integer, buffer: CharArrayBuffer, /) -> None: ...
    def getBlob(self, columnIndex: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def getDouble(self, columnIndex: int | java.jint | java.lang.Integer, /) -> float: ...
    def getFloat(self, columnIndex: int | java.jint | java.lang.Integer, /) -> float: ...
    def getInt(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getLong(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getShort(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getString(self, columnIndex: int | java.jint | java.lang.Integer, /) -> str: ...
    def getType(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getWindow(self) -> CursorWindow: ...
    def hasWindow(self) -> bool: ...
    def isBlob(self, columnIndex: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isFloat(self, columnIndex: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isLong(self, columnIndex: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isNull(self, columnIndex: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isString(self, columnIndex: int | java.jint | java.lang.Integer, /) -> bool: ...
    def setWindow(self, window: CursorWindow, /) -> None: ...

class CharArrayBuffer(java.lang.Object):
    data: java.chaquopy.JavaArrayJChar = ...
    sizeCopied: int = ...
    @typing.overload
    def __init__(self, size: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, buf: java.chaquopy.JavaArrayJChar, /) -> None: ...

class ContentObservable(Observable[ContentObserver]):
    def __init__(self) -> None: ...
    @typing.overload
    def dispatchChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def dispatchChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, uri: android.net.Uri, /) -> None: ...
    def notifyChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def registerObserver(self, observer: ContentObserver, /) -> None: ...

class ContentObserver(java.lang.Object):
    def __init__(self, handler: android.os.Handler, /) -> None: ...
    def deliverSelfNotifications(self) -> bool: ...
    @typing.overload
    def dispatchChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def dispatchChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, uri: android.net.Uri, /) -> None: ...
    @typing.overload
    def dispatchChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, uri: android.net.Uri, flags: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def dispatchChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, uris: java.util.Collection[android.net.Uri], flags: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def onChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def onChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, uri: android.net.Uri, /) -> None: ...
    @typing.overload
    def onChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, uri: android.net.Uri, flags: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def onChange(self, selfChange: bool | java.jboolean | java.lang.Boolean, uris: java.util.Collection[android.net.Uri], flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CrossProcessCursor(Cursor):
    def fillWindow(self, arg1: int | java.jint | java.lang.Integer, arg2: CursorWindow, /) -> None: ...
    def getWindow(self) -> CursorWindow | None: ...
    def onMove(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> bool: ...

class CrossProcessCursorWrapper(CrossProcessCursor, CursorWrapper):
    def __init__(self, cursor: Cursor, /) -> None: ...
    def fillWindow(self, position: int | java.jint | java.lang.Integer, window: CursorWindow, /) -> None: ...
    def getWindow(self) -> CursorWindow: ...
    def onMove(self, oldPosition: int | java.jint | java.lang.Integer, newPosition: int | java.jint | java.lang.Integer, /) -> bool: ...

class Cursor(java.io.Closeable):
    FIELD_TYPE_BLOB: typing.ClassVar[int] = ...
    FIELD_TYPE_FLOAT: typing.ClassVar[int] = ...
    FIELD_TYPE_INTEGER: typing.ClassVar[int] = ...
    FIELD_TYPE_NULL: typing.ClassVar[int] = ...
    FIELD_TYPE_STRING: typing.ClassVar[int] = ...
    def close(self) -> None: ...
    def copyStringToBuffer(self, arg1: int | java.jint | java.lang.Integer, arg2: CharArrayBuffer, /) -> None: ...
    def deactivate(self) -> None: ...
    def getBlob(self, arg1: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def getColumnCount(self) -> int: ...
    def getColumnIndex(self, arg1: str | java.lang.String, /) -> int: ...
    def getColumnIndexOrThrow(self, arg1: str | java.lang.String, /) -> int: ...
    def getColumnName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getColumnNames(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
    def getCount(self) -> int: ...
    def getDouble(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getFloat(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    def getInt(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getLong(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getNotificationUri(self) -> android.net.Uri: ...
    def getNotificationUris(self) -> java.util.List[android.net.Uri] | None: ...
    def getPosition(self) -> int: ...
    def getShort(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getString(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getType(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getWantsAllOnMoveCalls(self) -> bool: ...
    def isAfterLast(self) -> bool: ...
    def isBeforeFirst(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def isFirst(self) -> bool: ...
    def isLast(self) -> bool: ...
    def isNull(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def move(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def moveToFirst(self) -> bool: ...
    def moveToLast(self) -> bool: ...
    def moveToNext(self) -> bool: ...
    def moveToPosition(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def moveToPrevious(self) -> bool: ...
    def registerContentObserver(self, arg1: ContentObserver, /) -> None: ...
    def registerDataSetObserver(self, arg1: DataSetObserver, /) -> None: ...
    def requery(self) -> bool: ...
    def respond(self, arg1: android.os.Bundle, /) -> android.os.Bundle: ...
    def setExtras(self, arg1: android.os.Bundle, /) -> None: ...
    def setNotificationUri(self, arg1: android.content.ContentResolver, arg2: android.net.Uri, /) -> None: ...
    def setNotificationUris(self, cr: android.content.ContentResolver, uris: java.util.List[android.net.Uri], /) -> None: ...
    def unregisterContentObserver(self, arg1: ContentObserver, /) -> None: ...
    def unregisterDataSetObserver(self, arg1: DataSetObserver, /) -> None: ...

class CursorIndexOutOfBoundsException(java.lang.IndexOutOfBoundsException):
    @typing.overload
    def __init__(self, message: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, index: int | java.jint | java.lang.Integer, size: int | java.jint | java.lang.Integer, /) -> None: ...

class CursorJoiner(java.lang.Iterable[CursorJoiner.Result], java.util.Iterator[CursorJoiner.Result]):
    def __init__(self, cursorLeft: Cursor, columnNamesLeft: java.chaquopy.JavaArray[java.lang.String], cursorRight: Cursor, columnNamesRight: java.chaquopy.JavaArray[java.lang.String], /) -> None: ...
    def hasNext(self) -> bool: ...
    def iterator(self) -> java.util.Iterator[CursorJoiner.Result]: ...
    def next(self) -> CursorJoiner.Result: ...
    def remove(self) -> None: ...

    class Result(java.lang.Enum[CursorJoiner.Result]):
        BOTH: typing.ClassVar[CursorJoiner.Result] = ...
        LEFT: typing.ClassVar[CursorJoiner.Result] = ...
        RIGHT: typing.ClassVar[CursorJoiner.Result] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> CursorJoiner.Result: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[CursorJoiner.Result]: ...

class CursorWindow(android.database.sqlite.SQLiteClosable, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CursorWindow]] = ...
    @typing.overload
    def __init__(self, name: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, localWindow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def __init__(self, name: str | java.lang.String, windowSizeBytes: int | java.jlong | java.lang.Long, /) -> None: ...
    def allocRow(self) -> bool: ...
    def clear(self) -> None: ...
    def copyStringToBuffer(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, buffer: CharArrayBuffer, /) -> None: ...
    def describeContents(self) -> int: ...
    def finalize(self) -> None: ...
    def freeLastRow(self) -> None: ...
    def getBlob(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def getDouble(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> float: ...
    def getFloat(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> float: ...
    def getInt(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getLong(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getNumRows(self) -> int: ...
    def getShort(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getStartPosition(self) -> int: ...
    def getString(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> str: ...
    def getType(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def isBlob(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isFloat(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isLong(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isNull(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isString(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    @staticmethod
    def newFromParcel(p: android.os.Parcel, /) -> CursorWindow: ...
    def onAllReferencesReleased(self) -> None: ...
    def putBlob(self, value: java.chaquopy.JavaArrayJByte, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def putDouble(self, value: float | java.jdouble | java.lang.Double, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def putLong(self, value: int | java.jlong | java.lang.Long, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def putNull(self, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def putString(self, value: str | java.lang.String, row: int | java.jint | java.lang.Integer, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def setNumColumns(self, columnNum: int | java.jint | java.lang.Integer, /) -> bool: ...
    def setStartPosition(self, pos: int | java.jint | java.lang.Integer, /) -> None: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CursorWindowAllocationException(java.lang.RuntimeException):
    def __init__(self, description: str | java.lang.String, /) -> None: ...

class CursorWrapper(Cursor):
    def __init__(self, cursor: Cursor, /) -> None: ...
    def close(self) -> None: ...
    def copyStringToBuffer(self, columnIndex: int | java.jint | java.lang.Integer, buffer: CharArrayBuffer, /) -> None: ...
    def deactivate(self) -> None: ...
    def getBlob(self, columnIndex: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def getColumnCount(self) -> int: ...
    def getColumnIndex(self, columnName: str | java.lang.String, /) -> int: ...
    def getColumnIndexOrThrow(self, columnName: str | java.lang.String, /) -> int: ...
    def getColumnName(self, columnIndex: int | java.jint | java.lang.Integer, /) -> str: ...
    def getColumnNames(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
    def getCount(self) -> int: ...
    def getDouble(self, columnIndex: int | java.jint | java.lang.Integer, /) -> float: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getFloat(self, columnIndex: int | java.jint | java.lang.Integer, /) -> float: ...
    def getInt(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getLong(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getNotificationUri(self) -> android.net.Uri: ...
    def getNotificationUris(self) -> java.util.List[android.net.Uri]: ...
    def getPosition(self) -> int: ...
    def getShort(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getString(self, columnIndex: int | java.jint | java.lang.Integer, /) -> str: ...
    def getType(self, columnIndex: int | java.jint | java.lang.Integer, /) -> int: ...
    def getWantsAllOnMoveCalls(self) -> bool: ...
    def getWrappedCursor(self) -> Cursor: ...
    def isAfterLast(self) -> bool: ...
    def isBeforeFirst(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def isFirst(self) -> bool: ...
    def isLast(self) -> bool: ...
    def isNull(self, columnIndex: int | java.jint | java.lang.Integer, /) -> bool: ...
    def move(self, offset: int | java.jint | java.lang.Integer, /) -> bool: ...
    def moveToFirst(self) -> bool: ...
    def moveToLast(self) -> bool: ...
    def moveToNext(self) -> bool: ...
    def moveToPosition(self, position: int | java.jint | java.lang.Integer, /) -> bool: ...
    def moveToPrevious(self) -> bool: ...
    def registerContentObserver(self, observer: ContentObserver, /) -> None: ...
    def registerDataSetObserver(self, observer: DataSetObserver, /) -> None: ...
    def requery(self) -> bool: ...
    def respond(self, extras: android.os.Bundle, /) -> android.os.Bundle: ...
    def setExtras(self, extras: android.os.Bundle, /) -> None: ...
    def setNotificationUri(self, cr: android.content.ContentResolver, uri: android.net.Uri, /) -> None: ...
    def setNotificationUris(self, cr: android.content.ContentResolver, uris: java.util.List[android.net.Uri], /) -> None: ...
    def unregisterContentObserver(self, observer: ContentObserver, /) -> None: ...
    def unregisterDataSetObserver(self, observer: DataSetObserver, /) -> None: ...

class DataSetObservable(Observable[DataSetObserver]):
    def __init__(self) -> None: ...
    def notifyChanged(self) -> None: ...
    def notifyInvalidated(self) -> None: ...

class DataSetObserver(java.lang.Object):
    def __init__(self) -> None: ...
    def onChanged(self) -> None: ...
    def onInvalidated(self) -> None: ...

class DatabaseErrorHandler(java.lang.Object):
    def onCorruption(self, arg1: android.database.sqlite.SQLiteDatabase, /) -> None: ...

class DatabaseUtils(java.lang.Object):
    STATEMENT_ABORT: typing.ClassVar[int] = ...
    STATEMENT_ATTACH: typing.ClassVar[int] = ...
    STATEMENT_BEGIN: typing.ClassVar[int] = ...
    STATEMENT_COMMIT: typing.ClassVar[int] = ...
    STATEMENT_DDL: typing.ClassVar[int] = ...
    STATEMENT_OTHER: typing.ClassVar[int] = ...
    STATEMENT_PRAGMA: typing.ClassVar[int] = ...
    STATEMENT_SELECT: typing.ClassVar[int] = ...
    STATEMENT_UNPREPARED: typing.ClassVar[int] = ...
    STATEMENT_UPDATE: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    @staticmethod
    def appendEscapedSQLString(sb: java.lang.StringBuilder, sqlString: str | java.lang.String, /) -> None: ...
    @staticmethod
    def appendSelectionArgs(originalValues: java.chaquopy.JavaArray[java.lang.String], newValues: java.chaquopy.JavaArray[java.lang.String], /) -> java.chaquopy.JavaArray[java.lang.String]: ...
    @staticmethod
    def appendValueToSql(sql: java.lang.StringBuilder, value: java.lang.Object | int | bool | float | str, /) -> None: ...
    @staticmethod
    def bindObjectToProgram(prog: android.database.sqlite.SQLiteProgram, index: int | java.jint | java.lang.Integer, value: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    @staticmethod
    def blobFileDescriptorForQuery(prog: android.database.sqlite.SQLiteStatement, selectionArgs: java.chaquopy.JavaArray[java.lang.String], /) -> android.os.ParcelFileDescriptor: ...
    @typing.overload
    @staticmethod
    def blobFileDescriptorForQuery(db: android.database.sqlite.SQLiteDatabase, query: str | java.lang.String, selectionArgs: java.chaquopy.JavaArray[java.lang.String], /) -> android.os.ParcelFileDescriptor: ...
    @staticmethod
    def concatenateWhere(a: str | java.lang.String, b: str | java.lang.String, /) -> str: ...
    @staticmethod
    def createDbFromSqlStatements(context: android.content.Context, dbName: str | java.lang.String, dbVersion: int | java.jint | java.lang.Integer, sqlStatements: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorDoubleToContentValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, key: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorDoubleToContentValuesIfPresent(cursor: Cursor, values: android.content.ContentValues, column: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorDoubleToCursorValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, /) -> None: ...
    @staticmethod
    def cursorFloatToContentValuesIfPresent(cursor: Cursor, values: android.content.ContentValues, column: str | java.lang.String, /) -> None: ...
    @typing.overload
    @staticmethod
    def cursorIntToContentValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, /) -> None: ...
    @typing.overload
    @staticmethod
    def cursorIntToContentValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, key: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorIntToContentValuesIfPresent(cursor: Cursor, values: android.content.ContentValues, column: str | java.lang.String, /) -> None: ...
    @typing.overload
    @staticmethod
    def cursorLongToContentValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, /) -> None: ...
    @typing.overload
    @staticmethod
    def cursorLongToContentValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, key: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorLongToContentValuesIfPresent(cursor: Cursor, values: android.content.ContentValues, column: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorRowToContentValues(cursor: Cursor, values: android.content.ContentValues, /) -> None: ...
    @staticmethod
    def cursorShortToContentValuesIfPresent(cursor: Cursor, values: android.content.ContentValues, column: str | java.lang.String, /) -> None: ...
    @typing.overload
    @staticmethod
    def cursorStringToContentValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, /) -> None: ...
    @typing.overload
    @staticmethod
    def cursorStringToContentValues(cursor: Cursor, field: str | java.lang.String, values: android.content.ContentValues, key: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorStringToContentValuesIfPresent(cursor: Cursor, values: android.content.ContentValues, column: str | java.lang.String, /) -> None: ...
    @staticmethod
    def cursorStringToInsertHelper(cursor: Cursor, field: str | java.lang.String, inserter: DatabaseUtils.InsertHelper, index: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    @staticmethod
    def dumpCurrentRow(cursor: Cursor, /) -> None: ...
    @typing.overload
    @staticmethod
    def dumpCurrentRow(cursor: Cursor, stream: java.io.PrintStream, /) -> None: ...
    @typing.overload
    @staticmethod
    def dumpCurrentRow(cursor: Cursor, sb: java.lang.StringBuilder, /) -> None: ...
    @staticmethod
    def dumpCurrentRowToString(cursor: Cursor, /) -> str: ...
    @typing.overload
    @staticmethod
    def dumpCursor(cursor: Cursor, /) -> None: ...
    @typing.overload
    @staticmethod
    def dumpCursor(cursor: Cursor, stream: java.io.PrintStream, /) -> None: ...
    @typing.overload
    @staticmethod
    def dumpCursor(cursor: Cursor, sb: java.lang.StringBuilder, /) -> None: ...
    @staticmethod
    def dumpCursorToString(cursor: Cursor, /) -> str: ...
    @staticmethod
    def getCollationKey(name: str | java.lang.String, /) -> str: ...
    @staticmethod
    def getHexCollationKey(name: str | java.lang.String, /) -> str: ...
    @staticmethod
    def getSqlStatementType(sql: str | java.lang.String, /) -> int: ...
    @typing.overload
    @staticmethod
    def longForQuery(prog: android.database.sqlite.SQLiteStatement, selectionArgs: java.chaquopy.JavaArray[java.lang.String], /) -> int: ...
    @typing.overload
    @staticmethod
    def longForQuery(db: android.database.sqlite.SQLiteDatabase, query: str | java.lang.String, selectionArgs: java.chaquopy.JavaArray[java.lang.String], /) -> int: ...
    @typing.overload
    @staticmethod
    def queryNumEntries(db: android.database.sqlite.SQLiteDatabase, table: str | java.lang.String, /) -> int: ...
    @typing.overload
    @staticmethod
    def queryNumEntries(db: android.database.sqlite.SQLiteDatabase, table: str | java.lang.String, selection: str | java.lang.String, /) -> int: ...
    @typing.overload
    @staticmethod
    def queryNumEntries(db: android.database.sqlite.SQLiteDatabase, table: str | java.lang.String, selection: str | java.lang.String, selectionArgs: java.chaquopy.JavaArray[java.lang.String], /) -> int: ...
    @staticmethod
    def readExceptionFromParcel(reply: android.os.Parcel, /) -> None: ...
    @staticmethod
    def readExceptionWithFileNotFoundExceptionFromParcel(reply: android.os.Parcel, /) -> None: ...
    @staticmethod
    def readExceptionWithOperationApplicationExceptionFromParcel(reply: android.os.Parcel, /) -> None: ...
    @staticmethod
    def sqlEscapeString(value: str | java.lang.String, /) -> str: ...
    @typing.overload
    @staticmethod
    def stringForQuery(prog: android.database.sqlite.SQLiteStatement, selectionArgs: java.chaquopy.JavaArray[java.lang.String], /) -> str: ...
    @typing.overload
    @staticmethod
    def stringForQuery(db: android.database.sqlite.SQLiteDatabase, query: str | java.lang.String, selectionArgs: java.chaquopy.JavaArray[java.lang.String], /) -> str: ...
    @staticmethod
    def writeExceptionToParcel(reply: android.os.Parcel, e: java.lang.Exception, /) -> None: ...

    class InsertHelper(java.lang.Object):
        def __init__(self, db: android.database.sqlite.SQLiteDatabase, tableName: str | java.lang.String, /) -> None: ...
        @typing.overload
        def bind(self, index: int | java.jint | java.lang.Integer, value: float | java.jdouble | java.lang.Double, /) -> None: ...
        @typing.overload
        def bind(self, index: int | java.jint | java.lang.Integer, value: float | java.jfloat | java.lang.Float, /) -> None: ...
        @typing.overload
        def bind(self, index: int | java.jint | java.lang.Integer, value: int | java.jint | java.lang.Integer, /) -> None: ...
        @typing.overload
        def bind(self, index: int | java.jint | java.lang.Integer, value: int | java.jlong | java.lang.Long, /) -> None: ...
        @typing.overload
        def bind(self, index: int | java.jint | java.lang.Integer, value: str | java.lang.String, /) -> None: ...
        @typing.overload
        def bind(self, index: int | java.jint | java.lang.Integer, value: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        @typing.overload
        def bind(self, index: int | java.jint | java.lang.Integer, value: java.chaquopy.JavaArrayJByte, /) -> None: ...
        def bindNull(self, index: int | java.jint | java.lang.Integer, /) -> None: ...
        def close(self) -> None: ...
        def execute(self) -> int: ...
        def getColumnIndex(self, key: str | java.lang.String, /) -> int: ...
        def insert(self, values: android.content.ContentValues, /) -> int: ...
        def prepareForInsert(self) -> None: ...
        def prepareForReplace(self) -> None: ...
        def replace(self, values: android.content.ContentValues, /) -> int: ...

class DefaultDatabaseErrorHandler(DatabaseErrorHandler):
    def __init__(self) -> None: ...
    def onCorruption(self, dbObj: android.database.sqlite.SQLiteDatabase, /) -> None: ...

class MatrixCursor(AbstractCursor):
    @typing.overload
    def __init__(self, columnNames: java.chaquopy.JavaArray[java.lang.String], /) -> None: ...
    @typing.overload
    def __init__(self, columnNames: java.chaquopy.JavaArray[java.lang.String], initialCapacity: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def addRow(self, columnValues: java.lang.Iterable[java.lang.Object], /) -> None: ...
    @typing.overload
    def addRow(self, columnValues: java.chaquopy.JavaArray[java.lang.Object], /) -> None: ...
    def getBlob(self, column: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def getColumnNames(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
    def getCount(self) -> int: ...
    def getDouble(self, column: int | java.jint | java.lang.Integer, /) -> float: ...
    def getFloat(self, column: int | java.jint | java.lang.Integer, /) -> float: ...
    def getInt(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getLong(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getShort(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getString(self, column: int | java.jint | java.lang.Integer, /) -> str: ...
    def getType(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def isNull(self, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def newRow(self) -> MatrixCursor.RowBuilder: ...

    class RowBuilder(java.lang.Object):
        @typing.overload
        def add(self, columnValue: java.lang.Object | int | bool | float | str, /) -> MatrixCursor.RowBuilder: ...
        @typing.overload
        def add(self, columnName: str | java.lang.String, value: java.lang.Object | int | bool | float | str, /) -> MatrixCursor.RowBuilder: ...

class MergeCursor(AbstractCursor):
    def __init__(self, cursors: java.chaquopy.JavaArray[Cursor], /) -> None: ...
    def close(self) -> None: ...
    def deactivate(self) -> None: ...
    def getBlob(self, column: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def getColumnNames(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
    def getCount(self) -> int: ...
    def getDouble(self, column: int | java.jint | java.lang.Integer, /) -> float: ...
    def getFloat(self, column: int | java.jint | java.lang.Integer, /) -> float: ...
    def getInt(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getLong(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getShort(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def getString(self, column: int | java.jint | java.lang.Integer, /) -> str: ...
    def getType(self, column: int | java.jint | java.lang.Integer, /) -> int: ...
    def isNull(self, column: int | java.jint | java.lang.Integer, /) -> bool: ...
    def onMove(self, oldPosition: int | java.jint | java.lang.Integer, newPosition: int | java.jint | java.lang.Integer, /) -> bool: ...
    def registerContentObserver(self, observer: ContentObserver, /) -> None: ...
    def registerDataSetObserver(self, observer: DataSetObserver, /) -> None: ...
    def requery(self) -> bool: ...
    def unregisterContentObserver(self, observer: ContentObserver, /) -> None: ...
    def unregisterDataSetObserver(self, observer: DataSetObserver, /) -> None: ...

_Observable__T = typing.TypeVar('_Observable__T')  # <T>
class Observable(java.lang.Object, typing.Generic[_Observable__T]):
    mObservers: java.util.ArrayList[_Observable__T] = ...
    def __init__(self) -> None: ...
    def registerObserver(self, observer: _Observable__T, /) -> None: ...
    def unregisterAll(self) -> None: ...
    def unregisterObserver(self, observer: _Observable__T, /) -> None: ...

class SQLException(java.lang.RuntimeException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, error: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, error: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...

class StaleDataException(java.lang.RuntimeException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, description: str | java.lang.String, /) -> None: ...
