//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0015
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.Streams.idl";
import "Windows.System.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if !defined(__windows2Esystem_h__)")
cpp_quote("#include <Windows.System.h>")
cpp_quote("#endif // !defined(__windows2Esystem_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            namespace Preview
            {
                typedef enum StoreLogOptions StoreLogOptions;

                typedef enum StorePreviewProductPurchaseStatus StorePreviewProductPurchaseStatus;

                typedef enum StoreSystemFeature StoreSystemFeature;

                interface IStoreConfigurationStatics;

                interface IStoreConfigurationStatics2;

                interface IStoreConfigurationStatics3;

                interface IStoreHardwareManufacturerInfo;

                interface IStorePreview;

                interface IStorePreviewProductInfo;

                interface IStorePreviewPurchaseResults;

                interface IStorePreviewSkuInfo;

                runtimeclass StoreConfiguration;

                runtimeclass StoreHardwareManufacturerInfo;

                runtimeclass StorePreview;

                runtimeclass StorePreviewProductInfo;

                runtimeclass StorePreviewPurchaseResults;

                runtimeclass StorePreviewSkuInfo;
            }
        }
    }
}

// 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
            {
                [flags]
                [version(0x0A000002)]
                enum StoreLogOptions
                {
                    None       = 0x0,
                    TryElevate = 0x1
                };

                [version(0x0A000000)]
                enum StorePreviewProductPurchaseStatus
                {
                    Succeeded        = 0,
                    AlreadyPurchased = 1,
                    NotFulfilled     = 2,
                    NotPurchased     = 3
                };

                [version(0x0A000000)]
                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,
                    [version(0x0A000000)]
                    Memory4GB            = 24,
                    [version(0x0A000000)]
                    Memory6GB            = 25,
                    [version(0x0A000000)]
                    Memory8GB            = 26,
                    [version(0x0A000000)]
                    Memory12GB           = 27,
                    [version(0x0A000000)]
                    Memory16GB           = 28,
                    [version(0x0A000000)]
                    Memory20GB           = 29,
                    [version(0x0A000000)]
                    VideoMemory2GB       = 30,
                    [version(0x0A000000)]
                    VideoMemory4GB       = 31,
                    [version(0x0A000000)]
                    VideoMemory6GB       = 32,
                    [version(0x0A000000)]
                    VideoMemory1GB       = 33
                };

                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreConfiguration)]
                [uuid(728F7FC0-8628-42EC-84A2-07780EB44D8B)]
                [version(0x0A000000)]
                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);
                }

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

                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreConfiguration)]
                [uuid(6D45F57C-F144-4CB5-9D3F-4EB05E30B6D3)]
                [version(0x0A000002)]
                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);
                }

                [exclusiveto(Windows.ApplicationModel.Store.Preview.StoreHardwareManufacturerInfo)]
                [uuid(F292DC08-C654-43AC-A21F-34801C9D3388)]
                [version(0x0A000000)]
                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);
                }

                [exclusiveto(Windows.ApplicationModel.Store.Preview.StorePreview)]
                [uuid(8A157241-840E-49A9-BC01-5D5B01FBC8E9)]
                [version(0x0A000000)]
                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);
                }

                [exclusiveto(Windows.ApplicationModel.Store.Preview.StorePreviewProductInfo)]
                [uuid(1937DBB3-6C01-4C9D-85CD-5BABAAC2B351)]
                [version(0x0A000000)]
                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);
                }

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

                [exclusiveto(Windows.ApplicationModel.Store.Preview.StorePreviewSkuInfo)]
                [uuid(81FD76E2-0B26-48D9-98CE-27461C669D6C)]
                [version(0x0A000000)]
                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);
                }

                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics, 0x0A000000)]
                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics2, 0x0A000001)]
                [static(Windows.ApplicationModel.Store.Preview.IStoreConfigurationStatics3, 0x0A000002)]
                [version(0x0A000000)]
                runtimeclass StoreConfiguration
                {
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass StoreHardwareManufacturerInfo
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStoreHardwareManufacturerInfo;
                }

                [marshaling_behavior(agile)]
                [static(Windows.ApplicationModel.Store.Preview.IStorePreview, 0x0A000000)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass StorePreview
                {
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass StorePreviewProductInfo
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStorePreviewProductInfo;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass StorePreviewPurchaseResults
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStorePreviewPurchaseResults;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass StorePreviewSkuInfo
                {
                    [default] interface Windows.ApplicationModel.Store.Preview.IStorePreviewSkuInfo;
                }
            }
        }
    }
}
