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

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property
from abc import abstractmethod

import winrt._winrt
import winrt.system
import winrt.windows.devices.adc.provider as windows_devices_adc_provider
import winrt.windows.devices.gpio.provider as windows_devices_gpio_provider
import winrt.windows.devices.i2c.provider as windows_devices_i2c_provider
import winrt.windows.devices.pwm.provider as windows_devices_pwm_provider
import winrt.windows.devices.spi.provider as windows_devices_spi_provider

Self = typing.TypeVar('Self')

@typing.final
class LowLevelDevicesAggregateProvider(winrt.system.Object, ILowLevelDevicesAggregateProvider):
    def __new__(cls: typing.Type[Self], adc: windows_devices_adc_provider.IAdcControllerProvider, pwm: windows_devices_pwm_provider.IPwmControllerProvider, gpio: windows_devices_gpio_provider.IGpioControllerProvider, i2c: windows_devices_i2c_provider.II2cControllerProvider, spi: windows_devices_spi_provider.ISpiControllerProvider) -> Self: ...
    # Windows.Devices.Adc.Provider.IAdcControllerProvider Windows.Devices.LowLevelDevicesAggregateProvider::get_AdcControllerProvider()
    @_property
    def adc_controller_provider(self) -> windows_devices_adc_provider.IAdcControllerProvider: ...
    # Windows.Devices.Gpio.Provider.IGpioControllerProvider Windows.Devices.LowLevelDevicesAggregateProvider::get_GpioControllerProvider()
    @_property
    def gpio_controller_provider(self) -> windows_devices_gpio_provider.IGpioControllerProvider: ...
    # Windows.Devices.I2c.Provider.II2cControllerProvider Windows.Devices.LowLevelDevicesAggregateProvider::get_I2cControllerProvider()
    @_property
    def i2c_controller_provider(self) -> windows_devices_i2c_provider.II2cControllerProvider: ...
    # Windows.Devices.Pwm.Provider.IPwmControllerProvider Windows.Devices.LowLevelDevicesAggregateProvider::get_PwmControllerProvider()
    @_property
    def pwm_controller_provider(self) -> windows_devices_pwm_provider.IPwmControllerProvider: ...
    # Windows.Devices.Spi.Provider.ISpiControllerProvider Windows.Devices.LowLevelDevicesAggregateProvider::get_SpiControllerProvider()
    @_property
    def spi_controller_provider(self) -> windows_devices_spi_provider.ISpiControllerProvider: ...

@typing.final
class LowLevelDevicesController_Static(winrt._winrt.IInspectable_Static):
    # Windows.Devices.ILowLevelDevicesAggregateProvider Windows.Devices.LowLevelDevicesController::get_DefaultProvider()
    @_property
    def default_provider(cls) -> ILowLevelDevicesAggregateProvider: ...
    # System.Void Windows.Devices.LowLevelDevicesController::put_DefaultProvider(Windows.Devices.ILowLevelDevicesAggregateProvider)
    @default_provider.setter
    def default_provider(cls, value: ILowLevelDevicesAggregateProvider) -> None: ...

@typing.final
class LowLevelDevicesController(winrt.system.Object, metaclass=LowLevelDevicesController_Static):
    pass

@typing.final
class _ILowLevelDevicesAggregateProvider: ...

class ILowLevelDevicesAggregateProvider(winrt._winrt.IInspectable):
    # Windows.Devices.Adc.Provider.IAdcControllerProvider Windows.Devices.ILowLevelDevicesAggregateProvider::get_AdcControllerProvider()
    @_property
    @abstractmethod
    def adc_controller_provider(self) -> windows_devices_adc_provider.IAdcControllerProvider: ...
    # Windows.Devices.Gpio.Provider.IGpioControllerProvider Windows.Devices.ILowLevelDevicesAggregateProvider::get_GpioControllerProvider()
    @_property
    @abstractmethod
    def gpio_controller_provider(self) -> windows_devices_gpio_provider.IGpioControllerProvider: ...
    # Windows.Devices.I2c.Provider.II2cControllerProvider Windows.Devices.ILowLevelDevicesAggregateProvider::get_I2cControllerProvider()
    @_property
    @abstractmethod
    def i2c_controller_provider(self) -> windows_devices_i2c_provider.II2cControllerProvider: ...
    # Windows.Devices.Pwm.Provider.IPwmControllerProvider Windows.Devices.ILowLevelDevicesAggregateProvider::get_PwmControllerProvider()
    @_property
    @abstractmethod
    def pwm_controller_provider(self) -> windows_devices_pwm_provider.IPwmControllerProvider: ...
    # Windows.Devices.Spi.Provider.ISpiControllerProvider Windows.Devices.ILowLevelDevicesAggregateProvider::get_SpiControllerProvider()
    @_property
    @abstractmethod
    def spi_controller_provider(self) -> windows_devices_spi_provider.ISpiControllerProvider: ...

