// 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.Data.Text.h")
#include "py.Windows.Data.Text.h"
#endif

#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.Storage.h")
#include "py.Windows.Storage.h"
#endif

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

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

#include <winrt/Windows.Data.Text.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Storage.h>
#include <winrt/Windows.Storage.FileProperties.h>
#include <winrt/Windows.Storage.Streams.h>

#include <winrt/Windows.Storage.Search.h>

namespace py::proj::Windows::Storage::Search
{}

namespace py::impl::Windows::Storage::Search
{}

namespace py::wrapper::Windows::Storage::Search
{
    using ContentIndexer = py::winrt_wrapper<winrt::Windows::Storage::Search::ContentIndexer>;
    using ContentIndexerQuery = py::winrt_wrapper<winrt::Windows::Storage::Search::ContentIndexerQuery>;
    using IndexableContent = py::winrt_wrapper<winrt::Windows::Storage::Search::IndexableContent>;
    using QueryOptions = py::winrt_wrapper<winrt::Windows::Storage::Search::QueryOptions>;
    using SortEntryVector = py::winrt_wrapper<winrt::Windows::Storage::Search::SortEntryVector>;
    using StorageFileQueryResult = py::winrt_wrapper<winrt::Windows::Storage::Search::StorageFileQueryResult>;
    using StorageFolderQueryResult = py::winrt_wrapper<winrt::Windows::Storage::Search::StorageFolderQueryResult>;
    using StorageItemQueryResult = py::winrt_wrapper<winrt::Windows::Storage::Search::StorageItemQueryResult>;
    using StorageLibraryChangeTrackerTriggerDetails = py::winrt_wrapper<winrt::Windows::Storage::Search::StorageLibraryChangeTrackerTriggerDetails>;
    using StorageLibraryContentChangedTriggerDetails = py::winrt_wrapper<winrt::Windows::Storage::Search::StorageLibraryContentChangedTriggerDetails>;
    using ValueAndLanguage = py::winrt_wrapper<winrt::Windows::Storage::Search::ValueAndLanguage>;
    using IIndexableContent = py::winrt_wrapper<winrt::Windows::Storage::Search::IIndexableContent>;
    using IStorageFolderQueryOperations = py::winrt_wrapper<winrt::Windows::Storage::Search::IStorageFolderQueryOperations>;
    using IStorageQueryResultBase = py::winrt_wrapper<winrt::Windows::Storage::Search::IStorageQueryResultBase>;
    using SortEntry = py::winrt_struct_wrapper<winrt::Windows::Storage::Search::SortEntry>;
}

namespace py
{
    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Storage::Search::CommonFileQuery> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Storage::Search::CommonFolderQuery> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Storage::Search::DateStackOption> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Storage::Search::FolderDepth> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Storage::Search::IndexedState> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Storage::Search::IndexerOption> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Storage::Search::SortEntry> = "T{P:property_name:?:ascending_order:}";


    template<>
    struct py_type<winrt::Windows::Storage::Search::CommonFileQuery>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Storage::Search::CommonFolderQuery>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Storage::Search::DateStackOption>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Storage::Search::FolderDepth>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Storage::Search::IndexedState>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Storage::Search::IndexerOption>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::ContentIndexer>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::ContentIndexerQuery>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::IndexableContent>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::QueryOptions>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::SortEntryVector>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::StorageFileQueryResult>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::StorageFolderQueryResult>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::StorageItemQueryResult>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::StorageLibraryChangeTrackerTriggerDetails>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::StorageLibraryContentChangedTriggerDetails>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::ValueAndLanguage>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::IIndexableContent>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::IStorageFolderQueryOperations>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::IStorageQueryResultBase>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Storage::Search::SortEntry>
    {
        static PyTypeObject* get_python_type() noexcept;
    };
    template<>
    struct converter<winrt::Windows::Storage::Search::SortEntry>
    {
        static PyObject* convert(winrt::Windows::Storage::Search::SortEntry instance) noexcept;
        static winrt::Windows::Storage::Search::SortEntry convert_to(PyObject* obj);
    };

}
