// C++/WinRT v2.0.190620.2

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#ifndef WINRT_Windows_Devices_Spi_2_H
#define WINRT_Windows_Devices_Spi_2_H
#include "winrt/impl/Windows.Devices.Spi.Provider.1.h"
#include "winrt/impl/Windows.Foundation.1.h"
#include "winrt/impl/Windows.Devices.Spi.1.h"
namespace winrt::Windows::Devices::Spi
{
    struct __declspec(empty_bases) SpiBusInfo : Windows::Devices::Spi::ISpiBusInfo
    {
        SpiBusInfo(std::nullptr_t) noexcept {}
        SpiBusInfo(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Devices::Spi::ISpiBusInfo(ptr, take_ownership_from_abi) {}
    };
    struct __declspec(empty_bases) SpiConnectionSettings : Windows::Devices::Spi::ISpiConnectionSettings
    {
        SpiConnectionSettings(std::nullptr_t) noexcept {}
        SpiConnectionSettings(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Devices::Spi::ISpiConnectionSettings(ptr, take_ownership_from_abi) {}
        SpiConnectionSettings(int32_t chipSelectLine);
    };
    struct __declspec(empty_bases) SpiController : Windows::Devices::Spi::ISpiController
    {
        SpiController(std::nullptr_t) noexcept {}
        SpiController(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Devices::Spi::ISpiController(ptr, take_ownership_from_abi) {}
        static auto GetDefaultAsync();
        static auto GetControllersAsync(Windows::Devices::Spi::Provider::ISpiProvider const& provider);
    };
    struct __declspec(empty_bases) SpiDevice : Windows::Devices::Spi::ISpiDevice
    {
        SpiDevice(std::nullptr_t) noexcept {}
        SpiDevice(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Devices::Spi::ISpiDevice(ptr, take_ownership_from_abi) {}
        static auto GetDeviceSelector();
        static auto GetDeviceSelector(param::hstring const& friendlyName);
        static auto GetBusInfo(param::hstring const& busId);
        static auto FromIdAsync(param::hstring const& busId, Windows::Devices::Spi::SpiConnectionSettings const& settings);
    };
}
#endif
