# 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.devices.lights
import winrt.windows.foundation
import winrt.windows.foundation.collections
import winrt.windows.graphics.imaging
import winrt.windows.ui

from winrt.windows.devices.lights.effects import LampArrayEffectCompletionBehavior, LampArrayEffectStartMode, LampArrayRepetitionMode

Self = typing.TypeVar('Self')

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

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

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

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

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

class LampArrayEffectPlaylist_Static(type):
    def pause_all(cls, value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...
    def start_all(cls, value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...
    def stop_all(cls, value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...

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

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

class LampArrayUpdateRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> LampArrayUpdateRequestedEventArgs: ...
    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_single_color_for_indices(self, desired_color: winrt.windows.ui.Color, lamp_indexes: winrt.system.Array[winrt.system.Int32], /) -> None: ...
    @_property
    def since_started(self) -> datetime.timedelta: ...

class ILampArrayEffect(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ILampArrayEffect: ...
    @_property
    def z_index(self) -> winrt.system.Int32: ...
    @z_index.setter
    def z_index(self, value: winrt.system.Int32) -> None: ...

