// 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

#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>

#include <winrt/Windows.Devices.Geolocation.h>

namespace py::proj::Windows::Devices::Geolocation
{}

namespace py::impl::Windows::Devices::Geolocation
{}

namespace py::wrapper::Windows::Devices::Geolocation
{
    using CivicAddress = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::CivicAddress>;
    using GeoboundingBox = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::GeoboundingBox>;
    using Geocircle = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::Geocircle>;
    using Geocoordinate = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::Geocoordinate>;
    using GeocoordinateSatelliteData = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::GeocoordinateSatelliteData>;
    using Geolocator = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::Geolocator>;
    using Geopath = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::Geopath>;
    using Geopoint = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::Geopoint>;
    using Geoposition = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::Geoposition>;
    using Geovisit = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::Geovisit>;
    using GeovisitMonitor = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::GeovisitMonitor>;
    using GeovisitStateChangedEventArgs = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::GeovisitStateChangedEventArgs>;
    using GeovisitTriggerDetails = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::GeovisitTriggerDetails>;
    using PositionChangedEventArgs = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::PositionChangedEventArgs>;
    using StatusChangedEventArgs = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::StatusChangedEventArgs>;
    using VenueData = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::VenueData>;
    using IGeoshape = py::winrt_wrapper<winrt::Windows::Devices::Geolocation::IGeoshape>;
    using BasicGeoposition = py::winrt_struct_wrapper<winrt::Windows::Devices::Geolocation::BasicGeoposition>;
}

namespace py
{
    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::AltitudeReferenceSystem> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::GeolocationAccessStatus> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::GeoshapeType> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::PositionAccuracy> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::PositionSource> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::PositionStatus> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::VisitMonitoringScope> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::VisitStateChange> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Devices::Geolocation::BasicGeoposition> = "T{d:latitude:d:longitude:d:altitude:}";


    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::AltitudeReferenceSystem>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::GeolocationAccessStatus>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::GeoshapeType>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::PositionAccuracy>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::PositionSource>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::PositionStatus>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::VisitMonitoringScope>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Devices::Geolocation::VisitStateChange>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::CivicAddress>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::GeoboundingBox>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::Geocircle>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::Geocoordinate>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::GeocoordinateSatelliteData>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::Geolocator>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::Geopath>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::Geopoint>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::Geoposition>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::Geovisit>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::GeovisitMonitor>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::GeovisitStateChangedEventArgs>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::GeovisitTriggerDetails>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::PositionChangedEventArgs>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::StatusChangedEventArgs>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::VenueData>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Devices::Geolocation::IGeoshape>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

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

}
