//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Geolocation.idl";
import "Windows.UI.Popups.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            runtimeclass GeoboundingBox;

            runtimeclass Geopath;

            runtimeclass Geopoint;

            interface IGeoshape;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        typedef struct Rect Rect;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Popups
        {
            typedef enum Placement Placement;
        }
    }
}
namespace Windows
{
    namespace Services
    {
        namespace Maps
        {
            apicontract GuidanceContract;

            apicontract LocalSearchContract;

            typedef enum ManeuverWarningKind ManeuverWarningKind;

            typedef enum ManeuverWarningSeverity ManeuverWarningSeverity;

            typedef enum MapLocationDesiredAccuracy MapLocationDesiredAccuracy;

            typedef enum MapLocationFinderStatus MapLocationFinderStatus;

            typedef enum MapManeuverNotices MapManeuverNotices;

            typedef enum MapRouteFinderStatus MapRouteFinderStatus;

            typedef enum MapRouteManeuverKind MapRouteManeuverKind;

            typedef enum MapRouteOptimization MapRouteOptimization;

            typedef enum MapRouteRestrictions MapRouteRestrictions;

            typedef enum MapServiceDataUsagePreference MapServiceDataUsagePreference;

            typedef enum TrafficCongestion TrafficCongestion;

            typedef enum WaypointKind WaypointKind;

            interface IEnhancedWaypoint;

            interface IEnhancedWaypointFactory;

            interface IManeuverWarning;

            interface IMapAddress;

            interface IMapAddress2;

            interface IMapLocation;

            interface IMapLocationFinderResult;

            interface IMapLocationFinderStatics;

            interface IMapLocationFinderStatics2;

            interface IMapManagerStatics;

            interface IMapRoute;

            interface IMapRoute2;

            interface IMapRoute3;

            interface IMapRoute4;

            interface IMapRouteDrivingOptions;

            interface IMapRouteDrivingOptions2;

            interface IMapRouteFinderResult;

            interface IMapRouteFinderResult2;

            interface IMapRouteFinderStatics;

            interface IMapRouteFinderStatics2;

            interface IMapRouteFinderStatics3;

            interface IMapRouteLeg;

            interface IMapRouteLeg2;

            interface IMapRouteManeuver;

            interface IMapRouteManeuver2;

            interface IMapRouteManeuver3;

            interface IMapServiceStatics;

            interface IMapServiceStatics2;

            interface IMapServiceStatics3;

            interface IMapServiceStatics4;

            interface IPlaceInfo;

            interface IPlaceInfoCreateOptions;

            interface IPlaceInfoStatics;

            interface IPlaceInfoStatics2;

            runtimeclass EnhancedWaypoint;

            runtimeclass ManeuverWarning;

            runtimeclass MapAddress;

            runtimeclass MapLocation;

            runtimeclass MapLocationFinder;

            runtimeclass MapLocationFinderResult;

            runtimeclass MapManager;

            runtimeclass MapRoute;

            runtimeclass MapRouteDrivingOptions;

            runtimeclass MapRouteFinder;

            runtimeclass MapRouteFinderResult;

            runtimeclass MapRouteLeg;

            runtimeclass MapRouteManeuver;

            runtimeclass MapService;

            runtimeclass PlaceInfo;

            runtimeclass PlaceInfoCreateOptions;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Services
    {
        namespace Maps
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.EnhancedWaypoint*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.ManeuverWarning*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.MapLocation*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.MapRoute*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.MapRouteLeg*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.MapRouteManeuver*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.EnhancedWaypoint*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.ManeuverWarning*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.MapLocation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.MapRoute*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.MapRouteLeg*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.MapRouteManeuver*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.ManeuverWarning*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapLocation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapRoute*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapRouteLeg*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapRouteManeuver*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapLocationFinderResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Services
    {
        namespace Maps
        {
            [contractversion(3.0)]
            apicontract GuidanceContract
            {
            }

            [contractversion(4.0)]
            apicontract LocalSearchContract
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum ManeuverWarningKind
            {
                None                         = 0,
                Accident                     = 1,
                AdministrativeDivisionChange = 2,
                Alert                        = 3,
                BlockedRoad                  = 4,
                CheckTimetable               = 5,
                Congestion                   = 6,
                Construction                 = 7,
                CountryChange                = 8,
                DisabledVehicle              = 9,
                GateAccess                   = 10,
                GetOffTransit                = 11,
                GetOnTransit                 = 12,
                IllegalUTurn                 = 13,
                MassTransit                  = 14,
                Miscellaneous                = 15,
                NoIncident                   = 16,
                Other                        = 17,
                OtherNews                    = 18,
                OtherTrafficIncidents        = 19,
                PlannedEvent                 = 20,
                PrivateRoad                  = 21,
                RestrictedTurn               = 22,
                RoadClosures                 = 23,
                RoadHazard                   = 24,
                ScheduledConstruction        = 25,
                SeasonalClosures             = 26,
                Tollbooth                    = 27,
                TollRoad                     = 28,
                TollZoneEnter                = 29,
                TollZoneExit                 = 30,
                TrafficFlow                  = 31,
                TransitLineChange            = 32,
                UnpavedRoad                  = 33,
                UnscheduledConstruction      = 34,
                Weather                      = 35
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum ManeuverWarningSeverity
            {
                None      = 0,
                LowImpact = 1,
                Minor     = 2,
                Moderate  = 3,
                Serious   = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            enum MapLocationDesiredAccuracy
            {
                High = 0,
                Low  = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MapLocationFinderStatus
            {
                Success            = 0,
                UnknownError       = 1,
                InvalidCredentials = 2,
                BadLocation        = 3,
                IndexFailure       = 4,
                NetworkFailure     = 5,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                NotSupported       = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum MapManeuverNotices
            {
                None    = 0x0,
                Toll    = 0x1,
                Unpaved = 0x2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MapRouteFinderStatus
            {
                Success                      = 0,
                UnknownError                 = 1,
                InvalidCredentials           = 2,
                NoRouteFound                 = 3,
                NoRouteFoundWithGivenOptions = 4,
                StartPointNotFound           = 5,
                EndPointNotFound             = 6,
                NoPedestrianRouteFound       = 7,
                NetworkFailure               = 8,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                NotSupported                 = 9
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MapRouteManeuverKind
            {
                None                 = 0,
                Start                = 1,
                Stopover             = 2,
                StopoverResume       = 3,
                End                  = 4,
                GoStraight           = 5,
                UTurnLeft            = 6,
                UTurnRight           = 7,
                TurnKeepLeft         = 8,
                TurnKeepRight        = 9,
                TurnLightLeft        = 10,
                TurnLightRight       = 11,
                TurnLeft             = 12,
                TurnRight            = 13,
                TurnHardLeft         = 14,
                TurnHardRight        = 15,
                FreewayEnterLeft     = 16,
                FreewayEnterRight    = 17,
                FreewayLeaveLeft     = 18,
                FreewayLeaveRight    = 19,
                FreewayContinueLeft  = 20,
                FreewayContinueRight = 21,
                TrafficCircleLeft    = 22,
                TrafficCircleRight   = 23,
                TakeFerry            = 24
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MapRouteOptimization
            {
                Time            = 0,
                Distance        = 1,
                TimeWithTraffic = 2,
                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                Scenic          = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum MapRouteRestrictions
            {
                None      = 0x0,
                Highways  = 0x1,
                TollRoads = 0x2,
                Ferries   = 0x4,
                Tunnels   = 0x8,
                DirtRoads = 0x10,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Motorail  = 0x20
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum MapServiceDataUsagePreference
            {
                Default            = 0,
                OfflineMapDataOnly = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum TrafficCongestion
            {
                Unknown = 0,
                Light   = 1,
                Mild    = 2,
                Medium  = 3,
                Heavy   = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum WaypointKind
            {
                Stop = 0,
                Via  = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.EnhancedWaypoint)]
            [uuid(ED268C74-5913-11E6-8B77-86F30CA893D3)]
            interface IEnhancedWaypoint : IInspectable
            {
                [propget] HRESULT Point([out] [retval] Windows.Devices.Geolocation.Geopoint** value);
                [propget] HRESULT Kind([out] [retval] Windows.Services.Maps.WaypointKind* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.EnhancedWaypoint)]
            [uuid(AF868477-A2AA-46DD-B645-23B31B8AA6C7)]
            interface IEnhancedWaypointFactory : IInspectable
            {
                HRESULT Create([in] Windows.Devices.Geolocation.Geopoint* point, [in] Windows.Services.Maps.WaypointKind kind, [out] [retval] Windows.Services.Maps.EnhancedWaypoint** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.ManeuverWarning)]
            [uuid(C1A36D8A-2630-4378-9E4A-6E44253DCEBA)]
            interface IManeuverWarning : IInspectable
            {
                [propget] HRESULT Kind([out] [retval] Windows.Services.Maps.ManeuverWarningKind* value);
                [propget] HRESULT Severity([out] [retval] Windows.Services.Maps.ManeuverWarningSeverity* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapAddress)]
            [uuid(CFA7A973-A3B4-4494-B3FF-CBA94DB69699)]
            interface IMapAddress : IInspectable
            {
                [propget] HRESULT BuildingName([out] [retval] HSTRING* value);
                [propget] HRESULT BuildingFloor([out] [retval] HSTRING* value);
                [propget] HRESULT BuildingRoom([out] [retval] HSTRING* value);
                [propget] HRESULT BuildingWing([out] [retval] HSTRING* value);
                [propget] HRESULT StreetNumber([out] [retval] HSTRING* value);
                [propget] HRESULT Street([out] [retval] HSTRING* value);
                [propget] HRESULT Neighborhood([out] [retval] HSTRING* value);
                [propget] HRESULT District([out] [retval] HSTRING* value);
                [propget] HRESULT Town([out] [retval] HSTRING* value);
                [propget] HRESULT Region([out] [retval] HSTRING* value);
                [propget] HRESULT RegionCode([out] [retval] HSTRING* value);
                [propget] HRESULT Country([out] [retval] HSTRING* value);
                [propget] HRESULT CountryCode([out] [retval] HSTRING* value);
                [propget] HRESULT PostCode([out] [retval] HSTRING* value);
                [propget] HRESULT Continent([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapAddress)]
            [uuid(75CD6DF1-E5AD-45A9-BF40-6CF256C1DD13)]
            interface IMapAddress2 : IInspectable
            {
                [propget] HRESULT FormattedAddress([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapLocation)]
            [uuid(3C073F57-0DA4-42E8-9EE2-A96FCF2371DC)]
            interface IMapLocation : IInspectable
            {
                [propget] HRESULT Point([out] [retval] Windows.Devices.Geolocation.Geopoint** value);
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT Description([out] [retval] HSTRING* value);
                [propget] HRESULT Address([out] [retval] Windows.Services.Maps.MapAddress** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapLocationFinderResult)]
            [uuid(43F1F179-E8CC-45F6-BED2-54CCBF965D9A)]
            interface IMapLocationFinderResult : IInspectable
            {
                [propget] HRESULT Locations([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapLocation*>** value);
                [propget] HRESULT Status([out] [retval] Windows.Services.Maps.MapLocationFinderStatus* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapLocationFinder)]
            [uuid(318ADB5D-1C5D-4F35-A2DF-AACA94959517)]
            interface IMapLocationFinderStatics : IInspectable
            {
                [overload("FindLocationsAtAsync")] HRESULT FindLocationsAtAsync([in] Windows.Devices.Geolocation.Geopoint* queryPoint, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapLocationFinderResult*>** result);
                [overload("FindLocationsAsync")] HRESULT FindLocationsAsync([in] HSTRING searchText, [in] Windows.Devices.Geolocation.Geopoint* referencePoint, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapLocationFinderResult*>** result);
                [overload("FindLocationsAsync")] HRESULT FindLocationsWithMaxCountAsync([in] HSTRING searchText, [in] Windows.Devices.Geolocation.Geopoint* referencePoint, [in] UINT32 maxCount, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapLocationFinderResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Services.Maps.MapLocationFinder)]
            [uuid(959A8B96-6485-4DFD-851A-33AC317E3AF6)]
            interface IMapLocationFinderStatics2 : IInspectable
            {
                [overload("FindLocationsAtAsync")] HRESULT FindLocationsAtWithAccuracyAsync([in] Windows.Devices.Geolocation.Geopoint* queryPoint, [in] Windows.Services.Maps.MapLocationDesiredAccuracy accuracy, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapLocationFinderResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapManager)]
            [uuid(37E3E515-82B4-4D54-8FD9-AF2624B3011C)]
            interface IMapManagerStatics : IInspectable
            {
                HRESULT ShowDownloadedMapsUI();
                HRESULT ShowMapsUpdateUI();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRoute)]
            [uuid(FB07B732-584D-4583-9C60-641FEA274349)]
            interface IMapRoute : IInspectable
            {
                [propget] HRESULT BoundingBox([out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
                [propget] HRESULT LengthInMeters([out] [retval] DOUBLE* value);
                [propget] HRESULT EstimatedDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Path([out] [retval] Windows.Devices.Geolocation.Geopath** value);
                [propget] HRESULT Legs([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapRouteLeg*>** value);
                [propget] HRESULT IsTrafficBased([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRoute)]
            [uuid(D1C5D40C-2213-4AB0-A260-46B38169BEAC)]
            interface IMapRoute2 : IInspectable
            {
                [propget] HRESULT ViolatedRestrictions([out] [retval] Windows.Services.Maps.MapRouteRestrictions* value);
                [propget] HRESULT HasBlockedRoads([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.MapRoute)]
            [uuid(858D1EAE-F2AD-429F-BB37-CD21094FFC92)]
            interface IMapRoute3 : IInspectable
            {
                [propget] HRESULT DurationWithoutTraffic([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT TrafficCongestion([out] [retval] Windows.Services.Maps.TrafficCongestion* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Services.Maps.MapRoute)]
            [uuid(366C8CA5-3053-4FA1-80FF-D475F3ED1E6E)]
            interface IMapRoute4 : IInspectable
            {
                [propget] HRESULT IsScenic([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteDrivingOptions)]
            [uuid(6815364D-C6DC-4697-A452-B18F8F0B67A1)]
            interface IMapRouteDrivingOptions : IInspectable
            {
                [propget] HRESULT MaxAlternateRouteCount([out] [retval] UINT32* value);
                [propput] HRESULT MaxAlternateRouteCount([in] UINT32 value);
                [propget] HRESULT InitialHeading([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propput] HRESULT InitialHeading([in] Windows.Foundation.IReference<DOUBLE>* value);
                [propget] HRESULT RouteOptimization([out] [retval] Windows.Services.Maps.MapRouteOptimization* value);
                [propput] HRESULT RouteOptimization([in] Windows.Services.Maps.MapRouteOptimization value);
                [propget] HRESULT RouteRestrictions([out] [retval] Windows.Services.Maps.MapRouteRestrictions* value);
                [propput] HRESULT RouteRestrictions([in] Windows.Services.Maps.MapRouteRestrictions value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteDrivingOptions)]
            [uuid(35DC8670-C298-48D0-B5AD-825460645603)]
            interface IMapRouteDrivingOptions2 : IInspectable
            {
                [propget] HRESULT DepartureTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                [propput] HRESULT DepartureTime([in] Windows.Foundation.IReference<Windows.Foundation.DateTime>* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteFinderResult)]
            [uuid(A868A31A-9422-46AC-8CA1-B1614D4BFBE2)]
            interface IMapRouteFinderResult : IInspectable
            {
                [propget] HRESULT Route([out] [retval] Windows.Services.Maps.MapRoute** value);
                [propget] HRESULT Status([out] [retval] Windows.Services.Maps.MapRouteFinderStatus* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteFinderResult)]
            [uuid(20709C6D-D90C-46C8-91C6-7D4BE4EFB215)]
            interface IMapRouteFinderResult2 : IInspectable
            {
                [propget] HRESULT AlternateRoutes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapRoute*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteFinder)]
            [uuid(B8A5C50F-1C64-4C3A-81EB-1F7C152AFBBB)]
            interface IMapRouteFinderStatics : IInspectable
            {
                [overload("GetDrivingRouteAsync")] HRESULT GetDrivingRouteAsync([in] Windows.Devices.Geolocation.Geopoint* startPoint, [in] Windows.Devices.Geolocation.Geopoint* endPoint, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteAsync")] HRESULT GetDrivingRouteWithOptimizationAsync([in] Windows.Devices.Geolocation.Geopoint* startPoint, [in] Windows.Devices.Geolocation.Geopoint* endPoint, [in] Windows.Services.Maps.MapRouteOptimization optimization, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteAsync")] HRESULT GetDrivingRouteWithOptimizationAndRestrictionsAsync([in] Windows.Devices.Geolocation.Geopoint* startPoint, [in] Windows.Devices.Geolocation.Geopoint* endPoint, [in] Windows.Services.Maps.MapRouteOptimization optimization, [in] Windows.Services.Maps.MapRouteRestrictions restrictions, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteAsync")] HRESULT GetDrivingRouteWithOptimizationRestrictionsAndHeadingAsync([in] Windows.Devices.Geolocation.Geopoint* startPoint, [in] Windows.Devices.Geolocation.Geopoint* endPoint, [in] Windows.Services.Maps.MapRouteOptimization optimization, [in] Windows.Services.Maps.MapRouteRestrictions restrictions, [in] DOUBLE headingInDegrees, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteFromWaypointsAsync")] HRESULT GetDrivingRouteFromWaypointsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geopoint*>* wayPoints, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteFromWaypointsAsync")] HRESULT GetDrivingRouteFromWaypointsAndOptimizationAsync([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geopoint*>* wayPoints, [in] Windows.Services.Maps.MapRouteOptimization optimization, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteFromWaypointsAsync")] HRESULT GetDrivingRouteFromWaypointsOptimizationAndRestrictionsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geopoint*>* wayPoints, [in] Windows.Services.Maps.MapRouteOptimization optimization, [in] Windows.Services.Maps.MapRouteRestrictions restrictions, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteFromWaypointsAsync")] HRESULT GetDrivingRouteFromWaypointsOptimizationRestrictionsAndHeadingAsync([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geopoint*>* wayPoints, [in] Windows.Services.Maps.MapRouteOptimization optimization, [in] Windows.Services.Maps.MapRouteRestrictions restrictions, [in] DOUBLE headingInDegrees, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                HRESULT GetWalkingRouteAsync([in] Windows.Devices.Geolocation.Geopoint* startPoint, [in] Windows.Devices.Geolocation.Geopoint* endPoint, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                HRESULT GetWalkingRouteFromWaypointsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geopoint*>* wayPoints, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteFinder)]
            [uuid(AFCC2C73-7760-49AF-B3BD-BAF135B703E1)]
            interface IMapRouteFinderStatics2 : IInspectable
            {
                [default_overload] [overload("GetDrivingRouteAsync")] HRESULT GetDrivingRouteWithOptionsAsync([in] Windows.Devices.Geolocation.Geopoint* startPoint, [in] Windows.Devices.Geolocation.Geopoint* endPoint, [in] Windows.Services.Maps.MapRouteDrivingOptions* options, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteFinder)]
            [uuid(F6098134-5913-11E6-8B77-86F30CA893D3)]
            interface IMapRouteFinderStatics3 : IInspectable
            {
                [overload("GetDrivingRouteFromEnhancedWaypointsAsync")] HRESULT GetDrivingRouteFromEnhancedWaypointsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Services.Maps.EnhancedWaypoint*>* waypoints, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
                [overload("GetDrivingRouteFromEnhancedWaypointsAsync")] HRESULT GetDrivingRouteFromEnhancedWaypointsWithOptionsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Services.Maps.EnhancedWaypoint*>* waypoints, [in] Windows.Services.Maps.MapRouteDrivingOptions* options, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.MapRouteFinderResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteLeg)]
            [uuid(96F8B2F6-5BBA-4D17-9DB6-1A263FEC7471)]
            interface IMapRouteLeg : IInspectable
            {
                [propget] HRESULT BoundingBox([out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
                [propget] HRESULT Path([out] [retval] Windows.Devices.Geolocation.Geopath** value);
                [propget] HRESULT LengthInMeters([out] [retval] DOUBLE* value);
                [propget] HRESULT EstimatedDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Maneuvers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.MapRouteManeuver*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteLeg)]
            [uuid(02E2062D-C9C6-45B8-8E54-1A10B57A17E8)]
            interface IMapRouteLeg2 : IInspectable
            {
                [propget] HRESULT DurationWithoutTraffic([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT TrafficCongestion([out] [retval] Windows.Services.Maps.TrafficCongestion* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteManeuver)]
            [uuid(ED5C17F0-A6AB-4D65-A086-FA8A7E340DF2)]
            interface IMapRouteManeuver : IInspectable
            {
                [propget] HRESULT StartingPoint([out] [retval] Windows.Devices.Geolocation.Geopoint** value);
                [propget] HRESULT LengthInMeters([out] [retval] DOUBLE* value);
                [propget] HRESULT InstructionText([out] [retval] HSTRING* value);
                [propget] HRESULT Kind([out] [retval] Windows.Services.Maps.MapRouteManeuverKind* value);
                [propget] HRESULT ExitNumber([out] [retval] HSTRING* value);
                [propget] HRESULT ManeuverNotices([out] [retval] Windows.Services.Maps.MapManeuverNotices* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteManeuver)]
            [uuid(5D7BCD9C-7C9B-41DF-838B-EAE21E4B05A9)]
            interface IMapRouteManeuver2 : IInspectable
            {
                [propget] HRESULT StartHeading([out] [retval] DOUBLE* value);
                [propget] HRESULT EndHeading([out] [retval] DOUBLE* value);
                [propget] HRESULT StreetName([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.MapRouteManeuver)]
            [uuid(A6A138DF-0483-4166-85BE-B99336C11875)]
            interface IMapRouteManeuver3 : IInspectable
            {
                [propget] HRESULT Warnings([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.ManeuverWarning*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapService)]
            [uuid(0144AD85-C04C-4CDD-871A-A0726D097CD4)]
            interface IMapServiceStatics : IInspectable
            {
                [propput] HRESULT ServiceToken([in] HSTRING value);
                [propget] HRESULT ServiceToken([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Services.Maps.MapService)]
            [uuid(F8193EED-9C85-40A9-8896-0FC3FD2B7C2A)]
            interface IMapServiceStatics2 : IInspectable
            {
                [propget] HRESULT WorldViewRegionCode([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Services.Maps.MapService)]
            [uuid(0A11CE20-63A7-4854-B355-D6DCDA223D1B)]
            interface IMapServiceStatics3 : IInspectable
            {
                [propget] HRESULT DataAttributions([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Maps.MapService)]
            [uuid(088A2862-6ABC-420E-945F-4CFD89C67356)]
            interface IMapServiceStatics4 : IInspectable
            {
                [propput] HRESULT DataUsagePreference([in] Windows.Services.Maps.MapServiceDataUsagePreference value);
                [propget] HRESULT DataUsagePreference([out] [retval] Windows.Services.Maps.MapServiceDataUsagePreference* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Services.Maps.PlaceInfo)]
            [uuid(9A0810B6-31C8-4F6A-9F18-950B4C38951A)]
            interface IPlaceInfo : IInspectable
            {
                [overload("Show")] HRESULT Show([in] Windows.Foundation.Rect selection);
                [overload("Show")] HRESULT ShowWithPreferredPlacement([in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement preferredPlacement);
                [propget] HRESULT Identifier([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayAddress([out] [retval] HSTRING* value);
                [propget] HRESULT Geoshape([out] [retval] Windows.Devices.Geolocation.IGeoshape** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Services.Maps.PlaceInfoCreateOptions)]
            [uuid(CD33C125-67F1-4BB3-9907-ECCE939B0399)]
            interface IPlaceInfoCreateOptions : IInspectable
            {
                [propput] HRESULT DisplayName([in] HSTRING value);
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayAddress([in] HSTRING value);
                [propget] HRESULT DisplayAddress([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Services.Maps.PlaceInfo)]
            [uuid(82B9FF71-6CD0-48A4-AFD9-5ED82097936B)]
            interface IPlaceInfoStatics : IInspectable
            {
                [overload("Create")] HRESULT Create([in] Windows.Devices.Geolocation.Geopoint* referencePoint, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
                [overload("Create")] HRESULT CreateWithGeopointAndOptions([in] Windows.Devices.Geolocation.Geopoint* referencePoint, [in] Windows.Services.Maps.PlaceInfoCreateOptions* options, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
                [overload("CreateFromIdentifier")] HRESULT CreateFromIdentifier([in] HSTRING identifier, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
                [overload("CreateFromIdentifier")] HRESULT CreateFromIdentifierWithOptions([in] HSTRING identifier, [in] Windows.Devices.Geolocation.Geopoint* defaultPoint, [in] Windows.Services.Maps.PlaceInfoCreateOptions* options, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
                HRESULT CreateFromMapLocation([in] Windows.Services.Maps.MapLocation* location, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
                [propget] HRESULT IsShowSupported([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Services.Maps.PlaceInfo)]
            [uuid(730F0249-4047-44A3-8F81-2550A5216370)]
            interface IPlaceInfoStatics2 : IInspectable
            {
                [overload("CreateFromAddress")] HRESULT CreateFromAddress([in] HSTRING displayAddress, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
                [overload("CreateFromAddress")] HRESULT CreateFromAddressWithName([in] HSTRING displayAddress, [in] HSTRING displayName, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
            }

            [activatable(Windows.Services.Maps.IEnhancedWaypointFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass EnhancedWaypoint
            {
                [default] interface Windows.Services.Maps.IEnhancedWaypoint;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ManeuverWarning
            {
                [default] interface Windows.Services.Maps.IManeuverWarning;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapAddress
            {
                [default] interface Windows.Services.Maps.IMapAddress;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Services.Maps.IMapAddress2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapLocation
            {
                [default] interface Windows.Services.Maps.IMapLocation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.Maps.IMapLocationFinderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Services.Maps.IMapLocationFinderStatics2, Windows.Foundation.UniversalApiContract, 3.0)]
            [threading(both)]
            runtimeclass MapLocationFinder
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapLocationFinderResult
            {
                [default] interface Windows.Services.Maps.IMapLocationFinderResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.Maps.IMapManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass MapManager
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapRoute
            {
                [default] interface Windows.Services.Maps.IMapRoute;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Services.Maps.IMapRoute2;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Services.Maps.IMapRoute3;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Services.Maps.IMapRoute4;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapRouteDrivingOptions
            {
                [default] interface Windows.Services.Maps.IMapRouteDrivingOptions;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Services.Maps.IMapRouteDrivingOptions2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.Maps.IMapRouteFinderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Services.Maps.IMapRouteFinderStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Services.Maps.IMapRouteFinderStatics3, Windows.Foundation.UniversalApiContract, 4.0)]
            [threading(both)]
            runtimeclass MapRouteFinder
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapRouteFinderResult
            {
                [default] interface Windows.Services.Maps.IMapRouteFinderResult;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Services.Maps.IMapRouteFinderResult2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapRouteLeg
            {
                [default] interface Windows.Services.Maps.IMapRouteLeg;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Services.Maps.IMapRouteLeg2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MapRouteManeuver
            {
                [default] interface Windows.Services.Maps.IMapRouteManeuver;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Services.Maps.IMapRouteManeuver2;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Services.Maps.IMapRouteManeuver3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.Maps.IMapServiceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Services.Maps.IMapServiceStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Services.Maps.IMapServiceStatics3, Windows.Foundation.UniversalApiContract, 2.0)]
            [static(Windows.Services.Maps.IMapServiceStatics4, Windows.Foundation.UniversalApiContract, 4.0)]
            [threading(both)]
            runtimeclass MapService
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.Maps.IPlaceInfoStatics, Windows.Foundation.UniversalApiContract, 5.0)]
            [static(Windows.Services.Maps.IPlaceInfoStatics2, Windows.Foundation.UniversalApiContract, 6.0)]
            [threading(both)]
            runtimeclass PlaceInfo
            {
                [default] interface Windows.Services.Maps.IPlaceInfo;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 5.0)]
            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PlaceInfoCreateOptions
            {
                [default] interface Windows.Services.Maps.IPlaceInfoCreateOptions;
            }
        }
    }
}
