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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.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(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_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;

        interface IAsyncAction;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFile;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            typedef enum ProductPurchaseStatus ProductPurchaseStatus;

            typedef enum ProductType ProductType;

            typedef enum FulfillmentResult FulfillmentResult;

            delegate LicenseChangedEventHandler;

            interface ICurrentApp;

            interface ICurrentAppWithConsumables;

            interface ICurrentAppSimulator;

            interface ICurrentAppSimulatorWithConsumables;

            interface IPurchaseResults;

            interface ILicenseInformation;

            interface IProductLicense;

            interface IListingInformation;

            interface IProductListing;

            interface IProductListingWithConsumables;

            interface IUnfulfilledConsumable;

            interface IProductPurchaseDisplayProperties;

            interface IProductPurchaseDisplayPropertiesFactory;

            runtimeclass LicenseInformation;

            runtimeclass ListingInformation;

            runtimeclass PurchaseResults;

            runtimeclass ProductPurchaseDisplayProperties;

            runtimeclass UnfulfilledConsumable;

            runtimeclass ProductLicense;

            runtimeclass ProductListing;

            runtimeclass CurrentApp;

            runtimeclass CurrentAppSimulator;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.ApplicationModel.Store.ProductLicense*>*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.ApplicationModel.Store.ProductListing*>*>;

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

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

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

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

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

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

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

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

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.FulfillmentResult>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.ListingInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.PurchaseResults*>;

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

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Store
        {
            [version(0x06030000)]
            enum ProductPurchaseStatus
            {
                Succeeded        = 0,
                AlreadyPurchased = 1,
                NotFulfilled     = 2,
                NotPurchased     = 3
            };

            [version(0x06030000)]
            enum ProductType
            {
                Unknown    = 0,
                Durable    = 1,
                Consumable = 2
            };

            [version(0x06030000)]
            enum FulfillmentResult
            {
                Succeeded        = 0,
                NothingToFulfill = 1,
                PurchasePending  = 2,
                PurchaseReverted = 3,
                ServerError      = 4
            };

            [uuid(D4A50255-1369-4C36-832F-6F2D88E3659B)]
            [version(0x06020000)]
            delegate
                HRESULT LicenseChangedEventHandler();

            [exclusiveto(Windows.ApplicationModel.Store.CurrentApp)]
            [uuid(D52DC065-DA3F-4685-995E-9B482EB5E603)]
            [version(0x06020000)]
            interface ICurrentApp : IInspectable
            {
                [propget] HRESULT LicenseInformation([out] [retval] Windows.ApplicationModel.Store.LicenseInformation** value);
                [propget] HRESULT LinkUri([out] [retval] Windows.Foundation.Uri** value);
                [propget] HRESULT AppId([out] [retval] GUID* value);
                HRESULT RequestAppPurchaseAsync([in] boolean includeReceipt, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** requestAppPurchaseOperation);
                [deprecated("RequestProductPurchaseAsync(productId, includeReceipt) may be altered or unavailable for releases after Windows 8.1. Instead, use RequestProductPurchaseAsync(productId).", deprecate, 0x06030000)] [overload("RequestProductPurchaseAsync")] HRESULT RequestProductPurchaseAsync([in] HSTRING productId, [in] boolean includeReceipt, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** requestProductPurchaseOperation);
                HRESULT LoadListingInformationAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.ListingInformation*>** loadListingOperation);
                HRESULT GetAppReceiptAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** appReceiptOperation);
                HRESULT GetProductReceiptAsync([in] HSTRING productId, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** getProductReceiptOperation);
            }

            [exclusiveto(Windows.ApplicationModel.Store.CurrentApp)]
            [uuid(844E0071-9E4F-4F79-995A-5F91172E6CEF)]
            [version(0x06030000)]
            interface ICurrentAppWithConsumables : IInspectable
            {
                HRESULT ReportConsumableFulfillmentAsync([in] HSTRING productId, [in] GUID transactionId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.FulfillmentResult>** reportConsumableFulfillmentOperation);
                [overload("RequestProductPurchaseAsync")] HRESULT RequestProductPurchaseWithResultsAsync([in] HSTRING productId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.PurchaseResults*>** requestProductPurchaseWithResultsOperation);
                [overload("RequestProductPurchaseAsync")] HRESULT RequestProductPurchaseWithDisplayPropertiesAsync([in] HSTRING productId, [in] HSTRING offerId, [in] Windows.ApplicationModel.Store.ProductPurchaseDisplayProperties* displayProperties, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.PurchaseResults*>** requestProductPurchaseWithDisplayPropertiesOperation);
                HRESULT GetUnfulfilledConsumablesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.UnfulfilledConsumable*>*>** getUnfulfilledConsumablesOperation);
            }

            [exclusiveto(Windows.ApplicationModel.Store.CurrentAppSimulator)]
            [uuid(F17F9DB1-74CD-4787-9787-19866E9A5559)]
            [version(0x06020000)]
            interface ICurrentAppSimulator : IInspectable
            {
                [propget] HRESULT LicenseInformation([out] [retval] Windows.ApplicationModel.Store.LicenseInformation** value);
                [propget] HRESULT LinkUri([out] [retval] Windows.Foundation.Uri** value);
                [propget] HRESULT AppId([out] [retval] GUID* value);
                HRESULT RequestAppPurchaseAsync([in] boolean includeReceipt, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** requestAppPurchaseOperation);
                [deprecated("RequestProductPurchaseAsync(productId, includeReceipt) may be altered or unavailable for releases after Windows 8.1. Instead, use RequestProductPurchaseAsync(productId).", deprecate, 0x06030000)] [overload("RequestProductPurchaseAsync")] HRESULT RequestProductPurchaseAsync([in] HSTRING productId, [in] boolean includeReceipt, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** requestProductPurchaseOperation);
                HRESULT LoadListingInformationAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.ListingInformation*>** loadListingOperation);
                HRESULT GetAppReceiptAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** appReceiptOperation);
                HRESULT GetProductReceiptAsync([in] HSTRING productId, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** getProductReceiptOperation);
                HRESULT ReloadSimulatorAsync([in] Windows.Storage.StorageFile* simulatorSettingsFile, [out] [retval] Windows.Foundation.IAsyncAction** reloadSimulatorOperation);
            }

            [exclusiveto(Windows.ApplicationModel.Store.CurrentAppSimulator)]
            [uuid(4E51F0AB-20E7-4412-9B85-59BB78388667)]
            [version(0x06030000)]
            interface ICurrentAppSimulatorWithConsumables : IInspectable
            {
                HRESULT ReportConsumableFulfillmentAsync([in] HSTRING productId, [in] GUID transactionId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.FulfillmentResult>** reportConsumableFulfillmentOperation);
                [overload("RequestProductPurchaseAsync")] HRESULT RequestProductPurchaseWithResultsAsync([in] HSTRING productId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.PurchaseResults*>** requestProductPurchaseWithResultsOperation);
                [overload("RequestProductPurchaseAsync")] HRESULT RequestProductPurchaseWithDisplayPropertiesAsync([in] HSTRING productId, [in] HSTRING offerId, [in] Windows.ApplicationModel.Store.ProductPurchaseDisplayProperties* displayProperties, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Store.PurchaseResults*>** requestProductPurchaseWithDisplayPropertiesOperation);
                HRESULT GetUnfulfilledConsumablesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Store.UnfulfilledConsumable*>*>** getUnfulfilledConsumablesOperation);
            }

            [exclusiveto(Windows.ApplicationModel.Store.PurchaseResults)]
            [uuid(ED50B37E-8656-4F65-B8C8-AC7E0CB1A1C2)]
            [version(0x06030000)]
            interface IPurchaseResults : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.ApplicationModel.Store.ProductPurchaseStatus* value);
                [propget] HRESULT TransactionId([out] [retval] GUID* value);
                [propget] HRESULT ReceiptXml([out] [retval] HSTRING* value);
                [propget] HRESULT OfferId([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.ApplicationModel.Store.LicenseInformation)]
            [uuid(8EB7DC30-F170-4ED5-8E21-1516DA3FD367)]
            [version(0x06020000)]
            interface ILicenseInformation : IInspectable
            {
                [propget] HRESULT ProductLicenses([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.ApplicationModel.Store.ProductLicense*>** value);
                [propget] HRESULT IsActive([out] [retval] boolean* value);
                [propget] HRESULT IsTrial([out] [retval] boolean* value);
                [propget] HRESULT ExpirationDate([out] [retval] Windows.Foundation.DateTime* value);
                [eventadd] HRESULT LicenseChanged([in] Windows.ApplicationModel.Store.LicenseChangedEventHandler* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT LicenseChanged([in] EventRegistrationToken cookie);
            }

            [exclusiveto(Windows.ApplicationModel.Store.ProductLicense)]
            [uuid(363308C7-2BCF-4C0E-8F2F-E808AAA8F99D)]
            [version(0x06020000)]
            interface IProductLicense : IInspectable
            {
                [propget] HRESULT ProductId([out] [retval] HSTRING* value);
                [propget] HRESULT IsActive([out] [retval] boolean* value);
                [propget] HRESULT ExpirationDate([out] [retval] Windows.Foundation.DateTime* value);
            }

            [exclusiveto(Windows.ApplicationModel.Store.ListingInformation)]
            [uuid(588B4ABF-BC74-4383-B78C-99606323DECE)]
            [version(0x06020000)]
            interface IListingInformation : IInspectable
            {
                [propget] HRESULT CurrentMarket([out] [retval] HSTRING* value);
                [propget] HRESULT Description([out] [retval] HSTRING* value);
                [propget] HRESULT ProductListings([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.ApplicationModel.Store.ProductListing*>** value);
                [propget] HRESULT FormattedPrice([out] [retval] HSTRING* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT AgeRating([out] [retval] UINT32* value);
            }

            [exclusiveto(Windows.ApplicationModel.Store.ProductListing)]
            [uuid(45A7D6AD-C750-4D9C-947C-B00DCBF9E9C2)]
            [version(0x06020000)]
            interface IProductListing : IInspectable
            {
                [propget] HRESULT ProductId([out] [retval] HSTRING* value);
                [propget] HRESULT FormattedPrice([out] [retval] HSTRING* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.ApplicationModel.Store.ProductListing)]
            [uuid(EB9E9790-8F6B-481F-93A7-5C3A63068149)]
            [version(0x06030000)]
            interface IProductListingWithConsumables : IInspectable
            {
                [propget] HRESULT ProductType([out] [retval] Windows.ApplicationModel.Store.ProductType* value);
            }

            [exclusiveto(Windows.ApplicationModel.Store.UnfulfilledConsumable)]
            [uuid(2DF7FBBB-1CDD-4CB8-A014-7B9CF8986927)]
            [version(0x06030000)]
            interface IUnfulfilledConsumable : IInspectable
            {
                [propget] HRESULT ProductId([out] [retval] HSTRING* value);
                [propget] HRESULT TransactionId([out] [retval] GUID* value);
                [propget] HRESULT OfferId([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.ApplicationModel.Store.ProductPurchaseDisplayProperties)]
            [uuid(D70B7420-BC92-401B-A809-C9B2E5DBBDAF)]
            [version(0x06030000)]
            interface IProductPurchaseDisplayProperties : IInspectable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propput] HRESULT Name([in] HSTRING value);
                [propget] HRESULT Description([out] [retval] HSTRING* value);
                [propput] HRESULT Description([in] HSTRING value);
                [propget] HRESULT Image([out] [retval] Windows.Foundation.Uri** value);
                [propput] HRESULT Image([in] Windows.Foundation.Uri* value);
            }

            [exclusiveto(Windows.ApplicationModel.Store.ProductPurchaseDisplayProperties)]
            [uuid(6F491DF4-32D6-4B40-B474-B83038A4D9CF)]
            [version(0x06030000)]
            interface IProductPurchaseDisplayPropertiesFactory : IInspectable
            {
                HRESULT CreateProductPurchaseDisplayProperties([in] HSTRING name, [out] [retval] Windows.ApplicationModel.Store.ProductPurchaseDisplayProperties** displayProperties);
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass LicenseInformation
            {
                [default] interface Windows.ApplicationModel.Store.ILicenseInformation;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass ListingInformation
            {
                [default] interface Windows.ApplicationModel.Store.IListingInformation;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass PurchaseResults
            {
                [default] interface Windows.ApplicationModel.Store.IPurchaseResults;
            }

            [activatable(Windows.ApplicationModel.Store.IProductPurchaseDisplayPropertiesFactory, 0x06030000)]
            [activatable(0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass ProductPurchaseDisplayProperties
            {
                [default] interface Windows.ApplicationModel.Store.IProductPurchaseDisplayProperties;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass UnfulfilledConsumable
            {
                [default] interface Windows.ApplicationModel.Store.IUnfulfilledConsumable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass ProductLicense
            {
                [default] interface Windows.ApplicationModel.Store.IProductLicense;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass ProductListing
            {
                [default] interface Windows.ApplicationModel.Store.IProductListing;
                [version(0x06030000)] interface Windows.ApplicationModel.Store.IProductListingWithConsumables;
            }

            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.Store.ICurrentAppWithConsumables, 0x06030000)]
            [static(Windows.ApplicationModel.Store.ICurrentApp, 0x06020000)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass CurrentApp
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.Store.ICurrentAppSimulatorWithConsumables, 0x06030000)]
            [static(Windows.ApplicationModel.Store.ICurrentAppSimulator, 0x06020000)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass CurrentAppSimulator
            {
            }
        }
    }
}
