import typing

import java
import java.chaquopy
import java.io
import java.lang
import java.math
import java.net
import java.sql
import java.util
import java.util.logging

class CommonDataSource(java.lang.Object):
    def getLogWriter(self) -> java.io.PrintWriter: ...
    def getLoginTimeout(self) -> int: ...
    def getParentLogger(self) -> java.util.logging.Logger: ...
    def setLogWriter(self, arg1: java.io.PrintWriter, /) -> None: ...
    def setLoginTimeout(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...

class ConnectionEvent(java.util.EventObject):
    @typing.overload
    def __init__(self, con: PooledConnection, /) -> None: ...
    @typing.overload
    def __init__(self, con: PooledConnection, ex: java.sql.SQLException, /) -> None: ...
    def getSQLException(self) -> java.sql.SQLException: ...

class ConnectionEventListener(java.util.EventListener):
    def connectionClosed(self, arg1: ConnectionEvent, /) -> None: ...
    def connectionErrorOccurred(self, arg1: ConnectionEvent, /) -> None: ...

class ConnectionPoolDataSource(CommonDataSource):
    @typing.overload
    def getPooledConnection(self) -> PooledConnection: ...
    @typing.overload
    def getPooledConnection(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> PooledConnection: ...

class DataSource(CommonDataSource, java.sql.Wrapper):
    @typing.overload
    def getConnection(self) -> java.sql.Connection: ...
    @typing.overload
    def getConnection(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> java.sql.Connection: ...

class PooledConnection(java.lang.Object):
    def addConnectionEventListener(self, arg1: ConnectionEventListener, /) -> None: ...
    def addStatementEventListener(self, arg1: StatementEventListener, /) -> None: ...
    def close(self) -> None: ...
    def getConnection(self) -> java.sql.Connection: ...
    def removeConnectionEventListener(self, arg1: ConnectionEventListener, /) -> None: ...
    def removeStatementEventListener(self, arg1: StatementEventListener, /) -> None: ...

class RowSet(java.sql.ResultSet):
    def addRowSetListener(self, arg1: RowSetListener, /) -> None: ...
    def clearParameters(self) -> None: ...
    def execute(self) -> None: ...
    def getCommand(self) -> str: ...
    def getDataSourceName(self) -> str: ...
    def getEscapeProcessing(self) -> bool: ...
    def getMaxFieldSize(self) -> int: ...
    def getMaxRows(self) -> int: ...
    def getPassword(self) -> str: ...
    def getQueryTimeout(self) -> int: ...
    def getTransactionIsolation(self) -> int: ...
    def getTypeMap(self) -> java.util.Map[java.lang.String, typing.Type[java.lang.Object]]: ...
    def getUrl(self) -> str: ...
    def getUsername(self) -> str: ...
    def isReadOnly(self) -> bool: ...
    def removeRowSetListener(self, arg1: RowSetListener, /) -> None: ...
    def setArray(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Array, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setBigDecimal(self, arg1: int | java.jint | java.lang.Integer, arg2: java.math.BigDecimal, /) -> None: ...
    @typing.overload
    def setBigDecimal(self, arg1: str | java.lang.String, arg2: java.math.BigDecimal, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Blob, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: str | java.lang.String, arg2: java.sql.Blob, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setBoolean(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def setBoolean(self, arg1: str | java.lang.String, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def setByte(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jbyte | java.lang.Byte, /) -> None: ...
    @typing.overload
    def setByte(self, arg1: str | java.lang.String, arg2: int | java.jbyte | java.lang.Byte, /) -> None: ...
    @typing.overload
    def setBytes(self, arg1: int | java.jint | java.lang.Integer, arg2: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def setBytes(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Clob, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: str | java.lang.String, arg2: java.sql.Clob, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    def setCommand(self, arg1: str | java.lang.String, /) -> None: ...
    def setConcurrency(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDataSourceName(self, arg1: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Date, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: str | java.lang.String, arg2: java.sql.Date, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Date, arg3: java.util.Calendar, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: str | java.lang.String, arg2: java.sql.Date, arg3: java.util.Calendar, /) -> None: ...
    @typing.overload
    def setDouble(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jdouble | java.lang.Double, /) -> None: ...
    @typing.overload
    def setDouble(self, arg1: str | java.lang.String, arg2: float | java.jdouble | java.lang.Double, /) -> None: ...
    def setEscapeProcessing(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def setFloat(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def setFloat(self, arg1: str | java.lang.String, arg2: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def setInt(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setInt(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setLong(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setLong(self, arg1: str | java.lang.String, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    def setMaxFieldSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMaxRows(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.NClob, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: str | java.lang.String, arg2: java.sql.NClob, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNString(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setNString(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> None: ...
    def setPassword(self, arg1: str | java.lang.String, /) -> None: ...
    def setQueryTimeout(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setReadOnly(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setRef(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Ref, /) -> None: ...
    @typing.overload
    def setRowId(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.RowId, /) -> None: ...
    @typing.overload
    def setRowId(self, arg1: str | java.lang.String, arg2: java.sql.RowId, /) -> None: ...
    @typing.overload
    def setSQLXML(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.SQLXML, /) -> None: ...
    @typing.overload
    def setSQLXML(self, arg1: str | java.lang.String, arg2: java.sql.SQLXML, /) -> None: ...
    @typing.overload
    def setShort(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jshort | java.lang.Short, /) -> None: ...
    @typing.overload
    def setShort(self, arg1: str | java.lang.String, arg2: int | java.jshort | java.lang.Short, /) -> None: ...
    @typing.overload
    def setString(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setString(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Time, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: str | java.lang.String, arg2: java.sql.Time, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Time, arg3: java.util.Calendar, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: str | java.lang.String, arg2: java.sql.Time, arg3: java.util.Calendar, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Timestamp, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: str | java.lang.String, arg2: java.sql.Timestamp, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: int | java.jint | java.lang.Integer, arg2: java.sql.Timestamp, arg3: java.util.Calendar, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: str | java.lang.String, arg2: java.sql.Timestamp, arg3: java.util.Calendar, /) -> None: ...
    def setTransactionIsolation(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setType(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTypeMap(self, arg1: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> None: ...
    def setURL(self, arg1: int | java.jint | java.lang.Integer, arg2: java.net.URL, /) -> None: ...
    def setUrl(self, arg1: str | java.lang.String, /) -> None: ...
    def setUsername(self, arg1: str | java.lang.String, /) -> None: ...

class RowSetEvent(java.util.EventObject):
    def __init__(self, source: RowSet, /) -> None: ...

class RowSetInternal(java.lang.Object):
    def getConnection(self) -> java.sql.Connection: ...
    def getOriginal(self) -> java.sql.ResultSet: ...
    def getOriginalRow(self) -> java.sql.ResultSet: ...
    def getParams(self) -> java.chaquopy.JavaArray[java.lang.Object]: ...
    def setMetaData(self, arg1: RowSetMetaData, /) -> None: ...

class RowSetListener(java.util.EventListener):
    def cursorMoved(self, arg1: RowSetEvent, /) -> None: ...
    def rowChanged(self, arg1: RowSetEvent, /) -> None: ...
    def rowSetChanged(self, arg1: RowSetEvent, /) -> None: ...

class RowSetMetaData(java.sql.ResultSetMetaData):
    def setAutoIncrement(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setCaseSensitive(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setCatalogName(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    def setColumnCount(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setColumnDisplaySize(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def setColumnLabel(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    def setColumnName(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    def setColumnType(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def setColumnTypeName(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    def setCurrency(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setNullable(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def setPrecision(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def setScale(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def setSchemaName(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    def setSearchable(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setSigned(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setTableName(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...

class RowSetReader(java.lang.Object):
    def readData(self, arg1: RowSetInternal, /) -> None: ...

class RowSetWriter(java.lang.Object):
    def writeData(self, arg1: RowSetInternal, /) -> bool: ...

class StatementEvent(java.util.EventObject):
    @typing.overload
    def __init__(self, con: PooledConnection, statement: java.sql.PreparedStatement, /) -> None: ...
    @typing.overload
    def __init__(self, con: PooledConnection, statement: java.sql.PreparedStatement, exception: java.sql.SQLException, /) -> None: ...
    def getSQLException(self) -> java.sql.SQLException: ...
    def getStatement(self) -> java.sql.PreparedStatement: ...

class StatementEventListener(java.util.EventListener):
    def statementClosed(self, arg1: StatementEvent, /) -> None: ...
    def statementErrorOccurred(self, arg1: StatementEvent, /) -> None: ...
