# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.3.0

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.collections as windows_foundation_collections

from winrt.windows.devices.haptics import VibrationAccessStatus

Self = typing.TypeVar('Self')

@typing.final
class KnownSimpleHapticsControllerWaveforms_Static(type):
    @_property
    def buzz_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def click(cls) -> winrt.system.UInt16: ...
    @_property
    def press(cls) -> winrt.system.UInt16: ...
    @_property
    def release(cls) -> winrt.system.UInt16: ...
    @_property
    def rumble_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def brush_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def chisel_marker_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def eraser_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def error(cls) -> winrt.system.UInt16: ...
    @_property
    def galaxy_pen_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def hover(cls) -> winrt.system.UInt16: ...
    @_property
    def ink_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def marker_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def pencil_continuous(cls) -> winrt.system.UInt16: ...
    @_property
    def success(cls) -> winrt.system.UInt16: ...

@typing.final
class KnownSimpleHapticsControllerWaveforms(winrt.system.Object, metaclass=KnownSimpleHapticsControllerWaveforms_Static):
    pass

@typing.final
class SimpleHapticsController(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SimpleHapticsController: ...
    @typing.overload
    def send_haptic_feedback(self, feedback: typing.Optional[SimpleHapticsControllerFeedback], /) -> None: ...
    @typing.overload
    def send_haptic_feedback(self, feedback: typing.Optional[SimpleHapticsControllerFeedback], intensity: winrt.system.Double, /) -> None: ...
    def send_haptic_feedback_for_duration(self, feedback: typing.Optional[SimpleHapticsControllerFeedback], intensity: winrt.system.Double, play_duration: datetime.timedelta, /) -> None: ...
    def send_haptic_feedback_for_play_count(self, feedback: typing.Optional[SimpleHapticsControllerFeedback], intensity: winrt.system.Double, play_count: winrt.system.Int32, replay_pause_interval: datetime.timedelta, /) -> None: ...
    def stop_feedback(self) -> None: ...
    @_property
    def id(self) -> str: ...
    @_property
    def is_intensity_supported(self) -> bool: ...
    @_property
    def is_play_count_supported(self) -> bool: ...
    @_property
    def is_play_duration_supported(self) -> bool: ...
    @_property
    def is_replay_pause_interval_supported(self) -> bool: ...
    @_property
    def supported_feedback(self) -> typing.Optional[windows_foundation_collections.IVectorView[SimpleHapticsControllerFeedback]]: ...

@typing.final
class SimpleHapticsControllerFeedback(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SimpleHapticsControllerFeedback: ...
    @_property
    def duration(self) -> datetime.timedelta: ...
    @_property
    def waveform(self) -> winrt.system.UInt16: ...

@typing.final
class VibrationDevice_Static(type):
    def find_all_async(cls) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IVectorView[VibrationDevice]]: ...
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[VibrationDevice]: ...
    def get_default_async(cls) -> windows_foundation.IAsyncOperation[VibrationDevice]: ...
    def get_device_selector(cls) -> str: ...
    def request_access_async(cls) -> windows_foundation.IAsyncOperation[VibrationAccessStatus]: ...

@typing.final
class VibrationDevice(winrt.system.Object, metaclass=VibrationDevice_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VibrationDevice: ...
    @_property
    def id(self) -> str: ...
    @_property
    def simple_haptics_controller(self) -> typing.Optional[SimpleHapticsController]: ...

