//
// 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.ApplicationModel.Background.idl";
import "Windows.Networking.idl";
import "Windows.Networking.Connectivity.idl";
import "Windows.Security.Credentials.idl";
import "Windows.Security.Cryptography.Certificates.idl";
import "Windows.Storage.Streams.idl";
import "Windows.Web.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Background
        {
            interface IBackgroundTask;

            interface IBackgroundTrigger;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Deferral;

        interface IAsyncAction;

        interface IClosable;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace Connectivity
        {
            runtimeclass NetworkAdapter;
        }
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass EndpointPair;

        runtimeclass HostName;

        typedef enum HostNameSortOptions HostNameSortOptions;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass PasswordCredential;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Certificates
            {
                runtimeclass Certificate;

                typedef enum ChainValidationResult ChainValidationResult;
            }
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            runtimeclass DataReader;

            interface IBuffer;

            interface IInputStream;

            interface IOutputStream;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        typedef enum WebErrorStatus WebErrorStatus;
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace Sockets
        {
            apicontract ControlChannelTriggerContract;

            typedef enum ControlChannelTriggerResetReason ControlChannelTriggerResetReason;

            typedef enum ControlChannelTriggerResourceType ControlChannelTriggerResourceType;

            typedef enum ControlChannelTriggerStatus ControlChannelTriggerStatus;

            typedef enum MessageWebSocketReceiveMode MessageWebSocketReceiveMode;

            typedef enum SocketActivityConnectedStandbyAction SocketActivityConnectedStandbyAction;

            typedef enum SocketActivityKind SocketActivityKind;

            typedef enum SocketActivityTriggerReason SocketActivityTriggerReason;

            typedef enum SocketErrorStatus SocketErrorStatus;

            typedef enum SocketMessageType SocketMessageType;

            typedef enum SocketProtectionLevel SocketProtectionLevel;

            typedef enum SocketQualityOfService SocketQualityOfService;

            typedef enum SocketSslErrorSeverity SocketSslErrorSeverity;

            typedef struct BandwidthStatistics BandwidthStatistics;

            typedef struct RoundTripTimeStatistics RoundTripTimeStatistics;

            interface IControlChannelTrigger;

            interface IControlChannelTrigger2;

            interface IControlChannelTriggerEventDetails;

            interface IControlChannelTriggerFactory;

            interface IControlChannelTriggerResetEventDetails;

            interface IDatagramSocket;

            interface IDatagramSocket2;

            interface IDatagramSocket3;

            interface IDatagramSocketControl;

            interface IDatagramSocketControl2;

            interface IDatagramSocketControl3;

            interface IDatagramSocketInformation;

            interface IDatagramSocketMessageReceivedEventArgs;

            interface IDatagramSocketStatics;

            interface IMessageWebSocket;

            interface IMessageWebSocket2;

            interface IMessageWebSocket3;

            interface IMessageWebSocketControl;

            interface IMessageWebSocketControl2;

            interface IMessageWebSocketMessageReceivedEventArgs;

            interface IMessageWebSocketMessageReceivedEventArgs2;

            interface IServerMessageWebSocket;

            interface IServerMessageWebSocketControl;

            interface IServerMessageWebSocketInformation;

            interface IServerStreamWebSocket;

            interface IServerStreamWebSocketInformation;

            interface ISocketActivityContext;

            interface ISocketActivityContextFactory;

            interface ISocketActivityInformation;

            interface ISocketActivityInformationStatics;

            interface ISocketActivityTriggerDetails;

            interface ISocketErrorStatics;

            interface IStreamSocket;

            interface IStreamSocket2;

            interface IStreamSocket3;

            interface IStreamSocketControl;

            interface IStreamSocketControl2;

            interface IStreamSocketControl3;

            interface IStreamSocketControl4;

            interface IStreamSocketInformation;

            interface IStreamSocketInformation2;

            interface IStreamSocketListener;

            interface IStreamSocketListener2;

            interface IStreamSocketListener3;

            interface IStreamSocketListenerConnectionReceivedEventArgs;

            interface IStreamSocketListenerControl;

            interface IStreamSocketListenerControl2;

            interface IStreamSocketListenerInformation;

            interface IStreamSocketStatics;

            interface IStreamWebSocket;

            interface IStreamWebSocket2;

            interface IStreamWebSocketControl;

            interface IStreamWebSocketControl2;

            interface IWebSocket;

            interface IWebSocketClosedEventArgs;

            interface IWebSocketControl;

            interface IWebSocketControl2;

            interface IWebSocketErrorStatics;

            interface IWebSocketInformation;

            interface IWebSocketInformation2;

            interface IWebSocketServerCustomValidationRequestedEventArgs;

            runtimeclass ControlChannelTrigger;

            runtimeclass DatagramSocket;

            runtimeclass DatagramSocketControl;

            runtimeclass DatagramSocketInformation;

            runtimeclass DatagramSocketMessageReceivedEventArgs;

            runtimeclass MessageWebSocket;

            runtimeclass MessageWebSocketControl;

            runtimeclass MessageWebSocketInformation;

            runtimeclass MessageWebSocketMessageReceivedEventArgs;

            runtimeclass ServerMessageWebSocket;

            runtimeclass ServerMessageWebSocketControl;

            runtimeclass ServerMessageWebSocketInformation;

            runtimeclass ServerStreamWebSocket;

            runtimeclass ServerStreamWebSocketInformation;

            runtimeclass SocketActivityContext;

            runtimeclass SocketActivityInformation;

            runtimeclass SocketActivityTriggerDetails;

            runtimeclass SocketError;

            runtimeclass StreamSocket;

            runtimeclass StreamSocketControl;

            runtimeclass StreamSocketInformation;

            runtimeclass StreamSocketListener;

            runtimeclass StreamSocketListenerConnectionReceivedEventArgs;

            runtimeclass StreamSocketListenerControl;

            runtimeclass StreamSocketListenerInformation;

            runtimeclass StreamWebSocket;

            runtimeclass StreamWebSocketControl;

            runtimeclass StreamWebSocketInformation;

            runtimeclass WebSocketClosedEventArgs;

            runtimeclass WebSocketError;

            runtimeclass WebSocketKeepAlive;

            runtimeclass WebSocketServerCustomValidationRequestedEventArgs;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Networking
    {
        namespace Sockets
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Networking.Sockets.SocketActivityInformation*>*>;

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

                interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Networking.Sockets.SocketActivityInformation*>;

                interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Networking.Sockets.SocketActivityInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Networking.Sockets.StreamSocket*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.DatagramSocket*, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.IWebSocket*, Windows.Networking.Sockets.WebSocketClosedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.MessageWebSocket*, Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.MessageWebSocket*, Windows.Networking.Sockets.WebSocketServerCustomValidationRequestedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.ServerMessageWebSocket*, Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.ServerMessageWebSocket*, Windows.Networking.Sockets.WebSocketClosedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.ServerStreamWebSocket*, Windows.Networking.Sockets.WebSocketClosedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.StreamSocketListener*, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.StreamWebSocket*, Windows.Networking.Sockets.WebSocketServerCustomValidationRequestedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Networking
    {
        namespace Sockets
        {

            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            enum ControlChannelTriggerResetReason
            {
                FastUserSwitched   = 0,
                LowPowerExit       = 1,
                [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
                QuietHoursExit     = 2,
                [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
                ApplicationRestart = 3
            };

            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            enum ControlChannelTriggerResourceType
            {
                RequestSoftwareSlot = 0,
                RequestHardwareSlot = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [from_contract(Windows.Networking.Sockets.ControlChannelTriggerContract, range(1.0, 3.0))]
            enum ControlChannelTriggerStatus
            {
                HardwareSlotRequested = 0,
                SoftwareSlotAllocated = 1,
                HardwareSlotAllocated = 2,
                PolicyError           = 3,
                SystemError           = 4,
                TransportDisconnected = 5,
                ServiceUnavailable    = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum MessageWebSocketReceiveMode
            {
                FullMessage    = 0,
                PartialMessage = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketActivityConnectedStandbyAction
            {
                DoNotWake = 0,
                Wake      = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketActivityKind
            {
                None                 = 0,
                StreamSocketListener = 1,
                DatagramSocket       = 2,
                StreamSocket         = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketActivityTriggerReason
            {
                None                  = 0,
                SocketActivity        = 1,
                ConnectionAccepted    = 2,
                KeepAliveTimerExpired = 3,
                SocketClosed          = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketErrorStatus
            {
                Unknown                            = 0,
                OperationAborted                   = 1,
                HttpInvalidServerResponse          = 2,
                ConnectionTimedOut                 = 3,
                AddressFamilyNotSupported          = 4,
                SocketTypeNotSupported             = 5,
                HostNotFound                       = 6,
                NoDataRecordOfRequestedType        = 7,
                NonAuthoritativeHostNotFound       = 8,
                ClassTypeNotFound                  = 9,
                AddressAlreadyInUse                = 10,
                CannotAssignRequestedAddress       = 11,
                ConnectionRefused                  = 12,
                NetworkIsUnreachable               = 13,
                UnreachableHost                    = 14,
                NetworkIsDown                      = 15,
                NetworkDroppedConnectionOnReset    = 16,
                SoftwareCausedConnectionAbort      = 17,
                ConnectionResetByPeer              = 18,
                HostIsDown                         = 19,
                NoAddressesFound                   = 20,
                TooManyOpenFiles                   = 21,
                MessageTooLong                     = 22,
                CertificateExpired                 = 23,
                CertificateUntrustedRoot           = 24,
                CertificateCommonNameIsIncorrect   = 25,
                CertificateWrongUsage              = 26,
                CertificateRevoked                 = 27,
                CertificateNoRevocationCheck       = 28,
                CertificateRevocationServerOffline = 29,
                CertificateIsInvalid               = 30
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketMessageType
            {
                Binary = 0,
                Utf8   = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketProtectionLevel
            {
                PlainSocket                                = 0,
                [deprecated("Ssl may result in insecure connections and may be altered or unavailable for releases after Windows 8.1. Instead, use one of the TLS SocketProtectionLevel values.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
                Ssl                                        = 1,
                SslAllowNullEncryption                     = 2,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                BluetoothEncryptionAllowNullAuthentication = 3,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                BluetoothEncryptionWithAuthentication      = 4,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [deprecated("Ssl3AllowWeakEncryption may result in insecure connections and may be altered or unavailable for releases after Windows 8.1. Instead, use one of the TLS SocketProtectionLevel values.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
                Ssl3AllowWeakEncryption                    = 5,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Tls10                                      = 6,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Tls11                                      = 7,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Tls12                                      = 8,
                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                Unspecified                                = 9,
                [contract(Windows.Foundation.UniversalApiContract, 16.0)]
                Tls13                                      = 10
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketQualityOfService
            {
                Normal     = 0,
                LowLatency = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SocketSslErrorSeverity
            {
                None      = 0,
                Ignorable = 1,
                Fatal     = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct BandwidthStatistics
            {
                UINT64 OutboundBitsPerSecond;
                UINT64 InboundBitsPerSecond;
                UINT64 OutboundBitsPerSecondInstability;
                UINT64 InboundBitsPerSecondInstability;
                boolean OutboundBandwidthPeaked;
                boolean InboundBandwidthPeaked;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct RoundTripTimeStatistics
            {
                UINT32 Variance;
                UINT32 Max;
                UINT32 Min;
                UINT32 Sum;
            };

            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.ControlChannelTrigger)]
            [uuid(7D1431A7-EE96-40E8-A199-8703CD969EC3)]
            interface IControlChannelTrigger : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT ControlChannelTriggerId([out] [retval] HSTRING* value);
                [propget] HRESULT ServerKeepAliveIntervalInMinutes([out] [retval] UINT32* value);
                [propput] HRESULT ServerKeepAliveIntervalInMinutes([in] UINT32 value);
                [propget] HRESULT CurrentKeepAliveIntervalInMinutes([out] [retval] UINT32* value);
                [propget] HRESULT TransportObject([out] [retval] IInspectable** value);
                [propget] HRESULT KeepAliveTrigger([out] [retval] Windows.ApplicationModel.Background.IBackgroundTrigger** trigger);
                [propget] HRESULT PushNotificationTrigger([out] [retval] Windows.ApplicationModel.Background.IBackgroundTrigger** trigger);
                HRESULT UsingTransport([in] IInspectable* transport);
                HRESULT WaitForPushEnabled([out] [retval] Windows.Networking.Sockets.ControlChannelTriggerStatus* channelTriggerStatus);
                HRESULT DecreaseNetworkKeepAliveInterval();
                HRESULT FlushTransport();
            }

            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 2.0)]
            [exclusiveto(Windows.Networking.Sockets.ControlChannelTrigger)]
            [uuid(AF00D237-51BE-4514-9725-3556E1879580)]
            interface IControlChannelTrigger2 : IInspectable
            {
                [propget] HRESULT IsWakeFromLowPowerSupported([out] [retval] boolean* value);
            }

            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            [uuid(1B36E047-89BB-4236-96AC-71D012BB4869)]
            interface IControlChannelTriggerEventDetails : IInspectable
            {
                [propget] HRESULT ControlChannelTrigger([out] [retval] Windows.Networking.Sockets.ControlChannelTrigger** value);
            }

            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.ControlChannelTrigger)]
            [uuid(DA4B7CF0-8D71-446F-88C3-B95184A2D6CD)]
            interface IControlChannelTriggerFactory : IInspectable
            {
                HRESULT CreateControlChannelTrigger([in] HSTRING channelId, [in] UINT32 serverKeepAliveIntervalInMinutes, [out] [retval] Windows.Networking.Sockets.ControlChannelTrigger** notificationChannel);
                HRESULT CreateControlChannelTriggerEx([in] HSTRING channelId, [in] UINT32 serverKeepAliveIntervalInMinutes, [in] Windows.Networking.Sockets.ControlChannelTriggerResourceType resourceRequestType, [out] [retval] Windows.Networking.Sockets.ControlChannelTrigger** notificationChannel);
            }

            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            [uuid(6851038E-8EC4-42FE-9BB2-21E91B7BFCB1)]
            interface IControlChannelTriggerResetEventDetails : IInspectable
            {
                [propget] HRESULT ResetReason([out] [retval] Windows.Networking.Sockets.ControlChannelTriggerResetReason* value);
                [propget] HRESULT HardwareSlotReset([out] [retval] boolean* value);
                [propget] HRESULT SoftwareSlotReset([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocket)]
            [uuid(7FE25BBB-C3BC-4677-8446-CA28A465A3AF)]
            interface IDatagramSocket : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Control([out] [retval] Windows.Networking.Sockets.DatagramSocketControl** value);
                [propget] HRESULT Information([out] [retval] Windows.Networking.Sockets.DatagramSocketInformation** value);
                [propget] HRESULT OutputStream([out] [retval] Windows.Storage.Streams.IOutputStream** value);
                [overload("ConnectAsync")] HRESULT ConnectAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                [overload("ConnectAsync")] HRESULT ConnectWithEndpointPairAsync([in] Windows.Networking.EndpointPair* endpointPair, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT BindServiceNameAsync([in] HSTRING localServiceName, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT BindEndpointAsync([in] Windows.Networking.HostName* localHostName, [in] HSTRING localServiceName, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT JoinMulticastGroup([in] Windows.Networking.HostName* host);
                [overload("GetOutputStreamAsync")] HRESULT GetOutputStreamAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IOutputStream*>** value);
                [overload("GetOutputStreamAsync")] HRESULT GetOutputStreamWithEndpointPairAsync([in] Windows.Networking.EndpointPair* endpointPair, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IOutputStream*>** value);
                [eventadd] HRESULT MessageReceived([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.DatagramSocket*, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT MessageReceived([in] EventRegistrationToken eventCookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocket)]
            [uuid(D83BA354-9A9D-4185-A20A-1424C9C2A7CD)]
            interface IDatagramSocket2 : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [overload("BindServiceNameAsync")] HRESULT BindServiceNameAndAdapterAsync([in] HSTRING localServiceName, [in] Windows.Networking.Connectivity.NetworkAdapter* adapter, [out] [retval] Windows.Foundation.IAsyncAction** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocket)]
            [uuid(37544F09-AB92-4306-9AC1-0C381283D9C6)]
            interface IDatagramSocket3 : IInspectable
            {
                HRESULT CancelIOAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                [overload("EnableTransferOwnership")] HRESULT EnableTransferOwnership([in] GUID taskId);
                [overload("EnableTransferOwnership")] HRESULT EnableTransferOwnershipWithConnectedStandbyAction([in] GUID taskId, [in] Windows.Networking.Sockets.SocketActivityConnectedStandbyAction connectedStandbyAction);
                [overload("TransferOwnership")] HRESULT TransferOwnership([in] HSTRING socketId);
                [overload("TransferOwnership")] HRESULT TransferOwnershipWithContext([in] HSTRING socketId, [in] Windows.Networking.Sockets.SocketActivityContext* data);
                [overload("TransferOwnership")] HRESULT TransferOwnershipWithContextAndKeepAliveTime([in] HSTRING socketId, [in] Windows.Networking.Sockets.SocketActivityContext* data, [in] Windows.Foundation.TimeSpan keepAliveTime);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocketControl)]
            [uuid(52AC3F2E-349A-4135-BB58-B79B2647D390)]
            interface IDatagramSocketControl : IInspectable
            {
                [propget] HRESULT QualityOfService([out] [retval] Windows.Networking.Sockets.SocketQualityOfService* value);
                [propput] HRESULT QualityOfService([in] Windows.Networking.Sockets.SocketQualityOfService value);
                [propget] HRESULT OutboundUnicastHopLimit([out] [retval] BYTE* value);
                [propput] HRESULT OutboundUnicastHopLimit([in] BYTE value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocketControl)]
            [uuid(33EAD5C2-979C-4415-82A1-3CFAF646C192)]
            interface IDatagramSocketControl2 : IInspectable
            {
                [propget] HRESULT InboundBufferSizeInBytes([out] [retval] UINT32* value);
                [propput] HRESULT InboundBufferSizeInBytes([in] UINT32 value);
                [propget] HRESULT DontFragment([out] [retval] boolean* value);
                [propput] HRESULT DontFragment([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocketControl)]
            [uuid(D4EB8256-1F6D-4598-9B57-D42A001DF349)]
            interface IDatagramSocketControl3 : IInspectable
            {
                [propget] HRESULT MulticastOnly([out] [retval] boolean* value);
                [propput] HRESULT MulticastOnly([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocketInformation)]
            [uuid(5F1A569A-55FB-48CD-9706-7A974F7B1585)]
            interface IDatagramSocketInformation : IInspectable
            {
                [propget] HRESULT LocalAddress([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT LocalPort([out] [retval] HSTRING* value);
                [propget] HRESULT RemoteAddress([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT RemotePort([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs)]
            [uuid(9E2DDCA2-1712-4CE4-B179-8C652C6D107E)]
            interface IDatagramSocketMessageReceivedEventArgs : IInspectable
            {
                [propget] HRESULT RemoteAddress([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT RemotePort([out] [retval] HSTRING* value);
                [propget] HRESULT LocalAddress([out] [retval] Windows.Networking.HostName** value);
                HRESULT GetDataReader([out] [retval] Windows.Storage.Streams.DataReader** dataReader);
                HRESULT GetDataStream([out] [retval] Windows.Storage.Streams.IInputStream** inputStream);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.DatagramSocket)]
            [uuid(E9C62AEE-1494-4A21-BB7E-8589FC751D9D)]
            interface IDatagramSocketStatics : IInspectable
            {
                [overload("GetEndpointPairsAsync")] HRESULT GetEndpointPairsAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.EndpointPair*>*>** operation);
                [overload("GetEndpointPairsAsync")] HRESULT GetEndpointPairsWithSortOptionsAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [in] Windows.Networking.HostNameSortOptions sortOptions, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.EndpointPair*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.MessageWebSocket)]
            [uuid(33727D08-34D5-4746-AD7B-8DDE5BC2EF88)]
            interface IMessageWebSocket : IInspectable
                requires
                    Windows.Networking.Sockets.IWebSocket,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Control([out] [retval] Windows.Networking.Sockets.MessageWebSocketControl** value);
                [propget] HRESULT Information([out] [retval] Windows.Networking.Sockets.MessageWebSocketInformation** value);
                [eventadd] HRESULT MessageReceived([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.MessageWebSocket*, Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT MessageReceived([in] EventRegistrationToken eventCookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.Sockets.MessageWebSocket)]
            [uuid(BED0CEE7-F9C8-440A-9AD5-737281D9742E)]
            interface IMessageWebSocket2 : IInspectable
                requires
                    Windows.Networking.Sockets.IMessageWebSocket,
                    Windows.Networking.Sockets.IWebSocket,
                    Windows.Foundation.IClosable
            {
                [eventadd] HRESULT ServerCustomValidationRequested([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.MessageWebSocket*, Windows.Networking.Sockets.WebSocketServerCustomValidationRequestedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT ServerCustomValidationRequested([in] EventRegistrationToken eventCookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.Sockets.MessageWebSocket)]
            [uuid(59D9DEFB-71AF-4349-8487-911FCF681597)]
            interface IMessageWebSocket3 : IInspectable
            {
                HRESULT SendNonfinalFrameAsync([in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<UINT32, UINT32>** operation);
                HRESULT SendFinalFrameAsync([in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<UINT32, UINT32>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.MessageWebSocketControl)]
            [uuid(8118388A-C629-4F0A-80FB-81FC05538862)]
            interface IMessageWebSocketControl : IInspectable
                requires
                    Windows.Networking.Sockets.IWebSocketControl
            {
                [propget] HRESULT MaxMessageSize([out] [retval] UINT32* value);
                [propput] HRESULT MaxMessageSize([in] UINT32 value);
                [propget] HRESULT MessageType([out] [retval] Windows.Networking.Sockets.SocketMessageType* value);
                [propput] HRESULT MessageType([in] Windows.Networking.Sockets.SocketMessageType value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Networking.Sockets.MessageWebSocketControl)]
            [uuid(E30FD791-080C-400A-A712-27DFA9E744D8)]
            interface IMessageWebSocketControl2 : IInspectable
            {
                [propget] HRESULT DesiredUnsolicitedPongInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT DesiredUnsolicitedPongInterval([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT ActualUnsolicitedPongInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT ReceiveMode([out] [retval] Windows.Networking.Sockets.MessageWebSocketReceiveMode* value);
                [propput] HRESULT ReceiveMode([in] Windows.Networking.Sockets.MessageWebSocketReceiveMode value);
                [propget] HRESULT ClientCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                [propput] HRESULT ClientCertificate([in] Windows.Security.Cryptography.Certificates.Certificate* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs)]
            [uuid(478C22AC-4C4B-42ED-9ED7-1EF9F94FA3D5)]
            interface IMessageWebSocketMessageReceivedEventArgs : IInspectable
            {
                [propget] HRESULT MessageType([out] [retval] Windows.Networking.Sockets.SocketMessageType* value);
                HRESULT GetDataReader([out] [retval] Windows.Storage.Streams.DataReader** dataReader);
                HRESULT GetDataStream([out] [retval] Windows.Storage.Streams.IInputStream** inputStream);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs)]
            [uuid(89CE06FD-DD6F-4A07-87F9-F9EB4D89D83D)]
            interface IMessageWebSocketMessageReceivedEventArgs2 : IInspectable
                requires
                    Windows.Networking.Sockets.IMessageWebSocketMessageReceivedEventArgs
            {
                [propget] HRESULT IsMessageComplete([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.Sockets.ServerMessageWebSocket)]
            [uuid(E3AC9240-813B-5EFD-7E11-AE2305FC77F1)]
            interface IServerMessageWebSocket : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [eventadd] HRESULT MessageReceived([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.ServerMessageWebSocket*, Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MessageReceived([in] EventRegistrationToken token);
                [propget] HRESULT Control([out] [retval] Windows.Networking.Sockets.ServerMessageWebSocketControl** value);
                [propget] HRESULT Information([out] [retval] Windows.Networking.Sockets.ServerMessageWebSocketInformation** value);
                [propget] HRESULT OutputStream([out] [retval] Windows.Storage.Streams.IOutputStream** value);
                [eventadd] HRESULT Closed([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.ServerMessageWebSocket*, Windows.Networking.Sockets.WebSocketClosedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Closed([in] EventRegistrationToken token);
                [overload("Close")] HRESULT CloseWithStatus([in] UINT16 code, [in] HSTRING reason);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.Sockets.ServerMessageWebSocketControl)]
            [uuid(69C2F051-1C1F-587A-4519-2181610192B7)]
            interface IServerMessageWebSocketControl : IInspectable
            {
                [propget] HRESULT MessageType([out] [retval] Windows.Networking.Sockets.SocketMessageType* value);
                [propput] HRESULT MessageType([in] Windows.Networking.Sockets.SocketMessageType value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.Sockets.ServerMessageWebSocketInformation)]
            [uuid(FC32B45F-4448-5505-6CC9-09AFA8915F5D)]
            interface IServerMessageWebSocketInformation : IInspectable
            {
                [propget] HRESULT BandwidthStatistics([out] [retval] Windows.Networking.Sockets.BandwidthStatistics* value);
                [propget] HRESULT Protocol([out] [retval] HSTRING* value);
                [propget] HRESULT LocalAddress([out] [retval] Windows.Networking.HostName** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.Sockets.ServerStreamWebSocket)]
            [uuid(2CED5BBF-74F6-55E4-79DF-9132680DFEE8)]
            interface IServerStreamWebSocket : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Information([out] [retval] Windows.Networking.Sockets.ServerStreamWebSocketInformation** value);
                [propget] HRESULT InputStream([out] [retval] Windows.Storage.Streams.IInputStream** value);
                [propget] HRESULT OutputStream([out] [retval] Windows.Storage.Streams.IOutputStream** value);
                [eventadd] HRESULT Closed([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.ServerStreamWebSocket*, Windows.Networking.Sockets.WebSocketClosedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Closed([in] EventRegistrationToken token);
                [overload("Close")] HRESULT CloseWithStatus([in] UINT16 code, [in] HSTRING reason);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.Sockets.ServerStreamWebSocketInformation)]
            [uuid(FC32B45F-4448-5505-6CC9-09ABA8915F5D)]
            interface IServerStreamWebSocketInformation : IInspectable
            {
                [propget] HRESULT BandwidthStatistics([out] [retval] Windows.Networking.Sockets.BandwidthStatistics* value);
                [propget] HRESULT Protocol([out] [retval] HSTRING* value);
                [propget] HRESULT LocalAddress([out] [retval] Windows.Networking.HostName** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.SocketActivityContext)]
            [uuid(43B04D64-4C85-4396-A637-1D973F6EBD49)]
            interface ISocketActivityContext : IInspectable
            {
                [propget] HRESULT Data([out] [retval] Windows.Storage.Streams.IBuffer** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.SocketActivityContext)]
            [uuid(B99FC3C3-088C-4388-83AE-2525138E049A)]
            interface ISocketActivityContextFactory : IInspectable
            {
                HRESULT Create([in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Networking.Sockets.SocketActivityContext** context);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.SocketActivityInformation)]
            [uuid(8D8A42E4-A87E-4B74-9968-185B2511DEFE)]
            interface ISocketActivityInformation : IInspectable
            {
                [propget] HRESULT TaskId([out] [retval] GUID* value);
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT SocketKind([out] [retval] Windows.Networking.Sockets.SocketActivityKind* value);
                [propget] HRESULT Context([out] [retval] Windows.Networking.Sockets.SocketActivityContext** value);
                [propget] HRESULT DatagramSocket([out] [retval] Windows.Networking.Sockets.DatagramSocket** value);
                [propget] HRESULT StreamSocket([out] [retval] Windows.Networking.Sockets.StreamSocket** value);
                [propget] HRESULT StreamSocketListener([out] [retval] Windows.Networking.Sockets.StreamSocketListener** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.SocketActivityInformation)]
            [uuid(8570B47A-7E7D-4736-8041-1327A6543C56)]
            interface ISocketActivityInformationStatics : IInspectable
            {
                [propget] HRESULT AllSockets([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.Networking.Sockets.SocketActivityInformation*>** sockets);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.SocketActivityTriggerDetails)]
            [uuid(45F406A7-FC9F-4F81-ACAD-355FEF51E67B)]
            interface ISocketActivityTriggerDetails : IInspectable
            {
                [propget] HRESULT Reason([out] [retval] Windows.Networking.Sockets.SocketActivityTriggerReason* value);
                [propget] HRESULT SocketInformation([out] [retval] Windows.Networking.Sockets.SocketActivityInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.SocketError)]
            [uuid(828337F4-7D56-4D8E-B7B4-A07DD7C1BCA9)]
            interface ISocketErrorStatics : IInspectable
            {
                HRESULT GetStatus([in] INT32 hresult, [out] [retval] Windows.Networking.Sockets.SocketErrorStatus* status);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocket)]
            [uuid(69A22CF3-FC7B-4857-AF38-F6E7DE6A5B49)]
            interface IStreamSocket : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Control([out] [retval] Windows.Networking.Sockets.StreamSocketControl** value);
                [propget] HRESULT Information([out] [retval] Windows.Networking.Sockets.StreamSocketInformation** value);
                [propget] HRESULT InputStream([out] [retval] Windows.Storage.Streams.IInputStream** value);
                [propget] HRESULT OutputStream([out] [retval] Windows.Storage.Streams.IOutputStream** value);
                [overload("ConnectAsync")] HRESULT ConnectWithEndpointPairAsync([in] Windows.Networking.EndpointPair* endpointPair, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                [default_overload] [overload("ConnectAsync")] HRESULT ConnectAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                [overload("ConnectAsync")] HRESULT ConnectWithEndpointPairAndProtectionLevelAsync([in] Windows.Networking.EndpointPair* endpointPair, [in] Windows.Networking.Sockets.SocketProtectionLevel protectionLevel, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                [overload("ConnectAsync")] HRESULT ConnectWithProtectionLevelAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [in] Windows.Networking.Sockets.SocketProtectionLevel protectionLevel, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT UpgradeToSslAsync([in] Windows.Networking.Sockets.SocketProtectionLevel protectionLevel, [in] Windows.Networking.HostName* validationHostName, [out] [retval] Windows.Foundation.IAsyncAction** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocket)]
            [uuid(29D0E575-F314-4D09-ADF0-0FBD967FBD9F)]
            interface IStreamSocket2 : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [overload("ConnectAsync")] HRESULT ConnectWithProtectionLevelAndAdapterAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [in] Windows.Networking.Sockets.SocketProtectionLevel protectionLevel, [in] Windows.Networking.Connectivity.NetworkAdapter* adapter, [out] [retval] Windows.Foundation.IAsyncAction** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocket)]
            [uuid(3F430B00-9D28-4854-BAC3-2301941EC223)]
            interface IStreamSocket3 : IInspectable
            {
                HRESULT CancelIOAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                [overload("EnableTransferOwnership")] HRESULT EnableTransferOwnership([in] GUID taskId);
                [overload("EnableTransferOwnership")] HRESULT EnableTransferOwnershipWithConnectedStandbyAction([in] GUID taskId, [in] Windows.Networking.Sockets.SocketActivityConnectedStandbyAction connectedStandbyAction);
                [overload("TransferOwnership")] HRESULT TransferOwnership([in] HSTRING socketId);
                [overload("TransferOwnership")] HRESULT TransferOwnershipWithContext([in] HSTRING socketId, [in] Windows.Networking.Sockets.SocketActivityContext* data);
                [overload("TransferOwnership")] HRESULT TransferOwnershipWithContextAndKeepAliveTime([in] HSTRING socketId, [in] Windows.Networking.Sockets.SocketActivityContext* data, [in] Windows.Foundation.TimeSpan keepAliveTime);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketControl)]
            [uuid(FE25ADF1-92AB-4AF3-9992-0F4C85E36CC4)]
            interface IStreamSocketControl : IInspectable
            {
                [propget] HRESULT NoDelay([out] [retval] boolean* value);
                [propput] HRESULT NoDelay([in] boolean value);
                [propget] HRESULT KeepAlive([out] [retval] boolean* value);
                [propput] HRESULT KeepAlive([in] boolean value);
                [propget] HRESULT OutboundBufferSizeInBytes([out] [retval] UINT32* value);
                [propput] HRESULT OutboundBufferSizeInBytes([in] UINT32 value);
                [propget] HRESULT QualityOfService([out] [retval] Windows.Networking.Sockets.SocketQualityOfService* value);
                [propput] HRESULT QualityOfService([in] Windows.Networking.Sockets.SocketQualityOfService value);
                [propget] HRESULT OutboundUnicastHopLimit([out] [retval] BYTE* value);
                [propput] HRESULT OutboundUnicastHopLimit([in] BYTE value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketControl)]
            [uuid(C2D09A56-060F-44C1-B8E2-1FBF60BD62C5)]
            interface IStreamSocketControl2 : IInspectable
            {
                [propget] HRESULT IgnorableServerCertificateErrors([out] [retval] Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.ChainValidationResult>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketControl)]
            [uuid(C56A444C-4E74-403E-894C-B31CAE5C7342)]
            interface IStreamSocketControl3 : IInspectable
            {
                [propget] HRESULT SerializeConnectionAttempts([out] [retval] boolean* value);
                [propput] HRESULT SerializeConnectionAttempts([in] boolean value);
                [propget] HRESULT ClientCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                [propput] HRESULT ClientCertificate([in] Windows.Security.Cryptography.Certificates.Certificate* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketControl)]
            [uuid(964E2B3D-EC27-4888-B3CE-C74B418423AD)]
            interface IStreamSocketControl4 : IInspectable
            {
                [propget] HRESULT MinProtectionLevel([out] [retval] Windows.Networking.Sockets.SocketProtectionLevel* value);
                [propput] HRESULT MinProtectionLevel([in] Windows.Networking.Sockets.SocketProtectionLevel value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketInformation)]
            [uuid(3B80AE30-5E68-4205-88F0-DC85D2E25DED)]
            interface IStreamSocketInformation : IInspectable
            {
                [propget] HRESULT LocalAddress([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT LocalPort([out] [retval] HSTRING* value);
                [propget] HRESULT RemoteHostName([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT RemoteAddress([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT RemoteServiceName([out] [retval] HSTRING* value);
                [propget] HRESULT RemotePort([out] [retval] HSTRING* value);
                [propget] HRESULT RoundTripTimeStatistics([out] [retval] Windows.Networking.Sockets.RoundTripTimeStatistics* value);
                [propget] HRESULT BandwidthStatistics([out] [retval] Windows.Networking.Sockets.BandwidthStatistics* value);
                [propget] HRESULT ProtectionLevel([out] [retval] Windows.Networking.Sockets.SocketProtectionLevel* value);
                [propget] HRESULT SessionKey([out] [retval] Windows.Storage.Streams.IBuffer** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketInformation)]
            [uuid(12C28452-4BDC-4EE4-976A-CF130E9D92E3)]
            interface IStreamSocketInformation2 : IInspectable
            {
                [propget] HRESULT ServerCertificateErrorSeverity([out] [retval] Windows.Networking.Sockets.SocketSslErrorSeverity* value);
                [propget] HRESULT ServerCertificateErrors([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.ChainValidationResult>** value);
                [propget] HRESULT ServerCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                [propget] HRESULT ServerIntermediateCertificates([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketListener)]
            [uuid(FF513437-DF9F-4DF0-BF82-0EC5D7B35AAE)]
            interface IStreamSocketListener : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Control([out] [retval] Windows.Networking.Sockets.StreamSocketListenerControl** value);
                [propget] HRESULT Information([out] [retval] Windows.Networking.Sockets.StreamSocketListenerInformation** value);
                HRESULT BindServiceNameAsync([in] HSTRING localServiceName, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT BindEndpointAsync([in] Windows.Networking.HostName* localHostName, [in] HSTRING localServiceName, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                [eventadd] HRESULT ConnectionReceived([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.StreamSocketListener*, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT ConnectionReceived([in] EventRegistrationToken eventCookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketListener)]
            [uuid(658DC13E-BB3E-4458-B232-ED1088694B98)]
            interface IStreamSocketListener2 : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [overload("BindServiceNameAsync")] HRESULT BindServiceNameWithProtectionLevelAsync([in] HSTRING localServiceName, [in] Windows.Networking.Sockets.SocketProtectionLevel protectionLevel, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                [overload("BindServiceNameAsync")] HRESULT BindServiceNameWithProtectionLevelAndAdapterAsync([in] HSTRING localServiceName, [in] Windows.Networking.Sockets.SocketProtectionLevel protectionLevel, [in] Windows.Networking.Connectivity.NetworkAdapter* adapter, [out] [retval] Windows.Foundation.IAsyncAction** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketListener)]
            [uuid(4798201C-BDF8-4919-8542-28D450E74507)]
            interface IStreamSocketListener3 : IInspectable
            {
                HRESULT CancelIOAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                [overload("EnableTransferOwnership")] HRESULT EnableTransferOwnership([in] GUID taskId);
                [overload("EnableTransferOwnership")] HRESULT EnableTransferOwnershipWithConnectedStandbyAction([in] GUID taskId, [in] Windows.Networking.Sockets.SocketActivityConnectedStandbyAction connectedStandbyAction);
                [overload("TransferOwnership")] HRESULT TransferOwnership([in] HSTRING socketId);
                [overload("TransferOwnership")] HRESULT TransferOwnershipWithContext([in] HSTRING socketId, [in] Windows.Networking.Sockets.SocketActivityContext* data);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs)]
            [uuid(0C472EA9-373F-447B-85B1-DDD4548803BA)]
            interface IStreamSocketListenerConnectionReceivedEventArgs : IInspectable
            {
                [propget] HRESULT Socket([out] [retval] Windows.Networking.Sockets.StreamSocket** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketListenerControl)]
            [uuid(20D8C576-8D8A-4DBA-9722-A16C4D984980)]
            interface IStreamSocketListenerControl : IInspectable
            {
                [propget] HRESULT QualityOfService([out] [retval] Windows.Networking.Sockets.SocketQualityOfService* value);
                [propput] HRESULT QualityOfService([in] Windows.Networking.Sockets.SocketQualityOfService value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketListenerControl)]
            [uuid(948BB665-2C3E-404B-B8B0-8EB249A2B0A1)]
            interface IStreamSocketListenerControl2 : IInspectable
            {
                [propget] HRESULT NoDelay([out] [retval] boolean* value);
                [propput] HRESULT NoDelay([in] boolean value);
                [propget] HRESULT KeepAlive([out] [retval] boolean* value);
                [propput] HRESULT KeepAlive([in] boolean value);
                [propget] HRESULT OutboundBufferSizeInBytes([out] [retval] UINT32* value);
                [propput] HRESULT OutboundBufferSizeInBytes([in] UINT32 value);
                [propget] HRESULT OutboundUnicastHopLimit([out] [retval] BYTE* value);
                [propput] HRESULT OutboundUnicastHopLimit([in] BYTE value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocketListenerInformation)]
            [uuid(E62BA82F-A63A-430B-BF62-29E93E5633B4)]
            interface IStreamSocketListenerInformation : IInspectable
            {
                [propget] HRESULT LocalPort([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamSocket)]
            [uuid(A420BC4A-6E2E-4AF5-B556-355AE0CD4F29)]
            interface IStreamSocketStatics : IInspectable
            {
                [overload("GetEndpointPairsAsync")] HRESULT GetEndpointPairsAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.EndpointPair*>*>** operation);
                [overload("GetEndpointPairsAsync")] HRESULT GetEndpointPairsWithSortOptionsAsync([in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remoteServiceName, [in] Windows.Networking.HostNameSortOptions sortOptions, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.EndpointPair*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamWebSocket)]
            [uuid(BD4A49D8-B289-45BB-97EB-C7525205A843)]
            interface IStreamWebSocket : IInspectable
                requires
                    Windows.Networking.Sockets.IWebSocket,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Control([out] [retval] Windows.Networking.Sockets.StreamWebSocketControl** value);
                [propget] HRESULT Information([out] [retval] Windows.Networking.Sockets.StreamWebSocketInformation** value);
                [propget] HRESULT InputStream([out] [retval] Windows.Storage.Streams.IInputStream** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamWebSocket)]
            [uuid(AA4D08CB-93F5-4678-8236-57CCE5417ED5)]
            interface IStreamWebSocket2 : IInspectable
                requires
                    Windows.Networking.Sockets.IStreamWebSocket,
                    Windows.Networking.Sockets.IWebSocket,
                    Windows.Foundation.IClosable
            {
                [eventadd] HRESULT ServerCustomValidationRequested([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.StreamWebSocket*, Windows.Networking.Sockets.WebSocketServerCustomValidationRequestedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT ServerCustomValidationRequested([in] EventRegistrationToken eventCookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamWebSocketControl)]
            [uuid(B4F478B1-A45A-48DB-953A-645B7D964C07)]
            interface IStreamWebSocketControl : IInspectable
                requires
                    Windows.Networking.Sockets.IWebSocketControl
            {
                [propget] HRESULT NoDelay([out] [retval] boolean* value);
                [propput] HRESULT NoDelay([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Networking.Sockets.StreamWebSocketControl)]
            [uuid(215D9F7E-FA58-40DA-9F11-A48DAFE95037)]
            interface IStreamWebSocketControl2 : IInspectable
            {
                [propget] HRESULT DesiredUnsolicitedPongInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT DesiredUnsolicitedPongInterval([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT ActualUnsolicitedPongInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT ClientCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                [propput] HRESULT ClientCertificate([in] Windows.Security.Cryptography.Certificates.Certificate* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(F877396F-99B1-4E18-BC08-850C9ADF156E)]
            interface IWebSocket : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT OutputStream([out] [retval] Windows.Storage.Streams.IOutputStream** value);
                HRESULT ConnectAsync([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT SetRequestHeader([in] HSTRING headerName, [in] HSTRING headerValue);
                [eventadd] HRESULT Closed([in] Windows.Foundation.TypedEventHandler<Windows.Networking.Sockets.IWebSocket*, Windows.Networking.Sockets.WebSocketClosedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT Closed([in] EventRegistrationToken eventCookie);
                [overload("Close")] HRESULT CloseWithStatus([in] UINT16 code, [in] HSTRING reason);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.WebSocketClosedEventArgs)]
            [uuid(CEB78D07-D0A8-4703-A091-C8C2C0915BC3)]
            interface IWebSocketClosedEventArgs : IInspectable
            {
                [propget] HRESULT Code([out] [retval] UINT16* value);
                [propget] HRESULT Reason([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(2EC4BDC3-D9A5-455A-9811-DE24D45337E9)]
            interface IWebSocketControl : IInspectable
            {
                [propget] HRESULT OutboundBufferSizeInBytes([out] [retval] UINT32* value);
                [propput] HRESULT OutboundBufferSizeInBytes([in] UINT32 value);
                [propget] HRESULT ServerCredential([out] [retval] Windows.Security.Credentials.PasswordCredential** value);
                [propput] HRESULT ServerCredential([in] Windows.Security.Credentials.PasswordCredential* value);
                [propget] HRESULT ProxyCredential([out] [retval] Windows.Security.Credentials.PasswordCredential** value);
                [propput] HRESULT ProxyCredential([in] Windows.Security.Credentials.PasswordCredential* value);
                [propget] HRESULT SupportedProtocols([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [uuid(79C3BE03-F2CA-461E-AF4E-9665BC2D0620)]
            interface IWebSocketControl2 : IInspectable
                requires
                    Windows.Networking.Sockets.IWebSocketControl
            {
                [propget] HRESULT IgnorableServerCertificateErrors([out] [retval] Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.ChainValidationResult>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.Sockets.WebSocketError)]
            [uuid(27CDF35B-1F61-4709-8E02-61283ADA4E9D)]
            interface IWebSocketErrorStatics : IInspectable
            {
                HRESULT GetStatus([in] INT32 hresult, [out] [retval] Windows.Web.WebErrorStatus* status);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(5E01E316-C92A-47A5-B25F-07847639D181)]
            interface IWebSocketInformation : IInspectable
            {
                [propget] HRESULT LocalAddress([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT BandwidthStatistics([out] [retval] Windows.Networking.Sockets.BandwidthStatistics* value);
                [propget] HRESULT Protocol([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [uuid(CE1D39CE-A1B7-4D43-8269-8D5B981BD47A)]
            interface IWebSocketInformation2 : IInspectable
                requires
                    Windows.Networking.Sockets.IWebSocketInformation
            {
                [propget] HRESULT ServerCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                [propget] HRESULT ServerCertificateErrorSeverity([out] [retval] Windows.Networking.Sockets.SocketSslErrorSeverity* value);
                [propget] HRESULT ServerCertificateErrors([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.ChainValidationResult>** value);
                [propget] HRESULT ServerIntermediateCertificates([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.Sockets.WebSocketServerCustomValidationRequestedEventArgs)]
            [uuid(FFEFFE48-022A-4AB7-8B36-E10AF4640E6B)]
            interface IWebSocketServerCustomValidationRequestedEventArgs : IInspectable
            {
                [propget] HRESULT ServerCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                [propget] HRESULT ServerCertificateErrorSeverity([out] [retval] Windows.Networking.Sockets.SocketSslErrorSeverity* value);
                [propget] HRESULT ServerCertificateErrors([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.ChainValidationResult>** value);
                [propget] HRESULT ServerIntermediateCertificates([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>** value);
                HRESULT Reject();
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
            }

            [activatable(Windows.Networking.Sockets.IControlChannelTriggerFactory, Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(mta)]
            runtimeclass ControlChannelTrigger
            {
                [default] interface Windows.Networking.Sockets.IControlChannelTrigger;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Networking.Sockets.ControlChannelTriggerContract, 2.0)] interface Windows.Networking.Sockets.IControlChannelTrigger2;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.Sockets.IDatagramSocketStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass DatagramSocket
            {
                [default] interface Windows.Networking.Sockets.IDatagramSocket;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IDatagramSocket2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IDatagramSocket3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DatagramSocketControl
            {
                [default] interface Windows.Networking.Sockets.IDatagramSocketControl;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IDatagramSocketControl2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IDatagramSocketControl3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DatagramSocketInformation
            {
                [default] interface Windows.Networking.Sockets.IDatagramSocketInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DatagramSocketMessageReceivedEventArgs
            {
                [default] interface Windows.Networking.Sockets.IDatagramSocketMessageReceivedEventArgs;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MessageWebSocket
            {
                [default] interface Windows.Networking.Sockets.IMessageWebSocket;
                interface Windows.Networking.Sockets.IWebSocket;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Networking.Sockets.IMessageWebSocket2;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Networking.Sockets.IMessageWebSocket3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass MessageWebSocketControl
            {
                [default] interface Windows.Networking.Sockets.IMessageWebSocketControl;
                interface Windows.Networking.Sockets.IWebSocketControl;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Networking.Sockets.IWebSocketControl2;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Networking.Sockets.IMessageWebSocketControl2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass MessageWebSocketInformation
            {
                [default] interface Windows.Networking.Sockets.IWebSocketInformation;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Networking.Sockets.IWebSocketInformation2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass MessageWebSocketMessageReceivedEventArgs
            {
                [default] interface Windows.Networking.Sockets.IMessageWebSocketMessageReceivedEventArgs;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Networking.Sockets.IMessageWebSocketMessageReceivedEventArgs2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ServerMessageWebSocket
            {
                [default] interface Windows.Networking.Sockets.IServerMessageWebSocket;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ServerMessageWebSocketControl
            {
                [default] interface Windows.Networking.Sockets.IServerMessageWebSocketControl;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ServerMessageWebSocketInformation
            {
                [default] interface Windows.Networking.Sockets.IServerMessageWebSocketInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ServerStreamWebSocket
            {
                [default] interface Windows.Networking.Sockets.IServerStreamWebSocket;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ServerStreamWebSocketInformation
            {
                [default] interface Windows.Networking.Sockets.IServerStreamWebSocketInformation;
            }

            [activatable(Windows.Networking.Sockets.ISocketActivityContextFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass SocketActivityContext
            {
                [default] interface Windows.Networking.Sockets.ISocketActivityContext;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.Sockets.ISocketActivityInformationStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass SocketActivityInformation
            {
                [default] interface Windows.Networking.Sockets.ISocketActivityInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass SocketActivityTriggerDetails
            {
                [default] interface Windows.Networking.Sockets.ISocketActivityTriggerDetails;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.Sockets.ISocketErrorStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass SocketError
            {
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.Sockets.IStreamSocketStatics, Windows.Foundation.UniversalApiContract, 3.0)]
            [threading(both)]
            runtimeclass StreamSocket
            {
                [default] interface Windows.Networking.Sockets.IStreamSocket;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocket2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocket3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StreamSocketControl
            {
                [default] interface Windows.Networking.Sockets.IStreamSocketControl;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocketControl2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocketControl3;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Networking.Sockets.IStreamSocketControl4;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StreamSocketInformation
            {
                [default] interface Windows.Networking.Sockets.IStreamSocketInformation;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocketInformation2;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass StreamSocketListener
            {
                [default] interface Windows.Networking.Sockets.IStreamSocketListener;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocketListener2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocketListener3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StreamSocketListenerConnectionReceivedEventArgs
            {
                [default] interface Windows.Networking.Sockets.IStreamSocketListenerConnectionReceivedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StreamSocketListenerControl
            {
                [default] interface Windows.Networking.Sockets.IStreamSocketListenerControl;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Sockets.IStreamSocketListenerControl2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StreamSocketListenerInformation
            {
                [default] interface Windows.Networking.Sockets.IStreamSocketListenerInformation;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass StreamWebSocket
            {
                [default] interface Windows.Networking.Sockets.IStreamWebSocket;
                interface Windows.Networking.Sockets.IWebSocket;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Networking.Sockets.IStreamWebSocket2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StreamWebSocketControl
            {
                [default] interface Windows.Networking.Sockets.IStreamWebSocketControl;
                interface Windows.Networking.Sockets.IWebSocketControl;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Networking.Sockets.IWebSocketControl2;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Networking.Sockets.IStreamWebSocketControl2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass StreamWebSocketInformation
            {
                [default] interface Windows.Networking.Sockets.IWebSocketInformation;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Networking.Sockets.IWebSocketInformation2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WebSocketClosedEventArgs
            {
                [default] interface Windows.Networking.Sockets.IWebSocketClosedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.Sockets.IWebSocketErrorStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass WebSocketError
            {
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass WebSocketKeepAlive
            {
                [default] interface Windows.ApplicationModel.Background.IBackgroundTask;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            runtimeclass WebSocketServerCustomValidationRequestedEventArgs
            {
                [default] interface Windows.Networking.Sockets.IWebSocketServerCustomValidationRequestedEventArgs;
            }
        }
    }
}
