//
// 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";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace CommunicationBlocking
        {
            apicontract CommunicationBlockingContract;

            interface ICommunicationBlockingAccessManagerStatics;

            interface ICommunicationBlockingAppManagerStatics;

            interface ICommunicationBlockingAppManagerStatics2;

            runtimeclass CommunicationBlockingAccessManager;

            runtimeclass CommunicationBlockingAppManager;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace CommunicationBlocking
        {
            [contractversion(2.0)]
            apicontract CommunicationBlockingContract
            {
            }

            [contract(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingAccessManager)]
            [uuid(1C969998-9D2A-5DB7-EDD5-0CE407FC2595)]
            interface ICommunicationBlockingAccessManagerStatics : IInspectable
            {
                [propget] HRESULT IsBlockingActive([out] [retval] boolean* value);
                HRESULT IsBlockedNumberAsync([in] HSTRING number, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                HRESULT ShowBlockNumbersUI([in] Windows.Foundation.Collections.IIterable<HSTRING>* phoneNumbers, [out] [retval] boolean* value);
                HRESULT ShowUnblockNumbersUI([in] Windows.Foundation.Collections.IIterable<HSTRING>* phoneNumbers, [out] [retval] boolean* value);
                HRESULT ShowBlockedCallsUI();
                HRESULT ShowBlockedMessagesUI();
            }

            [contract(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingAppManager)]
            [uuid(77DB58EC-14A6-4BAA-942A-6A673D999BF2)]
            interface ICommunicationBlockingAppManagerStatics : IInspectable
            {
                [propget] HRESULT IsCurrentAppActiveBlockingApp([out] [retval] boolean* value);
                HRESULT ShowCommunicationBlockingSettingsUI();
            }

            [contract(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 2.0)]
            [exclusiveto(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingAppManager)]
            [uuid(14A68EDD-ED88-457A-A364-A3634D6F166D)]
            interface ICommunicationBlockingAppManagerStatics2 : IInspectable
                requires
                    Windows.ApplicationModel.CommunicationBlocking.ICommunicationBlockingAppManagerStatics
            {
                HRESULT RequestSetAsActiveBlockingAppAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
            }

            [contract(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.CommunicationBlocking.ICommunicationBlockingAccessManagerStatics, Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 1.0)]
            [threading(both)]
            runtimeclass CommunicationBlockingAccessManager
            {
            }

            [contract(Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.CommunicationBlocking.ICommunicationBlockingAppManagerStatics, Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 1.0)]
            [static(Windows.ApplicationModel.CommunicationBlocking.ICommunicationBlockingAppManagerStatics2, Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, 2.0)]
            [threading(both)]
            runtimeclass CommunicationBlockingAppManager
            {
            }
        }
    }
}
