# 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.foundation
import winsdk.windows.foundation.collections

class VibrationAccessStatus(enum.IntEnum):
    ALLOWED = 0
    DENIED_BY_USER = 1
    DENIED_BY_SYSTEM = 2
    DENIED_BY_ENERGY_SAVER = 3

Self = typing.TypeVar('Self')

class KnownSimpleHapticsControllerWaveforms(_winrt.Object):
    buzz_continuous: _winrt.UInt16
    click: _winrt.UInt16
    press: _winrt.UInt16
    release: _winrt.UInt16
    rumble_continuous: _winrt.UInt16
    brush_continuous: _winrt.UInt16
    chisel_marker_continuous: _winrt.UInt16
    eraser_continuous: _winrt.UInt16
    error: _winrt.UInt16
    galaxy_pen_continuous: _winrt.UInt16
    hover: _winrt.UInt16
    ink_continuous: _winrt.UInt16
    marker_continuous: _winrt.UInt16
    pencil_continuous: _winrt.UInt16
    success: _winrt.UInt16
    @staticmethod
    def _from(obj: _winrt.Object) -> KnownSimpleHapticsControllerWaveforms: ...

class SimpleHapticsController(_winrt.Object):
    id: str
    is_intensity_supported: _winrt.Boolean
    is_play_count_supported: _winrt.Boolean
    is_play_duration_supported: _winrt.Boolean
    is_replay_pause_interval_supported: _winrt.Boolean
    supported_feedback: typing.Optional[winsdk.windows.foundation.collections.IVectorView[SimpleHapticsControllerFeedback]]
    @staticmethod
    def _from(obj: _winrt.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.Double) -> None: ...
    def send_haptic_feedback_for_duration(self, feedback: typing.Optional[SimpleHapticsControllerFeedback], intensity: _winrt.Double, play_duration: datetime.timedelta) -> None: ...
    def send_haptic_feedback_for_play_count(self, feedback: typing.Optional[SimpleHapticsControllerFeedback], intensity: _winrt.Double, play_count: _winrt.Int32, replay_pause_interval: datetime.timedelta) -> None: ...
    def stop_feedback(self) -> None: ...

class SimpleHapticsControllerFeedback(_winrt.Object):
    duration: datetime.timedelta
    waveform: _winrt.UInt16
    @staticmethod
    def _from(obj: _winrt.Object) -> SimpleHapticsControllerFeedback: ...

class VibrationDevice(_winrt.Object):
    id: str
    simple_haptics_controller: typing.Optional[SimpleHapticsController]
    @staticmethod
    def _from(obj: _winrt.Object) -> VibrationDevice: ...
    @staticmethod
    def find_all_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[VibrationDevice]]: ...
    @staticmethod
    def from_id_async(device_id: str) -> winsdk.windows.foundation.IAsyncOperation[VibrationDevice]: ...
    @staticmethod
    def get_default_async() -> winsdk.windows.foundation.IAsyncOperation[VibrationDevice]: ...
    @staticmethod
    def get_device_selector() -> str: ...
    @staticmethod
    def request_access_async() -> winsdk.windows.foundation.IAsyncOperation[VibrationAccessStatus]: ...

