import typing

import android.graphics.drawable
import android.os
import java
import java.lang

class ControlButton(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ControlButton]] = ...
    def __init__(self, checked: bool | java.jboolean | java.lang.Boolean, actionDescription: java.lang.CharSequence, /) -> None: ...
    def describeContents(self) -> int: ...
    def getActionDescription(self) -> java.lang.CharSequence: ...
    def isChecked(self) -> bool: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class ControlTemplate(java.lang.Object):
    TYPE_ERROR: typing.ClassVar[int] = ...
    TYPE_NO_TEMPLATE: typing.ClassVar[int] = ...
    TYPE_RANGE: typing.ClassVar[int] = ...
    TYPE_STATELESS: typing.ClassVar[int] = ...
    TYPE_TEMPERATURE: typing.ClassVar[int] = ...
    TYPE_THUMBNAIL: typing.ClassVar[int] = ...
    TYPE_TOGGLE: typing.ClassVar[int] = ...
    TYPE_TOGGLE_RANGE: typing.ClassVar[int] = ...
    @staticmethod
    def getErrorTemplate() -> ControlTemplate: ...
    @staticmethod
    def getNoTemplateObject() -> ControlTemplate: ...
    def getTemplateId(self) -> str: ...
    def getTemplateType(self) -> int: ...

class RangeTemplate(ControlTemplate):
    def __init__(self, templateId: str | java.lang.String, minValue: float | java.jfloat | java.lang.Float, maxValue: float | java.jfloat | java.lang.Float, currentValue: float | java.jfloat | java.lang.Float, stepValue: float | java.jfloat | java.lang.Float, formatString: java.lang.CharSequence, /) -> None: ...
    def getCurrentValue(self) -> float: ...
    def getFormatString(self) -> java.lang.CharSequence: ...
    def getMaxValue(self) -> float: ...
    def getMinValue(self) -> float: ...
    def getStepValue(self) -> float: ...
    def getTemplateType(self) -> int: ...

class StatelessTemplate(ControlTemplate):
    def __init__(self, templateId: str | java.lang.String, /) -> None: ...
    def getTemplateType(self) -> int: ...

class TemperatureControlTemplate(ControlTemplate):
    FLAG_MODE_COOL: typing.ClassVar[int] = ...
    FLAG_MODE_ECO: typing.ClassVar[int] = ...
    FLAG_MODE_HEAT: typing.ClassVar[int] = ...
    FLAG_MODE_HEAT_COOL: typing.ClassVar[int] = ...
    FLAG_MODE_OFF: typing.ClassVar[int] = ...
    MODE_COOL: typing.ClassVar[int] = ...
    MODE_ECO: typing.ClassVar[int] = ...
    MODE_HEAT: typing.ClassVar[int] = ...
    MODE_HEAT_COOL: typing.ClassVar[int] = ...
    MODE_OFF: typing.ClassVar[int] = ...
    MODE_UNKNOWN: typing.ClassVar[int] = ...
    def __init__(self, templateId: str | java.lang.String, controlTemplate: ControlTemplate, currentMode: int | java.jint | java.lang.Integer, currentActiveMode: int | java.jint | java.lang.Integer, modesFlag: int | java.jint | java.lang.Integer, /) -> None: ...
    def getCurrentActiveMode(self) -> int: ...
    def getCurrentMode(self) -> int: ...
    def getModes(self) -> int: ...
    def getTemplate(self) -> ControlTemplate: ...
    def getTemplateType(self) -> int: ...

class ThumbnailTemplate(ControlTemplate):
    def __init__(self, templateId: str | java.lang.String, active: bool | java.jboolean | java.lang.Boolean, thumbnail: android.graphics.drawable.Icon, contentDescription: java.lang.CharSequence, /) -> None: ...
    def getContentDescription(self) -> java.lang.CharSequence: ...
    def getTemplateType(self) -> int: ...
    def getThumbnail(self) -> android.graphics.drawable.Icon: ...
    def isActive(self) -> bool: ...

class ToggleRangeTemplate(ControlTemplate):
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, button: ControlButton, range: RangeTemplate, /) -> None: ...
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, checked: bool | java.jboolean | java.lang.Boolean, actionDescription: java.lang.CharSequence, range: RangeTemplate, /) -> None: ...
    def getActionDescription(self) -> java.lang.CharSequence: ...
    def getRange(self) -> RangeTemplate: ...
    def getTemplateType(self) -> int: ...
    def isChecked(self) -> bool: ...

class ToggleTemplate(ControlTemplate):
    def __init__(self, templateId: str | java.lang.String, button: ControlButton, /) -> None: ...
    def getContentDescription(self) -> java.lang.CharSequence: ...
    def getTemplateType(self) -> int: ...
    def isChecked(self) -> bool: ...
