import typing

import android.app
import android.content
import android.content.res
import android.graphics.drawable
import android.os
import android.service.controls.actions
import android.service.controls.templates
import java
import java.lang
import java.util
import java.util.concurrent
import java.util.function

class Control(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[Control]] = ...
    STATUS_DISABLED: typing.ClassVar[int] = ...
    STATUS_ERROR: typing.ClassVar[int] = ...
    STATUS_NOT_FOUND: typing.ClassVar[int] = ...
    STATUS_OK: typing.ClassVar[int] = ...
    STATUS_UNKNOWN: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getAppIntent(self) -> android.app.PendingIntent: ...
    def getControlId(self) -> str: ...
    def getControlTemplate(self) -> android.service.controls.templates.ControlTemplate: ...
    def getCustomColor(self) -> android.content.res.ColorStateList | None: ...
    def getCustomIcon(self) -> android.graphics.drawable.Icon | None: ...
    def getDeviceType(self) -> int: ...
    def getStatus(self) -> int: ...
    def getStatusText(self) -> java.lang.CharSequence: ...
    def getStructure(self) -> java.lang.CharSequence | None: ...
    def getSubtitle(self) -> java.lang.CharSequence: ...
    def getTitle(self) -> java.lang.CharSequence: ...
    def getZone(self) -> java.lang.CharSequence | None: ...
    def isAuthRequired(self) -> bool: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class StatelessBuilder(java.lang.Object):
        @typing.overload
        def __init__(self, control: Control, /) -> None: ...
        @typing.overload
        def __init__(self, controlId: str | java.lang.String, appIntent: android.app.PendingIntent, /) -> None: ...
        def build(self) -> Control: ...
        def setAppIntent(self, appIntent: android.app.PendingIntent, /) -> Control.StatelessBuilder: ...
        def setControlId(self, controlId: str | java.lang.String, /) -> Control.StatelessBuilder: ...
        def setCustomColor(self, customColor: android.content.res.ColorStateList, /) -> Control.StatelessBuilder: ...
        def setCustomIcon(self, customIcon: android.graphics.drawable.Icon, /) -> Control.StatelessBuilder: ...
        def setDeviceType(self, deviceType: int | java.jint | java.lang.Integer, /) -> Control.StatelessBuilder: ...
        def setStructure(self, structure: java.lang.CharSequence, /) -> Control.StatelessBuilder: ...
        def setSubtitle(self, subtitle: java.lang.CharSequence, /) -> Control.StatelessBuilder: ...
        def setTitle(self, title: java.lang.CharSequence, /) -> Control.StatelessBuilder: ...
        def setZone(self, zone: java.lang.CharSequence, /) -> Control.StatelessBuilder: ...

    class StatefulBuilder(java.lang.Object):
        @typing.overload
        def __init__(self, control: Control, /) -> None: ...
        @typing.overload
        def __init__(self, controlId: str | java.lang.String, appIntent: android.app.PendingIntent, /) -> None: ...
        def build(self) -> Control: ...
        def setAppIntent(self, appIntent: android.app.PendingIntent, /) -> Control.StatefulBuilder: ...
        def setAuthRequired(self, authRequired: bool | java.jboolean | java.lang.Boolean, /) -> Control.StatefulBuilder: ...
        def setControlId(self, controlId: str | java.lang.String, /) -> Control.StatefulBuilder: ...
        def setControlTemplate(self, controlTemplate: android.service.controls.templates.ControlTemplate, /) -> Control.StatefulBuilder: ...
        def setCustomColor(self, customColor: android.content.res.ColorStateList, /) -> Control.StatefulBuilder: ...
        def setCustomIcon(self, customIcon: android.graphics.drawable.Icon, /) -> Control.StatefulBuilder: ...
        def setDeviceType(self, deviceType: int | java.jint | java.lang.Integer, /) -> Control.StatefulBuilder: ...
        def setStatus(self, status: int | java.jint | java.lang.Integer, /) -> Control.StatefulBuilder: ...
        def setStatusText(self, statusText: java.lang.CharSequence, /) -> Control.StatefulBuilder: ...
        def setStructure(self, structure: java.lang.CharSequence, /) -> Control.StatefulBuilder: ...
        def setSubtitle(self, subtitle: java.lang.CharSequence, /) -> Control.StatefulBuilder: ...
        def setTitle(self, title: java.lang.CharSequence, /) -> Control.StatefulBuilder: ...
        def setZone(self, zone: java.lang.CharSequence, /) -> Control.StatefulBuilder: ...

class ControlsProviderService(android.app.Service):
    CONTROLS_SURFACE_ACTIVITY_PANEL: typing.ClassVar[int] = ...
    CONTROLS_SURFACE_DREAM: typing.ClassVar[int] = ...
    EXTRA_CONTROLS_SURFACE: typing.ClassVar[str] = ...
    EXTRA_LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS: typing.ClassVar[str] = ...
    META_DATA_PANEL_ACTIVITY: typing.ClassVar[str] = ...
    SERVICE_CONTROLS: typing.ClassVar[str] = ...
    TAG: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def createPublisherFor(self, arg1: java.util.List[java.lang.String], /) -> java.util.concurrent.Flow.Publisher[Control]: ...
    def createPublisherForAllAvailable(self) -> java.util.concurrent.Flow.Publisher[Control]: ...
    def createPublisherForSuggested(self) -> java.util.concurrent.Flow.Publisher[Control] | None: ...
    def onBind(self, intent: android.content.Intent, /) -> android.os.IBinder: ...
    def onUnbind(self, intent: android.content.Intent, /) -> bool: ...
    def performControlAction(self, arg1: str | java.lang.String, arg2: android.service.controls.actions.ControlAction, arg3: java.util.function.Consumer[java.lang.Integer], /) -> None: ...
    @staticmethod
    def requestAddControl(context: android.content.Context, componentName: android.content.ComponentName, control: Control, /) -> None: ...

class DeviceTypes(java.lang.Object):
    TYPE_AC_HEATER: typing.ClassVar[int] = ...
    TYPE_AC_UNIT: typing.ClassVar[int] = ...
    TYPE_AIR_FRESHENER: typing.ClassVar[int] = ...
    TYPE_AIR_PURIFIER: typing.ClassVar[int] = ...
    TYPE_AWNING: typing.ClassVar[int] = ...
    TYPE_BLINDS: typing.ClassVar[int] = ...
    TYPE_CAMERA: typing.ClassVar[int] = ...
    TYPE_CLOSET: typing.ClassVar[int] = ...
    TYPE_COFFEE_MAKER: typing.ClassVar[int] = ...
    TYPE_CURTAIN: typing.ClassVar[int] = ...
    TYPE_DEHUMIDIFIER: typing.ClassVar[int] = ...
    TYPE_DISHWASHER: typing.ClassVar[int] = ...
    TYPE_DISPLAY: typing.ClassVar[int] = ...
    TYPE_DOOR: typing.ClassVar[int] = ...
    TYPE_DOORBELL: typing.ClassVar[int] = ...
    TYPE_DRAWER: typing.ClassVar[int] = ...
    TYPE_DRYER: typing.ClassVar[int] = ...
    TYPE_FAN: typing.ClassVar[int] = ...
    TYPE_GARAGE: typing.ClassVar[int] = ...
    TYPE_GATE: typing.ClassVar[int] = ...
    TYPE_GENERIC_ARM_DISARM: typing.ClassVar[int] = ...
    TYPE_GENERIC_LOCK_UNLOCK: typing.ClassVar[int] = ...
    TYPE_GENERIC_ON_OFF: typing.ClassVar[int] = ...
    TYPE_GENERIC_OPEN_CLOSE: typing.ClassVar[int] = ...
    TYPE_GENERIC_START_STOP: typing.ClassVar[int] = ...
    TYPE_GENERIC_TEMP_SETTING: typing.ClassVar[int] = ...
    TYPE_GENERIC_VIEWSTREAM: typing.ClassVar[int] = ...
    TYPE_HEATER: typing.ClassVar[int] = ...
    TYPE_HOOD: typing.ClassVar[int] = ...
    TYPE_HUMIDIFIER: typing.ClassVar[int] = ...
    TYPE_KETTLE: typing.ClassVar[int] = ...
    TYPE_LIGHT: typing.ClassVar[int] = ...
    TYPE_LOCK: typing.ClassVar[int] = ...
    TYPE_MICROWAVE: typing.ClassVar[int] = ...
    TYPE_MOP: typing.ClassVar[int] = ...
    TYPE_MOWER: typing.ClassVar[int] = ...
    TYPE_MULTICOOKER: typing.ClassVar[int] = ...
    TYPE_OUTLET: typing.ClassVar[int] = ...
    TYPE_PERGOLA: typing.ClassVar[int] = ...
    TYPE_RADIATOR: typing.ClassVar[int] = ...
    TYPE_REFRIGERATOR: typing.ClassVar[int] = ...
    TYPE_REMOTE_CONTROL: typing.ClassVar[int] = ...
    TYPE_ROUTINE: typing.ClassVar[int] = ...
    TYPE_SECURITY_SYSTEM: typing.ClassVar[int] = ...
    TYPE_SET_TOP: typing.ClassVar[int] = ...
    TYPE_SHOWER: typing.ClassVar[int] = ...
    TYPE_SHUTTER: typing.ClassVar[int] = ...
    TYPE_SPRINKLER: typing.ClassVar[int] = ...
    TYPE_STANDMIXER: typing.ClassVar[int] = ...
    TYPE_STYLER: typing.ClassVar[int] = ...
    TYPE_SWITCH: typing.ClassVar[int] = ...
    TYPE_THERMOSTAT: typing.ClassVar[int] = ...
    TYPE_TV: typing.ClassVar[int] = ...
    TYPE_UNKNOWN: typing.ClassVar[int] = ...
    TYPE_VACUUM: typing.ClassVar[int] = ...
    TYPE_VALVE: typing.ClassVar[int] = ...
    TYPE_WASHER: typing.ClassVar[int] = ...
    TYPE_WATER_HEATER: typing.ClassVar[int] = ...
    TYPE_WINDOW: typing.ClassVar[int] = ...
    @staticmethod
    def validDeviceType(deviceType: int | java.jint | java.lang.Integer, /) -> bool: ...
