import typing

import android.graphics
import android.view
import java
import java.lang
import java.util
import java.util.function

_InspectionCompanion__T = typing.TypeVar('_InspectionCompanion__T')  # <T>
class InspectionCompanion(java.lang.Object, typing.Generic[_InspectionCompanion__T]):
    def mapProperties(self, arg1: PropertyMapper, /) -> None: ...
    def readProperties(self, arg1: _InspectionCompanion__T, arg2: PropertyReader, /) -> None: ...

    class UninitializedPropertyMapException(java.lang.RuntimeException):
        def __init__(self) -> None: ...

class InspectionCompanionProvider(java.lang.Object):
    _provide__T = typing.TypeVar('_provide__T')  # <T>
    def provide(self, arg1: typing.Type[_provide__T], /) -> InspectionCompanion[_provide__T]: ...

class IntFlagMapping(java.lang.Object):
    def __init__(self) -> None: ...
    def add(self, mask: int | java.jint | java.lang.Integer, target: int | java.jint | java.lang.Integer, name: str | java.lang.String, /) -> None: ...
    def get(self, value: int | java.jint | java.lang.Integer, /) -> java.util.Set[java.lang.String]: ...

class PropertyMapper(java.lang.Object):
    def mapBoolean(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapByte(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapChar(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapColor(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapDouble(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapFloat(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapGravity(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapInt(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapIntEnum(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: java.util.function.IntFunction[java.lang.String], /) -> int: ...
    def mapIntFlag(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: java.util.function.IntFunction[java.util.Set[java.lang.String]], /) -> int: ...
    def mapLong(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapObject(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapResourceId(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    def mapShort(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...

    class PropertyConflictException(java.lang.RuntimeException):
        def __init__(self, name: str | java.lang.String, newPropertyType: str | java.lang.String, existingPropertyType: str | java.lang.String, /) -> None: ...

class PropertyReader(java.lang.Object):
    def readBoolean(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def readByte(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jbyte | java.lang.Byte, /) -> None: ...
    def readChar(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.jchar | java.lang.Character, /) -> None: ...
    @typing.overload
    def readColor(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def readColor(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def readColor(self, arg1: int | java.jint | java.lang.Integer, arg2: android.graphics.Color, /) -> None: ...
    def readDouble(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jdouble | java.lang.Double, /) -> None: ...
    def readFloat(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jfloat | java.lang.Float, /) -> None: ...
    def readGravity(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def readInt(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def readIntEnum(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def readIntFlag(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def readLong(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    def readObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    def readResourceId(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def readShort(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jshort | java.lang.Short, /) -> None: ...

    class PropertyTypeMismatchException(java.lang.RuntimeException):
        @typing.overload
        def __init__(self, id: int | java.jint | java.lang.Integer, expectedPropertyType: str | java.lang.String, actualPropertyType: str | java.lang.String, /) -> None: ...
        @typing.overload
        def __init__(self, id: int | java.jint | java.lang.Integer, expectedPropertyType: str | java.lang.String, actualPropertyType: str | java.lang.String, propertyName: str | java.lang.String, /) -> None: ...

class StaticInspectionCompanionProvider(InspectionCompanionProvider):
    def __init__(self) -> None: ...
    _provide__T = typing.TypeVar('_provide__T')  # <T>
    def provide(self, cls: typing.Type[_provide__T], /) -> InspectionCompanion[_provide__T] | None: ...

class WindowInspector(java.lang.Object):
    @staticmethod
    def getGlobalWindowViews() -> java.util.List[android.view.View]: ...
