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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.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(__windows2Eapplicationmodel_h__)")
cpp_quote("#include <Windows.ApplicationModel.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        runtimeclass AppDisplayInfo;
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;
    }
}
namespace Windows
{
    namespace Gaming
    {
        namespace Preview
        {
            namespace GamesEnumeration
            {
                typedef enum GameListCategory GameListCategory;

                delegate GameListChangedEventHandler;

                delegate GameListRemovedEventHandler;

                interface IGameListEntry;

                interface IGameListStatics;

                runtimeclass GameListEntry;

                runtimeclass GameList;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Gaming
    {
        namespace Preview
        {
            namespace GamesEnumeration
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Gaming.Preview.GamesEnumeration.GameListEntry*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Gaming.Preview.GamesEnumeration.GameListEntry*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Preview.GamesEnumeration.GameListEntry*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Gaming.Preview.GamesEnumeration.GameListEntry*>*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Gaming
    {
        namespace Preview
        {
            namespace GamesEnumeration
            {
                [version(0x0A000000)]
                enum GameListCategory
                {
                    Candidate         = 0,
                    ConfirmedBySystem = 1,
                    ConfirmedByUser   = 2
                };

                [uuid(25F6A421-D8F5-4D91-B40E-53D5E86FDE64)]
                [version(0x0A000000)]
                delegate
                    HRESULT GameListChangedEventHandler([in] Windows.Gaming.Preview.GamesEnumeration.GameListEntry* game);

                [uuid(10C5648F-6C8F-4712-9B38-474BC22E76D8)]
                [version(0x0A000000)]
                delegate
                    HRESULT GameListRemovedEventHandler([in] HSTRING identifier);

                [uuid(735924D3-811F-4494-B69C-C641A0C61543)]
                [version(0x0A000000)]
                interface IGameListEntry : IInspectable
                {
                    [propget] HRESULT DisplayInfo([out] [retval] Windows.ApplicationModel.AppDisplayInfo** value);
                    HRESULT LaunchAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                    [propget] HRESULT Category([out] [retval] Windows.Gaming.Preview.GamesEnumeration.GameListCategory* value);
                    [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>** value);
                    HRESULT SetCategoryAsync([in] Windows.Gaming.Preview.GamesEnumeration.GameListCategory value, [out] [retval] Windows.Foundation.IAsyncAction** action);
                }

                [exclusiveto(Windows.Gaming.Preview.GamesEnumeration.GameList)]
                [uuid(2DDD0F6F-9C66-4B05-945C-D6ED78491B8C)]
                [version(0x0A000000)]
                interface IGameListStatics : IInspectable
                {
                    [overload("FindAllAsync")] HRESULT FindAllAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Gaming.Preview.GamesEnumeration.GameListEntry*>*>** operation);
                    [overload("FindAllAsync")] HRESULT FindAllAsyncPackageFamilyName([in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Gaming.Preview.GamesEnumeration.GameListEntry*>*>** operation);
                    [eventadd] HRESULT GameAdded([in] Windows.Gaming.Preview.GamesEnumeration.GameListChangedEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GameAdded([in] EventRegistrationToken token);
                    [eventadd] HRESULT GameRemoved([in] Windows.Gaming.Preview.GamesEnumeration.GameListRemovedEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GameRemoved([in] EventRegistrationToken token);
                    [eventadd] HRESULT GameUpdated([in] Windows.Gaming.Preview.GamesEnumeration.GameListChangedEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GameUpdated([in] EventRegistrationToken token);
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass GameListEntry
                {
                    [default] interface Windows.Gaming.Preview.GamesEnumeration.IGameListEntry;
                }

                [marshaling_behavior(agile)]
                [static(Windows.Gaming.Preview.GamesEnumeration.IGameListStatics, 0x0A000000)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass GameList
                {
                }
            }
        }
    }
}
