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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.UI.Notifications.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(__windows2Eui2Enotifications_h__)")
cpp_quote("#include <Windows.UI.Notifications.h>")
cpp_quote("#endif // !defined(__windows2Eui2Enotifications_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Notifications
        {
            runtimeclass BadgeNotification;

            runtimeclass TileNotification;

            runtimeclass ToastNotification;
        }
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace PushNotifications
        {
            typedef enum PushNotificationType PushNotificationType;

            interface IPushNotificationChannelManagerStatics;

            interface IPushNotificationChannel;

            interface IPushNotificationReceivedEventArgs;

            interface IRawNotification;

            runtimeclass PushNotificationChannel;

            runtimeclass PushNotificationReceivedEventArgs;

            runtimeclass RawNotification;

            runtimeclass PushNotificationChannelManager;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Networking
    {
        namespace PushNotifications
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Networking.PushNotifications.PushNotificationChannel*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.PushNotifications.PushNotificationChannel*, Windows.Networking.PushNotifications.PushNotificationReceivedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Networking
    {
        namespace PushNotifications
        {
            [version(0x06020000)]
            enum PushNotificationType
            {
                Toast = 0,
                Tile  = 1,
                Badge = 2,
                Raw   = 3
            };

            [uuid(8BAF9B65-77A1-4588-BD19-861529A9DCF0)]
            [version(0x06020000)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelManager)]
            interface IPushNotificationChannelManagerStatics : IInspectable
            {
                [overload("CreatePushNotificationChannelForApplicationAsync")] HRESULT CreatePushNotificationChannelForApplicationAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.PushNotifications.PushNotificationChannel*>** operation);
                [overload("CreatePushNotificationChannelForApplicationAsync")] HRESULT CreatePushNotificationChannelForApplicationAsyncWithId([in] HSTRING applicationId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.PushNotifications.PushNotificationChannel*>** operation);
                HRESULT CreatePushNotificationChannelForSecondaryTileAsync([in] HSTRING tileId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.PushNotifications.PushNotificationChannel*>** operation);
            }

            [uuid(2B28102E-EF0B-4F39-9B8A-A3C194DE7081)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannel)]
            [version(0x06020000)]
            interface IPushNotificationChannel : IInspectable
            {
                [propget] HRESULT Uri([out] [retval] HSTRING* value);
                [propget] HRESULT ExpirationTime([out] [retval] Windows.Foundation.DateTime* value);
                HRESULT Close();
                [eventadd] HRESULT PushNotificationReceived([in] Windows.Foundation.TypedEventHandler<Windows.Networking.PushNotifications.PushNotificationChannel*, Windows.Networking.PushNotifications.PushNotificationReceivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PushNotificationReceived([in] EventRegistrationToken token);
            }

            [uuid(D1065E0C-36CD-484C-B935-0A99B753CF00)]
            [version(0x06020000)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationReceivedEventArgs)]
            interface IPushNotificationReceivedEventArgs : IInspectable
            {
                [propput] HRESULT Cancel([in] boolean value);
                [propget] HRESULT Cancel([out] [retval] boolean* value);
                [propget] HRESULT NotificationType([out] [retval] Windows.Networking.PushNotifications.PushNotificationType* value);
                [propget] HRESULT ToastNotification([out] [retval] Windows.UI.Notifications.ToastNotification** value);
                [propget] HRESULT TileNotification([out] [retval] Windows.UI.Notifications.TileNotification** value);
                [propget] HRESULT BadgeNotification([out] [retval] Windows.UI.Notifications.BadgeNotification** value);
                [propget] HRESULT RawNotification([out] [retval] Windows.Networking.PushNotifications.RawNotification** value);
            }

            [uuid(1A227281-3B79-42AC-9963-22AB00D4F0B7)]
            [version(0x06020000)]
            [exclusiveto(Windows.Networking.PushNotifications.RawNotification)]
            interface IRawNotification : IInspectable
            {
                [propget] HRESULT Content([out] [retval] HSTRING* value);
            }

            [version(0x06020000)]
            runtimeclass PushNotificationChannel
            {
                [default] interface Windows.Networking.PushNotifications.IPushNotificationChannel;
            }

            [version(0x06020000)]
            runtimeclass PushNotificationReceivedEventArgs
            {
                [default] interface Windows.Networking.PushNotifications.IPushNotificationReceivedEventArgs;
            }

            [version(0x06020000)]
            runtimeclass RawNotification
            {
                [default] interface Windows.Networking.PushNotifications.IRawNotification;
            }

            [threading(mta)]
            [version(0x06020000)]
            [static(Windows.Networking.PushNotifications.IPushNotificationChannelManagerStatics, 0x06020000)]
            runtimeclass PushNotificationChannelManager
            {
            }
        }
    }
}
