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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.AppService.idl";
import "Windows.Web.Http.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace AppService
        {
            runtimeclass AppServiceConnection;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            runtimeclass HttpRequestMessage;

            runtimeclass HttpResponseMessage;
        }
    }
}
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace DevicePortal
            {
                typedef enum DevicePortalConnectionClosedReason DevicePortalConnectionClosedReason;

                interface IDevicePortalConnection;

                interface IDevicePortalConnectionClosedEventArgs;

                interface IDevicePortalConnectionRequestReceivedEventArgs;

                interface IDevicePortalConnectionStatics;

                runtimeclass DevicePortalConnection;

                runtimeclass DevicePortalConnectionClosedEventArgs;

                runtimeclass DevicePortalConnectionRequestReceivedEventArgs;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace DevicePortal
            {
                declare
                {
                    interface Windows.Foundation.TypedEventHandler<Windows.System.Diagnostics.DevicePortal.DevicePortalConnection*, Windows.System.Diagnostics.DevicePortal.DevicePortalConnectionClosedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.System.Diagnostics.DevicePortal.DevicePortalConnection*, Windows.System.Diagnostics.DevicePortal.DevicePortalConnectionRequestReceivedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace DevicePortal
            {
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum DevicePortalConnectionClosedReason
                {
                    Unknown                = 0,
                    ResourceLimitsExceeded = 1,
                    ProtocolError          = 2,
                    NotAuthorized          = 3,
                    UserNotPresent         = 4,
                    ServiceTerminated      = 5
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.DevicePortal.DevicePortalConnection)]
                [uuid(0F447F51-1198-4DA1-8D54-BDEF393E09B6)]
                interface IDevicePortalConnection : IInspectable
                {
                    [eventadd] HRESULT Closed([in] Windows.Foundation.TypedEventHandler<Windows.System.Diagnostics.DevicePortal.DevicePortalConnection*, Windows.System.Diagnostics.DevicePortal.DevicePortalConnectionClosedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Closed([in] EventRegistrationToken token);
                    [eventadd] HRESULT RequestReceived([in] Windows.Foundation.TypedEventHandler<Windows.System.Diagnostics.DevicePortal.DevicePortalConnection*, Windows.System.Diagnostics.DevicePortal.DevicePortalConnectionRequestReceivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT RequestReceived([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.DevicePortal.DevicePortalConnectionClosedEventArgs)]
                [uuid(FCF70E38-7032-428C-9F50-945C15A9F0CB)]
                interface IDevicePortalConnectionClosedEventArgs : IInspectable
                {
                    [propget] HRESULT Reason([out] [retval] Windows.System.Diagnostics.DevicePortal.DevicePortalConnectionClosedReason* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.DevicePortal.DevicePortalConnectionRequestReceivedEventArgs)]
                [uuid(64DAE045-6FDA-4459-9EBD-ECCE22E38559)]
                interface IDevicePortalConnectionRequestReceivedEventArgs : IInspectable
                {
                    [propget] HRESULT RequestMessage([out] [retval] Windows.Web.Http.HttpRequestMessage** value);
                    [propget] HRESULT ResponseMessage([out] [retval] Windows.Web.Http.HttpResponseMessage** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.DevicePortal.DevicePortalConnection)]
                [uuid(4BBE31E7-E9B9-4645-8FED-A53EEA0EDBD6)]
                interface IDevicePortalConnectionStatics : IInspectable
                {
                    HRESULT GetForAppServiceConnection([in] Windows.ApplicationModel.AppService.AppServiceConnection* appServiceConnection, [out] [retval] Windows.System.Diagnostics.DevicePortal.DevicePortalConnection** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.Diagnostics.DevicePortal.IDevicePortalConnectionStatics, Windows.Foundation.UniversalApiContract, 4.0)]
                [threading(both)]
                runtimeclass DevicePortalConnection
                {
                    [default] interface Windows.System.Diagnostics.DevicePortal.IDevicePortalConnection;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass DevicePortalConnectionClosedEventArgs
                {
                    [default] interface Windows.System.Diagnostics.DevicePortal.IDevicePortalConnectionClosedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass DevicePortalConnectionRequestReceivedEventArgs
                {
                    [default] interface Windows.System.Diagnostics.DevicePortal.IDevicePortalConnectionRequestReceivedEventArgs;
                }
            }
        }
    }
}
