import typing

import android.os
import java
import java.chaquopy
import java.lang
import java.util
import java.util.concurrent

class VirtualDevice(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[VirtualDevice]] = ...
    def describeContents(self) -> int: ...
    def getDeviceId(self) -> int: ...
    def getDisplayIds(self) -> java.chaquopy.JavaArrayJInt: ...
    def getDisplayName(self) -> java.lang.CharSequence | None: ...
    def getName(self) -> str | None: ...
    def getPersistentDeviceId(self) -> str | None: ...
    def hasCustomSensorSupport(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class VirtualDeviceManager(java.lang.Object):
    def getVirtualDevice(self, deviceId: int | java.jint | java.lang.Integer, /) -> VirtualDevice | None: ...
    def getVirtualDevices(self) -> java.util.List[VirtualDevice]: ...
    def registerVirtualDeviceListener(self, executor: java.util.concurrent.Executor, listener: VirtualDeviceManager.VirtualDeviceListener, /) -> None: ...
    def unregisterVirtualDeviceListener(self, listener: VirtualDeviceManager.VirtualDeviceListener, /) -> None: ...

    class VirtualDeviceListener(java.lang.Object):
        def onVirtualDeviceClosed(self, deviceId: int | java.jint | java.lang.Integer, /) -> None: ...
        def onVirtualDeviceCreated(self, deviceId: int | java.jint | java.lang.Integer, /) -> None: ...
