import typing

import java
import java.beans
import java.chaquopy
import java.io
import java.lang
import java.security
import java.util
import java.util.function

class ConsoleHandler(StreamHandler):
    def __init__(self) -> None: ...
    def close(self) -> None: ...
    def publish(self, record: LogRecord, /) -> None: ...

class ErrorManager(java.lang.Object):
    CLOSE_FAILURE: typing.ClassVar[int] = ...
    FLUSH_FAILURE: typing.ClassVar[int] = ...
    FORMAT_FAILURE: typing.ClassVar[int] = ...
    GENERIC_FAILURE: typing.ClassVar[int] = ...
    OPEN_FAILURE: typing.ClassVar[int] = ...
    WRITE_FAILURE: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def error(self, msg: str | java.lang.String, ex: java.lang.Exception, code: int | java.jint | java.lang.Integer, /) -> None: ...

class FileHandler(StreamHandler):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, pattern: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, pattern: str | java.lang.String, append: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def __init__(self, pattern: str | java.lang.String, limit: int | java.jint | java.lang.Integer, count: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, pattern: str | java.lang.String, limit: int | java.jint | java.lang.Integer, count: int | java.jint | java.lang.Integer, append: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def close(self) -> None: ...
    def publish(self, record: LogRecord, /) -> None: ...

class Filter(java.lang.Object):
    def isLoggable(self, arg1: LogRecord, /) -> bool: ...

class Formatter(java.lang.Object):
    def __init__(self) -> None: ...
    def format(self, arg1: LogRecord, /) -> str: ...
    def formatMessage(self, record: LogRecord, /) -> str: ...
    def getHead(self, h: Handler, /) -> str: ...
    def getTail(self, h: Handler, /) -> str: ...

class Handler(java.lang.Object):
    def __init__(self) -> None: ...
    def close(self) -> None: ...
    def flush(self) -> None: ...
    def getEncoding(self) -> str: ...
    def getErrorManager(self) -> ErrorManager: ...
    def getFilter(self) -> Filter: ...
    def getFormatter(self) -> Formatter: ...
    def getLevel(self) -> Level: ...
    def isLoggable(self, record: LogRecord, /) -> bool: ...
    def publish(self, arg1: LogRecord, /) -> None: ...
    def reportError(self, msg: str | java.lang.String, ex: java.lang.Exception, code: int | java.jint | java.lang.Integer, /) -> None: ...
    def setEncoding(self, encoding: str | java.lang.String, /) -> None: ...
    def setErrorManager(self, em: ErrorManager, /) -> None: ...
    def setFilter(self, newFilter: Filter, /) -> None: ...
    def setFormatter(self, newFormatter: Formatter, /) -> None: ...
    def setLevel(self, newLevel: Level, /) -> None: ...

class Level(java.io.Serializable):
    ALL: typing.ClassVar[Level] = ...
    CONFIG: typing.ClassVar[Level] = ...
    FINE: typing.ClassVar[Level] = ...
    FINER: typing.ClassVar[Level] = ...
    FINEST: typing.ClassVar[Level] = ...
    INFO: typing.ClassVar[Level] = ...
    OFF: typing.ClassVar[Level] = ...
    SEVERE: typing.ClassVar[Level] = ...
    WARNING: typing.ClassVar[Level] = ...
    @typing.overload
    def __init__(self, name: str | java.lang.String, value: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, name: str | java.lang.String, value: int | java.jint | java.lang.Integer, resourceBundleName: str | java.lang.String, /) -> None: ...
    def equals(self, ox: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getLocalizedName(self) -> str: ...
    def getName(self) -> str: ...
    def getResourceBundleName(self) -> str: ...
    def hashCode(self) -> int: ...
    def intValue(self) -> int: ...
    @staticmethod
    def parse(name: str | java.lang.String, /) -> Level: ...
    def toString(self) -> str: ...

class LogManager(java.lang.Object):
    LOGGING_MXBEAN_NAME: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def addLogger(self, logger: Logger, /) -> bool: ...
    def addPropertyChangeListener(self, l: java.beans.PropertyChangeListener, /) -> None: ...
    def checkAccess(self) -> None: ...
    @staticmethod
    def getLogManager() -> LogManager: ...
    def getLogger(self, name: str | java.lang.String, /) -> Logger: ...
    def getLoggerNames(self) -> java.util.Enumeration[java.lang.String]: ...
    @staticmethod
    def getLoggingMXBean() -> LoggingMXBean: ...
    def getProperty(self, name: str | java.lang.String, /) -> str: ...
    @typing.overload
    def readConfiguration(self) -> None: ...
    @typing.overload
    def readConfiguration(self, ins: java.io.InputStream, /) -> None: ...
    def removePropertyChangeListener(self, l: java.beans.PropertyChangeListener, /) -> None: ...
    def reset(self) -> None: ...

class LogRecord(java.io.Serializable):
    def __init__(self, level: Level, msg: str | java.lang.String, /) -> None: ...
    def getLevel(self) -> Level: ...
    def getLoggerName(self) -> str: ...
    def getMessage(self) -> str: ...
    def getMillis(self) -> int: ...
    def getParameters(self) -> java.chaquopy.JavaArray[java.lang.Object]: ...
    def getResourceBundle(self) -> java.util.ResourceBundle: ...
    def getResourceBundleName(self) -> str: ...
    def getSequenceNumber(self) -> int: ...
    def getSourceClassName(self) -> str: ...
    def getSourceMethodName(self) -> str: ...
    def getThreadID(self) -> int: ...
    def getThrown(self) -> java.lang.Throwable: ...
    def setLevel(self, level: Level, /) -> None: ...
    def setLoggerName(self, name: str | java.lang.String, /) -> None: ...
    def setMessage(self, message: str | java.lang.String, /) -> None: ...
    def setMillis(self, millis: int | java.jlong | java.lang.Long, /) -> None: ...
    def setParameters(self, parameters: java.chaquopy.JavaArray[java.lang.Object], /) -> None: ...
    def setResourceBundle(self, bundle: java.util.ResourceBundle, /) -> None: ...
    def setResourceBundleName(self, name: str | java.lang.String, /) -> None: ...
    def setSequenceNumber(self, seq: int | java.jlong | java.lang.Long, /) -> None: ...
    def setSourceClassName(self, sourceClassName: str | java.lang.String, /) -> None: ...
    def setSourceMethodName(self, sourceMethodName: str | java.lang.String, /) -> None: ...
    def setThreadID(self, threadID: int | java.jint | java.lang.Integer, /) -> None: ...
    def setThrown(self, thrown: java.lang.Throwable, /) -> None: ...

class Logger(java.lang.Object):
    GLOBAL_LOGGER_NAME: typing.ClassVar[str] = ...
    global_: typing.ClassVar[Logger] = ...
    def __init__(self, name: str | java.lang.String, resourceBundleName: str | java.lang.String, /) -> None: ...
    def addHandler(self, handler: Handler, /) -> None: ...
    @typing.overload
    def config(self, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def config(self, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    def entering(self, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, /) -> None: ...
    @typing.overload
    def entering(self, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, param1: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def entering(self, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, params: java.chaquopy.JavaArray[java.lang.Object], /) -> None: ...
    @typing.overload
    def exiting(self, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, /) -> None: ...
    @typing.overload
    def exiting(self, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, result: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def fine(self, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def fine(self, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    def finer(self, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def finer(self, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    def finest(self, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def finest(self, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    @staticmethod
    def getAnonymousLogger() -> Logger: ...
    @typing.overload
    @staticmethod
    def getAnonymousLogger(resourceBundleName: str | java.lang.String, /) -> Logger: ...
    def getFilter(self) -> Filter: ...
    @staticmethod
    def getGlobal() -> Logger: ...
    def getHandlers(self) -> java.chaquopy.JavaArray[Handler]: ...
    def getLevel(self) -> Level: ...
    @typing.overload
    @staticmethod
    def getLogger(name: str | java.lang.String, /) -> Logger: ...
    @typing.overload
    @staticmethod
    def getLogger(name: str | java.lang.String, resourceBundleName: str | java.lang.String, /) -> Logger: ...
    def getName(self) -> str: ...
    def getParent(self) -> Logger: ...
    def getResourceBundle(self) -> java.util.ResourceBundle: ...
    def getResourceBundleName(self) -> str: ...
    def getUseParentHandlers(self) -> bool: ...
    @typing.overload
    def info(self, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def info(self, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    def isLoggable(self, level: Level, /) -> bool: ...
    @typing.overload
    def log(self, record: LogRecord, /) -> None: ...
    @typing.overload
    def log(self, level: Level, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def log(self, level: Level, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    def log(self, level: Level, msg: str | java.lang.String, param1: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def log(self, level: Level, msg: str | java.lang.String, thrown: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def log(self, level: Level, msg: str | java.lang.String, params: java.chaquopy.JavaArray[java.lang.Object], /) -> None: ...
    @typing.overload
    def log(self, level: Level, thrown: java.lang.Throwable, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    def logp(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def logp(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    def logp(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, msg: str | java.lang.String, param1: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def logp(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, msg: str | java.lang.String, thrown: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def logp(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, msg: str | java.lang.String, params: java.chaquopy.JavaArray[java.lang.Object], /) -> None: ...
    @typing.overload
    def logp(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, thrown: java.lang.Throwable, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    @typing.overload
    def logrb(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, bundleName: str | java.lang.String, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def logrb(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, bundleName: str | java.lang.String, msg: str | java.lang.String, param1: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def logrb(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, bundleName: str | java.lang.String, msg: str | java.lang.String, thrown: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def logrb(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, bundleName: str | java.lang.String, msg: str | java.lang.String, params: java.chaquopy.JavaArray[java.lang.Object], /) -> None: ...
    @typing.overload
    def logrb(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, bundle: java.util.ResourceBundle, msg: str | java.lang.String, thrown: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def logrb(self, level: Level, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, bundle: java.util.ResourceBundle, msg: str | java.lang.String, /, *params: java.lang.Object) -> None: ...
    def removeHandler(self, handler: Handler, /) -> None: ...
    def setFilter(self, newFilter: Filter, /) -> None: ...
    def setLevel(self, newLevel: Level, /) -> None: ...
    def setParent(self, parent: Logger, /) -> None: ...
    def setResourceBundle(self, bundle: java.util.ResourceBundle, /) -> None: ...
    def setUseParentHandlers(self, useParentHandlers: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def severe(self, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def severe(self, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...
    def throwing(self, sourceClass: str | java.lang.String, sourceMethod: str | java.lang.String, thrown: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def warning(self, msg: str | java.lang.String, /) -> None: ...
    @typing.overload
    def warning(self, msgSupplier: java.util.function.Supplier[java.lang.String], /) -> None: ...

class LoggingMXBean(java.lang.Object):
    def getLoggerLevel(self, arg1: str | java.lang.String, /) -> str: ...
    def getLoggerNames(self) -> java.util.List[java.lang.String]: ...
    def getParentLoggerName(self, arg1: str | java.lang.String, /) -> str: ...
    def setLoggerLevel(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...

class LoggingPermission(java.security.BasicPermission):
    def __init__(self, name: str | java.lang.String, actions: str | java.lang.String, /) -> None: ...

class MemoryHandler(Handler):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, target: Handler, size: int | java.jint | java.lang.Integer, pushLevel: Level, /) -> None: ...
    def close(self) -> None: ...
    def flush(self) -> None: ...
    def getPushLevel(self) -> Level: ...
    def isLoggable(self, record: LogRecord, /) -> bool: ...
    def publish(self, record: LogRecord, /) -> None: ...
    def push(self) -> None: ...
    def setPushLevel(self, newLevel: Level, /) -> None: ...

class SimpleFormatter(Formatter):
    def __init__(self) -> None: ...
    def format(self, record: LogRecord, /) -> str: ...

class SocketHandler(StreamHandler):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, host: str | java.lang.String, port: int | java.jint | java.lang.Integer, /) -> None: ...
    def close(self) -> None: ...
    def publish(self, record: LogRecord, /) -> None: ...

class StreamHandler(Handler):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, out: java.io.OutputStream, formatter: Formatter, /) -> None: ...
    def close(self) -> None: ...
    def flush(self) -> None: ...
    def isLoggable(self, record: LogRecord, /) -> bool: ...
    def publish(self, record: LogRecord, /) -> None: ...
    def setEncoding(self, encoding: str | java.lang.String, /) -> None: ...
    def setOutputStream(self, out: java.io.OutputStream, /) -> None: ...

class XMLFormatter(Formatter):
    def __init__(self) -> None: ...
    def format(self, record: LogRecord, /) -> str: ...
    def getHead(self, h: Handler, /) -> str: ...
    def getTail(self, h: Handler, /) -> str: ...
