//
// 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.Security.Authentication.Web.Core.idl";
import "Windows.Security.Credentials.idl";
import "Windows.Storage.Streams.idl";
import "Windows.System.idl";
import "Windows.UI.Xaml.idl";

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

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Authentication
        {
            namespace Web
            {
                namespace Core
                {
                    runtimeclass WebTokenRequest;

                    runtimeclass WebTokenRequestResult;
                }
            }
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass WebAccount;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            runtimeclass UIElement;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            namespace Preview
            {
                typedef enum DeliveryOptimizationDownloadMode DeliveryOptimizationDownloadMode;

                typedef enum DeliveryOptimizationDownloadModeSource DeliveryOptimizationDownloadModeSource;

                typedef enum StoreLogOptions StoreLogOptions;

                typedef enum StorePreviewProductPurchaseStatus StorePreviewProductPurchaseStatus;

                typedef enum StoreSystemFeature StoreSystemFeature;

                interface IDeliveryOptimizationSettings;

                interface IDeliveryOptimizationSettingsStatics;

                interface IStoreConfigurationStatics;

                interface IStoreConfigurationStatics2;

                interface IStoreConfigurationStatics3;

                interface IStoreConfigurationStatics4;

                interface IStoreConfigurationStatics5;

                interface IStoreHardwareManufacturerInfo;

                interface IStorePreview;

                interface IStorePreviewProductInfo;

                interface IStorePreviewPurchaseResults;

                interface IStorePreviewSkuInfo;

                interface IWebAuthenticationCoreManagerHelper;

                runtimeclass DeliveryOptimizationSettings;

                runtimeclass StoreConfiguration;

                runtimeclass StoreHardwareManufacturerInfo;

                runtimeclass StorePreview;

                runtimeclass StorePreviewProductInfo;

                runtimeclass StorePreviewPurchaseResults;

                runtimeclass StorePreviewSkuInfo;

                runtimeclass WebAuthenticationCoreManagerHelper;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            namespace Preview
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Store.Preview.StorePreviewProductInfo*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Store.Preview.StorePreviewSkuInfo*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Store.Preview.StoreSystemFeature>;

                    interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Store.Preview.StorePreviewProductInfo*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Store.Preview.StorePreviewSkuInfo*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Store.Preview.StoreSystemFeature>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StorePreviewProductInfo*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StorePreviewSkuInfo*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StoreSystemFeature>;

                    interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.Preview.StorePreviewPurchaseResults*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StorePreviewProductInfo*>*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StoreSystemFeature>*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            namespace Preview
            {
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                enum DeliveryOptimizationDownloadMode
                {
                    Simple   = 0,
                    HttpOnly = 1,
                    Lan      = 2,
                    Group    = 3,
                    Internet = 4,
                    Bypass   = 5
                };

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                enum DeliveryOptimizationDownloadModeSource
                {
                    Default = 0,
                    Policy  = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [flags]
                enum StoreLogOptions
                {
                    None       = 0x0,
                    TryElevate = 0x1
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum StorePreviewProductPurchaseStatus
                {
                    Succeeded        = 0,
                    AlreadyPurchased = 1,
                    NotFulfilled     = 2,
                    NotPurchased     = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum StoreSystemFeature
                {
                    ArchitectureX86      = 0,
                    ArchitectureX64      = 1,
                    ArchitectureArm      = 2,
                    DirectX9             = 3,
                    DirectX10            = 4,
                    DirectX11            = 5,
                    D3D12HardwareFL11    = 6,
                    D3D12HardwareFL12    = 7,
                    Memory300MB          = 8,
                    Memory750MB          = 9,
                    Memory1GB            = 10,
                    Memory2GB            = 11,
                    CameraFront          = 12,
                    CameraRear           = 13,
                    Gyroscope            = 14,
                    Hover                = 15,
                    Magnetometer         = 16,
                    Nfc                  = 17,
                    Resolution720P       = 18,
                    ResolutionWvga       = 19,
                    ResolutionWvgaOr720P = 20,
                    ResolutionWxga       = 21,
                    ResolutionWvgaOrWxga = 22,
                    ResolutionWxgaOr720P = 23,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    Memory4GB            = 24,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    Memory6GB            = 25,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    Memory8GB            = 26,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    Memory12GB           = 27,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    Memory16GB           = 28,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    Memory20GB           = 29,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    VideoMemory2GB       = 30,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    VideoMemory4GB       = 31,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    VideoMemory6GB       = 32,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    VideoMemory1GB       = 33,
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                    ArchitectureArm64    = 34
                };

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.DeliveryOptimizationSettings)]
                [uuid(1810FDA0-E853-565E-B874-7A8A7B9A0E0F)]
                interface IDeliveryOptimizationSettings : IInspectable
                {
                    [propget] HRESULT DownloadMode([out] [retval] Windows.ApplicationModel.Store.Preview.DeliveryOptimizationDownloadMode* value);
                    [propget] HRESULT DownloadModeSource([out] [retval] Windows.ApplicationModel.Store.Preview.DeliveryOptimizationDownloadModeSource* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.DeliveryOptimizationSettings)]
                [uuid(5C817CAF-AED5-5999-B4C9-8C60898BC4F3)]
                interface IDeliveryOptimizationSettingsStatics : IInspectable
                {
                    HRESULT GetCurrentSettings([out] [retval] Windows.ApplicationModel.Store.Preview.DeliveryOptimizationSettings** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreConfiguration)]
                [uuid(728F7FC0-8628-42EC-84A2-07780EB44D8B)]
                interface IStoreConfigurationStatics : IInspectable
                {
                    HRESULT SetSystemConfiguration([in] HSTRING catalogHardwareManufacturerId, [in] HSTRING catalogStoreContentModifierId, [in] Windows.Foundation.DateTime systemConfigurationExpiration, [in] HSTRING catalogHardwareDescriptor);
                    HRESULT SetMobileOperatorConfiguration([in] HSTRING mobileOperatorId, [in] UINT32 appDownloadLimitInMegabytes, [in] UINT32 updateDownloadLimitInMegabytes);
                    HRESULT SetStoreWebAccountId([in] HSTRING webAccountId);
                    HRESULT IsStoreWebAccountId([in] HSTRING webAccountId, [out] [retval] boolean* value);
                    [propget] HRESULT HardwareManufacturerInfo([out] [retval] Windows.ApplicationModel.Store.Preview.StoreHardwareManufacturerInfo** value);
                    HRESULT FilterUnsupportedSystemFeaturesAsync([in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Store.Preview.StoreSystemFeature>* systemFeatures, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StoreSystemFeature>*>** operation);
                }

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreConfiguration)]
                [uuid(657C4595-C8B7-4FE9-9F4C-4D71027D347E)]
                interface IStoreConfigurationStatics2 : IInspectable
                {
                    [propget] HRESULT PurchasePromptingPolicy([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                    [propput] HRESULT PurchasePromptingPolicy([in] Windows.Foundation.IReference<UINT32>* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreConfiguration)]
                [uuid(6D45F57C-F144-4CB5-9D3F-4EB05E30B6D3)]
                interface IStoreConfigurationStatics3 : IInspectable
                {
                    HRESULT HasStoreWebAccount([out] [retval] boolean* value);
                    HRESULT HasStoreWebAccountForUser([in] Windows.System.User* user, [out] [retval] boolean* value);
                    HRESULT GetStoreLogDataAsync([in] Windows.ApplicationModel.Store.Preview.StoreLogOptions options, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStreamReference*>** operation);
                    HRESULT SetStoreWebAccountIdForUser([in] Windows.System.User* user, [in] HSTRING webAccountId);
                    HRESULT IsStoreWebAccountIdForUser([in] Windows.System.User* user, [in] HSTRING webAccountId, [out] [retval] boolean* value);
                    HRESULT GetPurchasePromptingPolicyForUser([in] Windows.System.User* user, [out] [retval] Windows.Foundation.IReference<UINT32>** value);
                    HRESULT SetPurchasePromptingPolicyForUser([in] Windows.System.User* user, [in] Windows.Foundation.IReference<UINT32>* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreConfiguration)]
                [uuid(20FF56D2-4EE3-4CF0-9B12-552C03310F75)]
                interface IStoreConfigurationStatics4 : IInspectable
                {
                    HRESULT GetStoreWebAccountId([out] [retval] HSTRING* result);
                    HRESULT GetStoreWebAccountIdForUser([in] Windows.System.User* user, [out] [retval] HSTRING* result);
                    HRESULT SetEnterpriseStoreWebAccountId([in] HSTRING webAccountId);
                    HRESULT SetEnterpriseStoreWebAccountIdForUser([in] Windows.System.User* user, [in] HSTRING webAccountId);
                    HRESULT GetEnterpriseStoreWebAccountId([out] [retval] HSTRING* result);
                    HRESULT GetEnterpriseStoreWebAccountIdForUser([in] Windows.System.User* user, [out] [retval] HSTRING* result);
                    HRESULT ShouldRestrictToEnterpriseStoreOnly([out] [retval] boolean* result);
                    HRESULT ShouldRestrictToEnterpriseStoreOnlyForUser([in] Windows.System.User* user, [out] [retval] boolean* result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreConfiguration)]
                [uuid(F7613191-8FA9-49DB-822B-0160E7E4E5C5)]
                interface IStoreConfigurationStatics5 : IInspectable
                {
                    HRESULT IsPinToDesktopSupported([out] [retval] boolean* value);
                    HRESULT IsPinToTaskbarSupported([out] [retval] boolean* value);
                    HRESULT IsPinToStartSupported([out] [retval] boolean* value);
                    HRESULT PinToDesktop([in] HSTRING appPackageFamilyName);
                    HRESULT PinToDesktopForUser([in] Windows.System.User* user, [in] HSTRING appPackageFamilyName);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreHardwareManufacturerInfo)]
                [uuid(F292DC08-C654-43AC-A21F-34801C9D3388)]
                interface IStoreHardwareManufacturerInfo : IInspectable
                {
                    [propget] HRESULT HardwareManufacturerId([out] [retval] HSTRING* value);
                    [propget] HRESULT StoreContentModifierId([out] [retval] HSTRING* value);
                    [propget] HRESULT ModelName([out] [retval] HSTRING* value);
                    [propget] HRESULT ManufacturerName([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StorePreview)]
                [uuid(8A157241-840E-49A9-BC01-5D5B01FBC8E9)]
                interface IStorePreview : IInspectable
                {
                    HRESULT RequestProductPurchaseByProductIdAndSkuIdAsync([in] HSTRING productId, [in] HSTRING skuId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.Preview.StorePreviewPurchaseResults*>** requestPurchaseBySkuIdOperation);
                    HRESULT LoadAddOnProductInfosAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StorePreviewProductInfo*>*>** loadAddOnProductInfosOperation);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StorePreviewProductInfo)]
                [uuid(1937DBB3-6C01-4C9D-85CD-5BABAAC2B351)]
                interface IStorePreviewProductInfo : IInspectable
                {
                    [propget] HRESULT ProductId([out] [retval] HSTRING* value);
                    [propget] HRESULT ProductType([out] [retval] HSTRING* value);
                    [propget] HRESULT Title([out] [retval] HSTRING* value);
                    [propget] HRESULT Description([out] [retval] HSTRING* value);
                    [propget] HRESULT SkuInfoList([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.Preview.StorePreviewSkuInfo*>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StorePreviewPurchaseResults)]
                [uuid(B0DAAED1-D6C5-4E53-A043-FBA0D8E61231)]
                interface IStorePreviewPurchaseResults : IInspectable
                {
                    [propget] HRESULT ProductPurchaseStatus([out] [retval] Windows.ApplicationModel.Store.Preview.StorePreviewProductPurchaseStatus* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.StorePreviewSkuInfo)]
                [uuid(81FD76E2-0B26-48D9-98CE-27461C669D6C)]
                interface IStorePreviewSkuInfo : IInspectable
                {
                    [propget] HRESULT ProductId([out] [retval] HSTRING* value);
                    [propget] HRESULT SkuId([out] [retval] HSTRING* value);
                    [propget] HRESULT SkuType([out] [retval] HSTRING* value);
                    [propget] HRESULT Title([out] [retval] HSTRING* value);
                    [propget] HRESULT Description([out] [retval] HSTRING* value);
                    [propget] HRESULT CustomDeveloperData([out] [retval] HSTRING* value);
                    [propget] HRESULT CurrencyCode([out] [retval] HSTRING* value);
                    [propget] HRESULT FormattedListPrice([out] [retval] HSTRING* value);
                    [propget] HRESULT ExtendedData([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.ApplicationModel.Store.Preview.WebAuthenticationCoreManagerHelper)]
                [uuid(06A50525-E715-4123-9276-9D6F865BA55F)]
                interface IWebAuthenticationCoreManagerHelper : IInspectable
                {
                    [overload("RequestTokenWithUIElementHostingAsync")] HRESULT RequestTokenWithUIElementHostingAsync([in] Windows.Security.Authentication.Web.Core.WebTokenRequest* request, [in] Windows.UI.Xaml.UIElement* uiElement, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.Core.WebTokenRequestResult*>** asyncInfo);
                    [overload("RequestTokenWithUIElementHostingAsync")] HRESULT RequestTokenWithUIElementHostingAndWebAccountAsync([in] Windows.Security.Authentication.Web.Core.WebTokenRequest* request, [in] Windows.Security.Credentials.WebAccount* webAccount, [in] Windows.UI.Xaml.UIElement* uiElement, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.Core.WebTokenRequestResult*>** asyncInfo);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [static(Windows.ApplicationModel.Store.Preview.IDeliveryOptimizationSettingsStatics, Windows.Foundation.UniversalApiContract, 7.0)]
                [threading(both)]
                runtimeclass DeliveryOptimizationSettings
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IDeliveryOptimizationSettings;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics2, Windows.Foundation.UniversalApiContract, 2.0)]
                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics3, Windows.Foundation.UniversalApiContract, 3.0)]
                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics4, Windows.Foundation.UniversalApiContract, 4.0)]
                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics5, Windows.Foundation.UniversalApiContract, 7.0)]
                runtimeclass StoreConfiguration
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass StoreHardwareManufacturerInfo
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStoreHardwareManufacturerInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.ApplicationModel.Store.Preview.IStorePreview, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass StorePreview
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass StorePreviewProductInfo
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStorePreviewProductInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass StorePreviewPurchaseResults
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStorePreviewPurchaseResults;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass StorePreviewSkuInfo
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStorePreviewSkuInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [static(Windows.ApplicationModel.Store.Preview.IWebAuthenticationCoreManagerHelper, Windows.Foundation.UniversalApiContract, 4.0)]
                runtimeclass WebAuthenticationCoreManagerHelper
                {
                }
            }
        }
    }
}
