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

#pragma once

#include "pybase.h"
static_assert(winrt::check_version(PYWINRT_VERSION, "3.2.1"), "Mismatched Py/WinRT headers.");
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Gaming.Input.h>
#include <winrt/Windows.Storage.Streams.h>

#include <winrt/Windows.Gaming.Input.Custom.h>

namespace py::proj::Windows::Gaming::Input::Custom
{
}

namespace py
{
    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Gaming::Input::Custom::GipFirmwareUpdateStatus> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Gaming::Input::Custom::GipMessageClass> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Gaming::Input::Custom::XusbDeviceSubtype> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Gaming::Input::Custom::XusbDeviceType> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Gaming::Input::Custom::GameControllerVersionInfo> = "T{H:major:H:minor:H:build:H:revision:}";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Gaming::Input::Custom::GipFirmwareUpdateProgress> = "T{d:percent_completed:I:current_component_id:}";


    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::GipFirmwareUpdateStatus>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.GipFirmwareUpdateStatus";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "GipFirmwareUpdateStatus";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::GipMessageClass>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.GipMessageClass";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "GipMessageClass";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::XusbDeviceSubtype>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.XusbDeviceSubtype";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "XusbDeviceSubtype";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::XusbDeviceType>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.XusbDeviceType";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "XusbDeviceType";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::GameControllerFactoryManager>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.GameControllerFactoryManager";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "GameControllerFactoryManager";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::GipFirmwareUpdateResult>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.GipFirmwareUpdateResult";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "GipFirmwareUpdateResult";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::GipGameControllerProvider>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.GipGameControllerProvider";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "GipGameControllerProvider";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::HidGameControllerProvider>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.HidGameControllerProvider";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "HidGameControllerProvider";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::XusbGameControllerProvider>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.XusbGameControllerProvider";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "XusbGameControllerProvider";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::ICustomGameControllerFactory>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom._ICustomGameControllerFactory";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "_ICustomGameControllerFactory";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::IGameControllerInputSink>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom._IGameControllerInputSink";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "_IGameControllerInputSink";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::IGameControllerProvider>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom._IGameControllerProvider";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "_IGameControllerProvider";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::IGipGameControllerInputSink>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom._IGipGameControllerInputSink";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "_IGipGameControllerInputSink";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::IHidGameControllerInputSink>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom._IHidGameControllerInputSink";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "_IHidGameControllerInputSink";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::IXusbGameControllerInputSink>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom._IXusbGameControllerInputSink";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "_IXusbGameControllerInputSink";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::GameControllerVersionInfo>
    {
        static constexpr std::string_view from_tuple = "winrt._winrt_windows_gaming_input_custom.GameControllerVersionInfo_from_tuple";
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.GameControllerVersionInfo";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "GameControllerVersionInfo";
    };

    template<>
    struct py_type<winrt::Windows::Gaming::Input::Custom::GipFirmwareUpdateProgress>
    {
        static constexpr std::string_view from_tuple = "winrt._winrt_windows_gaming_input_custom.GipFirmwareUpdateProgress_from_tuple";
        static constexpr std::string_view qualified_name = "winrt.windows.gaming.input.custom.GipFirmwareUpdateProgress";
        static constexpr const char* module_name = "winrt.windows.gaming.input.custom";
        static constexpr const char* type_name = "GipFirmwareUpdateProgress";
    };
}

#if __has_include("py.Windows.Foundation.h")
#include "py.Windows.Foundation.h"
#endif

#if __has_include("py.Windows.Gaming.Input.h")
#include "py.Windows.Gaming.Input.h"
#endif

#if __has_include("py.Windows.Storage.Streams.h")
#include "py.Windows.Storage.Streams.h"
#endif

namespace py::impl::Windows::Gaming::Input::Custom
{
}

namespace py::wrapper::Windows::Gaming::Input::Custom
{
    using GameControllerFactoryManager = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::GameControllerFactoryManager>;
    using GipFirmwareUpdateResult = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::GipFirmwareUpdateResult>;
    using GipGameControllerProvider = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::GipGameControllerProvider>;
    using HidGameControllerProvider = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::HidGameControllerProvider>;
    using XusbGameControllerProvider = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::XusbGameControllerProvider>;
    using ICustomGameControllerFactory = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::ICustomGameControllerFactory>;
    using IGameControllerInputSink = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::IGameControllerInputSink>;
    using IGameControllerProvider = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::IGameControllerProvider>;
    using IGipGameControllerInputSink = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::IGipGameControllerInputSink>;
    using IHidGameControllerInputSink = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::IHidGameControllerInputSink>;
    using IXusbGameControllerInputSink = py::winrt_wrapper<winrt::Windows::Gaming::Input::Custom::IXusbGameControllerInputSink>;
    using GameControllerVersionInfo = py::winrt_struct_wrapper<winrt::Windows::Gaming::Input::Custom::GameControllerVersionInfo>;
    using GipFirmwareUpdateProgress = py::winrt_struct_wrapper<winrt::Windows::Gaming::Input::Custom::GipFirmwareUpdateProgress>;
}

namespace py
{
}
