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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        apicontract SystemManagementContract;
    }
}
namespace Windows
{
    namespace Services
    {
        namespace Cortana
        {
            typedef enum CortanaPermission CortanaPermission;

            typedef enum CortanaPermissionsChangeResult CortanaPermissionsChangeResult;

            interface ICortanaPermissionsManager;

            interface ICortanaPermissionsManagerStatics;

            interface ICortanaSettings;

            interface ICortanaSettingsStatics;

            runtimeclass CortanaPermissionsManager;

            runtimeclass CortanaSettings;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Services
    {
        namespace Cortana
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Services.Cortana.CortanaPermission>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.Cortana.CortanaPermission>;

                interface Windows.Foundation.IAsyncOperation<Windows.Services.Cortana.CortanaPermissionsChangeResult>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Services
    {
        namespace Cortana
        {
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum CortanaPermission
            {
                BrowsingHistory      = 0,
                Calendar             = 1,
                CallHistory          = 2,
                Contacts             = 3,
                Email                = 4,
                InputPersonalization = 5,
                Location             = 6,
                Messaging            = 7,
                Microphone           = 8,
                Personalization      = 9,
                PhoneCall            = 10
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum CortanaPermissionsChangeResult
            {
                Success          = 0,
                Unavailable      = 1,
                DisabledByPolicy = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Cortana.CortanaPermissionsManager)]
            [uuid(191330E0-8695-438A-9545-3DA4E822DDB4)]
            interface ICortanaPermissionsManager : IInspectable
            {
                HRESULT IsSupported([out] [retval] boolean* result);
                HRESULT ArePermissionsGrantedAsync([in] Windows.Foundation.Collections.IIterable<Windows.Services.Cortana.CortanaPermission>* permissions, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** getGrantedPermissionsOperation);
                HRESULT GrantPermissionsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Services.Cortana.CortanaPermission>* permissions, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Cortana.CortanaPermissionsChangeResult>** grantOperation);
                HRESULT RevokePermissionsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Services.Cortana.CortanaPermission>* permissions, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Cortana.CortanaPermissionsChangeResult>** revokeOperation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Services.Cortana.CortanaPermissionsManager)]
            [uuid(76B1E67A-B045-4414-9D6D-2AD3A5FE3A7E)]
            interface ICortanaPermissionsManagerStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Services.Cortana.CortanaPermissionsManager** result);
            }

            [contract(Windows.System.SystemManagementContract, 3.0)]
            [exclusiveto(Windows.Services.Cortana.CortanaSettings)]
            [uuid(54D571A7-8062-40F4-ABE7-DEDFD697B019)]
            interface ICortanaSettings : IInspectable
            {
                [propget] HRESULT HasUserConsentToVoiceActivation([out] [retval] boolean* value);
                [propget] HRESULT IsVoiceActivationEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsVoiceActivationEnabled([in] boolean value);
            }

            [contract(Windows.System.SystemManagementContract, 3.0)]
            [exclusiveto(Windows.Services.Cortana.CortanaSettings)]
            [uuid(8B2CCD7E-2EC0-446D-9285-33F07CE8AC04)]
            interface ICortanaSettingsStatics : IInspectable
            {
                HRESULT IsSupported([out] [retval] boolean* value);
                HRESULT GetDefault([out] [retval] Windows.Services.Cortana.CortanaSettings** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.Cortana.ICortanaPermissionsManagerStatics, Windows.Foundation.UniversalApiContract, 4.0)]
            runtimeclass CortanaPermissionsManager
            {
                [default] interface Windows.Services.Cortana.ICortanaPermissionsManager;
            }

            [contract(Windows.System.SystemManagementContract, 3.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.Cortana.ICortanaSettingsStatics, Windows.System.SystemManagementContract, 3.0)]
            [threading(both)]
            runtimeclass CortanaSettings
            {
                [default] interface Windows.Services.Cortana.ICortanaSettings;
            }
        }
    }
}
