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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            namespace LicenseManagement
            {
                typedef enum LicenseRefreshOption LicenseRefreshOption;

                interface ILicenseManagerStatics;

                interface ILicenseManagerStatics2;

                interface ILicenseSatisfactionInfo;

                interface ILicenseSatisfactionResult;

                runtimeclass LicenseManager;

                runtimeclass LicenseSatisfactionInfo;

                runtimeclass LicenseSatisfactionResult;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            namespace LicenseManagement
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionInfo*>*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionInfo*>*>;

                    interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionInfo*>;

                    interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionInfo*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionResult*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            namespace LicenseManagement
            {
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum LicenseRefreshOption
                {
                    RunningLicenses = 0,
                    AllLicenses     = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Store.LicenseManagement.LicenseManager)]
                [uuid(B5AC3AE0-DA47-4F20-9A23-09182C9476FF)]
                interface ILicenseManagerStatics : IInspectable
                {
                    HRESULT AddLicenseAsync([in] Windows.Storage.Streams.IBuffer* license, [out] [retval] Windows.Foundation.IAsyncAction** action);
                    HRESULT GetSatisfactionInfosAsync([in] Windows.Foundation.Collections.IIterable<HSTRING>* contentIds, [in] Windows.Foundation.Collections.IIterable<HSTRING>* keyIds, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionResult*>** operation);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.ApplicationModel.Store.LicenseManagement.LicenseManager)]
                [uuid(AB2EC47B-1F79-4480-B87E-2C499E601BA3)]
                interface ILicenseManagerStatics2 : IInspectable
                {
                    HRESULT RefreshLicensesAsync([in] Windows.ApplicationModel.Store.LicenseManagement.LicenseRefreshOption refreshOption, [out] [retval] Windows.Foundation.IAsyncAction** action);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionInfo)]
                [uuid(3CCBB08F-DB31-48D5-8384-FA17C81474E2)]
                interface ILicenseSatisfactionInfo : IInspectable
                {
                    [propget] HRESULT SatisfiedByDevice([out] [retval] boolean* value);
                    [propget] HRESULT SatisfiedByOpenLicense([out] [retval] boolean* value);
                    [propget] HRESULT SatisfiedByTrial([out] [retval] boolean* value);
                    [propget] HRESULT SatisfiedByPass([out] [retval] boolean* value);
                    [propget] HRESULT SatisfiedByInstallMedia([out] [retval] boolean* value);
                    [propget] HRESULT SatisfiedBySignedInUser([out] [retval] boolean* value);
                    [propget] HRESULT IsSatisfied([out] [retval] boolean* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionResult)]
                [uuid(3C674F73-3C87-4EE1-8201-F428359BD3AF)]
                interface ILicenseSatisfactionResult : IInspectable
                {
                    [propget] HRESULT LicenseSatisfactionInfos([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.ApplicationModel.Store.LicenseManagement.LicenseSatisfactionInfo*>** value);
                    [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [static(Windows.ApplicationModel.Store.LicenseManagement.ILicenseManagerStatics, Windows.Foundation.UniversalApiContract, 3.0)]
                [static(Windows.ApplicationModel.Store.LicenseManagement.ILicenseManagerStatics2, Windows.Foundation.UniversalApiContract, 4.0)]
                [threading(both)]
                runtimeclass LicenseManager
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LicenseSatisfactionInfo
                {
                    [default] interface Windows.ApplicationModel.Store.LicenseManagement.ILicenseSatisfactionInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LicenseSatisfactionResult
                {
                    [default] interface Windows.ApplicationModel.Store.LicenseManagement.ILicenseSatisfactionResult;
                }
            }
        }
    }
}
