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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            typedef enum AltitudeReferenceSystem AltitudeReferenceSystem;

            typedef enum GeolocationAccessStatus GeolocationAccessStatus;

            typedef enum GeoshapeType GeoshapeType;

            typedef enum PositionAccuracy PositionAccuracy;

            typedef enum PositionSource PositionSource;

            typedef enum PositionStatus PositionStatus;

            typedef enum VisitMonitoringScope VisitMonitoringScope;

            typedef enum VisitStateChange VisitStateChange;

            typedef struct BasicGeoposition BasicGeoposition;

            interface ICivicAddress;

            interface IGeoboundingBox;

            interface IGeoboundingBoxFactory;

            interface IGeoboundingBoxStatics;

            interface IGeocircle;

            interface IGeocircleFactory;

            interface IGeocoordinate;

            interface IGeocoordinateSatelliteData;

            interface IGeocoordinateSatelliteData2;

            interface IGeocoordinateWithPoint;

            interface IGeocoordinateWithPositionData;

            interface IGeocoordinateWithPositionSourceTimestamp;

            interface IGeocoordinateWithRemoteSource;

            interface IGeolocator;

            interface IGeolocator2;

            interface IGeolocatorStatics;

            interface IGeolocatorStatics2;

            interface IGeolocatorWithScalarAccuracy;

            interface IGeopath;

            interface IGeopathFactory;

            interface IGeopoint;

            interface IGeopointFactory;

            interface IGeoposition;

            interface IGeoposition2;

            interface IGeoshape;

            interface IGeovisit;

            interface IGeovisitMonitor;

            interface IGeovisitMonitorStatics;

            interface IGeovisitStateChangedEventArgs;

            interface IGeovisitTriggerDetails;

            interface IPositionChangedEventArgs;

            interface IStatusChangedEventArgs;

            interface IVenueData;

            runtimeclass CivicAddress;

            runtimeclass GeoboundingBox;

            runtimeclass Geocircle;

            runtimeclass Geocoordinate;

            runtimeclass GeocoordinateSatelliteData;

            runtimeclass Geolocator;

            runtimeclass Geopath;

            runtimeclass Geopoint;

            runtimeclass Geoposition;

            runtimeclass Geovisit;

            runtimeclass GeovisitMonitor;

            runtimeclass GeovisitStateChangedEventArgs;

            runtimeclass GeovisitTriggerDetails;

            runtimeclass PositionChangedEventArgs;

            runtimeclass StatusChangedEventArgs;

            runtimeclass VenueData;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.BasicGeoposition>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geopath*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geopoint*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geoposition*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.Geovisit*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Geolocation.BasicGeoposition>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Geolocation.Geopath*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Geolocation.Geopoint*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Geolocation.Geoposition*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Geolocation.Geovisit*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.BasicGeoposition>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.Geopath*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.Geoposition*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.Geovisit*>;

                interface Windows.Foundation.Collections.IVector<Windows.Devices.Geolocation.Geopath*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.GeolocationAccessStatus>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.Geopoint*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.Geoposition*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.Geovisit*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.Geoposition*>*>;

                interface Windows.Foundation.IReference<Windows.Devices.Geolocation.BasicGeoposition>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Geolocation.Geolocator*, Windows.Devices.Geolocation.PositionChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Geolocation.Geolocator*, Windows.Devices.Geolocation.StatusChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Geolocation.GeovisitMonitor*, Windows.Devices.Geolocation.GeovisitStateChangedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum AltitudeReferenceSystem
            {
                Unspecified = 0,
                Terrain     = 1,
                Ellipsoid   = 2,
                Geoid       = 3,
                Surface     = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum GeolocationAccessStatus
            {
                Unspecified = 0,
                Allowed     = 1,
                Denied      = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum GeoshapeType
            {
                Geopoint       = 0,
                Geocircle      = 1,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Geopath        = 2,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                GeoboundingBox = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PositionAccuracy
            {
                Default = 0,
                High    = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PositionSource
            {
                Cellular   = 0,
                Satellite  = 1,
                WiFi       = 2,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                IPAddress  = 3,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Unknown    = 4,
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                Default    = 5,
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                Obfuscated = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PositionStatus
            {
                Ready          = 0,
                Initializing   = 1,
                NoData         = 2,
                Disabled       = 3,
                NotInitialized = 4,
                NotAvailable   = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum VisitMonitoringScope
            {
                Venue = 0,
                City  = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum VisitStateChange
            {
                TrackingLost  = 0,
                Arrived       = 1,
                Departed      = 2,
                OtherMovement = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct BasicGeoposition
            {
                DOUBLE Latitude;
                DOUBLE Longitude;
                DOUBLE Altitude;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.CivicAddress)]
            [uuid(A8567A1A-64F4-4D48-BCEA-F6B008ECA34C)]
            interface ICivicAddress : IInspectable
            {
                [propget] HRESULT Country([out] [retval] HSTRING* value);
                [propget] HRESULT State([out] [retval] HSTRING* value);
                [propget] HRESULT City([out] [retval] HSTRING* value);
                [propget] HRESULT PostalCode([out] [retval] HSTRING* value);
                [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeoboundingBox)]
            [uuid(0896C80B-274F-43DA-9A06-CBFCDAEB4EC2)]
            interface IGeoboundingBox : IInspectable
                requires
                    Windows.Devices.Geolocation.IGeoshape
            {
                [propget] HRESULT NorthwestCorner([out] [retval] Windows.Devices.Geolocation.BasicGeoposition* value);
                [propget] HRESULT SoutheastCorner([out] [retval] Windows.Devices.Geolocation.BasicGeoposition* value);
                [propget] HRESULT Center([out] [retval] Windows.Devices.Geolocation.BasicGeoposition* value);
                [propget] HRESULT MinAltitude([out] [retval] DOUBLE* value);
                [propget] HRESULT MaxAltitude([out] [retval] DOUBLE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeoboundingBox)]
            [uuid(4DFBA589-0411-4ABC-B3B5-5BBCCB57D98C)]
            interface IGeoboundingBoxFactory : IInspectable
            {
                HRESULT Create([in] Windows.Devices.Geolocation.BasicGeoposition northwestCorner, [in] Windows.Devices.Geolocation.BasicGeoposition southeastCorner, [out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
                HRESULT CreateWithAltitudeReference([in] Windows.Devices.Geolocation.BasicGeoposition northwestCorner, [in] Windows.Devices.Geolocation.BasicGeoposition southeastCorner, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
                HRESULT CreateWithAltitudeReferenceAndSpatialReference([in] Windows.Devices.Geolocation.BasicGeoposition northwestCorner, [in] Windows.Devices.Geolocation.BasicGeoposition southeastCorner, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [in] UINT32 spatialReferenceId, [out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeoboundingBox)]
            [uuid(67B80708-E61A-4CD0-841B-93233792B5CA)]
            interface IGeoboundingBoxStatics : IInspectable
            {
                [overload("TryCompute")] HRESULT TryCompute([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.BasicGeoposition>* positions, [out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
                [overload("TryCompute")] HRESULT TryComputeWithAltitudeReference([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.BasicGeoposition>* positions, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeRefSystem, [out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
                [overload("TryCompute")] HRESULT TryComputeWithAltitudeReferenceAndSpatialReference([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.BasicGeoposition>* positions, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeRefSystem, [in] UINT32 spatialReferenceId, [out] [retval] Windows.Devices.Geolocation.GeoboundingBox** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geocircle)]
            [uuid(39E45843-A7F9-4E63-92A7-BA0C28D124B1)]
            interface IGeocircle : IInspectable
                requires
                    Windows.Devices.Geolocation.IGeoshape
            {
                [propget] HRESULT Center([out] [retval] Windows.Devices.Geolocation.BasicGeoposition* value);
                [propget] HRESULT Radius([out] [retval] DOUBLE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geocircle)]
            [uuid(AFD6531F-72B1-4F7D-87CC-4ED4C9849C05)]
            interface IGeocircleFactory : IInspectable
            {
                HRESULT Create([in] Windows.Devices.Geolocation.BasicGeoposition position, [in] DOUBLE radius, [out] [retval] Windows.Devices.Geolocation.Geocircle** value);
                HRESULT CreateWithAltitudeReferenceSystem([in] Windows.Devices.Geolocation.BasicGeoposition position, [in] DOUBLE radius, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [out] [retval] Windows.Devices.Geolocation.Geocircle** value);
                HRESULT CreateWithAltitudeReferenceSystemAndSpatialReferenceId([in] Windows.Devices.Geolocation.BasicGeoposition position, [in] DOUBLE radius, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [in] UINT32 spatialReferenceId, [out] [retval] Windows.Devices.Geolocation.Geocircle** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geocoordinate)]
            [uuid(EE21A3AA-976A-4C70-803D-083EA55BCBC4)]
            interface IGeocoordinate : IInspectable
            {
                [deprecated("Latitude may be altered or unavailable after Windows 8.1. Instead, use Point.Position.Latitude", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Latitude([out] [retval] DOUBLE* value);
                [deprecated("Longitude may be altered or unavailable after Windows 8.1. Instead, use Point.Position.Longitude", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Longitude([out] [retval] DOUBLE* value);
                [deprecated("Altitude may be altered or unavailable after Windows 8.1. Instead, use Point.Position.Altitude", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Altitude([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propget] HRESULT Accuracy([out] [retval] DOUBLE* value);
                [propget] HRESULT AltitudeAccuracy([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propget] HRESULT Heading([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propget] HRESULT Speed([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeocoordinateSatelliteData)]
            [uuid(C32A74D9-2608-474C-912C-06DD490F4AF7)]
            interface IGeocoordinateSatelliteData : IInspectable
            {
                [propget] HRESULT PositionDilutionOfPrecision([out] [retval] Windows.Foundation.IReference<DOUBLE>** ppValue);
                [propget] HRESULT HorizontalDilutionOfPrecision([out] [retval] Windows.Foundation.IReference<DOUBLE>** ppValue);
                [propget] HRESULT VerticalDilutionOfPrecision([out] [retval] Windows.Foundation.IReference<DOUBLE>** ppValue);
            }

            [contract(Windows.Foundation.UniversalApiContract, 12.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeocoordinateSatelliteData)]
            [uuid(761C8CFD-A19D-5A51-80F5-71676115483E)]
            interface IGeocoordinateSatelliteData2 : IInspectable
            {
                [propget] HRESULT GeometricDilutionOfPrecision([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propget] HRESULT TimeDilutionOfPrecision([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geocoordinate)]
            [uuid(FEEA0525-D22C-4D46-B527-0B96066FC7DB)]
            interface IGeocoordinateWithPoint : IInspectable
            {
                [propget] HRESULT Point([out] [retval] Windows.Devices.Geolocation.Geopoint** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geocoordinate)]
            [uuid(95E634BE-DBD6-40AC-B8F2-A65C0340D9A6)]
            interface IGeocoordinateWithPositionData : IInspectable
                requires
                    Windows.Devices.Geolocation.IGeocoordinate
            {
                [propget] HRESULT PositionSource([out] [retval] Windows.Devices.Geolocation.PositionSource* pValue);
                [propget] HRESULT SatelliteData([out] [retval] Windows.Devices.Geolocation.GeocoordinateSatelliteData** ppValue);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geocoordinate)]
            [uuid(8543FC02-C9F1-4610-AFE0-8BC3A6A87036)]
            interface IGeocoordinateWithPositionSourceTimestamp : IInspectable
            {
                [propget] HRESULT PositionSourceTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 14.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geocoordinate)]
            [uuid(397CEBD7-EE38-5F3B-8900-C4A7BC9CF953)]
            interface IGeocoordinateWithRemoteSource : IInspectable
            {
                [propget] HRESULT IsRemoteSource([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geolocator)]
            [uuid(A9C3BF62-4524-4989-8AA9-DE019D2E551F)]
            interface IGeolocator : IInspectable
            {
                [propget] HRESULT DesiredAccuracy([out] [retval] Windows.Devices.Geolocation.PositionAccuracy* value);
                [propput] HRESULT DesiredAccuracy([in] Windows.Devices.Geolocation.PositionAccuracy value);
                [propget] HRESULT MovementThreshold([out] [retval] DOUBLE* value);
                [propput] HRESULT MovementThreshold([in] DOUBLE value);
                [propget] HRESULT ReportInterval([out] [retval] UINT32* value);
                [propput] HRESULT ReportInterval([in] UINT32 value);
                [propget] HRESULT LocationStatus([out] [retval] Windows.Devices.Geolocation.PositionStatus* value);
                [overload("GetGeopositionAsync")] HRESULT GetGeopositionAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.Geoposition*>** value);
                [overload("GetGeopositionAsync")] HRESULT GetGeopositionAsyncWithAgeAndTimeout([in] Windows.Foundation.TimeSpan maximumAge, [in] Windows.Foundation.TimeSpan timeout, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.Geoposition*>** value);
                [eventadd] HRESULT PositionChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Geolocation.Geolocator*, Windows.Devices.Geolocation.PositionChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PositionChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT StatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Geolocation.Geolocator*, Windows.Devices.Geolocation.StatusChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT StatusChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geolocator)]
            [uuid(D1B42E6D-8891-43B4-AD36-27C6FE9A97B1)]
            interface IGeolocator2 : IInspectable
            {
                HRESULT AllowFallbackToConsentlessPositions();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geolocator)]
            [uuid(9A8E7571-2DF5-4591-9F87-EB5FD894E9B7)]
            interface IGeolocatorStatics : IInspectable
            {
                HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.GeolocationAccessStatus>** result);
                [deprecated("GetGeopositionHistoryAsync is deprecated and might not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 2.0)] [overload("GetGeopositionHistoryAsync")] HRESULT GetGeopositionHistoryAsync([in] Windows.Foundation.DateTime startTime, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.Geoposition*>*>** result);
                [deprecated("GetGeopositionHistoryWithDurationAsync is deprecated and might not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 2.0)] [overload("GetGeopositionHistoryAsync")] HRESULT GetGeopositionHistoryWithDurationAsync([in] Windows.Foundation.DateTime startTime, [in] Windows.Foundation.TimeSpan duration, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.Geoposition*>*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geolocator)]
            [uuid(993011A2-FA1C-4631-A71D-0DBEB1250D9C)]
            interface IGeolocatorStatics2 : IInspectable
            {
                [propget] HRESULT IsDefaultGeopositionRecommended([out] [retval] boolean* value);
                [propput] HRESULT DefaultGeoposition([in] Windows.Foundation.IReference<Windows.Devices.Geolocation.BasicGeoposition>* value);
                [propget] HRESULT DefaultGeoposition([out] [retval] Windows.Foundation.IReference<Windows.Devices.Geolocation.BasicGeoposition>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geolocator)]
            [uuid(96F5D3C1-B80F-460A-994D-A96C47A51AA4)]
            interface IGeolocatorWithScalarAccuracy : IInspectable
                requires
                    Windows.Devices.Geolocation.IGeolocator
            {
                [propget] HRESULT DesiredAccuracyInMeters([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                [propput] HRESULT DesiredAccuracyInMeters([in] Windows.Foundation.IReference<UINT32>* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geopath)]
            [uuid(E53FD7B9-2DA4-4714-A652-DE8593289898)]
            interface IGeopath : IInspectable
                requires
                    Windows.Devices.Geolocation.IGeoshape
            {
                [propget] HRESULT Positions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.BasicGeoposition>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geopath)]
            [uuid(27BEA9C8-C7E7-4359-9B9B-FCA3E05EF593)]
            interface IGeopathFactory : IInspectable
            {
                HRESULT Create([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.BasicGeoposition>* positions, [out] [retval] Windows.Devices.Geolocation.Geopath** value);
                HRESULT CreateWithAltitudeReference([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.BasicGeoposition>* positions, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [out] [retval] Windows.Devices.Geolocation.Geopath** value);
                HRESULT CreateWithAltitudeReferenceAndSpatialReference([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Geolocation.BasicGeoposition>* positions, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [in] UINT32 spatialReferenceId, [out] [retval] Windows.Devices.Geolocation.Geopath** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geopoint)]
            [uuid(6BFA00EB-E56E-49BB-9CAF-CBAA78A8BCEF)]
            interface IGeopoint : IInspectable
                requires
                    Windows.Devices.Geolocation.IGeoshape
            {
                [propget] HRESULT Position([out] [retval] Windows.Devices.Geolocation.BasicGeoposition* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geopoint)]
            [uuid(DB6B8D33-76BD-4E30-8AF7-A844DC37B7A0)]
            interface IGeopointFactory : IInspectable
            {
                HRESULT Create([in] Windows.Devices.Geolocation.BasicGeoposition position, [out] [retval] Windows.Devices.Geolocation.Geopoint** value);
                HRESULT CreateWithAltitudeReferenceSystem([in] Windows.Devices.Geolocation.BasicGeoposition position, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [out] [retval] Windows.Devices.Geolocation.Geopoint** value);
                HRESULT CreateWithAltitudeReferenceSystemAndSpatialReferenceId([in] Windows.Devices.Geolocation.BasicGeoposition position, [in] Windows.Devices.Geolocation.AltitudeReferenceSystem altitudeReferenceSystem, [in] UINT32 spatialReferenceId, [out] [retval] Windows.Devices.Geolocation.Geopoint** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geoposition)]
            [uuid(C18D0454-7D41-4FF7-A957-9DFFB4EF7F5B)]
            interface IGeoposition : IInspectable
            {
                [propget] HRESULT Coordinate([out] [retval] Windows.Devices.Geolocation.Geocoordinate** value);
                [propget] HRESULT CivicAddress([out] [retval] Windows.Devices.Geolocation.CivicAddress** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geoposition)]
            [uuid(7F62F697-8671-4B0D-86F8-474A8496187C)]
            interface IGeoposition2 : IInspectable
                requires
                    Windows.Devices.Geolocation.IGeoposition
            {
                [propget] HRESULT VenueData([out] [retval] Windows.Devices.Geolocation.VenueData** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(C99CA2AF-C729-43C1-8FAB-D6DEC914DF7E)]
            interface IGeoshape : IInspectable
            {
                [propget] HRESULT GeoshapeType([out] [retval] Windows.Devices.Geolocation.GeoshapeType* value);
                [propget] HRESULT SpatialReferenceId([out] [retval] UINT32* value);
                [propget] HRESULT AltitudeReferenceSystem([out] [retval] Windows.Devices.Geolocation.AltitudeReferenceSystem* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Geolocation.Geovisit)]
            [uuid(B1877A76-9EF6-41AB-A0DD-793ECE76E2DE)]
            interface IGeovisit : IInspectable
            {
                [propget] HRESULT Position([out] [retval] Windows.Devices.Geolocation.Geoposition** value);
                [propget] HRESULT StateChange([out] [retval] Windows.Devices.Geolocation.VisitStateChange* value);
                [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeovisitMonitor)]
            [uuid(80118AAF-5944-4591-83C1-396647F54F2C)]
            interface IGeovisitMonitor : IInspectable
            {
                [propget] HRESULT MonitoringScope([out] [retval] Windows.Devices.Geolocation.VisitMonitoringScope* value);
                HRESULT Start([in] Windows.Devices.Geolocation.VisitMonitoringScope value);
                HRESULT Stop();
                [eventadd] HRESULT VisitStateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Geolocation.GeovisitMonitor*, Windows.Devices.Geolocation.GeovisitStateChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT VisitStateChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeovisitMonitor)]
            [uuid(BCF976A7-BBF2-4CDD-95CF-554C82EDFB87)]
            interface IGeovisitMonitorStatics : IInspectable
            {
                HRESULT GetLastReportAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.Geovisit*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeovisitStateChangedEventArgs)]
            [uuid(CEB4D1FF-8B53-4968-BEED-4CECD029CE15)]
            interface IGeovisitStateChangedEventArgs : IInspectable
            {
                [propget] HRESULT Visit([out] [retval] Windows.Devices.Geolocation.Geovisit** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Geolocation.GeovisitTriggerDetails)]
            [uuid(EA770D9E-D1C9-454B-99B7-B2F8CDD2482F)]
            interface IGeovisitTriggerDetails : IInspectable
            {
                HRESULT ReadReports([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Geolocation.Geovisit*>** values);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.PositionChangedEventArgs)]
            [uuid(37859CE5-9D1E-46C5-BF3B-6AD8CAC1A093)]
            interface IPositionChangedEventArgs : IInspectable
            {
                [propget] HRESULT Position([out] [retval] Windows.Devices.Geolocation.Geoposition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.StatusChangedEventArgs)]
            [uuid(3453D2DA-8C93-4111-A205-9AECFC9BE5C0)]
            interface IStatusChangedEventArgs : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Devices.Geolocation.PositionStatus* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Geolocation.VenueData)]
            [uuid(66F39187-60E3-4B2F-B527-4F53F1C3C677)]
            interface IVenueData : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT Level([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass CivicAddress
            {
                [default] interface Windows.Devices.Geolocation.ICivicAddress;
            }

            [activatable(Windows.Devices.Geolocation.IGeoboundingBoxFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Geolocation.IGeoboundingBoxStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass GeoboundingBox
            {
                [default] interface Windows.Devices.Geolocation.IGeoboundingBox;
                interface Windows.Devices.Geolocation.IGeoshape;
            }

            [activatable(Windows.Devices.Geolocation.IGeocircleFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass Geocircle
            {
                [default] interface Windows.Devices.Geolocation.IGeocircle;
                interface Windows.Devices.Geolocation.IGeoshape;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass Geocoordinate
            {
                [default] interface Windows.Devices.Geolocation.IGeocoordinate;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Geolocation.IGeocoordinateWithPositionData;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Geolocation.IGeocoordinateWithPoint;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Geolocation.IGeocoordinateWithPositionSourceTimestamp;
                [contract(Windows.Foundation.UniversalApiContract, 14.0)] interface Windows.Devices.Geolocation.IGeocoordinateWithRemoteSource;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass GeocoordinateSatelliteData
            {
                [default] interface Windows.Devices.Geolocation.IGeocoordinateSatelliteData;
                [contract(Windows.Foundation.UniversalApiContract, 12.0)] interface Windows.Devices.Geolocation.IGeocoordinateSatelliteData2;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Geolocation.IGeolocatorStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Devices.Geolocation.IGeolocatorStatics2, Windows.Foundation.UniversalApiContract, 3.0)]
            [threading(both)]
            runtimeclass Geolocator
            {
                [default] interface Windows.Devices.Geolocation.IGeolocator;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Geolocation.IGeolocatorWithScalarAccuracy;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Devices.Geolocation.IGeolocator2;
            }

            [activatable(Windows.Devices.Geolocation.IGeopathFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass Geopath
            {
                [default] interface Windows.Devices.Geolocation.IGeopath;
                interface Windows.Devices.Geolocation.IGeoshape;
            }

            [activatable(Windows.Devices.Geolocation.IGeopointFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass Geopoint
            {
                [default] interface Windows.Devices.Geolocation.IGeopoint;
                interface Windows.Devices.Geolocation.IGeoshape;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass Geoposition
            {
                [default] interface Windows.Devices.Geolocation.IGeoposition;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Geolocation.IGeoposition2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            runtimeclass Geovisit
            {
                [default] interface Windows.Devices.Geolocation.IGeovisit;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 5.0)]
            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Geolocation.IGeovisitMonitorStatics, Windows.Foundation.UniversalApiContract, 5.0)]
            [threading(both)]
            runtimeclass GeovisitMonitor
            {
                [default] interface Windows.Devices.Geolocation.IGeovisitMonitor;
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            runtimeclass GeovisitStateChangedEventArgs
            {
                [default] interface Windows.Devices.Geolocation.IGeovisitStateChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            runtimeclass GeovisitTriggerDetails
            {
                [default] interface Windows.Devices.Geolocation.IGeovisitTriggerDetails;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PositionChangedEventArgs
            {
                [default] interface Windows.Devices.Geolocation.IPositionChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StatusChangedEventArgs
            {
                [default] interface Windows.Devices.Geolocation.IStatusChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass VenueData
            {
                [default] interface Windows.Devices.Geolocation.IVenueData;
            }
        }
    }
}
