# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.2.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 as windows_foundation
import winrt.windows.foundation.numerics as windows_foundation_numerics
import winrt.windows.storage.streams as windows_storage_streams
import winrt.windows.system as windows_system
import winrt.windows.ui as windows_ui

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

Self = typing.TypeVar('Self')

@typing.final
class Lamp_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Lights.Lamp> Windows.Devices.Lights.Lamp::FromIdAsync(System.String)
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[Lamp]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Lights.Lamp> Windows.Devices.Lights.Lamp::GetDefaultAsync()
    def get_default_async(cls) -> windows_foundation.IAsyncOperation[Lamp]: ...
    # System.String Windows.Devices.Lights.Lamp::GetDeviceSelector()
    def get_device_selector(cls) -> str: ...

@typing.final
class Lamp(winrt.system.Object, windows_foundation.IClosable, metaclass=Lamp_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Devices.Lights.Lamp::Close()
    def close(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Devices.Lights.Lamp::add_AvailabilityChanged(Windows.Foundation.TypedEventHandler`2<Windows.Devices.Lights.Lamp,Windows.Devices.Lights.LampAvailabilityChangedEventArgs>)
    def add_availability_changed(self, handler: windows_foundation.TypedEventHandler[Lamp, LampAvailabilityChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Devices.Lights.Lamp::remove_AvailabilityChanged(Windows.Foundation.EventRegistrationToken)
    def remove_availability_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Boolean Windows.Devices.Lights.Lamp::get_IsEnabled()
    @_property
    def is_enabled(self) -> bool: ...
    # System.Void Windows.Devices.Lights.Lamp::put_IsEnabled(System.Boolean)
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    # Windows.UI.Color Windows.Devices.Lights.Lamp::get_Color()
    @_property
    def color(self) -> windows_ui.Color: ...
    # System.Void Windows.Devices.Lights.Lamp::put_Color(Windows.UI.Color)
    @color.setter
    def color(self, value: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]]) -> None: ...
    # System.Single Windows.Devices.Lights.Lamp::get_BrightnessLevel()
    @_property
    def brightness_level(self) -> winrt.system.Single: ...
    # System.Void Windows.Devices.Lights.Lamp::put_BrightnessLevel(System.Single)
    @brightness_level.setter
    def brightness_level(self, value: winrt.system.Single) -> None: ...
    # System.String Windows.Devices.Lights.Lamp::get_DeviceId()
    @_property
    def device_id(self) -> str: ...
    # System.Boolean Windows.Devices.Lights.Lamp::get_IsColorSettable()
    @_property
    def is_color_settable(self) -> bool: ...

@typing.final
class LampArray_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Lights.LampArray> Windows.Devices.Lights.LampArray::FromIdAsync(System.String)
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[LampArray]: ...
    # System.String Windows.Devices.Lights.LampArray::GetDeviceSelector()
    def get_device_selector(cls) -> str: ...

@typing.final
class LampArray(winrt.system.Object, metaclass=LampArray_Static):
    # System.Int32[] Windows.Devices.Lights.LampArray::GetIndicesForKey(Windows.System.VirtualKey)
    def get_indices_for_key(self, key: windows_system.VirtualKey, /) -> winrt.system.Array[winrt.system.Int32]: ...
    # System.Int32[] Windows.Devices.Lights.LampArray::GetIndicesForPurposes(Windows.Devices.Lights.LampPurposes)
    def get_indices_for_purposes(self, purposes: LampPurposes, /) -> winrt.system.Array[winrt.system.Int32]: ...
    # Windows.Devices.Lights.LampInfo Windows.Devices.Lights.LampArray::GetLampInfo(System.Int32)
    def get_lamp_info(self, lamp_index: winrt.system.Int32, /) -> LampInfo: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IBuffer> Windows.Devices.Lights.LampArray::RequestMessageAsync(System.Int32)
    def request_message_async(self, message_id: winrt.system.Int32, /) -> windows_foundation.IAsyncOperation[winrt.system.Buffer]: ...
    # Windows.Foundation.IAsyncAction Windows.Devices.Lights.LampArray::SendMessageAsync(System.Int32,Windows.Storage.Streams.IBuffer)
    def send_message_async(self, message_id: winrt.system.Int32, message: winrt.system.Buffer, /) -> windows_foundation.IAsyncAction: ...
    # System.Void Windows.Devices.Lights.LampArray::SetColor(Windows.UI.Color)
    def set_color(self, desired_color: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]], /) -> None: ...
    # System.Void Windows.Devices.Lights.LampArray::SetColorForIndex(System.Int32,Windows.UI.Color)
    def set_color_for_index(self, lamp_index: winrt.system.Int32, desired_color: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]], /) -> None: ...
    # System.Void Windows.Devices.Lights.LampArray::SetColorsForIndices(Windows.UI.Color[],System.Int32[])
    def set_colors_for_indices(self, desired_colors: typing.Union[winrt.system.Array[windows_ui.Color], winrt.system.ReadableBuffer], lamp_indexes: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer], /) -> None: ...
    # System.Void Windows.Devices.Lights.LampArray::SetColorsForKey(Windows.UI.Color,Windows.System.VirtualKey)
    def set_colors_for_key(self, desired_color: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]], key: windows_system.VirtualKey, /) -> None: ...
    # System.Void Windows.Devices.Lights.LampArray::SetColorsForKeys(Windows.UI.Color[],Windows.System.VirtualKey[])
    def set_colors_for_keys(self, desired_colors: typing.Union[winrt.system.Array[windows_ui.Color], winrt.system.ReadableBuffer], keys: typing.Union[winrt.system.Array[windows_system.VirtualKey], winrt.system.ReadableBuffer], /) -> None: ...
    # System.Void Windows.Devices.Lights.LampArray::SetColorsForPurposes(Windows.UI.Color,Windows.Devices.Lights.LampPurposes)
    def set_colors_for_purposes(self, desired_color: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]], purposes: LampPurposes, /) -> None: ...
    # System.Void Windows.Devices.Lights.LampArray::SetSingleColorForIndices(Windows.UI.Color,System.Int32[])
    def set_single_color_for_indices(self, desired_color: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]], lamp_indexes: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Devices.Lights.LampArray::add_AvailabilityChanged(Windows.Foundation.TypedEventHandler`2<Windows.Devices.Lights.LampArray,System.Object>)
    def add_availability_changed(self, handler: windows_foundation.TypedEventHandler[LampArray, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Devices.Lights.LampArray::remove_AvailabilityChanged(Windows.Foundation.EventRegistrationToken)
    def remove_availability_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Boolean Windows.Devices.Lights.LampArray::get_IsEnabled()
    @_property
    def is_enabled(self) -> bool: ...
    # System.Void Windows.Devices.Lights.LampArray::put_IsEnabled(System.Boolean)
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    # System.Double Windows.Devices.Lights.LampArray::get_BrightnessLevel()
    @_property
    def brightness_level(self) -> winrt.system.Double: ...
    # System.Void Windows.Devices.Lights.LampArray::put_BrightnessLevel(System.Double)
    @brightness_level.setter
    def brightness_level(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Devices.Lights.LampArray::get_BoundingBox()
    @_property
    def bounding_box(self) -> windows_foundation_numerics.Vector3: ...
    # System.String Windows.Devices.Lights.LampArray::get_DeviceId()
    @_property
    def device_id(self) -> str: ...
    # System.UInt16 Windows.Devices.Lights.LampArray::get_HardwareProductId()
    @_property
    def hardware_product_id(self) -> winrt.system.UInt16: ...
    # System.UInt16 Windows.Devices.Lights.LampArray::get_HardwareVendorId()
    @_property
    def hardware_vendor_id(self) -> winrt.system.UInt16: ...
    # System.UInt16 Windows.Devices.Lights.LampArray::get_HardwareVersion()
    @_property
    def hardware_version(self) -> winrt.system.UInt16: ...
    # System.Boolean Windows.Devices.Lights.LampArray::get_IsConnected()
    @_property
    def is_connected(self) -> bool: ...
    # Windows.Devices.Lights.LampArrayKind Windows.Devices.Lights.LampArray::get_LampArrayKind()
    @_property
    def lamp_array_kind(self) -> LampArrayKind: ...
    # System.Int32 Windows.Devices.Lights.LampArray::get_LampCount()
    @_property
    def lamp_count(self) -> winrt.system.Int32: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.LampArray::get_MinUpdateInterval()
    @_property
    def min_update_interval(self) -> datetime.timedelta: ...
    # System.Boolean Windows.Devices.Lights.LampArray::get_SupportsVirtualKeys()
    @_property
    def supports_virtual_keys(self) -> bool: ...
    # System.Boolean Windows.Devices.Lights.LampArray::get_IsAvailable()
    @_property
    def is_available(self) -> bool: ...

@typing.final
class LampAvailabilityChangedEventArgs(winrt.system.Object):
    # System.Boolean Windows.Devices.Lights.LampAvailabilityChangedEventArgs::get_IsAvailable()
    @_property
    def is_available(self) -> bool: ...

@typing.final
class LampInfo(winrt.system.Object):
    # Windows.UI.Color Windows.Devices.Lights.LampInfo::GetNearestSupportedColor(Windows.UI.Color)
    def get_nearest_supported_color(self, desired_color: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]], /) -> windows_ui.Color: ...
    # System.Int32 Windows.Devices.Lights.LampInfo::get_BlueLevelCount()
    @_property
    def blue_level_count(self) -> winrt.system.Int32: ...
    # Windows.Foundation.IReference`1<Windows.UI.Color> Windows.Devices.Lights.LampInfo::get_FixedColor()
    @_property
    def fixed_color(self) -> typing.Optional[windows_ui.Color]: ...
    # System.Int32 Windows.Devices.Lights.LampInfo::get_GainLevelCount()
    @_property
    def gain_level_count(self) -> winrt.system.Int32: ...
    # System.Int32 Windows.Devices.Lights.LampInfo::get_GreenLevelCount()
    @_property
    def green_level_count(self) -> winrt.system.Int32: ...
    # System.Int32 Windows.Devices.Lights.LampInfo::get_Index()
    @_property
    def index(self) -> winrt.system.Int32: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Devices.Lights.LampInfo::get_Position()
    @_property
    def position(self) -> windows_foundation_numerics.Vector3: ...
    # Windows.Devices.Lights.LampPurposes Windows.Devices.Lights.LampInfo::get_Purposes()
    @_property
    def purposes(self) -> LampPurposes: ...
    # System.Int32 Windows.Devices.Lights.LampInfo::get_RedLevelCount()
    @_property
    def red_level_count(self) -> winrt.system.Int32: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.LampInfo::get_UpdateLatency()
    @_property
    def update_latency(self) -> datetime.timedelta: ...

