//
// 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.Storage.Streams.idl";
import "Windows.System.idl";
import "Windows.UI.Notifications.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Notifications
        {
            runtimeclass BadgeNotification;

            runtimeclass TileNotification;

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

            interface IPushNotificationChannel;

            interface IPushNotificationChannelManagerForUser;

            interface IPushNotificationChannelManagerForUser2;

            interface IPushNotificationChannelManagerStatics;

            interface IPushNotificationChannelManagerStatics2;

            interface IPushNotificationChannelManagerStatics3;

            interface IPushNotificationChannelManagerStatics4;

            interface IPushNotificationChannelsRevokedEventArgs;

            interface IPushNotificationReceivedEventArgs;

            interface IRawNotification;

            interface IRawNotification2;

            interface IRawNotification3;

            runtimeclass PushNotificationChannel;

            runtimeclass PushNotificationChannelManager;

            runtimeclass PushNotificationChannelManagerForUser;

            runtimeclass PushNotificationChannelsRevokedEventArgs;

            runtimeclass PushNotificationReceivedEventArgs;

            runtimeclass RawNotification;
        }
    }
}

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

                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
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PushNotificationType
            {
                Toast      = 0,
                Tile       = 1,
                Badge      = 2,
                Raw        = 3,
                TileFlyout = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannel)]
            [uuid(2B28102E-EF0B-4F39-9B8A-A3C194DE7081)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelManagerForUser)]
            [uuid(A4C45704-1182-42C7-8890-F563C4890DC4)]
            interface IPushNotificationChannelManagerForUser : 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);
                [propget] HRESULT User([out] [retval] Windows.System.User** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelManagerForUser)]
            [uuid(C38B066A-7CC1-4DAC-87FD-BE6E920414A4)]
            interface IPushNotificationChannelManagerForUser2 : IInspectable
            {
                [overload("CreateRawPushNotificationChannelWithAlternateKeyForApplicationAsync")] HRESULT CreateRawPushNotificationChannelWithAlternateKeyForApplicationAsync([in] Windows.Storage.Streams.IBuffer* appServerKey, [in] HSTRING channelId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.PushNotifications.PushNotificationChannel*>** operation);
                [overload("CreateRawPushNotificationChannelWithAlternateKeyForApplicationAsync")] HRESULT CreateRawPushNotificationChannelWithAlternateKeyForApplicationAsyncWithId([in] Windows.Storage.Streams.IBuffer* appServerKey, [in] HSTRING channelId, [in] HSTRING appId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.PushNotifications.PushNotificationChannel*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelManager)]
            [uuid(8BAF9B65-77A1-4588-BD19-861529A9DCF0)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelManager)]
            [uuid(B444A65D-A7E9-4B28-950E-F375A907F9DF)]
            interface IPushNotificationChannelManagerStatics2 : IInspectable
            {
                HRESULT GetForUser([in] Windows.System.User* user, [out] [retval] Windows.Networking.PushNotifications.PushNotificationChannelManagerForUser** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelManager)]
            [uuid(4701FEFE-0EDE-4A3F-AE78-BFA471496925)]
            interface IPushNotificationChannelManagerStatics3 : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Networking.PushNotifications.PushNotificationChannelManagerForUser** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelManager)]
            [uuid(BC540EFB-7820-5A5B-9C01-B4757F774025)]
            interface IPushNotificationChannelManagerStatics4 : IInspectable
            {
                [eventadd] HRESULT ChannelsRevoked([in] Windows.Foundation.EventHandler<Windows.Networking.PushNotifications.PushNotificationChannelsRevokedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ChannelsRevoked([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationChannelsRevokedEventArgs)]
            [uuid(20E1A24C-1A34-5BEB-AAE2-40C232C8C140)]
            interface IPushNotificationChannelsRevokedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.PushNotifications.PushNotificationReceivedEventArgs)]
            [uuid(D1065E0C-36CD-484C-B935-0A99B753CF00)]
            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);
            }

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

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Networking.PushNotifications.RawNotification)]
            [uuid(E6D0CF19-0C6F-4CDD-9424-EEC5BE014D26)]
            interface IRawNotification2 : IInspectable
            {
                [propget] HRESULT Headers([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, HSTRING>** value);
                [propget] HRESULT ChannelId([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Networking.PushNotifications.RawNotification)]
            [uuid(62737DDE-8A73-424C-AB44-5635F40A96E5)]
            interface IRawNotification3 : IInspectable
            {
                [propget] HRESULT ContentBytes([out] [retval] Windows.Storage.Streams.IBuffer** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PushNotificationChannel
            {
                [default] interface Windows.Networking.PushNotifications.IPushNotificationChannel;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.PushNotifications.IPushNotificationChannelManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Networking.PushNotifications.IPushNotificationChannelManagerStatics2, Windows.Foundation.UniversalApiContract, 3.0)]
            [static(Windows.Networking.PushNotifications.IPushNotificationChannelManagerStatics3, Windows.Foundation.UniversalApiContract, 4.0)]
            [static(Windows.Networking.PushNotifications.IPushNotificationChannelManagerStatics4, Windows.Foundation.UniversalApiContract, 10.0)]
            [threading(mta)]
            runtimeclass PushNotificationChannelManager
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            runtimeclass PushNotificationChannelManagerForUser
            {
                [default] interface Windows.Networking.PushNotifications.IPushNotificationChannelManagerForUser;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Networking.PushNotifications.IPushNotificationChannelManagerForUser2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            runtimeclass PushNotificationChannelsRevokedEventArgs
            {
                [default] interface Windows.Networking.PushNotifications.IPushNotificationChannelsRevokedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PushNotificationReceivedEventArgs
            {
                [default] interface Windows.Networking.PushNotifications.IPushNotificationReceivedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass RawNotification
            {
                [default] interface Windows.Networking.PushNotifications.IRawNotification;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Networking.PushNotifications.IRawNotification2;
                [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Networking.PushNotifications.IRawNotification3;
            }
        }
    }
}
