# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.0-beta.1

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation
import winrt.windows.foundation.numerics
import winrt.windows.storage.streams
import winrt.windows.system
import winrt.windows.ui

from winrt.windows.devices.lights import LampArrayKind, LampPurposes

Self = typing.TypeVar('Self')

class Lamp_Static(type):
    def from_id_async(cls, device_id: str, /) -> winrt.windows.foundation.IAsyncOperation[Lamp]: ...
    def get_default_async(cls) -> winrt.windows.foundation.IAsyncOperation[Lamp]: ...
    def get_device_selector(cls) -> str: ...

class Lamp(winrt.system.Object, metaclass=Lamp_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> Lamp: ...
    def close(self) -> None: ...
    def add_availability_changed(self, handler: winrt.windows.foundation.TypedEventHandler[Lamp, LampAvailabilityChangedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_availability_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def is_enabled(self) -> bool: ...
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    @_property
    def color(self) -> winrt.windows.ui.Color: ...
    @color.setter
    def color(self, value: winrt.windows.ui.Color) -> None: ...
    @_property
    def brightness_level(self) -> winrt.system.Single: ...
    @brightness_level.setter
    def brightness_level(self, value: winrt.system.Single) -> None: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def is_color_settable(self) -> bool: ...

class LampArray_Static(type):
    def from_id_async(cls, device_id: str, /) -> winrt.windows.foundation.IAsyncOperation[LampArray]: ...
    def get_device_selector(cls) -> str: ...

class LampArray(winrt.system.Object, metaclass=LampArray_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> LampArray: ...
    def get_indices_for_key(self, key: winrt.windows.system.VirtualKey, /) -> winrt.system.Int32: ...
    def get_indices_for_purposes(self, purposes: LampPurposes, /) -> winrt.system.Int32: ...
    def get_lamp_info(self, lamp_index: winrt.system.Int32, /) -> typing.Optional[LampInfo]: ...
    def request_message_async(self, message_id: winrt.system.Int32, /) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IBuffer]: ...
    def send_message_async(self, message_id: winrt.system.Int32, message: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncAction: ...
    def set_color(self, desired_color: winrt.windows.ui.Color, /) -> None: ...
    def set_color_for_index(self, lamp_index: winrt.system.Int32, desired_color: winrt.windows.ui.Color, /) -> None: ...
    def set_colors_for_indices(self, desired_colors: winrt.system.Array[winrt.windows.ui.Color], lamp_indexes: winrt.system.Array[winrt.system.Int32], /) -> None: ...
    def set_colors_for_key(self, desired_color: winrt.windows.ui.Color, key: winrt.windows.system.VirtualKey, /) -> None: ...
    def set_colors_for_keys(self, desired_colors: winrt.system.Array[winrt.windows.ui.Color], keys: winrt.system.Array[winrt.windows.system.VirtualKey], /) -> None: ...
    def set_colors_for_purposes(self, desired_color: winrt.windows.ui.Color, purposes: LampPurposes, /) -> None: ...
    def set_single_color_for_indices(self, desired_color: winrt.windows.ui.Color, lamp_indexes: winrt.system.Array[winrt.system.Int32], /) -> None: ...
    @_property
    def is_enabled(self) -> bool: ...
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    @_property
    def brightness_level(self) -> winrt.system.Double: ...
    @brightness_level.setter
    def brightness_level(self, value: winrt.system.Double) -> None: ...
    @_property
    def bounding_box(self) -> winrt.windows.foundation.numerics.Vector3: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def hardware_product_id(self) -> winrt.system.UInt16: ...
    @_property
    def hardware_vendor_id(self) -> winrt.system.UInt16: ...
    @_property
    def hardware_version(self) -> winrt.system.UInt16: ...
    @_property
    def is_connected(self) -> bool: ...
    @_property
    def lamp_array_kind(self) -> LampArrayKind: ...
    @_property
    def lamp_count(self) -> winrt.system.Int32: ...
    @_property
    def min_update_interval(self) -> datetime.timedelta: ...
    @_property
    def supports_virtual_keys(self) -> bool: ...

class LampAvailabilityChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> LampAvailabilityChangedEventArgs: ...
    @_property
    def is_available(self) -> bool: ...

class LampInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> LampInfo: ...
    def get_nearest_supported_color(self, desired_color: winrt.windows.ui.Color, /) -> winrt.windows.ui.Color: ...
    @_property
    def blue_level_count(self) -> winrt.system.Int32: ...
    @_property
    def fixed_color(self) -> typing.Optional[typing.Optional[winrt.windows.ui.Color]]: ...
    @_property
    def gain_level_count(self) -> winrt.system.Int32: ...
    @_property
    def green_level_count(self) -> winrt.system.Int32: ...
    @_property
    def index(self) -> winrt.system.Int32: ...
    @_property
    def position(self) -> winrt.windows.foundation.numerics.Vector3: ...
    @_property
    def purposes(self) -> LampPurposes: ...
    @_property
    def red_level_count(self) -> winrt.system.Int32: ...
    @_property
    def update_latency(self) -> datetime.timedelta: ...

