//
// 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.UI.Notifications.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Notifications
        {
            typedef enum NotificationKinds NotificationKinds;

            runtimeclass UserNotification;

            runtimeclass UserNotificationChangedEventArgs;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Notifications
        {
            namespace Management
            {
                typedef enum UserNotificationListenerAccessStatus UserNotificationListenerAccessStatus;

                interface IUserNotificationListener;

                interface IUserNotificationListenerStatics;

                runtimeclass UserNotificationListener;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace Notifications
        {
            namespace Management
            {
                declare
                {
                    interface Windows.Foundation.IAsyncOperation<Windows.UI.Notifications.Management.UserNotificationListenerAccessStatus>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Notifications
        {
            namespace Management
            {
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                enum UserNotificationListenerAccessStatus
                {
                    Unspecified = 0,
                    Allowed     = 1,
                    Denied      = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.UI.Notifications.Management.UserNotificationListener)]
                [uuid(62553E41-8A06-4CEF-8215-6033A5BE4B03)]
                interface IUserNotificationListener : IInspectable
                {
                    HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Notifications.Management.UserNotificationListenerAccessStatus>** operation);
                    HRESULT GetAccessStatus([out] [retval] Windows.UI.Notifications.Management.UserNotificationListenerAccessStatus* result);
                    [eventadd] HRESULT NotificationChanged([in] Windows.Foundation.TypedEventHandler<Windows.UI.Notifications.Management.UserNotificationListener*, Windows.UI.Notifications.UserNotificationChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT NotificationChanged([in] EventRegistrationToken token);
                    HRESULT GetNotificationsAsync([in] Windows.UI.Notifications.NotificationKinds kinds, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.UI.Notifications.UserNotification*>*>** operation);
                    HRESULT GetNotification([in] UINT32 notificationId, [out] [retval] Windows.UI.Notifications.UserNotification** result);
                    HRESULT ClearNotifications();
                    HRESULT RemoveNotification([in] UINT32 notificationId);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.UI.Notifications.Management.UserNotificationListener)]
                [uuid(FF6123CF-4386-4AA3-B73D-B804E5B63B23)]
                interface IUserNotificationListenerStatics : IInspectable
                {
                    [propget] HRESULT Current([out] [retval] Windows.UI.Notifications.Management.UserNotificationListener** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Notifications.Management.IUserNotificationListenerStatics, Windows.Foundation.UniversalApiContract, 3.0)]
                [threading(mta)]
                runtimeclass UserNotificationListener
                {
                    [default] interface Windows.UI.Notifications.Management.IUserNotificationListener;
                }
            }
        }
    }
}
