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

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

from winrt.windows.devices.gpio.provider import ProviderGpioPinDriveMode, ProviderGpioPinEdge, ProviderGpioPinValue, ProviderGpioSharingMode

Self = typing.TypeVar('Self')

class GpioPinProviderValueChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> GpioPinProviderValueChangedEventArgs: ...
    def __new__(cls: typing.Type[GpioPinProviderValueChangedEventArgs], edge: ProviderGpioPinEdge) -> GpioPinProviderValueChangedEventArgs:...
    @_property
    def edge(self) -> ProviderGpioPinEdge: ...

class IGpioControllerProvider(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IGpioControllerProvider: ...
    def open_pin_provider(self, pin: winrt.system.Int32, sharing_mode: ProviderGpioSharingMode, /) -> typing.Optional[IGpioPinProvider]: ...
    @_property
    def pin_count(self) -> winrt.system.Int32: ...

class IGpioPinProvider(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IGpioPinProvider: ...
    def get_drive_mode(self) -> ProviderGpioPinDriveMode: ...
    def is_drive_mode_supported(self, drive_mode: ProviderGpioPinDriveMode, /) -> bool: ...
    def read(self) -> ProviderGpioPinValue: ...
    def set_drive_mode(self, value: ProviderGpioPinDriveMode, /) -> None: ...
    def write(self, value: ProviderGpioPinValue, /) -> None: ...
    def add_value_changed(self, handler: winrt.windows.foundation.TypedEventHandler[IGpioPinProvider, GpioPinProviderValueChangedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_value_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def debounce_timeout(self) -> datetime.timedelta: ...
    @debounce_timeout.setter
    def debounce_timeout(self, value: datetime.timedelta) -> None: ...
    @_property
    def pin_number(self) -> winrt.system.Int32: ...
    @_property
    def sharing_mode(self) -> ProviderGpioSharingMode: ...

class IGpioProvider(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IGpioProvider: ...
    def get_controllers(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[IGpioControllerProvider]]: ...

