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

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            typedef struct BasicGeoposition BasicGeoposition;

            typedef enum PositionSource PositionSource;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            namespace Provider
            {
                typedef enum LocationOverrideStatus LocationOverrideStatus;

                interface IGeolocationProvider;

                runtimeclass GeolocationProvider;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            namespace Provider
            {
                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                enum LocationOverrideStatus
                {
                    Success        = 0,
                    AccessDenied   = 1,
                    AlreadyStarted = 2,
                    Other          = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.Devices.Geolocation.Provider.GeolocationProvider)]
                [uuid(E4CF071D-3F64-509F-8DC2-0B74A059829D)]
                interface IGeolocationProvider : IInspectable
                {
                    [propget] HRESULT IsOverridden([out] [retval] boolean* value);
                    HRESULT SetOverridePosition([in] Windows.Devices.Geolocation.BasicGeoposition newPosition, [in] Windows.Devices.Geolocation.PositionSource positionSource, [in] DOUBLE accuracyInMeters, [out] [retval] Windows.Devices.Geolocation.Provider.LocationOverrideStatus* result);
                    HRESULT ClearOverridePosition();
                    [eventadd] HRESULT IsOverriddenChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT IsOverriddenChanged([in] EventRegistrationToken token);
                }

                [activatable(Windows.Foundation.UniversalApiContract, 15.0)]
                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass GeolocationProvider
                {
                    [default] interface Windows.Devices.Geolocation.Provider.IGeolocationProvider;
                }
            }
        }
    }
}
