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

import enum
import datetime
import sys
import types
import typing

import winsdk._winrt as _winrt
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(_winrt.Object):
    update_interval: datetime.timedelta
    start_delay: datetime.timedelta
    duration: datetime.timedelta
    suggested_bitmap_size: winsdk.windows.foundation.Size
    z_index: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.Object) -> LampArrayBitmapEffect: ...
    def __new__(cls: typing.Type[LampArrayBitmapEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: typing.Sequence[_winrt.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(_winrt.Object):
    since_started: datetime.timedelta
    @staticmethod
    def _from(obj: _winrt.Object) -> LampArrayBitmapRequestedEventArgs: ...
    def update_bitmap(self, bitmap: typing.Optional[winsdk.windows.graphics.imaging.SoftwareBitmap]) -> None: ...

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

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

class LampArrayCustomEffect(_winrt.Object):
    update_interval: datetime.timedelta
    duration: datetime.timedelta
    z_index: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.Object) -> LampArrayCustomEffect: ...
    def __new__(cls: typing.Type[LampArrayCustomEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: typing.Sequence[_winrt.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(_winrt.Object, typing.Sequence[ILampArrayEffect]):
    repetition_mode: LampArrayRepetitionMode
    occurrences: _winrt.Int32
    effect_start_mode: LampArrayEffectStartMode
    size: _winrt.UInt32
    def __len__(self) -> int: ...
    @typing.overload
    def __getitem__(self, index: int) -> ILampArrayEffect: ...
    @typing.overload
    def __getitem__(self, index: slice) -> typing.Sequence[ILampArrayEffect]: ...
    @staticmethod
    def _from(obj: _winrt.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: _winrt.UInt32) -> typing.Optional[ILampArrayEffect]: ...
    def get_many(self, start_index: _winrt.UInt32, items_size: _winrt.UInt32) -> typing.Tuple[_winrt.UInt32, typing.List[ILampArrayEffect]]: ...
    def index_of(self, value: typing.Optional[ILampArrayEffect]) -> typing.Tuple[_winrt.Boolean, _winrt.UInt32]: ...
    def override_z_index(self, z_index: _winrt.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(_winrt.Object):
    z_index: _winrt.Int32
    start_delay: datetime.timedelta
    duration: datetime.timedelta
    completion_behavior: LampArrayEffectCompletionBehavior
    color: winsdk.windows.ui.Color
    @staticmethod
    def _from(obj: _winrt.Object) -> LampArraySolidEffect: ...
    def __new__(cls: typing.Type[LampArraySolidEffect], lamp_array: typing.Optional[winsdk.windows.devices.lights.LampArray], lamp_indexes: typing.Sequence[_winrt.Int32]) -> LampArraySolidEffect:...

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

class ILampArrayEffect(_winrt.Object):
    z_index: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.Object) -> ILampArrayEffect: ...

