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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Eapplicationmodel_h__)")
cpp_quote("#include <Windows.ApplicationModel.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        runtimeclass AppInfo;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace AppService
        {
            typedef enum AppServiceClosedStatus AppServiceClosedStatus;

            typedef enum AppServiceConnectionStatus AppServiceConnectionStatus;

            typedef enum AppServiceResponseStatus AppServiceResponseStatus;

            interface IAppServiceDeferral;

            interface IAppServiceClosedEventArgs;

            interface IAppServiceRequestReceivedEventArgs;

            interface IAppServiceTriggerDetails;

            interface IAppServiceRequest;

            interface IAppServiceResponse;

            interface IAppServiceCatalogStatics;

            interface IAppServiceConnection;

            runtimeclass AppServiceRequest;

            runtimeclass AppServiceDeferral;

            runtimeclass AppServiceResponse;

            runtimeclass AppServiceConnection;

            runtimeclass AppServiceRequestReceivedEventArgs;

            runtimeclass AppServiceClosedEventArgs;

            runtimeclass AppServiceTriggerDetails;

            runtimeclass AppServiceCatalog;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace AppService
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.AppService.AppServiceConnectionStatus>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.AppService.AppServiceResponse*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.AppService.AppServiceResponseStatus>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppService.AppServiceConnection*, Windows.ApplicationModel.AppService.AppServiceClosedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppService.AppServiceConnection*, Windows.ApplicationModel.AppService.AppServiceRequestReceivedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace AppService
        {
            [version(0x0A000000)]
            enum AppServiceClosedStatus
            {
                Completed              = 0,
                Canceled               = 1,
                ResourceLimitsExceeded = 2,
                Unknown                = 3
            };

            [version(0x0A000000)]
            enum AppServiceConnectionStatus
            {
                Success               = 0,
                AppNotInstalled       = 1,
                AppUnavailable        = 2,
                AppServiceUnavailable = 3,
                Unknown               = 4
            };

            [version(0x0A000000)]
            enum AppServiceResponseStatus
            {
                Success                = 0,
                Failure                = 1,
                ResourceLimitsExceeded = 2,
                Unknown                = 3
            };

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceDeferral)]
            [uuid(7E1B5322-EAB0-4248-AE04-FDF93838E472)]
            [version(0x0A000000)]
            interface IAppServiceDeferral : IInspectable
            {
                HRESULT Complete();
            }

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceClosedEventArgs)]
            [uuid(DE6016F6-CB03-4D35-AC8D-CC6303239731)]
            [version(0x0A000000)]
            interface IAppServiceClosedEventArgs : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.ApplicationModel.AppService.AppServiceClosedStatus* value);
            }

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceRequestReceivedEventArgs)]
            [uuid(6E122360-FF65-44AE-9E45-857FE4180681)]
            [version(0x0A000000)]
            interface IAppServiceRequestReceivedEventArgs : IInspectable
            {
                [propget] HRESULT Request([out] [retval] Windows.ApplicationModel.AppService.AppServiceRequest** value);
                HRESULT GetDeferral([out] [retval] Windows.ApplicationModel.AppService.AppServiceDeferral** value);
            }

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceTriggerDetails)]
            [uuid(88A2DCAC-AD28-41B8-80BB-BDF1B2169E19)]
            [version(0x0A000000)]
            interface IAppServiceTriggerDetails : IInspectable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT CallerPackageFamilyName([out] [retval] HSTRING* value);
                [propget] HRESULT AppServiceConnection([out] [retval] Windows.ApplicationModel.AppService.AppServiceConnection** value);
            }

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceRequest)]
            [uuid(20E58D9D-18DE-4B01-80BA-90A76204E3C8)]
            [version(0x0A000000)]
            interface IAppServiceRequest : IInspectable
            {
                [propget] HRESULT Message([out] [retval] Windows.Foundation.Collections.ValueSet** value);
                HRESULT SendResponseAsync([in] Windows.Foundation.Collections.ValueSet* message, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.AppService.AppServiceResponseStatus>** operation);
            }

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceResponse)]
            [uuid(8D503CEC-9AA3-4E68-9559-9DE63E372CE4)]
            [version(0x0A000000)]
            interface IAppServiceResponse : IInspectable
            {
                [propget] HRESULT Message([out] [retval] Windows.Foundation.Collections.ValueSet** value);
                [propget] HRESULT Status([out] [retval] Windows.ApplicationModel.AppService.AppServiceResponseStatus* value);
            }

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceCatalog)]
            [uuid(EF0D2507-D132-4C85-8395-3C31D5A1E941)]
            [version(0x0A000000)]
            interface IAppServiceCatalogStatics : IInspectable
            {
                HRESULT FindAppServiceProvidersAsync([in] HSTRING appServiceName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppInfo*>*>** operation);
            }

            [exclusiveto(Windows.ApplicationModel.AppService.AppServiceConnection)]
            [uuid(9DD474A2-871F-4D52-89A9-9E090531BD27)]
            [version(0x0A000000)]
            interface IAppServiceConnection : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT AppServiceName([out] [retval] HSTRING* value);
                [propput] HRESULT AppServiceName([in] HSTRING value);
                [propget] HRESULT PackageFamilyName([out] [retval] HSTRING* value);
                [propput] HRESULT PackageFamilyName([in] HSTRING value);
                HRESULT OpenAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.AppService.AppServiceConnectionStatus>** operation);
                HRESULT SendMessageAsync([in] Windows.Foundation.Collections.ValueSet* message, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.AppService.AppServiceResponse*>** operation);
                [eventadd] HRESULT RequestReceived([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppService.AppServiceConnection*, Windows.ApplicationModel.AppService.AppServiceRequestReceivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT RequestReceived([in] EventRegistrationToken token);
                [eventadd] HRESULT ServiceClosed([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppService.AppServiceConnection*, Windows.ApplicationModel.AppService.AppServiceClosedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ServiceClosed([in] EventRegistrationToken token);
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AppServiceRequest
            {
                [default] interface Windows.ApplicationModel.AppService.IAppServiceRequest;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AppServiceDeferral
            {
                [default] interface Windows.ApplicationModel.AppService.IAppServiceDeferral;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AppServiceResponse
            {
                [default] interface Windows.ApplicationModel.AppService.IAppServiceResponse;
            }

            [activatable(0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AppServiceConnection
            {
                [default] interface Windows.ApplicationModel.AppService.IAppServiceConnection;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AppServiceRequestReceivedEventArgs
            {
                [default] interface Windows.ApplicationModel.AppService.IAppServiceRequestReceivedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AppServiceClosedEventArgs
            {
                [default] interface Windows.ApplicationModel.AppService.IAppServiceClosedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AppServiceTriggerDetails
            {
                [default] interface Windows.ApplicationModel.AppService.IAppServiceTriggerDetails;
            }

            [static(Windows.ApplicationModel.AppService.IAppServiceCatalogStatics, 0x0A000000)]
            [version(0x0A000000)]
            runtimeclass AppServiceCatalog
            {
            }
        }
    }
}
