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

#include "pybase.h"
#include "py.Windows.Graphics.Printing.PrintSupport.h"

PyTypeObject* py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession>::python_type;
PyTypeObject* py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionTriggerDetails>::python_type;
PyTypeObject* py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs>::python_type;
PyTypeObject* py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs>::python_type;
PyTypeObject* py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSessionInfo>::python_type;
PyTypeObject* py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs>::python_type;
PyTypeObject* py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession>::python_type;

namespace py::cpp::Windows::Graphics::Printing::PrintSupport
{
    // ----- PrintSupportExtensionSession class --------------------
    constexpr const char* const _type_name_PrintSupportExtensionSession = "PrintSupportExtensionSession";

    static PyObject* _new_PrintSupportExtensionSession(PyTypeObject* type, PyObject* args, PyObject* kwds) noexcept
    {
        py::set_invalid_activation_error(_type_name_PrintSupportExtensionSession);
        return nullptr;
    }

    static void _dealloc_PrintSupportExtensionSession(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession* self)
    {
        auto hash_value = std::hash<winrt::Windows::Foundation::IInspectable>{}(self->obj);
        py::wrapped_instance(hash_value, nullptr);
        self->obj = nullptr;
    }

    static PyObject* PrintSupportExtensionSession_Start(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 0)
        {
            try
            {
                self->obj.Start();
                Py_RETURN_NONE;
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* PrintSupportExtensionSession_get_Printer(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.Printer());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportExtensionSession_add_PrintDeviceCapabilitiesChanged(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession* self, PyObject* arg) noexcept
    {
        try
        {
            auto param0 = py::convert_to<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession, winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs>>(arg);

            return py::convert(self->obj.PrintDeviceCapabilitiesChanged(param0));
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportExtensionSession_remove_PrintDeviceCapabilitiesChanged(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession* self, PyObject* arg) noexcept
    {
        try
        {
            auto param0 = py::convert_to<winrt::event_token>(arg);

            self->obj.PrintDeviceCapabilitiesChanged(param0);
            Py_RETURN_NONE;
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportExtensionSession_add_PrintTicketValidationRequested(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession* self, PyObject* arg) noexcept
    {
        try
        {
            auto param0 = py::convert_to<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession, winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs>>(arg);

            return py::convert(self->obj.PrintTicketValidationRequested(param0));
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportExtensionSession_remove_PrintTicketValidationRequested(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession* self, PyObject* arg) noexcept
    {
        try
        {
            auto param0 = py::convert_to<winrt::event_token>(arg);

            self->obj.PrintTicketValidationRequested(param0);
            Py_RETURN_NONE;
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* _from_PrintSupportExtensionSession(PyObject* /*unused*/, PyObject* arg) noexcept
    {
        try
        {
            auto return_value = py::convert_to<winrt::Windows::Foundation::IInspectable>(arg);
            return py::convert(return_value.as<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession>());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyMethodDef _methods_PrintSupportExtensionSession[] = {
        { "start", reinterpret_cast<PyCFunction>(PrintSupportExtensionSession_Start), METH_VARARGS, nullptr },
        { "add_print_device_capabilities_changed", reinterpret_cast<PyCFunction>(PrintSupportExtensionSession_add_PrintDeviceCapabilitiesChanged), METH_O, nullptr },
        { "remove_print_device_capabilities_changed", reinterpret_cast<PyCFunction>(PrintSupportExtensionSession_remove_PrintDeviceCapabilitiesChanged), METH_O, nullptr },
        { "add_print_ticket_validation_requested", reinterpret_cast<PyCFunction>(PrintSupportExtensionSession_add_PrintTicketValidationRequested), METH_O, nullptr },
        { "remove_print_ticket_validation_requested", reinterpret_cast<PyCFunction>(PrintSupportExtensionSession_remove_PrintTicketValidationRequested), METH_O, nullptr },
        { "_from", reinterpret_cast<PyCFunction>(_from_PrintSupportExtensionSession), METH_O | METH_STATIC, nullptr },
        { }
    };

    static PyGetSetDef _getset_PrintSupportExtensionSession[] = {
        { "printer", reinterpret_cast<getter>(PrintSupportExtensionSession_get_Printer), nullptr, nullptr, nullptr },
        { }
    };

    static PyType_Slot _type_slots_PrintSupportExtensionSession[] = 
    {
        { Py_tp_new, _new_PrintSupportExtensionSession },
        { Py_tp_dealloc, _dealloc_PrintSupportExtensionSession },
        { Py_tp_methods, _methods_PrintSupportExtensionSession },
        { Py_tp_getset, _getset_PrintSupportExtensionSession },
        { },
    };

    static PyType_Spec _type_spec_PrintSupportExtensionSession =
    {
        "_winsdk_Windows_Graphics_Printing_PrintSupport.PrintSupportExtensionSession",
        sizeof(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession),
        0,
        Py_TPFLAGS_DEFAULT,
        _type_slots_PrintSupportExtensionSession
    };

    // ----- PrintSupportExtensionTriggerDetails class --------------------
    constexpr const char* const _type_name_PrintSupportExtensionTriggerDetails = "PrintSupportExtensionTriggerDetails";

    static PyObject* _new_PrintSupportExtensionTriggerDetails(PyTypeObject* type, PyObject* args, PyObject* kwds) noexcept
    {
        py::set_invalid_activation_error(_type_name_PrintSupportExtensionTriggerDetails);
        return nullptr;
    }

    static void _dealloc_PrintSupportExtensionTriggerDetails(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionTriggerDetails* self)
    {
        auto hash_value = std::hash<winrt::Windows::Foundation::IInspectable>{}(self->obj);
        py::wrapped_instance(hash_value, nullptr);
        self->obj = nullptr;
    }

    static PyObject* PrintSupportExtensionTriggerDetails_get_Session(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionTriggerDetails* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.Session());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* _from_PrintSupportExtensionTriggerDetails(PyObject* /*unused*/, PyObject* arg) noexcept
    {
        try
        {
            auto return_value = py::convert_to<winrt::Windows::Foundation::IInspectable>(arg);
            return py::convert(return_value.as<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionTriggerDetails>());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyMethodDef _methods_PrintSupportExtensionTriggerDetails[] = {
        { "_from", reinterpret_cast<PyCFunction>(_from_PrintSupportExtensionTriggerDetails), METH_O | METH_STATIC, nullptr },
        { }
    };

    static PyGetSetDef _getset_PrintSupportExtensionTriggerDetails[] = {
        { "session", reinterpret_cast<getter>(PrintSupportExtensionTriggerDetails_get_Session), nullptr, nullptr, nullptr },
        { }
    };

    static PyType_Slot _type_slots_PrintSupportExtensionTriggerDetails[] = 
    {
        { Py_tp_new, _new_PrintSupportExtensionTriggerDetails },
        { Py_tp_dealloc, _dealloc_PrintSupportExtensionTriggerDetails },
        { Py_tp_methods, _methods_PrintSupportExtensionTriggerDetails },
        { Py_tp_getset, _getset_PrintSupportExtensionTriggerDetails },
        { },
    };

    static PyType_Spec _type_spec_PrintSupportExtensionTriggerDetails =
    {
        "_winsdk_Windows_Graphics_Printing_PrintSupport.PrintSupportExtensionTriggerDetails",
        sizeof(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionTriggerDetails),
        0,
        Py_TPFLAGS_DEFAULT,
        _type_slots_PrintSupportExtensionTriggerDetails
    };

    // ----- PrintSupportPrintDeviceCapabilitiesChangedEventArgs class --------------------
    constexpr const char* const _type_name_PrintSupportPrintDeviceCapabilitiesChangedEventArgs = "PrintSupportPrintDeviceCapabilitiesChangedEventArgs";

    static PyObject* _new_PrintSupportPrintDeviceCapabilitiesChangedEventArgs(PyTypeObject* type, PyObject* args, PyObject* kwds) noexcept
    {
        py::set_invalid_activation_error(_type_name_PrintSupportPrintDeviceCapabilitiesChangedEventArgs);
        return nullptr;
    }

    static void _dealloc_PrintSupportPrintDeviceCapabilitiesChangedEventArgs(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs* self)
    {
        auto hash_value = std::hash<winrt::Windows::Foundation::IInspectable>{}(self->obj);
        py::wrapped_instance(hash_value, nullptr);
        self->obj = nullptr;
    }

    static PyObject* PrintSupportPrintDeviceCapabilitiesChangedEventArgs_GetCurrentPrintDeviceCapabilities(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 0)
        {
            try
            {
                return py::convert(self->obj.GetCurrentPrintDeviceCapabilities());
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* PrintSupportPrintDeviceCapabilitiesChangedEventArgs_GetDeferral(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 0)
        {
            try
            {
                return py::convert(self->obj.GetDeferral());
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* PrintSupportPrintDeviceCapabilitiesChangedEventArgs_UpdatePrintDeviceCapabilities(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 1)
        {
            try
            {
                auto param0 = py::convert_to<winrt::Windows::Data::Xml::Dom::XmlDocument>(args, 0);

                self->obj.UpdatePrintDeviceCapabilities(param0);
                Py_RETURN_NONE;
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* _from_PrintSupportPrintDeviceCapabilitiesChangedEventArgs(PyObject* /*unused*/, PyObject* arg) noexcept
    {
        try
        {
            auto return_value = py::convert_to<winrt::Windows::Foundation::IInspectable>(arg);
            return py::convert(return_value.as<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs>());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyMethodDef _methods_PrintSupportPrintDeviceCapabilitiesChangedEventArgs[] = {
        { "get_current_print_device_capabilities", reinterpret_cast<PyCFunction>(PrintSupportPrintDeviceCapabilitiesChangedEventArgs_GetCurrentPrintDeviceCapabilities), METH_VARARGS, nullptr },
        { "get_deferral", reinterpret_cast<PyCFunction>(PrintSupportPrintDeviceCapabilitiesChangedEventArgs_GetDeferral), METH_VARARGS, nullptr },
        { "update_print_device_capabilities", reinterpret_cast<PyCFunction>(PrintSupportPrintDeviceCapabilitiesChangedEventArgs_UpdatePrintDeviceCapabilities), METH_VARARGS, nullptr },
        { "_from", reinterpret_cast<PyCFunction>(_from_PrintSupportPrintDeviceCapabilitiesChangedEventArgs), METH_O | METH_STATIC, nullptr },
        { }
    };

    static PyGetSetDef _getset_PrintSupportPrintDeviceCapabilitiesChangedEventArgs[] = {
        { }
    };

    static PyType_Slot _type_slots_PrintSupportPrintDeviceCapabilitiesChangedEventArgs[] = 
    {
        { Py_tp_new, _new_PrintSupportPrintDeviceCapabilitiesChangedEventArgs },
        { Py_tp_dealloc, _dealloc_PrintSupportPrintDeviceCapabilitiesChangedEventArgs },
        { Py_tp_methods, _methods_PrintSupportPrintDeviceCapabilitiesChangedEventArgs },
        { Py_tp_getset, _getset_PrintSupportPrintDeviceCapabilitiesChangedEventArgs },
        { },
    };

    static PyType_Spec _type_spec_PrintSupportPrintDeviceCapabilitiesChangedEventArgs =
    {
        "_winsdk_Windows_Graphics_Printing_PrintSupport.PrintSupportPrintDeviceCapabilitiesChangedEventArgs",
        sizeof(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs),
        0,
        Py_TPFLAGS_DEFAULT,
        _type_slots_PrintSupportPrintDeviceCapabilitiesChangedEventArgs
    };

    // ----- PrintSupportPrintTicketValidationRequestedEventArgs class --------------------
    constexpr const char* const _type_name_PrintSupportPrintTicketValidationRequestedEventArgs = "PrintSupportPrintTicketValidationRequestedEventArgs";

    static PyObject* _new_PrintSupportPrintTicketValidationRequestedEventArgs(PyTypeObject* type, PyObject* args, PyObject* kwds) noexcept
    {
        py::set_invalid_activation_error(_type_name_PrintSupportPrintTicketValidationRequestedEventArgs);
        return nullptr;
    }

    static void _dealloc_PrintSupportPrintTicketValidationRequestedEventArgs(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs* self)
    {
        auto hash_value = std::hash<winrt::Windows::Foundation::IInspectable>{}(self->obj);
        py::wrapped_instance(hash_value, nullptr);
        self->obj = nullptr;
    }

    static PyObject* PrintSupportPrintTicketValidationRequestedEventArgs_GetDeferral(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 0)
        {
            try
            {
                return py::convert(self->obj.GetDeferral());
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* PrintSupportPrintTicketValidationRequestedEventArgs_SetPrintTicketValidationStatus(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 1)
        {
            try
            {
                auto param0 = py::convert_to<winrt::Windows::Graphics::Printing::PrintSupport::WorkflowPrintTicketValidationStatus>(args, 0);

                self->obj.SetPrintTicketValidationStatus(param0);
                Py_RETURN_NONE;
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* PrintSupportPrintTicketValidationRequestedEventArgs_get_PrintTicket(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.PrintTicket());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* _from_PrintSupportPrintTicketValidationRequestedEventArgs(PyObject* /*unused*/, PyObject* arg) noexcept
    {
        try
        {
            auto return_value = py::convert_to<winrt::Windows::Foundation::IInspectable>(arg);
            return py::convert(return_value.as<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs>());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyMethodDef _methods_PrintSupportPrintTicketValidationRequestedEventArgs[] = {
        { "get_deferral", reinterpret_cast<PyCFunction>(PrintSupportPrintTicketValidationRequestedEventArgs_GetDeferral), METH_VARARGS, nullptr },
        { "set_print_ticket_validation_status", reinterpret_cast<PyCFunction>(PrintSupportPrintTicketValidationRequestedEventArgs_SetPrintTicketValidationStatus), METH_VARARGS, nullptr },
        { "_from", reinterpret_cast<PyCFunction>(_from_PrintSupportPrintTicketValidationRequestedEventArgs), METH_O | METH_STATIC, nullptr },
        { }
    };

    static PyGetSetDef _getset_PrintSupportPrintTicketValidationRequestedEventArgs[] = {
        { "print_ticket", reinterpret_cast<getter>(PrintSupportPrintTicketValidationRequestedEventArgs_get_PrintTicket), nullptr, nullptr, nullptr },
        { }
    };

    static PyType_Slot _type_slots_PrintSupportPrintTicketValidationRequestedEventArgs[] = 
    {
        { Py_tp_new, _new_PrintSupportPrintTicketValidationRequestedEventArgs },
        { Py_tp_dealloc, _dealloc_PrintSupportPrintTicketValidationRequestedEventArgs },
        { Py_tp_methods, _methods_PrintSupportPrintTicketValidationRequestedEventArgs },
        { Py_tp_getset, _getset_PrintSupportPrintTicketValidationRequestedEventArgs },
        { },
    };

    static PyType_Spec _type_spec_PrintSupportPrintTicketValidationRequestedEventArgs =
    {
        "_winsdk_Windows_Graphics_Printing_PrintSupport.PrintSupportPrintTicketValidationRequestedEventArgs",
        sizeof(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs),
        0,
        Py_TPFLAGS_DEFAULT,
        _type_slots_PrintSupportPrintTicketValidationRequestedEventArgs
    };

    // ----- PrintSupportSessionInfo class --------------------
    constexpr const char* const _type_name_PrintSupportSessionInfo = "PrintSupportSessionInfo";

    static PyObject* _new_PrintSupportSessionInfo(PyTypeObject* type, PyObject* args, PyObject* kwds) noexcept
    {
        py::set_invalid_activation_error(_type_name_PrintSupportSessionInfo);
        return nullptr;
    }

    static void _dealloc_PrintSupportSessionInfo(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSessionInfo* self)
    {
        auto hash_value = std::hash<winrt::Windows::Foundation::IInspectable>{}(self->obj);
        py::wrapped_instance(hash_value, nullptr);
        self->obj = nullptr;
    }

    static PyObject* PrintSupportSessionInfo_get_Printer(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSessionInfo* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.Printer());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSessionInfo_get_SourceAppInfo(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSessionInfo* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.SourceAppInfo());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* _from_PrintSupportSessionInfo(PyObject* /*unused*/, PyObject* arg) noexcept
    {
        try
        {
            auto return_value = py::convert_to<winrt::Windows::Foundation::IInspectable>(arg);
            return py::convert(return_value.as<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSessionInfo>());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyMethodDef _methods_PrintSupportSessionInfo[] = {
        { "_from", reinterpret_cast<PyCFunction>(_from_PrintSupportSessionInfo), METH_O | METH_STATIC, nullptr },
        { }
    };

    static PyGetSetDef _getset_PrintSupportSessionInfo[] = {
        { "printer", reinterpret_cast<getter>(PrintSupportSessionInfo_get_Printer), nullptr, nullptr, nullptr },
        { "source_app_info", reinterpret_cast<getter>(PrintSupportSessionInfo_get_SourceAppInfo), nullptr, nullptr, nullptr },
        { }
    };

    static PyType_Slot _type_slots_PrintSupportSessionInfo[] = 
    {
        { Py_tp_new, _new_PrintSupportSessionInfo },
        { Py_tp_dealloc, _dealloc_PrintSupportSessionInfo },
        { Py_tp_methods, _methods_PrintSupportSessionInfo },
        { Py_tp_getset, _getset_PrintSupportSessionInfo },
        { },
    };

    static PyType_Spec _type_spec_PrintSupportSessionInfo =
    {
        "_winsdk_Windows_Graphics_Printing_PrintSupport.PrintSupportSessionInfo",
        sizeof(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSessionInfo),
        0,
        Py_TPFLAGS_DEFAULT,
        _type_slots_PrintSupportSessionInfo
    };

    // ----- PrintSupportSettingsActivatedEventArgs class --------------------
    constexpr const char* const _type_name_PrintSupportSettingsActivatedEventArgs = "PrintSupportSettingsActivatedEventArgs";

    static PyObject* _new_PrintSupportSettingsActivatedEventArgs(PyTypeObject* type, PyObject* args, PyObject* kwds) noexcept
    {
        py::set_invalid_activation_error(_type_name_PrintSupportSettingsActivatedEventArgs);
        return nullptr;
    }

    static void _dealloc_PrintSupportSettingsActivatedEventArgs(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs* self)
    {
        auto hash_value = std::hash<winrt::Windows::Foundation::IInspectable>{}(self->obj);
        py::wrapped_instance(hash_value, nullptr);
        self->obj = nullptr;
    }

    static PyObject* PrintSupportSettingsActivatedEventArgs_GetDeferral(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 0)
        {
            try
            {
                return py::convert(self->obj.GetDeferral());
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsActivatedEventArgs_get_Kind(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.Kind());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsActivatedEventArgs_get_PreviousExecutionState(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.PreviousExecutionState());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsActivatedEventArgs_get_SplashScreen(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.SplashScreen());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsActivatedEventArgs_get_User(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.User());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsActivatedEventArgs_get_Session(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.Session());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* _from_PrintSupportSettingsActivatedEventArgs(PyObject* /*unused*/, PyObject* arg) noexcept
    {
        try
        {
            auto return_value = py::convert_to<winrt::Windows::Foundation::IInspectable>(arg);
            return py::convert(return_value.as<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs>());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyMethodDef _methods_PrintSupportSettingsActivatedEventArgs[] = {
        { "get_deferral", reinterpret_cast<PyCFunction>(PrintSupportSettingsActivatedEventArgs_GetDeferral), METH_VARARGS, nullptr },
        { "_from", reinterpret_cast<PyCFunction>(_from_PrintSupportSettingsActivatedEventArgs), METH_O | METH_STATIC, nullptr },
        { }
    };

    static PyGetSetDef _getset_PrintSupportSettingsActivatedEventArgs[] = {
        { "kind", reinterpret_cast<getter>(PrintSupportSettingsActivatedEventArgs_get_Kind), nullptr, nullptr, nullptr },
        { "previous_execution_state", reinterpret_cast<getter>(PrintSupportSettingsActivatedEventArgs_get_PreviousExecutionState), nullptr, nullptr, nullptr },
        { "splash_screen", reinterpret_cast<getter>(PrintSupportSettingsActivatedEventArgs_get_SplashScreen), nullptr, nullptr, nullptr },
        { "user", reinterpret_cast<getter>(PrintSupportSettingsActivatedEventArgs_get_User), nullptr, nullptr, nullptr },
        { "session", reinterpret_cast<getter>(PrintSupportSettingsActivatedEventArgs_get_Session), nullptr, nullptr, nullptr },
        { }
    };

    static PyType_Slot _type_slots_PrintSupportSettingsActivatedEventArgs[] = 
    {
        { Py_tp_new, _new_PrintSupportSettingsActivatedEventArgs },
        { Py_tp_dealloc, _dealloc_PrintSupportSettingsActivatedEventArgs },
        { Py_tp_methods, _methods_PrintSupportSettingsActivatedEventArgs },
        { Py_tp_getset, _getset_PrintSupportSettingsActivatedEventArgs },
        { },
    };

    static PyType_Spec _type_spec_PrintSupportSettingsActivatedEventArgs =
    {
        "_winsdk_Windows_Graphics_Printing_PrintSupport.PrintSupportSettingsActivatedEventArgs",
        sizeof(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs),
        0,
        Py_TPFLAGS_DEFAULT,
        _type_slots_PrintSupportSettingsActivatedEventArgs
    };

    // ----- PrintSupportSettingsUISession class --------------------
    constexpr const char* const _type_name_PrintSupportSettingsUISession = "PrintSupportSettingsUISession";

    static PyObject* _new_PrintSupportSettingsUISession(PyTypeObject* type, PyObject* args, PyObject* kwds) noexcept
    {
        py::set_invalid_activation_error(_type_name_PrintSupportSettingsUISession);
        return nullptr;
    }

    static void _dealloc_PrintSupportSettingsUISession(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession* self)
    {
        auto hash_value = std::hash<winrt::Windows::Foundation::IInspectable>{}(self->obj);
        py::wrapped_instance(hash_value, nullptr);
        self->obj = nullptr;
    }

    static PyObject* PrintSupportSettingsUISession_UpdatePrintTicket(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession* self, PyObject* args) noexcept
    {
        Py_ssize_t arg_count = PyTuple_Size(args);

        if (arg_count == 1)
        {
            try
            {
                auto param0 = py::convert_to<winrt::Windows::Graphics::Printing::PrintTicket::WorkflowPrintTicket>(args, 0);

                self->obj.UpdatePrintTicket(param0);
                Py_RETURN_NONE;
            }
            catch (...)
            {
                py::to_PyErr();
                return nullptr;
            }
        }
        else
        {
            py::set_invalid_arg_count_error(arg_count);
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsUISession_get_DocumentTitle(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.DocumentTitle());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsUISession_get_LaunchKind(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.LaunchKind());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsUISession_get_SessionInfo(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.SessionInfo());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* PrintSupportSettingsUISession_get_SessionPrintTicket(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession* self, void* /*unused*/) noexcept
    {
        try
        {
            return py::convert(self->obj.SessionPrintTicket());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyObject* _from_PrintSupportSettingsUISession(PyObject* /*unused*/, PyObject* arg) noexcept
    {
        try
        {
            auto return_value = py::convert_to<winrt::Windows::Foundation::IInspectable>(arg);
            return py::convert(return_value.as<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession>());
        }
        catch (...)
        {
            py::to_PyErr();
            return nullptr;
        }
    }

    static PyMethodDef _methods_PrintSupportSettingsUISession[] = {
        { "update_print_ticket", reinterpret_cast<PyCFunction>(PrintSupportSettingsUISession_UpdatePrintTicket), METH_VARARGS, nullptr },
        { "_from", reinterpret_cast<PyCFunction>(_from_PrintSupportSettingsUISession), METH_O | METH_STATIC, nullptr },
        { }
    };

    static PyGetSetDef _getset_PrintSupportSettingsUISession[] = {
        { "document_title", reinterpret_cast<getter>(PrintSupportSettingsUISession_get_DocumentTitle), nullptr, nullptr, nullptr },
        { "launch_kind", reinterpret_cast<getter>(PrintSupportSettingsUISession_get_LaunchKind), nullptr, nullptr, nullptr },
        { "session_info", reinterpret_cast<getter>(PrintSupportSettingsUISession_get_SessionInfo), nullptr, nullptr, nullptr },
        { "session_print_ticket", reinterpret_cast<getter>(PrintSupportSettingsUISession_get_SessionPrintTicket), nullptr, nullptr, nullptr },
        { }
    };

    static PyType_Slot _type_slots_PrintSupportSettingsUISession[] = 
    {
        { Py_tp_new, _new_PrintSupportSettingsUISession },
        { Py_tp_dealloc, _dealloc_PrintSupportSettingsUISession },
        { Py_tp_methods, _methods_PrintSupportSettingsUISession },
        { Py_tp_getset, _getset_PrintSupportSettingsUISession },
        { },
    };

    static PyType_Spec _type_spec_PrintSupportSettingsUISession =
    {
        "_winsdk_Windows_Graphics_Printing_PrintSupport.PrintSupportSettingsUISession",
        sizeof(py::wrapper::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession),
        0,
        Py_TPFLAGS_DEFAULT,
        _type_slots_PrintSupportSettingsUISession
    };

    // ----- Windows.Graphics.Printing.PrintSupport Initialization --------------------
    static int module_exec(PyObject* module) noexcept
    {
        try
        {
            py::pyobj_handle bases { PyTuple_Pack(1, py::winrt_type<py::Object>::python_type) };

            py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionSession>::python_type = py::register_python_type(module, _type_name_PrintSupportExtensionSession, &_type_spec_PrintSupportExtensionSession, bases.get());
            py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportExtensionTriggerDetails>::python_type = py::register_python_type(module, _type_name_PrintSupportExtensionTriggerDetails, &_type_spec_PrintSupportExtensionTriggerDetails, bases.get());
            py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintDeviceCapabilitiesChangedEventArgs>::python_type = py::register_python_type(module, _type_name_PrintSupportPrintDeviceCapabilitiesChangedEventArgs, &_type_spec_PrintSupportPrintDeviceCapabilitiesChangedEventArgs, bases.get());
            py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportPrintTicketValidationRequestedEventArgs>::python_type = py::register_python_type(module, _type_name_PrintSupportPrintTicketValidationRequestedEventArgs, &_type_spec_PrintSupportPrintTicketValidationRequestedEventArgs, bases.get());
            py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSessionInfo>::python_type = py::register_python_type(module, _type_name_PrintSupportSessionInfo, &_type_spec_PrintSupportSessionInfo, bases.get());
            py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsActivatedEventArgs>::python_type = py::register_python_type(module, _type_name_PrintSupportSettingsActivatedEventArgs, &_type_spec_PrintSupportSettingsActivatedEventArgs, bases.get());
            py::winrt_type<winrt::Windows::Graphics::Printing::PrintSupport::PrintSupportSettingsUISession>::python_type = py::register_python_type(module, _type_name_PrintSupportSettingsUISession, &_type_spec_PrintSupportSettingsUISession, bases.get());

            return 0;
        }
        catch (...)
        {
            py::to_PyErr();
            return -1;
        }
    }

    static PyModuleDef_Slot module_slots[] = {{Py_mod_exec, module_exec}, {}};

    PyDoc_STRVAR(module_doc, "Windows.Graphics.Printing.PrintSupport");

    static PyModuleDef module_def
        = {PyModuleDef_HEAD_INIT,
           "_winsdk_Windows_Graphics_Printing_PrintSupport",
           module_doc,
           0,
           nullptr,
           module_slots,
           nullptr,
           nullptr,
           nullptr};
} // py::cpp::Windows::Graphics::Printing::PrintSupport

PyMODINIT_FUNC
PyInit__winsdk_Windows_Graphics_Printing_PrintSupport (void) noexcept
{
    return PyModuleDef_Init(&py::cpp::Windows::Graphics::Printing::PrintSupport::module_def);
}
