// C++/WinRT v2.0.190620.2

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#ifndef WINRT_Windows_Services_Maps_Guidance_0_H
#define WINRT_Windows_Services_Maps_Guidance_0_H
namespace winrt::Windows::Devices::Geolocation
{
    struct BasicGeoposition;
    struct GeoboundingBox;
    struct Geocoordinate;
    struct Geopath;
    struct Geopoint;
}
namespace winrt::Windows::Foundation
{
    struct EventRegistrationToken;
    template <typename TSender, typename TResult> struct TypedEventHandler;
}
namespace winrt::Windows::Services::Maps
{
    struct MapRoute;
}
namespace winrt::Windows::UI
{
    struct Color;
}
namespace winrt::Windows::Services::Maps::Guidance
{
    enum class GuidanceAudioMeasurementSystem : int32_t
    {
        Meters = 0,
        MilesAndYards = 1,
        MilesAndFeet = 2,
    };
    enum class GuidanceAudioNotificationKind : int32_t
    {
        Maneuver = 0,
        Route = 1,
        Gps = 2,
        SpeedLimit = 3,
        Traffic = 4,
        TrafficCamera = 5,
    };
    enum class GuidanceAudioNotifications : uint32_t
    {
        None = 0,
        Maneuver = 0x1,
        Route = 0x2,
        Gps = 0x4,
        SpeedLimit = 0x8,
        Traffic = 0x10,
        TrafficCamera = 0x20,
    };
    enum class GuidanceLaneMarkers : uint32_t
    {
        None = 0,
        LightRight = 0x1,
        Right = 0x2,
        HardRight = 0x4,
        Straight = 0x8,
        UTurnLeft = 0x10,
        HardLeft = 0x20,
        Left = 0x40,
        LightLeft = 0x80,
        UTurnRight = 0x100,
        Unknown = 0xffffffff,
    };
    enum class GuidanceManeuverKind : int32_t
    {
        None = 0,
        GoStraight = 1,
        UTurnRight = 2,
        UTurnLeft = 3,
        TurnKeepRight = 4,
        TurnLightRight = 5,
        TurnRight = 6,
        TurnHardRight = 7,
        KeepMiddle = 8,
        TurnKeepLeft = 9,
        TurnLightLeft = 10,
        TurnLeft = 11,
        TurnHardLeft = 12,
        FreewayEnterRight = 13,
        FreewayEnterLeft = 14,
        FreewayLeaveRight = 15,
        FreewayLeaveLeft = 16,
        FreewayKeepRight = 17,
        FreewayKeepLeft = 18,
        TrafficCircleRight1 = 19,
        TrafficCircleRight2 = 20,
        TrafficCircleRight3 = 21,
        TrafficCircleRight4 = 22,
        TrafficCircleRight5 = 23,
        TrafficCircleRight6 = 24,
        TrafficCircleRight7 = 25,
        TrafficCircleRight8 = 26,
        TrafficCircleRight9 = 27,
        TrafficCircleRight10 = 28,
        TrafficCircleRight11 = 29,
        TrafficCircleRight12 = 30,
        TrafficCircleLeft1 = 31,
        TrafficCircleLeft2 = 32,
        TrafficCircleLeft3 = 33,
        TrafficCircleLeft4 = 34,
        TrafficCircleLeft5 = 35,
        TrafficCircleLeft6 = 36,
        TrafficCircleLeft7 = 37,
        TrafficCircleLeft8 = 38,
        TrafficCircleLeft9 = 39,
        TrafficCircleLeft10 = 40,
        TrafficCircleLeft11 = 41,
        TrafficCircleLeft12 = 42,
        Start = 43,
        End = 44,
        TakeFerry = 45,
        PassTransitStation = 46,
        LeaveTransitStation = 47,
    };
    enum class GuidanceMode : int32_t
    {
        None = 0,
        Simulation = 1,
        Navigation = 2,
        Tracking = 3,
    };
    struct IGuidanceAudioNotificationRequestedEventArgs;
    struct IGuidanceLaneInfo;
    struct IGuidanceManeuver;
    struct IGuidanceMapMatchedCoordinate;
    struct IGuidanceNavigator;
    struct IGuidanceNavigator2;
    struct IGuidanceNavigatorStatics;
    struct IGuidanceNavigatorStatics2;
    struct IGuidanceReroutedEventArgs;
    struct IGuidanceRoadSegment;
    struct IGuidanceRoadSegment2;
    struct IGuidanceRoadSignpost;
    struct IGuidanceRoute;
    struct IGuidanceRouteStatics;
    struct IGuidanceTelemetryCollector;
    struct IGuidanceTelemetryCollectorStatics;
    struct IGuidanceUpdatedEventArgs;
    struct GuidanceAudioNotificationRequestedEventArgs;
    struct GuidanceLaneInfo;
    struct GuidanceManeuver;
    struct GuidanceMapMatchedCoordinate;
    struct GuidanceNavigator;
    struct GuidanceReroutedEventArgs;
    struct GuidanceRoadSegment;
    struct GuidanceRoadSignpost;
    struct GuidanceRoute;
    struct GuidanceTelemetryCollector;
    struct GuidanceUpdatedEventArgs;
}
namespace winrt::impl
{
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceAudioNotificationRequestedEventArgs>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceLaneInfo>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceManeuver>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceMapMatchedCoordinate>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceNavigator>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceNavigator2>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics2>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceReroutedEventArgs>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceRoadSegment>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceRoadSegment2>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceRoadSignpost>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceRoute>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceRouteStatics>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollector>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollectorStatics>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::IGuidanceUpdatedEventArgs>
    {
        using type = interface_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceAudioNotificationRequestedEventArgs>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceLaneInfo>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceManeuver>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceMapMatchedCoordinate>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceNavigator>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceReroutedEventArgs>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceRoadSegment>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceRoadSignpost>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceRoute>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceTelemetryCollector>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceUpdatedEventArgs>
    {
        using type = class_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceAudioMeasurementSystem>
    {
        using type = enum_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceAudioNotificationKind>
    {
        using type = enum_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceAudioNotifications>
    {
        using type = enum_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceLaneMarkers>
    {
        using type = enum_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceManeuverKind>
    {
        using type = enum_category;
    };
    template <> struct category<Windows::Services::Maps::Guidance::GuidanceMode>
    {
        using type = enum_category;
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceAudioNotificationRequestedEventArgs>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceAudioNotificationRequestedEventArgs" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceLaneInfo>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceLaneInfo" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceManeuver>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceManeuver" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceMapMatchedCoordinate>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceMapMatchedCoordinate" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceNavigator>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceNavigator" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceNavigator2>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceNavigator2" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceNavigatorStatics" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics2>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceNavigatorStatics2" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceReroutedEventArgs>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceReroutedEventArgs" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceRoadSegment>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceRoadSegment" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceRoadSegment2>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceRoadSegment2" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceRoadSignpost>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceRoadSignpost" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceRoute>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceRoute" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceRouteStatics>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceRouteStatics" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollector>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceTelemetryCollector" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollectorStatics>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceTelemetryCollectorStatics" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::IGuidanceUpdatedEventArgs>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.IGuidanceUpdatedEventArgs" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceAudioNotificationRequestedEventArgs>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceAudioNotificationRequestedEventArgs" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceLaneInfo>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceLaneInfo" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceManeuver>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceManeuver" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceMapMatchedCoordinate>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceMapMatchedCoordinate" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceNavigator>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceNavigator" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceReroutedEventArgs>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceReroutedEventArgs" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceRoadSegment>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceRoadSegment" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceRoadSignpost>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceRoadSignpost" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceRoute>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceRoute" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceTelemetryCollector>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceTelemetryCollector" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceUpdatedEventArgs>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceUpdatedEventArgs" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceAudioMeasurementSystem>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceAudioMeasurementSystem" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceAudioNotificationKind>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceAudioNotificationKind" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceAudioNotifications>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceAudioNotifications" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceLaneMarkers>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceLaneMarkers" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceManeuverKind>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceManeuverKind" };
    };
    template <> struct name<Windows::Services::Maps::Guidance::GuidanceMode>
    {
        static constexpr auto & value{ L"Windows.Services.Maps.Guidance.GuidanceMode" };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceAudioNotificationRequestedEventArgs>
    {
        static constexpr guid value{ 0xCA2AA24A,0xC7C2,0x4D4C,{ 0x9D,0x7C,0x49,0x95,0x76,0xBC,0xED,0xDB } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceLaneInfo>
    {
        static constexpr guid value{ 0x8404D114,0x6581,0x43B7,{ 0xAC,0x15,0xC9,0x07,0x9B,0xF9,0x0D,0xF1 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceManeuver>
    {
        static constexpr guid value{ 0xFC09326C,0xECC9,0x4928,{ 0xA2,0xA1,0x72,0x32,0xB9,0x9B,0x94,0xA1 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceMapMatchedCoordinate>
    {
        static constexpr guid value{ 0xB7ACB168,0x2912,0x4A99,{ 0xAF,0xF1,0x79,0x86,0x09,0xB9,0x81,0xFE } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceNavigator>
    {
        static constexpr guid value{ 0x08F17EF7,0x8E3F,0x4D9A,{ 0xBE,0x8A,0x10,0x8F,0x9A,0x01,0x2C,0x67 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceNavigator2>
    {
        static constexpr guid value{ 0x6CDC50D1,0x041C,0x4BF3,{ 0xB6,0x33,0xA1,0x01,0xFC,0x2F,0x6B,0x57 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics>
    {
        static constexpr guid value{ 0x00FD9513,0x4456,0x4E66,{ 0xA1,0x43,0x3A,0xDD,0x6B,0xE0,0x84,0x26 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics2>
    {
        static constexpr guid value{ 0x54C5C3E2,0x7784,0x4C85,{ 0x8C,0x95,0xD0,0xC6,0xEF,0xB4,0x39,0x65 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceReroutedEventArgs>
    {
        static constexpr guid value{ 0x115D4008,0xD528,0x454E,{ 0xBB,0x94,0xA5,0x03,0x41,0xD2,0xC9,0xF1 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceRoadSegment>
    {
        static constexpr guid value{ 0xB32758A6,0xBE78,0x4C63,{ 0xAF,0xE7,0x6C,0x29,0x57,0x47,0x9B,0x3E } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceRoadSegment2>
    {
        static constexpr guid value{ 0x2474A61D,0x1723,0x49F1,{ 0x89,0x5B,0x47,0xA2,0xC4,0xAA,0x9C,0x55 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceRoadSignpost>
    {
        static constexpr guid value{ 0xF1A728B6,0xF77A,0x4742,{ 0x83,0x12,0x53,0x30,0x0F,0x98,0x45,0xF0 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceRoute>
    {
        static constexpr guid value{ 0x3A14545D,0x801A,0x40BD,{ 0xA2,0x86,0xAF,0xB2,0x01,0x0C,0xCE,0x6C } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceRouteStatics>
    {
        static constexpr guid value{ 0xF56D926A,0x55ED,0x49C1,{ 0xB0,0x9C,0x4B,0x82,0x23,0xB5,0x0D,0xB3 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollector>
    {
        static constexpr guid value{ 0xDB1F8DA5,0xB878,0x4D92,{ 0x98,0xDD,0x34,0x7D,0x23,0xD3,0x82,0x62 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollectorStatics>
    {
        static constexpr guid value{ 0x36532047,0xF160,0x44FB,{ 0xB5,0x78,0x94,0x57,0x7C,0xA0,0x59,0x90 } };
    };
    template <> struct guid_storage<Windows::Services::Maps::Guidance::IGuidanceUpdatedEventArgs>
    {
        static constexpr guid value{ 0xFDAC160B,0x9E8D,0x4DE3,{ 0xA9,0xFA,0xB0,0x63,0x21,0xD1,0x8D,0xB9 } };
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceAudioNotificationRequestedEventArgs>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceAudioNotificationRequestedEventArgs;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceLaneInfo>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceLaneInfo;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceManeuver>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceManeuver;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceMapMatchedCoordinate>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceMapMatchedCoordinate;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceNavigator>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceNavigator;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceReroutedEventArgs>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceReroutedEventArgs;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceRoadSegment>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceRoadSegment;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceRoadSignpost>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceRoadSignpost;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceRoute>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceRoute;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceTelemetryCollector>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceTelemetryCollector;
    };
    template <> struct default_interface<Windows::Services::Maps::Guidance::GuidanceUpdatedEventArgs>
    {
        using type = Windows::Services::Maps::Guidance::IGuidanceUpdatedEventArgs;
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceAudioNotificationRequestedEventArgs>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_AudioNotification(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_AudioFilePaths(void**) noexcept = 0;
            virtual int32_t __stdcall get_AudioText(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceLaneInfo>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_LaneMarkers(uint32_t*) noexcept = 0;
            virtual int32_t __stdcall get_IsOnRoute(bool*) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceManeuver>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_StartLocation(void**) noexcept = 0;
            virtual int32_t __stdcall get_DistanceFromRouteStart(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_DistanceFromPreviousManeuver(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_DepartureRoadName(void**) noexcept = 0;
            virtual int32_t __stdcall get_NextRoadName(void**) noexcept = 0;
            virtual int32_t __stdcall get_DepartureShortRoadName(void**) noexcept = 0;
            virtual int32_t __stdcall get_NextShortRoadName(void**) noexcept = 0;
            virtual int32_t __stdcall get_Kind(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_StartAngle(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_EndAngle(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_RoadSignpost(void**) noexcept = 0;
            virtual int32_t __stdcall get_InstructionText(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceMapMatchedCoordinate>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_Location(void**) noexcept = 0;
            virtual int32_t __stdcall get_CurrentHeading(double*) noexcept = 0;
            virtual int32_t __stdcall get_CurrentSpeed(double*) noexcept = 0;
            virtual int32_t __stdcall get_IsOnStreet(bool*) noexcept = 0;
            virtual int32_t __stdcall get_Road(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceNavigator>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall StartNavigating(void*) noexcept = 0;
            virtual int32_t __stdcall StartSimulating(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall StartTracking() noexcept = 0;
            virtual int32_t __stdcall Pause() noexcept = 0;
            virtual int32_t __stdcall Resume() noexcept = 0;
            virtual int32_t __stdcall Stop() noexcept = 0;
            virtual int32_t __stdcall RepeatLastAudioNotification() noexcept = 0;
            virtual int32_t __stdcall get_AudioMeasurementSystem(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_AudioMeasurementSystem(int32_t) noexcept = 0;
            virtual int32_t __stdcall get_AudioNotifications(uint32_t*) noexcept = 0;
            virtual int32_t __stdcall put_AudioNotifications(uint32_t) noexcept = 0;
            virtual int32_t __stdcall add_GuidanceUpdated(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_GuidanceUpdated(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall add_DestinationReached(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_DestinationReached(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall add_Rerouting(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_Rerouting(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall add_Rerouted(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_Rerouted(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall add_RerouteFailed(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_RerouteFailed(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall add_UserLocationLost(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_UserLocationLost(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall add_UserLocationRestored(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_UserLocationRestored(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall SetGuidanceVoice(int32_t, void*) noexcept = 0;
            virtual int32_t __stdcall UpdateUserLocation(void*) noexcept = 0;
            virtual int32_t __stdcall UpdateUserLocationWithPositionOverride(void*, struct struct_Windows_Devices_Geolocation_BasicGeoposition) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceNavigator2>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall add_AudioNotificationRequested(void*, winrt::event_token*) noexcept = 0;
            virtual int32_t __stdcall remove_AudioNotificationRequested(winrt::event_token) noexcept = 0;
            virtual int32_t __stdcall get_IsGuidanceAudioMuted(bool*) noexcept = 0;
            virtual int32_t __stdcall put_IsGuidanceAudioMuted(bool) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall GetCurrent(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics2>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_UseAppProvidedVoice(bool*) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceReroutedEventArgs>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_Route(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceRoadSegment>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_RoadName(void**) noexcept = 0;
            virtual int32_t __stdcall get_ShortRoadName(void**) noexcept = 0;
            virtual int32_t __stdcall get_SpeedLimit(double*) noexcept = 0;
            virtual int32_t __stdcall get_TravelTime(int64_t*) noexcept = 0;
            virtual int32_t __stdcall get_Path(void**) noexcept = 0;
            virtual int32_t __stdcall get_Id(void**) noexcept = 0;
            virtual int32_t __stdcall get_IsHighway(bool*) noexcept = 0;
            virtual int32_t __stdcall get_IsTunnel(bool*) noexcept = 0;
            virtual int32_t __stdcall get_IsTollRoad(bool*) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceRoadSegment2>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_IsScenic(bool*) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceRoadSignpost>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_ExitNumber(void**) noexcept = 0;
            virtual int32_t __stdcall get_Exit(void**) noexcept = 0;
            virtual int32_t __stdcall get_BackgroundColor(struct struct_Windows_UI_Color*) noexcept = 0;
            virtual int32_t __stdcall get_ForegroundColor(struct struct_Windows_UI_Color*) noexcept = 0;
            virtual int32_t __stdcall get_ExitDirections(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceRoute>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_Duration(int64_t*) noexcept = 0;
            virtual int32_t __stdcall get_Distance(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_Maneuvers(void**) noexcept = 0;
            virtual int32_t __stdcall get_BoundingBox(void**) noexcept = 0;
            virtual int32_t __stdcall get_Path(void**) noexcept = 0;
            virtual int32_t __stdcall get_RoadSegments(void**) noexcept = 0;
            virtual int32_t __stdcall ConvertToMapRoute(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceRouteStatics>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall CanCreateFromMapRoute(void*, bool*) noexcept = 0;
            virtual int32_t __stdcall TryCreateFromMapRoute(void*, void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollector>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_Enabled(bool*) noexcept = 0;
            virtual int32_t __stdcall put_Enabled(bool) noexcept = 0;
            virtual int32_t __stdcall ClearLocalData() noexcept = 0;
            virtual int32_t __stdcall get_SpeedTrigger(double*) noexcept = 0;
            virtual int32_t __stdcall put_SpeedTrigger(double) noexcept = 0;
            virtual int32_t __stdcall get_UploadFrequency(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_UploadFrequency(int32_t) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollectorStatics>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall GetCurrent(void**) noexcept = 0;
        };
    };
    template <> struct abi<Windows::Services::Maps::Guidance::IGuidanceUpdatedEventArgs>
    {
        struct __declspec(novtable) type : inspectable_abi
        {
            virtual int32_t __stdcall get_Mode(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_NextManeuver(void**) noexcept = 0;
            virtual int32_t __stdcall get_NextManeuverDistance(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_AfterNextManeuver(void**) noexcept = 0;
            virtual int32_t __stdcall get_AfterNextManeuverDistance(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_DistanceToDestination(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_ElapsedDistance(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_ElapsedTime(int64_t*) noexcept = 0;
            virtual int32_t __stdcall get_TimeToDestination(int64_t*) noexcept = 0;
            virtual int32_t __stdcall get_RoadName(void**) noexcept = 0;
            virtual int32_t __stdcall get_Route(void**) noexcept = 0;
            virtual int32_t __stdcall get_CurrentLocation(void**) noexcept = 0;
            virtual int32_t __stdcall get_IsNewManeuver(bool*) noexcept = 0;
            virtual int32_t __stdcall get_LaneInfo(void**) noexcept = 0;
        };
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceAudioNotificationRequestedEventArgs
    {
        [[nodiscard]] auto AudioNotification() const;
        [[nodiscard]] auto AudioFilePaths() const;
        [[nodiscard]] auto AudioText() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceAudioNotificationRequestedEventArgs>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceAudioNotificationRequestedEventArgs<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceLaneInfo
    {
        [[nodiscard]] auto LaneMarkers() const;
        [[nodiscard]] auto IsOnRoute() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceLaneInfo>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceLaneInfo<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceManeuver
    {
        [[nodiscard]] auto StartLocation() const;
        [[nodiscard]] auto DistanceFromRouteStart() const;
        [[nodiscard]] auto DistanceFromPreviousManeuver() const;
        [[nodiscard]] auto DepartureRoadName() const;
        [[nodiscard]] auto NextRoadName() const;
        [[nodiscard]] auto DepartureShortRoadName() const;
        [[nodiscard]] auto NextShortRoadName() const;
        [[nodiscard]] auto Kind() const;
        [[nodiscard]] auto StartAngle() const;
        [[nodiscard]] auto EndAngle() const;
        [[nodiscard]] auto RoadSignpost() const;
        [[nodiscard]] auto InstructionText() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceManeuver>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceManeuver<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceMapMatchedCoordinate
    {
        [[nodiscard]] auto Location() const;
        [[nodiscard]] auto CurrentHeading() const;
        [[nodiscard]] auto CurrentSpeed() const;
        [[nodiscard]] auto IsOnStreet() const;
        [[nodiscard]] auto Road() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceMapMatchedCoordinate>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceMapMatchedCoordinate<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceNavigator
    {
        auto StartNavigating(Windows::Services::Maps::Guidance::GuidanceRoute const& route) const;
        auto StartSimulating(Windows::Services::Maps::Guidance::GuidanceRoute const& route, int32_t speedInMetersPerSecond) const;
        auto StartTracking() const;
        auto Pause() const;
        auto Resume() const;
        auto Stop() const;
        auto RepeatLastAudioNotification() const;
        [[nodiscard]] auto AudioMeasurementSystem() const;
        auto AudioMeasurementSystem(Windows::Services::Maps::Guidance::GuidanceAudioMeasurementSystem const& value) const;
        [[nodiscard]] auto AudioNotifications() const;
        auto AudioNotifications(Windows::Services::Maps::Guidance::GuidanceAudioNotifications const& value) const;
        auto GuidanceUpdated(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Services::Maps::Guidance::GuidanceUpdatedEventArgs> const& handler) const;
        using GuidanceUpdated_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator>::remove_GuidanceUpdated>;
        GuidanceUpdated_revoker GuidanceUpdated(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Services::Maps::Guidance::GuidanceUpdatedEventArgs> const& handler) const;
        auto GuidanceUpdated(winrt::event_token const& token) const noexcept;
        auto DestinationReached(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        using DestinationReached_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator>::remove_DestinationReached>;
        DestinationReached_revoker DestinationReached(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        auto DestinationReached(winrt::event_token const& token) const noexcept;
        auto Rerouting(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        using Rerouting_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator>::remove_Rerouting>;
        Rerouting_revoker Rerouting(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        auto Rerouting(winrt::event_token const& token) const noexcept;
        auto Rerouted(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Services::Maps::Guidance::GuidanceReroutedEventArgs> const& handler) const;
        using Rerouted_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator>::remove_Rerouted>;
        Rerouted_revoker Rerouted(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Services::Maps::Guidance::GuidanceReroutedEventArgs> const& handler) const;
        auto Rerouted(winrt::event_token const& token) const noexcept;
        auto RerouteFailed(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        using RerouteFailed_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator>::remove_RerouteFailed>;
        RerouteFailed_revoker RerouteFailed(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        auto RerouteFailed(winrt::event_token const& token) const noexcept;
        auto UserLocationLost(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        using UserLocationLost_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator>::remove_UserLocationLost>;
        UserLocationLost_revoker UserLocationLost(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        auto UserLocationLost(winrt::event_token const& token) const noexcept;
        auto UserLocationRestored(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        using UserLocationRestored_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator>::remove_UserLocationRestored>;
        UserLocationRestored_revoker UserLocationRestored(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Foundation::IInspectable> const& handler) const;
        auto UserLocationRestored(winrt::event_token const& token) const noexcept;
        auto SetGuidanceVoice(int32_t voiceId, param::hstring const& voiceFolder) const;
        auto UpdateUserLocation(Windows::Devices::Geolocation::Geocoordinate const& userLocation) const;
        auto UpdateUserLocation(Windows::Devices::Geolocation::Geocoordinate const& userLocation, Windows::Devices::Geolocation::BasicGeoposition const& positionOverride) const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceNavigator>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceNavigator<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceNavigator2
    {
        auto AudioNotificationRequested(Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Services::Maps::Guidance::GuidanceAudioNotificationRequestedEventArgs> const& value) const;
        using AudioNotificationRequested_revoker = impl::event_revoker<Windows::Services::Maps::Guidance::IGuidanceNavigator2, &impl::abi_t<Windows::Services::Maps::Guidance::IGuidanceNavigator2>::remove_AudioNotificationRequested>;
        AudioNotificationRequested_revoker AudioNotificationRequested(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Services::Maps::Guidance::GuidanceNavigator, Windows::Services::Maps::Guidance::GuidanceAudioNotificationRequestedEventArgs> const& value) const;
        auto AudioNotificationRequested(winrt::event_token const& token) const noexcept;
        [[nodiscard]] auto IsGuidanceAudioMuted() const;
        auto IsGuidanceAudioMuted(bool value) const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceNavigator2>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceNavigator2<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceNavigatorStatics
    {
        auto GetCurrent() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceNavigatorStatics<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceNavigatorStatics2
    {
        [[nodiscard]] auto UseAppProvidedVoice() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceNavigatorStatics2>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceNavigatorStatics2<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceReroutedEventArgs
    {
        [[nodiscard]] auto Route() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceReroutedEventArgs>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceReroutedEventArgs<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceRoadSegment
    {
        [[nodiscard]] auto RoadName() const;
        [[nodiscard]] auto ShortRoadName() const;
        [[nodiscard]] auto SpeedLimit() const;
        [[nodiscard]] auto TravelTime() const;
        [[nodiscard]] auto Path() const;
        [[nodiscard]] auto Id() const;
        [[nodiscard]] auto IsHighway() const;
        [[nodiscard]] auto IsTunnel() const;
        [[nodiscard]] auto IsTollRoad() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceRoadSegment>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceRoadSegment<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceRoadSegment2
    {
        [[nodiscard]] auto IsScenic() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceRoadSegment2>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceRoadSegment2<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceRoadSignpost
    {
        [[nodiscard]] auto ExitNumber() const;
        [[nodiscard]] auto Exit() const;
        [[nodiscard]] auto BackgroundColor() const;
        [[nodiscard]] auto ForegroundColor() const;
        [[nodiscard]] auto ExitDirections() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceRoadSignpost>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceRoadSignpost<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceRoute
    {
        [[nodiscard]] auto Duration() const;
        [[nodiscard]] auto Distance() const;
        [[nodiscard]] auto Maneuvers() const;
        [[nodiscard]] auto BoundingBox() const;
        [[nodiscard]] auto Path() const;
        [[nodiscard]] auto RoadSegments() const;
        auto ConvertToMapRoute() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceRoute>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceRoute<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceRouteStatics
    {
        auto CanCreateFromMapRoute(Windows::Services::Maps::MapRoute const& mapRoute) const;
        auto TryCreateFromMapRoute(Windows::Services::Maps::MapRoute const& mapRoute) const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceRouteStatics>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceRouteStatics<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceTelemetryCollector
    {
        [[nodiscard]] auto Enabled() const;
        auto Enabled(bool value) const;
        auto ClearLocalData() const;
        [[nodiscard]] auto SpeedTrigger() const;
        auto SpeedTrigger(double value) const;
        [[nodiscard]] auto UploadFrequency() const;
        auto UploadFrequency(int32_t value) const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollector>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceTelemetryCollector<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceTelemetryCollectorStatics
    {
        auto GetCurrent() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceTelemetryCollectorStatics>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceTelemetryCollectorStatics<D>;
    };
    template <typename D>
    struct consume_Windows_Services_Maps_Guidance_IGuidanceUpdatedEventArgs
    {
        [[nodiscard]] auto Mode() const;
        [[nodiscard]] auto NextManeuver() const;
        [[nodiscard]] auto NextManeuverDistance() const;
        [[nodiscard]] auto AfterNextManeuver() const;
        [[nodiscard]] auto AfterNextManeuverDistance() const;
        [[nodiscard]] auto DistanceToDestination() const;
        [[nodiscard]] auto ElapsedDistance() const;
        [[nodiscard]] auto ElapsedTime() const;
        [[nodiscard]] auto TimeToDestination() const;
        [[nodiscard]] auto RoadName() const;
        [[nodiscard]] auto Route() const;
        [[nodiscard]] auto CurrentLocation() const;
        [[nodiscard]] auto IsNewManeuver() const;
        [[nodiscard]] auto LaneInfo() const;
    };
    template <> struct consume<Windows::Services::Maps::Guidance::IGuidanceUpdatedEventArgs>
    {
        template <typename D> using type = consume_Windows_Services_Maps_Guidance_IGuidanceUpdatedEventArgs<D>;
    };
}
#endif
