# 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
from abc import abstractmethod

import winrt._winrt
import winrt.system
import winrt.windows.devices.lights as windows_devices_lights
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.graphics.imaging as windows_graphics_imaging
import winrt.windows.ui as windows_ui

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

Self = typing.TypeVar('Self')

@typing.final
class LampArrayBitmapEffect(winrt.system.Object, ILampArrayEffect):
    def __new__(cls: typing.Type[Self], lamp_array: windows_devices_lights.LampArray, lamp_indexes: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer]) -> Self: ...
    # Windows.Foundation.EventRegistrationToken Windows.Devices.Lights.Effects.LampArrayBitmapEffect::add_BitmapRequested(Windows.Foundation.TypedEventHandler`2<Windows.Devices.Lights.Effects.LampArrayBitmapEffect,Windows.Devices.Lights.Effects.LampArrayBitmapRequestedEventArgs>)
    def add_bitmap_requested(self, handler: windows_foundation.TypedEventHandler[LampArrayBitmapEffect, LampArrayBitmapRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBitmapEffect::remove_BitmapRequested(Windows.Foundation.EventRegistrationToken)
    def remove_bitmap_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBitmapEffect::get_UpdateInterval()
    @_property
    def update_interval(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBitmapEffect::put_UpdateInterval(Windows.Foundation.TimeSpan)
    @update_interval.setter
    def update_interval(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBitmapEffect::get_StartDelay()
    @_property
    def start_delay(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBitmapEffect::put_StartDelay(Windows.Foundation.TimeSpan)
    @start_delay.setter
    def start_delay(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBitmapEffect::get_Duration()
    @_property
    def duration(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBitmapEffect::put_Duration(Windows.Foundation.TimeSpan)
    @duration.setter
    def duration(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.Size Windows.Devices.Lights.Effects.LampArrayBitmapEffect::get_SuggestedBitmapSize()
    @_property
    def suggested_bitmap_size(self) -> windows_foundation.Size: ...
    # System.Int32 Windows.Devices.Lights.Effects.LampArrayBitmapEffect::get_ZIndex()
    @_property
    def z_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBitmapEffect::put_ZIndex(System.Int32)
    @z_index.setter
    def z_index(self, value: winrt.system.Int32) -> None: ...

@typing.final
class LampArrayBitmapRequestedEventArgs(winrt.system.Object):
    # System.Void Windows.Devices.Lights.Effects.LampArrayBitmapRequestedEventArgs::UpdateBitmap(Windows.Graphics.Imaging.SoftwareBitmap)
    def update_bitmap(self, bitmap: windows_graphics_imaging.SoftwareBitmap, /) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBitmapRequestedEventArgs::get_SinceStarted()
    @_property
    def since_started(self) -> datetime.timedelta: ...

@typing.final
class LampArrayBlinkEffect(winrt.system.Object, ILampArrayEffect):
    def __new__(cls: typing.Type[Self], lamp_array: windows_devices_lights.LampArray, lamp_indexes: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer]) -> Self: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_SustainDuration()
    @_property
    def sustain_duration(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_SustainDuration(Windows.Foundation.TimeSpan)
    @sustain_duration.setter
    def sustain_duration(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_StartDelay()
    @_property
    def start_delay(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_StartDelay(Windows.Foundation.TimeSpan)
    @start_delay.setter
    def start_delay(self, value: datetime.timedelta) -> None: ...
    # Windows.Devices.Lights.Effects.LampArrayRepetitionMode Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_RepetitionMode()
    @_property
    def repetition_mode(self) -> LampArrayRepetitionMode: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_RepetitionMode(Windows.Devices.Lights.Effects.LampArrayRepetitionMode)
    @repetition_mode.setter
    def repetition_mode(self, value: LampArrayRepetitionMode) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_RepetitionDelay()
    @_property
    def repetition_delay(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_RepetitionDelay(Windows.Foundation.TimeSpan)
    @repetition_delay.setter
    def repetition_delay(self, value: datetime.timedelta) -> None: ...
    # System.Int32 Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_Occurrences()
    @_property
    def occurrences(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_Occurrences(System.Int32)
    @occurrences.setter
    def occurrences(self, value: winrt.system.Int32) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_DecayDuration()
    @_property
    def decay_duration(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_DecayDuration(Windows.Foundation.TimeSpan)
    @decay_duration.setter
    def decay_duration(self, value: datetime.timedelta) -> None: ...
    # Windows.UI.Color Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_Color()
    @_property
    def color(self) -> windows_ui.Color: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::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: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_AttackDuration()
    @_property
    def attack_duration(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_AttackDuration(Windows.Foundation.TimeSpan)
    @attack_duration.setter
    def attack_duration(self, value: datetime.timedelta) -> None: ...
    # System.Int32 Windows.Devices.Lights.Effects.LampArrayBlinkEffect::get_ZIndex()
    @_property
    def z_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayBlinkEffect::put_ZIndex(System.Int32)
    @z_index.setter
    def z_index(self, value: winrt.system.Int32) -> None: ...

@typing.final
class LampArrayColorRampEffect(winrt.system.Object, ILampArrayEffect):
    def __new__(cls: typing.Type[Self], lamp_array: windows_devices_lights.LampArray, lamp_indexes: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer]) -> Self: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayColorRampEffect::get_StartDelay()
    @_property
    def start_delay(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayColorRampEffect::put_StartDelay(Windows.Foundation.TimeSpan)
    @start_delay.setter
    def start_delay(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayColorRampEffect::get_RampDuration()
    @_property
    def ramp_duration(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayColorRampEffect::put_RampDuration(Windows.Foundation.TimeSpan)
    @ramp_duration.setter
    def ramp_duration(self, value: datetime.timedelta) -> None: ...
    # Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior Windows.Devices.Lights.Effects.LampArrayColorRampEffect::get_CompletionBehavior()
    @_property
    def completion_behavior(self) -> LampArrayEffectCompletionBehavior: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayColorRampEffect::put_CompletionBehavior(Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior)
    @completion_behavior.setter
    def completion_behavior(self, value: LampArrayEffectCompletionBehavior) -> None: ...
    # Windows.UI.Color Windows.Devices.Lights.Effects.LampArrayColorRampEffect::get_Color()
    @_property
    def color(self) -> windows_ui.Color: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayColorRampEffect::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.Int32 Windows.Devices.Lights.Effects.LampArrayColorRampEffect::get_ZIndex()
    @_property
    def z_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayColorRampEffect::put_ZIndex(System.Int32)
    @z_index.setter
    def z_index(self, value: winrt.system.Int32) -> None: ...

@typing.final
class LampArrayCustomEffect(winrt.system.Object, ILampArrayEffect):
    def __new__(cls: typing.Type[Self], lamp_array: windows_devices_lights.LampArray, lamp_indexes: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer]) -> Self: ...
    # Windows.Foundation.EventRegistrationToken Windows.Devices.Lights.Effects.LampArrayCustomEffect::add_UpdateRequested(Windows.Foundation.TypedEventHandler`2<Windows.Devices.Lights.Effects.LampArrayCustomEffect,Windows.Devices.Lights.Effects.LampArrayUpdateRequestedEventArgs>)
    def add_update_requested(self, handler: windows_foundation.TypedEventHandler[LampArrayCustomEffect, LampArrayUpdateRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayCustomEffect::remove_UpdateRequested(Windows.Foundation.EventRegistrationToken)
    def remove_update_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayCustomEffect::get_UpdateInterval()
    @_property
    def update_interval(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayCustomEffect::put_UpdateInterval(Windows.Foundation.TimeSpan)
    @update_interval.setter
    def update_interval(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArrayCustomEffect::get_Duration()
    @_property
    def duration(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayCustomEffect::put_Duration(Windows.Foundation.TimeSpan)
    @duration.setter
    def duration(self, value: datetime.timedelta) -> None: ...
    # System.Int32 Windows.Devices.Lights.Effects.LampArrayCustomEffect::get_ZIndex()
    @_property
    def z_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayCustomEffect::put_ZIndex(System.Int32)
    @z_index.setter
    def z_index(self, value: winrt.system.Int32) -> None: ...

@typing.final
class LampArrayEffectPlaylist_Static(winrt._winrt.IInspectable_Static):
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::PauseAll(Windows.Foundation.Collections.IIterable`1<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist>)
    def pause_all(cls, value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::StartAll(Windows.Foundation.Collections.IIterable`1<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist>)
    def start_all(cls, value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::StopAll(Windows.Foundation.Collections.IIterable`1<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist>)
    def stop_all(cls, value: typing.Iterable[LampArrayEffectPlaylist], /) -> None: ...

@typing.final
class LampArrayEffectPlaylist(winrt.system.Object, winrt._winrt.Sequence[ILampArrayEffect], metaclass=LampArrayEffectPlaylist_Static):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[ILampArrayEffect]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> ILampArrayEffect: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[ILampArrayEffect]: ...
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::Append(Windows.Devices.Lights.Effects.ILampArrayEffect)
    def append(self, effect: ILampArrayEffect, /) -> None: ...
    # Windows.Foundation.Collections.IIterator`1<Windows.Devices.Lights.Effects.ILampArrayEffect> Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::First()
    def first(self) -> windows_foundation_collections.IIterator[ILampArrayEffect]: ...
    # Windows.Devices.Lights.Effects.ILampArrayEffect Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::GetAt(System.UInt32)
    def get_at(self, index: winrt.system.UInt32, /) -> ILampArrayEffect: ...
    # System.UInt32 Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::GetMany(System.UInt32,Windows.Devices.Lights.Effects.ILampArrayEffect[])
    def get_many(self, start_index: winrt.system.UInt32, items: typing.Union[winrt.system.Array[ILampArrayEffect], winrt.system.WriteableBuffer], /) -> winrt.system.UInt32: ...
    # System.Boolean Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::IndexOf(Windows.Devices.Lights.Effects.ILampArrayEffect,System.UInt32&)
    def index_of(self, value: ILampArrayEffect, /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::OverrideZIndex(System.Int32)
    def override_z_index(self, z_index: winrt.system.Int32, /) -> None: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::Pause()
    def pause(self) -> None: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::Start()
    def start(self) -> None: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::Stop()
    def stop(self) -> None: ...
    # Windows.Devices.Lights.Effects.LampArrayRepetitionMode Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::get_RepetitionMode()
    @_property
    def repetition_mode(self) -> LampArrayRepetitionMode: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::put_RepetitionMode(Windows.Devices.Lights.Effects.LampArrayRepetitionMode)
    @repetition_mode.setter
    def repetition_mode(self, value: LampArrayRepetitionMode) -> None: ...
    # System.Int32 Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::get_Occurrences()
    @_property
    def occurrences(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::put_Occurrences(System.Int32)
    @occurrences.setter
    def occurrences(self, value: winrt.system.Int32) -> None: ...
    # Windows.Devices.Lights.Effects.LampArrayEffectStartMode Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::get_EffectStartMode()
    @_property
    def effect_start_mode(self) -> LampArrayEffectStartMode: ...
    # System.Void Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::put_EffectStartMode(Windows.Devices.Lights.Effects.LampArrayEffectStartMode)
    @effect_start_mode.setter
    def effect_start_mode(self, value: LampArrayEffectStartMode) -> None: ...
    # System.UInt32 Windows.Devices.Lights.Effects.LampArrayEffectPlaylist::get_Size()
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class LampArraySolidEffect(winrt.system.Object, ILampArrayEffect):
    def __new__(cls: typing.Type[Self], lamp_array: windows_devices_lights.LampArray, lamp_indexes: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer]) -> Self: ...
    # System.Int32 Windows.Devices.Lights.Effects.LampArraySolidEffect::get_ZIndex()
    @_property
    def z_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.LampArraySolidEffect::put_ZIndex(System.Int32)
    @z_index.setter
    def z_index(self, value: winrt.system.Int32) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArraySolidEffect::get_StartDelay()
    @_property
    def start_delay(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArraySolidEffect::put_StartDelay(Windows.Foundation.TimeSpan)
    @start_delay.setter
    def start_delay(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Lights.Effects.LampArraySolidEffect::get_Duration()
    @_property
    def duration(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Lights.Effects.LampArraySolidEffect::put_Duration(Windows.Foundation.TimeSpan)
    @duration.setter
    def duration(self, value: datetime.timedelta) -> None: ...
    # Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior Windows.Devices.Lights.Effects.LampArraySolidEffect::get_CompletionBehavior()
    @_property
    def completion_behavior(self) -> LampArrayEffectCompletionBehavior: ...
    # System.Void Windows.Devices.Lights.Effects.LampArraySolidEffect::put_CompletionBehavior(Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior)
    @completion_behavior.setter
    def completion_behavior(self, value: LampArrayEffectCompletionBehavior) -> None: ...
    # Windows.UI.Color Windows.Devices.Lights.Effects.LampArraySolidEffect::get_Color()
    @_property
    def color(self) -> windows_ui.Color: ...
    # System.Void Windows.Devices.Lights.Effects.LampArraySolidEffect::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: ...

@typing.final
class LampArrayUpdateRequestedEventArgs(winrt.system.Object):
    # System.Void Windows.Devices.Lights.Effects.LampArrayUpdateRequestedEventArgs::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.Effects.LampArrayUpdateRequestedEventArgs::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.Effects.LampArrayUpdateRequestedEventArgs::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.Effects.LampArrayUpdateRequestedEventArgs::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.TimeSpan Windows.Devices.Lights.Effects.LampArrayUpdateRequestedEventArgs::get_SinceStarted()
    @_property
    def since_started(self) -> datetime.timedelta: ...

@typing.final
class _ILampArrayEffect: ...

class ILampArrayEffect(winrt._winrt.IInspectable):
    # System.Int32 Windows.Devices.Lights.Effects.ILampArrayEffect::get_ZIndex()
    @_property
    @abstractmethod
    def z_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Devices.Lights.Effects.ILampArrayEffect::put_ZIndex(System.Int32)
    @z_index.setter
    @abstractmethod
    def z_index(self, value: winrt.system.Int32) -> None: ...

