# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.2.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.devices.pwm.provider as windows_devices_pwm_provider
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections

from winrt.windows.devices.pwm import PwmPulsePolarity

Self = typing.TypeVar('Self')

@typing.final
class PwmController_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Pwm.PwmController> Windows.Devices.Pwm.PwmController::FromIdAsync(System.String)
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[PwmController]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Foundation.Collections.IVectorView`1<Windows.Devices.Pwm.PwmController>> Windows.Devices.Pwm.PwmController::GetControllersAsync(Windows.Devices.Pwm.Provider.IPwmProvider)
    def get_controllers_async(cls, provider: windows_devices_pwm_provider.IPwmProvider, /) -> windows_foundation.IAsyncOperation[typing.Sequence[PwmController]]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Pwm.PwmController> Windows.Devices.Pwm.PwmController::GetDefaultAsync()
    def get_default_async(cls) -> windows_foundation.IAsyncOperation[PwmController]: ...
    # System.String Windows.Devices.Pwm.PwmController::GetDeviceSelector()
    def get_device_selector(cls) -> str: ...
    # System.String Windows.Devices.Pwm.PwmController::GetDeviceSelector(System.String)
    def get_device_selector_from_friendly_name(cls, friendly_name: str, /) -> str: ...

@typing.final
class PwmController(winrt.system.Object, metaclass=PwmController_Static):
    # Windows.Devices.Pwm.PwmPin Windows.Devices.Pwm.PwmController::OpenPin(System.Int32)
    def open_pin(self, pin_number: winrt.system.Int32, /) -> PwmPin: ...
    # System.Double Windows.Devices.Pwm.PwmController::SetDesiredFrequency(System.Double)
    def set_desired_frequency(self, desired_frequency: winrt.system.Double, /) -> winrt.system.Double: ...
    # System.Double Windows.Devices.Pwm.PwmController::get_ActualFrequency()
    @_property
    def actual_frequency(self) -> winrt.system.Double: ...
    # System.Double Windows.Devices.Pwm.PwmController::get_MaxFrequency()
    @_property
    def max_frequency(self) -> winrt.system.Double: ...
    # System.Double Windows.Devices.Pwm.PwmController::get_MinFrequency()
    @_property
    def min_frequency(self) -> winrt.system.Double: ...
    # System.Int32 Windows.Devices.Pwm.PwmController::get_PinCount()
    @_property
    def pin_count(self) -> winrt.system.Int32: ...

@typing.final
class PwmPin(winrt.system.Object, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Devices.Pwm.PwmPin::Close()
    def close(self) -> None: ...
    # System.Double Windows.Devices.Pwm.PwmPin::GetActiveDutyCyclePercentage()
    def get_active_duty_cycle_percentage(self) -> winrt.system.Double: ...
    # System.Void Windows.Devices.Pwm.PwmPin::SetActiveDutyCyclePercentage(System.Double)
    def set_active_duty_cycle_percentage(self, duty_cycle_percentage: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Devices.Pwm.PwmPin::Start()
    def start(self) -> None: ...
    # System.Void Windows.Devices.Pwm.PwmPin::Stop()
    def stop(self) -> None: ...
    # Windows.Devices.Pwm.PwmPulsePolarity Windows.Devices.Pwm.PwmPin::get_Polarity()
    @_property
    def polarity(self) -> PwmPulsePolarity: ...
    # System.Void Windows.Devices.Pwm.PwmPin::put_Polarity(Windows.Devices.Pwm.PwmPulsePolarity)
    @polarity.setter
    def polarity(self, value: PwmPulsePolarity) -> None: ...
    # Windows.Devices.Pwm.PwmController Windows.Devices.Pwm.PwmPin::get_Controller()
    @_property
    def controller(self) -> PwmController: ...
    # System.Boolean Windows.Devices.Pwm.PwmPin::get_IsStarted()
    @_property
    def is_started(self) -> bool: ...

