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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.devices.lights
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.graphics.imaging
import winsdk.windows.ui

class LampArrayEffectCompletionBehavior(enum.IntEnum):
    CLEAR_STATE = 0
    KEEP_STATE = 1

class LampArrayEffectStartMode(enum.IntEnum):
    SEQUENTIAL = 0
    SIMULTANEOUS = 1

class LampArrayRepetitionMode(enum.IntEnum):
    OCCURRENCES = 0
    FOREVER = 1

Self = typing.TypeVar('Self')

class LampArrayBitmapEffect(winsdk.system.Object):
    update_interval: datetime.timedelta
    start_delay: datetime.timedelta
    duration: datetime.timedelta
    suggested_bitmap_size: winsdk.windows.foundation.Size
    z_index: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArrayBitmapEffect: ...
    def __new__(cls: typing.Type[LampArrayBitmapEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: winsdk.system.Array[winsdk.system.Int32]) -> LampArrayBitmapEffect:...
    def add_bitmap_requested(self, handler: winsdk.windows.foundation.TypedEventHandler[LampArrayBitmapEffect, LampArrayBitmapRequestedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_bitmap_requested(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class LampArrayBitmapRequestedEventArgs(winsdk.system.Object):
    since_started: datetime.timedelta
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArrayBitmapRequestedEventArgs: ...
    def update_bitmap(self, bitmap: typing.Optional[winsdk.windows.graphics.imaging.SoftwareBitmap], /) -> None: ...

class LampArrayBlinkEffect(winsdk.system.Object):
    sustain_duration: datetime.timedelta
    start_delay: datetime.timedelta
    repetition_mode: LampArrayRepetitionMode
    repetition_delay: datetime.timedelta
    occurrences: winsdk.system.Int32
    decay_duration: datetime.timedelta
    color: winsdk.windows.ui.Color
    attack_duration: datetime.timedelta
    z_index: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArrayBlinkEffect: ...
    def __new__(cls: typing.Type[LampArrayBlinkEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: winsdk.system.Array[winsdk.system.Int32]) -> LampArrayBlinkEffect:...

class LampArrayColorRampEffect(winsdk.system.Object):
    start_delay: datetime.timedelta
    ramp_duration: datetime.timedelta
    completion_behavior: LampArrayEffectCompletionBehavior
    color: winsdk.windows.ui.Color
    z_index: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArrayColorRampEffect: ...
    def __new__(cls: typing.Type[LampArrayColorRampEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: winsdk.system.Array[winsdk.system.Int32]) -> LampArrayColorRampEffect:...

class LampArrayCustomEffect(winsdk.system.Object):
    update_interval: datetime.timedelta
    duration: datetime.timedelta
    z_index: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArrayCustomEffect: ...
    def __new__(cls: typing.Type[LampArrayCustomEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: winsdk.system.Array[winsdk.system.Int32]) -> LampArrayCustomEffect:...
    def add_update_requested(self, handler: winsdk.windows.foundation.TypedEventHandler[LampArrayCustomEffect, LampArrayUpdateRequestedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_update_requested(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class LampArrayEffectPlaylist(winsdk.system.Object, typing.Sequence[ILampArrayEffect]):
    repetition_mode: LampArrayRepetitionMode
    occurrences: winsdk.system.Int32
    effect_start_mode: LampArrayEffectStartMode
    size: winsdk.system.UInt32
    def __len__(self) -> int: ...
    @typing.overload
    def __getitem__(self, index: int) -> ILampArrayEffect: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winsdk.system.Array[ILampArrayEffect]: ...
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArrayEffectPlaylist: ...
    def __new__(cls: typing.Type[LampArrayEffectPlaylist]) -> LampArrayEffectPlaylist:...
    def append(self, effect: typing.Optional[ILampArrayEffect], /) -> None: ...
    def first(self) -> typing.Optional[winsdk.windows.foundation.collections.IIterator[ILampArrayEffect]]: ...
    def get_at(self, index: winsdk.system.UInt32, /) -> typing.Optional[ILampArrayEffect]: ...
    def get_many(self, start_index: winsdk.system.UInt32, items: winsdk.system.Array[ILampArrayEffect], /) -> winsdk.system.UInt32: ...
    def index_of(self, value: typing.Optional[ILampArrayEffect], /) -> typing.Tuple[winsdk.system.Boolean, winsdk.system.UInt32]: ...
    def override_z_index(self, z_index: winsdk.system.Int32, /) -> None: ...
    def pause(self) -> None: ...
    @staticmethod
    def pause_all(value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...
    def start(self) -> None: ...
    @staticmethod
    def start_all(value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...
    def stop(self) -> None: ...
    @staticmethod
    def stop_all(value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...

class LampArraySolidEffect(winsdk.system.Object):
    z_index: winsdk.system.Int32
    start_delay: datetime.timedelta
    duration: datetime.timedelta
    completion_behavior: LampArrayEffectCompletionBehavior
    color: winsdk.windows.ui.Color
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArraySolidEffect: ...
    def __new__(cls: typing.Type[LampArraySolidEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: winsdk.system.Array[winsdk.system.Int32]) -> LampArraySolidEffect:...

class LampArrayUpdateRequestedEventArgs(winsdk.system.Object):
    since_started: datetime.timedelta
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> LampArrayUpdateRequestedEventArgs: ...
    def set_color(self, desired_color: winsdk.windows.ui.Color, /) -> None: ...
    def set_color_for_index(self, lamp_index: winsdk.system.Int32, desired_color: winsdk.windows.ui.Color, /) -> None: ...
    def set_colors_for_indices(self, desired_colors: winsdk.system.Array[winsdk.windows.ui.Color], lamp_indexes: winsdk.system.Array[winsdk.system.Int32], /) -> None: ...
    def set_single_color_for_indices(self, desired_color: winsdk.windows.ui.Color, lamp_indexes: winsdk.system.Array[winsdk.system.Int32], /) -> None: ...

class ILampArrayEffect(winsdk.system.Object):
    z_index: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ILampArrayEffect: ...

