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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.Streams.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(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Phone
    {
        namespace System
        {
            namespace UserProfile
            {
                namespace GameServices
                {
                    namespace Core
                    {
                        typedef enum GameServiceScoreKind GameServiceScoreKind;

                        typedef enum GameServiceGameOutcome GameServiceGameOutcome;

                        interface IGameServicePropertyCollection;

                        interface IGameService;

                        interface IGameService2;

                        runtimeclass GameServicePropertyCollection;

                        runtimeclass GameService;
                    }
                }
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Phone
    {
        namespace System
        {
            namespace UserProfile
            {
                namespace GameServices
                {
                    namespace Core
                    {
                        declare
                        {
                            interface Windows.Foundation.IAsyncOperation<Windows.Phone.System.UserProfile.GameServices.Core.GameServicePropertyCollection*>;
                        }
                    }
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Phone
    {
        namespace System
        {
            namespace UserProfile
            {
                namespace GameServices
                {
                    namespace Core
                    {
                        [version(0x06020000)]
                        enum GameServiceScoreKind
                        {
                            Number = 0,
                            Time   = 1
                        };

                        [version(0x06020000)]
                        enum GameServiceGameOutcome
                        {
                            None = 0,
                            Win  = 1,
                            Loss = 2,
                            Tie  = 3
                        };

                        [exclusiveto(Windows.Phone.System.UserProfile.GameServices.Core.GameServicePropertyCollection)]
                        [uuid(07E57FC8-DEBB-4609-9CC8-529D16BC2BD9)]
                        [version(0x06020000)]
                        interface IGameServicePropertyCollection : IInspectable
                        {
                            HRESULT GetPropertyAsync([in] HSTRING propertyName, [out] [retval] Windows.Foundation.IAsyncOperation<IInspectable*>** operation);
                        }

                        [exclusiveto(Windows.Phone.System.UserProfile.GameServices.Core.GameService)]
                        [uuid(2E2D5098-48A9-4EFC-AFD6-8E6DA09003FB)]
                        [version(0x06020000)]
                        interface IGameService : IInspectable
                        {
                            [propget] HRESULT ServiceUri([out] [retval] Windows.Foundation.Uri** value);
                            HRESULT GetGamerProfileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.System.UserProfile.GameServices.Core.GameServicePropertyCollection*>** operation);
                            HRESULT GetInstalledGameItemsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.System.UserProfile.GameServices.Core.GameServicePropertyCollection*>** operation);
                            HRESULT GetPartnerTokenAsync([in] Windows.Foundation.Uri* audienceUri, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                            HRESULT GetPrivilegesAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                            HRESULT GrantAchievement([in] UINT32 achievementId);
                            HRESULT GrantAvatarAward([in] UINT32 avatarAwardId);
                            HRESULT PostResult([in] UINT32 gameVariant, [in] Windows.Phone.System.UserProfile.GameServices.Core.GameServiceScoreKind scoreKind, [in] INT64 scoreValue, [in] Windows.Phone.System.UserProfile.GameServices.Core.GameServiceGameOutcome gameOutcome, [in] Windows.Storage.Streams.IBuffer* buffer);
                        }

                        [exclusiveto(Windows.Phone.System.UserProfile.GameServices.Core.GameService)]
                        [uuid(D2364EF6-EA17-4BE5-8D8A-C860885E051F)]
                        [version(0x06030000)]
                        interface IGameService2 : IInspectable
                        {
                            HRESULT NotifyPartnerTokenExpired([in] Windows.Foundation.Uri* audienceUri);
                            HRESULT GetAuthenticationStatus([out] [retval] UINT32* status);
                        }

                        [marshaling_behavior(agile)]
                        [threading(both)]
                        [version(0x06020000)]
                        runtimeclass GameServicePropertyCollection
                        {
                            [default] interface Windows.Phone.System.UserProfile.GameServices.Core.IGameServicePropertyCollection;
                        }

                        [marshaling_behavior(agile)]
                        [static(Windows.Phone.System.UserProfile.GameServices.Core.IGameService, 0x06020000)]
                        [static(Windows.Phone.System.UserProfile.GameServices.Core.IGameService2, 0x06030000)]
                        [threading(both)]
                        [version(0x06020000)]
                        runtimeclass GameService
                        {
                        }
                    }
                }
            }
        }
    }
}
