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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.devices.pwm.provider
except Exception:
    pass

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

class PwmPulsePolarity(enum.IntEnum):
    ACTIVE_HIGH = 0
    ACTIVE_LOW = 1

class PwmController(_winrt.Object):
    actual_frequency: _winrt.Double
    max_frequency: _winrt.Double
    min_frequency: _winrt.Double
    pin_count: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.Object) -> PwmController: ...
    @typing.overload
    @staticmethod
    def from_id_async(device_id: str) -> winsdk.windows.foundation.IAsyncOperation[PwmController]: ...
    @typing.overload
    @staticmethod
    def get_controllers_async(provider: winsdk.windows.devices.pwm.provider.IPwmProvider) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[PwmController]]: ...
    @typing.overload
    @staticmethod
    def get_default_async() -> winsdk.windows.foundation.IAsyncOperation[PwmController]: ...
    @typing.overload
    @staticmethod
    def get_device_selector() -> str: ...
    @typing.overload
    @staticmethod
    def get_device_selector(friendly_name: str) -> str: ...
    @typing.overload
    def open_pin(self, pin_number: _winrt.Int32) -> PwmPin: ...
    @typing.overload
    def set_desired_frequency(self, desired_frequency: _winrt.Double) -> _winrt.Double: ...

class PwmPin(winsdk.windows.foundation.IClosable, _winrt.Object):
    polarity: PwmPulsePolarity
    controller: PwmController
    is_started: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> PwmPin: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def get_active_duty_cycle_percentage(self) -> _winrt.Double: ...
    @typing.overload
    def set_active_duty_cycle_percentage(self, duty_cycle_percentage: _winrt.Double) -> None: ...
    @typing.overload
    def start(self) -> None: ...
    @typing.overload
    def stop(self) -> None: ...

