//
// 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 "IVectorChangedEventArgs.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;

        typedef enum PropertyType PropertyType;

        typedef struct DateTime DateTime;

        typedef struct Point Point;

        typedef struct Rect Rect;

        typedef struct Size Size;

        typedef struct TimeSpan TimeSpan;

        delegate AsyncActionCompletedHandler;

        delegate DeferralCompletedHandler;

        namespace Collections
        {
            interface IPropertySet;
        }

        interface IAsyncAction;

        interface IClosable;

        interface IDeferral;

        interface IDeferralFactory;

        interface IGetActivationFactory;

        interface IGuidHelperStatics;

        interface IMemoryBuffer;

        interface IMemoryBufferFactory;

        interface IMemoryBufferReference;

        interface IPropertyValue;

        interface IPropertyValueStatics;

        interface IStringable;

        interface IUriEscapeStatics;

        interface IUriRuntimeClass;

        interface IUriRuntimeClassFactory;

        interface IUriRuntimeClassWithAbsoluteCanonicalUri;

        interface IWwwFormUrlDecoderEntry;

        interface IWwwFormUrlDecoderRuntimeClass;

        interface IWwwFormUrlDecoderRuntimeClassFactory;

        namespace Collections
        {
            runtimeclass PropertySet;
        }

        namespace Collections
        {
            runtimeclass StringMap;
        }

        namespace Collections
        {
            runtimeclass ValueSet;
        }

        runtimeclass Deferral;

        runtimeclass GuidHelper;

        runtimeclass MemoryBuffer;

        runtimeclass PropertyValue;

        runtimeclass Uri;

        runtimeclass WwwFormUrlDecoder;

        runtimeclass WwwFormUrlDecoderEntry;
    }
}

// Generic instantiations
namespace Windows
{
    namespace Foundation
    {
        declare
        {
            interface Windows.Foundation.Collections.IIterable<BYTE>;

            interface Windows.Foundation.Collections.IIterable<DOUBLE>;

            interface Windows.Foundation.Collections.IIterable<FLOAT>;

            interface Windows.Foundation.Collections.IIterable<GUID>;

            interface Windows.Foundation.Collections.IIterable<HSTRING>;

            interface Windows.Foundation.Collections.IIterable<IInspectable*>;

            interface Windows.Foundation.Collections.IIterable<INT16>;

            interface Windows.Foundation.Collections.IIterable<INT32>;

            interface Windows.Foundation.Collections.IIterable<INT64>;

            interface Windows.Foundation.Collections.IIterable<UINT16>;

            interface Windows.Foundation.Collections.IIterable<UINT32>;

            interface Windows.Foundation.Collections.IIterable<UINT64>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IIterable<Windows.Foundation.Point>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<GUID, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, HSTRING>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVectorView<HSTRING>*>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<IInspectable*, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<Windows.Foundation.Uri*, HSTRING>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.DateTime>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.IWwwFormUrlDecoderEntry*>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Point>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Size>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.TimeSpan>;

            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>;

            interface Windows.Foundation.Collections.IIterable<boolean>;

            interface Windows.Foundation.Collections.IIterator<BYTE>;

            interface Windows.Foundation.Collections.IIterator<DOUBLE>;

            interface Windows.Foundation.Collections.IIterator<FLOAT>;

            interface Windows.Foundation.Collections.IIterator<GUID>;

            interface Windows.Foundation.Collections.IIterator<HSTRING>;

            interface Windows.Foundation.Collections.IIterator<IInspectable*>;

            interface Windows.Foundation.Collections.IIterator<INT16>;

            interface Windows.Foundation.Collections.IIterator<INT32>;

            interface Windows.Foundation.Collections.IIterator<INT64>;

            interface Windows.Foundation.Collections.IIterator<UINT16>;

            interface Windows.Foundation.Collections.IIterator<UINT32>;

            interface Windows.Foundation.Collections.IIterator<UINT64>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IIterable<Windows.Foundation.Point>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<GUID, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, HSTRING>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVectorView<HSTRING>*>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<IInspectable*, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<Windows.Foundation.Uri*, HSTRING>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.DateTime>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.IWwwFormUrlDecoderEntry*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Point>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Size>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.TimeSpan>;

            interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Uri*>;

            interface Windows.Foundation.Collections.IIterator<boolean>;

            interface Windows.Foundation.Collections.IKeyValuePair<GUID, IInspectable*>;

            interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, HSTRING>;

            interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable*>;

            interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVectorView<HSTRING>*>;

            interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>;

            interface Windows.Foundation.Collections.IKeyValuePair<IInspectable*, IInspectable*>;

            interface Windows.Foundation.Collections.IKeyValuePair<Windows.Foundation.Uri*, HSTRING>;

            interface Windows.Foundation.Collections.IMapChangedEventArgs<HSTRING>;

            interface Windows.Foundation.Collections.IMapView<GUID, IInspectable*>;

            interface Windows.Foundation.Collections.IMapView<HSTRING, HSTRING>;

            interface Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>;

            interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Foundation.Collections.IVectorView<HSTRING>*>;

            interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>;

            interface Windows.Foundation.Collections.IMapView<IInspectable*, IInspectable*>;

            interface Windows.Foundation.Collections.IMapView<Windows.Foundation.Uri*, HSTRING>;

            interface Windows.Foundation.Collections.IMap<GUID, IInspectable*>;

            interface Windows.Foundation.Collections.IMap<HSTRING, HSTRING>;

            interface Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>;

            interface Windows.Foundation.Collections.IMap<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>;

            interface Windows.Foundation.Collections.IMap<IInspectable*, IInspectable*>;

            interface Windows.Foundation.Collections.IMap<Windows.Foundation.Uri*, HSTRING>;

            interface Windows.Foundation.Collections.IObservableMap<HSTRING, HSTRING>;

            interface Windows.Foundation.Collections.IObservableMap<HSTRING, IInspectable*>;

            interface Windows.Foundation.Collections.IObservableVector<IInspectable*>;

            interface Windows.Foundation.Collections.IVectorView<BYTE>;

            interface Windows.Foundation.Collections.IVectorView<DOUBLE>;

            interface Windows.Foundation.Collections.IVectorView<FLOAT>;

            interface Windows.Foundation.Collections.IVectorView<GUID>;

            interface Windows.Foundation.Collections.IVectorView<HSTRING>;

            interface Windows.Foundation.Collections.IVectorView<IInspectable*>;

            interface Windows.Foundation.Collections.IVectorView<INT16>;

            interface Windows.Foundation.Collections.IVectorView<INT32>;

            interface Windows.Foundation.Collections.IVectorView<INT64>;

            interface Windows.Foundation.Collections.IVectorView<UINT16>;

            interface Windows.Foundation.Collections.IVectorView<UINT32>;

            interface Windows.Foundation.Collections.IVectorView<UINT64>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>*>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.DateTime>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.IWwwFormUrlDecoderEntry*>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.Point>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.Size>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.TimeSpan>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.Uri*>;

            interface Windows.Foundation.Collections.IVectorView<boolean>;

            interface Windows.Foundation.Collections.IVector<DOUBLE>;

            interface Windows.Foundation.Collections.IVector<FLOAT>;

            interface Windows.Foundation.Collections.IVector<GUID>;

            interface Windows.Foundation.Collections.IVector<HSTRING>;

            interface Windows.Foundation.Collections.IVector<IInspectable*>;

            interface Windows.Foundation.Collections.IVector<INT32>;

            interface Windows.Foundation.Collections.IVector<UINT32>;

            interface Windows.Foundation.Collections.IVector<Windows.Foundation.DateTime>;

            interface Windows.Foundation.Collections.IVector<Windows.Foundation.Point>;

            interface Windows.Foundation.Collections.IVector<Windows.Foundation.Uri*>;

            interface Windows.Foundation.Collections.IVector<boolean>;

            interface Windows.Foundation.EventHandler<IInspectable*>;

            interface Windows.Foundation.IAsyncActionWithProgress<DOUBLE>;

            interface Windows.Foundation.IAsyncActionWithProgress<UINT64>;

            interface Windows.Foundation.IAsyncOperationWithProgress<HSTRING, UINT64>;

            interface Windows.Foundation.IAsyncOperationWithProgress<UINT32, UINT32>;

            interface Windows.Foundation.IAsyncOperationWithProgress<UINT64, UINT64>;

            interface Windows.Foundation.IAsyncOperationWithProgress<boolean, DOUBLE>;

            interface Windows.Foundation.IAsyncOperation<GUID>;

            interface Windows.Foundation.IAsyncOperation<HSTRING>;

            interface Windows.Foundation.IAsyncOperation<IInspectable*>;

            interface Windows.Foundation.IAsyncOperation<INT32>;

            interface Windows.Foundation.IAsyncOperation<INT64>;

            interface Windows.Foundation.IAsyncOperation<UINT32>;

            interface Windows.Foundation.IAsyncOperation<UINT64>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMapView<HSTRING, HSTRING>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMap<HSTRING, HSTRING>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<HSTRING>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<IInspectable*>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<UINT32>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>*>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVector<HSTRING>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.IReference<Windows.Foundation.DateTime>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.IReference<Windows.Foundation.TimeSpan>*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Uri*>;

            interface Windows.Foundation.IAsyncOperation<boolean>;

            interface Windows.Foundation.IReference<BYTE>;

            interface Windows.Foundation.IReference<DOUBLE>;

            interface Windows.Foundation.IReference<FLOAT>;

            interface Windows.Foundation.IReference<GUID>;

            interface Windows.Foundation.IReference<INT16>;

            interface Windows.Foundation.IReference<INT32>;

            interface Windows.Foundation.IReference<INT64>;

            interface Windows.Foundation.IReference<UINT32>;

            interface Windows.Foundation.IReference<UINT64>;

            interface Windows.Foundation.IReference<Windows.Foundation.DateTime>;

            interface Windows.Foundation.IReference<Windows.Foundation.Point>;

            interface Windows.Foundation.IReference<Windows.Foundation.Rect>;

            interface Windows.Foundation.IReference<Windows.Foundation.Size>;

            interface Windows.Foundation.IReference<Windows.Foundation.TimeSpan>;

            interface Windows.Foundation.IReference<boolean>;

            interface Windows.Foundation.TypedEventHandler<IInspectable*, IInspectable*>;

            interface Windows.Foundation.TypedEventHandler<Windows.Foundation.IMemoryBufferReference*, IInspectable*>;
        }
    }
}

// Type definition
namespace Windows
{
    namespace Foundation
    {

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        enum PropertyType
        {
            Empty            = 0,
            UInt8            = 1,
            Int16            = 2,
            UInt16           = 3,
            Int32            = 4,
            UInt32           = 5,
            Int64            = 6,
            UInt64           = 7,
            Single           = 8,
            Double           = 9,
            Char16           = 10,
            Boolean          = 11,
            String           = 12,
            Inspectable      = 13,
            DateTime         = 14,
            TimeSpan         = 15,
            Guid             = 16,
            Point            = 17,
            Size             = 18,
            Rect             = 19,
            OtherType        = 20,
            UInt8Array       = 1025,
            Int16Array       = 1026,
            UInt16Array      = 1027,
            Int32Array       = 1028,
            UInt32Array      = 1029,
            Int64Array       = 1030,
            UInt64Array      = 1031,
            SingleArray      = 1032,
            DoubleArray      = 1033,
            Char16Array      = 1034,
            BooleanArray     = 1035,
            StringArray      = 1036,
            InspectableArray = 1037,
            DateTimeArray    = 1038,
            TimeSpanArray    = 1039,
            GuidArray        = 1040,
            PointArray       = 1041,
            SizeArray        = 1042,
            RectArray        = 1043,
            OtherTypeArray   = 1044
        };

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        struct DateTime
        {
            INT64 UniversalTime;
        };

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        struct Point
        {
            FLOAT X;
            FLOAT Y;
        };

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        struct Rect
        {
            FLOAT X;
            FLOAT Y;
            FLOAT Width;
            FLOAT Height;
        };

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        struct Size
        {
            FLOAT Width;
            FLOAT Height;
        };

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        struct TimeSpan
        {
            INT64 Duration;
        };

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [uuid(A4ED5C81-76C9-40BD-8BE6-B1D90FB20AE7)]
        delegate
            HRESULT AsyncActionCompletedHandler([in] Windows.Foundation.IAsyncAction* asyncInfo, [in] AsyncStatus asyncStatus);

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [uuid(ED32A372-F3C8-4FAA-9CFB-470148DA3888)]
        delegate
            HRESULT DeferralCompletedHandler();

        namespace Collections
        {
            [contract(Windows.Foundation.FoundationContract, 1.0)]
            [uuid(8A43ED9F-F4E6-4421-ACF9-1DAB2986820C)]
            interface IPropertySet : IInspectable
                requires
                    Windows.Foundation.Collections.IObservableMap<HSTRING, IInspectable*>,
                    Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>,
                    Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable*>*>
            {
            }
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [uuid(5A648006-843A-4DA9-865B-9D26E5DFAD7B)]
        interface IAsyncAction : IInspectable
            requires
                IAsyncInfo
        {
            [propput] HRESULT Completed([in] Windows.Foundation.AsyncActionCompletedHandler* handler);
            [propget] HRESULT Completed([out] [retval] Windows.Foundation.AsyncActionCompletedHandler** handler);
            HRESULT GetResults();
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [uuid(30D5A829-7FA4-4026-83BB-D75BAE4EA99E)]
        interface IClosable : IInspectable
        {
            HRESULT Close();
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [exclusiveto(Windows.Foundation.Deferral)]
        [uuid(D6269732-3B7F-46A7-B40B-4FDCA2A2C693)]
        interface IDeferral : IInspectable
            requires
                Windows.Foundation.IClosable
        {
            HRESULT Complete();
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [exclusiveto(Windows.Foundation.Deferral)]
        [uuid(65A1ECC5-3FB5-4832-8CA9-F061B281D13A)]
        interface IDeferralFactory : IInspectable
        {
            HRESULT Create([in] Windows.Foundation.DeferralCompletedHandler* handler, [out] [retval] Windows.Foundation.Deferral** result);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [uuid(4EDB8EE2-96DD-49A7-94F7-4607DDAB8E3C)]
        interface IGetActivationFactory : IInspectable
        {
            HRESULT GetActivationFactory([in] HSTRING activatableClassId, [out] [retval] IInspectable** factory);
        }

        [contract(Windows.Foundation.UniversalApiContract, 7.0)]
        [exclusiveto(Windows.Foundation.GuidHelper)]
        [uuid(59C7966B-AE52-5283-AD7F-A1B9E9678ADD)]
        interface IGuidHelperStatics : IInspectable
        {
            HRESULT CreateNewGuid([out] [retval] GUID* result);
            [propget] HRESULT Empty([out] [retval] GUID* value);
            HRESULT Equals([in]  const GUID* target, [in]  const GUID* value, [out] [retval] boolean* result);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [uuid(FBC4DD2A-245B-11E4-AF98-689423260CF8)]
        interface IMemoryBuffer : IInspectable
            requires
                Windows.Foundation.IClosable
        {
            HRESULT CreateReference([out] [retval] Windows.Foundation.IMemoryBufferReference** reference);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [exclusiveto(Windows.Foundation.MemoryBuffer)]
        [uuid(FBC4DD2B-245B-11E4-AF98-689423260CF8)]
        interface IMemoryBufferFactory : IInspectable
        {
            HRESULT Create([in] [range(0x00000000, 0x7FFFFFFF)] UINT32 capacity, [out] [retval] Windows.Foundation.MemoryBuffer** value);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [uuid(FBC4DD29-245B-11E4-AF98-689423260CF8)]
        interface IMemoryBufferReference : IInspectable
            requires
                Windows.Foundation.IClosable
        {
            [propget] HRESULT Capacity([out] [retval] UINT32* value);
            [eventadd] HRESULT Closed([in] Windows.Foundation.TypedEventHandler<Windows.Foundation.IMemoryBufferReference*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT Closed([in] EventRegistrationToken cookie);
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [uuid(4BD682DD-7554-40E9-9A9B-82654EDE7E62)]
        interface IPropertyValue : IInspectable
        {
            [propget] HRESULT Type([out] [retval] Windows.Foundation.PropertyType* value);
            [propget] HRESULT IsNumericScalar([out] [retval] boolean* value);
            HRESULT GetUInt8([out] [retval] BYTE* value);
            HRESULT GetInt16([out] [retval] INT16* value);
            HRESULT GetUInt16([out] [retval] UINT16* value);
            HRESULT GetInt32([out] [retval] INT32* value);
            HRESULT GetUInt32([out] [retval] UINT32* value);
            HRESULT GetInt64([out] [retval] INT64* value);
            HRESULT GetUInt64([out] [retval] UINT64* value);
            HRESULT GetSingle([out] [retval] FLOAT* value);
            HRESULT GetDouble([out] [retval] DOUBLE* value);
            HRESULT GetChar16([out] [retval] WCHAR* value);
            HRESULT GetBoolean([out] [retval] boolean* value);
            HRESULT GetString([out] [retval] HSTRING* value);
            HRESULT GetGuid([out] [retval] GUID* value);
            HRESULT GetDateTime([out] [retval] Windows.Foundation.DateTime* value);
            HRESULT GetTimeSpan([out] [retval] Windows.Foundation.TimeSpan* value);
            HRESULT GetPoint([out] [retval] Windows.Foundation.Point* value);
            HRESULT GetSize([out] [retval] Windows.Foundation.Size* value);
            HRESULT GetRect([out] [retval] Windows.Foundation.Rect* value);
            HRESULT GetUInt8Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] BYTE** value);
            HRESULT GetInt16Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] INT16** value);
            HRESULT GetUInt16Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] UINT16** value);
            HRESULT GetInt32Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] INT32** value);
            HRESULT GetUInt32Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] UINT32** value);
            HRESULT GetInt64Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] INT64** value);
            HRESULT GetUInt64Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] UINT64** value);
            HRESULT GetSingleArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] FLOAT** value);
            HRESULT GetDoubleArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] DOUBLE** value);
            HRESULT GetChar16Array([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] WCHAR** value);
            HRESULT GetBooleanArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] boolean** value);
            HRESULT GetStringArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] HSTRING** value);
            HRESULT GetInspectableArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] IInspectable*** value);
            HRESULT GetGuidArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] GUID** value);
            HRESULT GetDateTimeArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] Windows.Foundation.DateTime** value);
            HRESULT GetTimeSpanArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] Windows.Foundation.TimeSpan** value);
            HRESULT GetPointArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] Windows.Foundation.Point** value);
            HRESULT GetSizeArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] Windows.Foundation.Size** value);
            HRESULT GetRectArray([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] Windows.Foundation.Rect** value);
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [exclusiveto(Windows.Foundation.PropertyValue)]
        [uuid(629BDBC8-D932-4FF4-96B9-8D96C5C1E858)]
        interface IPropertyValueStatics : IInspectable
        {
            HRESULT CreateEmpty([out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt8([in] BYTE value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInt16([in] INT16 value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt16([in] UINT16 value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInt32([in] INT32 value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt32([in] UINT32 value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInt64([in] INT64 value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt64([in] UINT64 value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateSingle([in] FLOAT value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateDouble([in] DOUBLE value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateChar16([in] WCHAR value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateBoolean([in] boolean value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateString([in] HSTRING value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInspectable([in] IInspectable* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateGuid([in] GUID value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateDateTime([in] Windows.Foundation.DateTime value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateTimeSpan([in] Windows.Foundation.TimeSpan value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreatePoint([in] Windows.Foundation.Point value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateSize([in] Windows.Foundation.Size value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateRect([in] Windows.Foundation.Rect value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt8Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInt16Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] INT16* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt16Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] UINT16* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInt32Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] INT32* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt32Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] UINT32* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInt64Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] INT64* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateUInt64Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] UINT64* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateSingleArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] FLOAT* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateDoubleArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] DOUBLE* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateChar16Array([in] UINT32 __valueSize, [in] [size_is(__valueSize)] WCHAR* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateBooleanArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] boolean* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateStringArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] HSTRING* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateInspectableArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] IInspectable** value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateGuidArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] GUID* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateDateTimeArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] Windows.Foundation.DateTime* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateTimeSpanArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] Windows.Foundation.TimeSpan* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreatePointArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] Windows.Foundation.Point* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateSizeArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] Windows.Foundation.Size* value, [out] [retval] IInspectable** propertyValue);
            HRESULT CreateRectArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] Windows.Foundation.Rect* value, [out] [retval] IInspectable** propertyValue);
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [uuid(96369F54-8EB6-48F0-ABCE-C1B211E627C3)]
        interface IStringable : IInspectable
        {
            HRESULT ToString([out] [retval] HSTRING* value);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [exclusiveto(Windows.Foundation.Uri)]
        [uuid(C1D432BA-C824-4452-A7FD-512BC3BBE9A1)]
        interface IUriEscapeStatics : IInspectable
        {
            HRESULT UnescapeComponent([in] HSTRING toUnescape, [out] [retval] HSTRING* value);
            HRESULT EscapeComponent([in] HSTRING toEscape, [out] [retval] HSTRING* value);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [exclusiveto(Windows.Foundation.Uri)]
        [uuid(9E365E57-48B2-4160-956F-C7385120BBFC)]
        interface IUriRuntimeClass : IInspectable
        {
            [propget] HRESULT AbsoluteUri([out] [retval] HSTRING* value);
            [propget] HRESULT DisplayUri([out] [retval] HSTRING* value);
            [propget] HRESULT Domain([out] [retval] HSTRING* value);
            [propget] HRESULT Extension([out] [retval] HSTRING* value);
            [propget] HRESULT Fragment([out] [retval] HSTRING* value);
            [propget] HRESULT Host([out] [retval] HSTRING* value);
            [propget] HRESULT Password([out] [retval] HSTRING* value);
            [propget] HRESULT Path([out] [retval] HSTRING* value);
            [propget] HRESULT Query([out] [retval] HSTRING* value);
            [propget] HRESULT QueryParsed([out] [retval] Windows.Foundation.WwwFormUrlDecoder** ppWwwFormUrlDecoder);
            [propget] HRESULT RawUri([out] [retval] HSTRING* value);
            [propget] HRESULT SchemeName([out] [retval] HSTRING* value);
            [propget] HRESULT UserName([out] [retval] HSTRING* value);
            [propget] HRESULT Port([out] [retval] INT32* value);
            [propget] HRESULT Suspicious([out] [retval] boolean* value);
            HRESULT Equals([in] Windows.Foundation.Uri* pUri, [out] [retval] boolean* value);
            HRESULT CombineUri([in] HSTRING relativeUri, [out] [retval] Windows.Foundation.Uri** instance);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [exclusiveto(Windows.Foundation.Uri)]
        [uuid(44A9796F-723E-4FDF-A218-033E75B0C084)]
        interface IUriRuntimeClassFactory : IInspectable
        {
            HRESULT CreateUri([in] HSTRING uri, [out] [retval] Windows.Foundation.Uri** instance);
            HRESULT CreateWithRelativeUri([in] HSTRING baseUri, [in] HSTRING relativeUri, [out] [retval] Windows.Foundation.Uri** instance);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [exclusiveto(Windows.Foundation.Uri)]
        [uuid(758D9661-221C-480F-A339-50656673F46F)]
        interface IUriRuntimeClassWithAbsoluteCanonicalUri : IInspectable
        {
            [propget] HRESULT AbsoluteCanonicalUri([out] [retval] HSTRING* value);
            [propget] HRESULT DisplayIri([out] [retval] HSTRING* value);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [uuid(125E7431-F678-4E8E-B670-20A9B06C512D)]
        interface IWwwFormUrlDecoderEntry : IInspectable
        {
            [propget] HRESULT Name([out] [retval] HSTRING* value);
            [propget] HRESULT Value([out] [retval] HSTRING* value);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [exclusiveto(Windows.Foundation.WwwFormUrlDecoder)]
        [uuid(D45A0451-F225-4542-9296-0E1DF5D254DF)]
        interface IWwwFormUrlDecoderRuntimeClass : IInspectable
            requires
                Windows.Foundation.Collections.IIterable<Windows.Foundation.IWwwFormUrlDecoderEntry*>,
                Windows.Foundation.Collections.IVectorView<Windows.Foundation.IWwwFormUrlDecoderEntry*>
        {
            HRESULT GetFirstValueByName([in] HSTRING name, [out] [retval] HSTRING* phstrValue);
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [exclusiveto(Windows.Foundation.WwwFormUrlDecoder)]
        [uuid(5B8C6B3D-24AE-41B5-A1BF-F0C3D544845B)]
        interface IWwwFormUrlDecoderRuntimeClassFactory : IInspectable
        {
            HRESULT CreateWwwFormUrlDecoder([in] HSTRING query, [out] [retval] Windows.Foundation.WwwFormUrlDecoder** instance);
        }

        namespace Collections
        {
            [activatable(Windows.Foundation.FoundationContract, 1.0)]
            [contract(Windows.Foundation.FoundationContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PropertySet
            {
                [default] interface Windows.Foundation.Collections.IPropertySet;
                interface Windows.Foundation.Collections.IObservableMap<HSTRING, IInspectable*>;
                interface Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable*>*>;
            }
        }

        namespace Collections
        {
            [activatable(Windows.Foundation.FoundationContract, 1.0)]
            [contract(Windows.Foundation.FoundationContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass StringMap
            {
                [default] interface Windows.Foundation.Collections.IMap<HSTRING, HSTRING>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, HSTRING>*>;
                interface Windows.Foundation.Collections.IObservableMap<HSTRING, HSTRING>;
            }
        }

        namespace Collections
        {
            [activatable(Windows.Foundation.FoundationContract, 1.0)]
            [contract(Windows.Foundation.FoundationContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ValueSet
            {
                [default] interface Windows.Foundation.Collections.IPropertySet;
                interface Windows.Foundation.Collections.IObservableMap<HSTRING, IInspectable*>;
                interface Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable*>*>;
            }
        }

        [activatable(Windows.Foundation.IDeferralFactory, Windows.Foundation.FoundationContract, 1.0)]
        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [marshaling_behavior(agile)]
        runtimeclass Deferral
        {
            [default] interface Windows.Foundation.IDeferral;
            interface Windows.Foundation.IClosable;
        }

        [contract(Windows.Foundation.UniversalApiContract, 7.0)]
        [marshaling_behavior(agile)]
        [static(Windows.Foundation.IGuidHelperStatics, Windows.Foundation.UniversalApiContract, 7.0)]
        [threading(both)]
        runtimeclass GuidHelper
        {
        }

        [activatable(Windows.Foundation.IMemoryBufferFactory, Windows.Foundation.UniversalApiContract, 1.0)]
        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [marshaling_behavior(agile)]
        [threading(both)]
        runtimeclass MemoryBuffer
        {
            [default] interface Windows.Foundation.IMemoryBuffer;
            interface Windows.Foundation.IClosable;
        }

        [contract(Windows.Foundation.FoundationContract, 1.0)]
        [marshaling_behavior(agile)]
        [static(Windows.Foundation.IPropertyValueStatics, Windows.Foundation.FoundationContract, 1.0)]
        [threading(both)]
        runtimeclass PropertyValue
        {
        }

        [activatable(Windows.Foundation.IUriRuntimeClassFactory, Windows.Foundation.UniversalApiContract, 1.0)]
        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [marshaling_behavior(agile)]
        [static(Windows.Foundation.IUriEscapeStatics, Windows.Foundation.UniversalApiContract, 1.0)]
        [threading(both)]
        runtimeclass Uri
        {
            [default] interface Windows.Foundation.IUriRuntimeClass;
            interface Windows.Foundation.IUriRuntimeClassWithAbsoluteCanonicalUri;
            [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Foundation.IStringable;
        }

        [activatable(Windows.Foundation.IWwwFormUrlDecoderRuntimeClassFactory, Windows.Foundation.UniversalApiContract, 1.0)]
        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [marshaling_behavior(agile)]
        [threading(both)]
        runtimeclass WwwFormUrlDecoder
        {
            [default] interface Windows.Foundation.IWwwFormUrlDecoderRuntimeClass;
            interface Windows.Foundation.Collections.IVectorView<Windows.Foundation.IWwwFormUrlDecoderEntry*>;
            interface Windows.Foundation.Collections.IIterable<Windows.Foundation.IWwwFormUrlDecoderEntry*>;
        }

        [contract(Windows.Foundation.UniversalApiContract, 1.0)]
        [marshaling_behavior(agile)]
        [threading(both)]
        runtimeclass WwwFormUrlDecoderEntry
        {
            [default] interface Windows.Foundation.IWwwFormUrlDecoderEntry;
        }
    }
}
