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

#pragma once

#include "pybase.h"

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

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

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

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

#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Networking.h>
#include <winrt/Windows.Storage.Streams.h>

#include <winrt/Windows.Security.Cryptography.Certificates.h>

namespace py::proj::Windows::Security::Cryptography::Certificates
{}

namespace py::impl::Windows::Security::Cryptography::Certificates
{}

namespace py::wrapper::Windows::Security::Cryptography::Certificates
{
    using Certificate = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::Certificate>;
    using CertificateChain = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateChain>;
    using CertificateEnrollmentManager = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateEnrollmentManager>;
    using CertificateExtension = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateExtension>;
    using CertificateKeyUsages = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateKeyUsages>;
    using CertificateQuery = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateQuery>;
    using CertificateRequestProperties = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateRequestProperties>;
    using CertificateStore = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateStore>;
    using CertificateStores = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CertificateStores>;
    using ChainBuildingParameters = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::ChainBuildingParameters>;
    using ChainValidationParameters = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::ChainValidationParameters>;
    using CmsAttachedSignature = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CmsAttachedSignature>;
    using CmsDetachedSignature = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CmsDetachedSignature>;
    using CmsSignerInfo = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CmsSignerInfo>;
    using CmsTimestampInfo = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::CmsTimestampInfo>;
    using KeyAlgorithmNames = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::KeyAlgorithmNames>;
    using KeyAttestationHelper = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::KeyAttestationHelper>;
    using KeyStorageProviderNames = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::KeyStorageProviderNames>;
    using PfxImportParameters = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::PfxImportParameters>;
    using StandardCertificateStoreNames = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::StandardCertificateStoreNames>;
    using SubjectAlternativeNameInfo = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::SubjectAlternativeNameInfo>;
    using UserCertificateEnrollmentManager = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::UserCertificateEnrollmentManager>;
    using UserCertificateStore = py::winrt_wrapper<winrt::Windows::Security::Cryptography::Certificates::UserCertificateStore>;
}

namespace py
{
    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::CertificateChainPolicy> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::EnrollKeyUsages> = "I";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::ExportOption> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::InstallOptions> = "I";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::KeyProtectionLevel> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::KeySize> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> = "i";


    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::CertificateChainPolicy>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::EnrollKeyUsages>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::ExportOption>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::InstallOptions>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::KeyProtectionLevel>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::KeySize>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::Certificate>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateChain>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateEnrollmentManager>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateExtension>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateKeyUsages>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateQuery>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateRequestProperties>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateStore>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CertificateStores>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::ChainBuildingParameters>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::ChainValidationParameters>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CmsAttachedSignature>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CmsDetachedSignature>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CmsSignerInfo>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::CmsTimestampInfo>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::KeyAlgorithmNames>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::KeyAttestationHelper>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::KeyStorageProviderNames>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::PfxImportParameters>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::StandardCertificateStoreNames>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::SubjectAlternativeNameInfo>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::UserCertificateEnrollmentManager>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Security::Cryptography::Certificates::UserCertificateStore>
    {
        static PyTypeObject* get_python_type() noexcept;
    };
}
