//
// 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.ApplicationModel.Activation.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Activation
        {
            interface IActivatedEventArgs;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Gaming
    {
        namespace UI
        {
            apicontract GameChatOverlayContract;

            apicontract GamingUIProviderContract;

            typedef enum GameChatMessageOrigin GameChatMessageOrigin;

            typedef enum GameChatOverlayPosition GameChatOverlayPosition;

            interface IGameBarStatics;

            interface IGameChatMessageReceivedEventArgs;

            interface IGameChatOverlay;

            interface IGameChatOverlayMessageSource;

            interface IGameChatOverlayStatics;

            interface IGameUIProviderActivatedEventArgs;

            runtimeclass GameBar;

            runtimeclass GameChatMessageReceivedEventArgs;

            runtimeclass GameChatOverlay;

            runtimeclass GameChatOverlayMessageSource;

            runtimeclass GameUIProviderActivatedEventArgs;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Gaming
    {
        namespace UI
        {
            declare
            {
                interface Windows.Foundation.TypedEventHandler<Windows.Gaming.UI.GameChatOverlayMessageSource*, Windows.Gaming.UI.GameChatMessageReceivedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Gaming
    {
        namespace UI
        {
            [contractversion(1.0)]
            apicontract GameChatOverlayContract
            {
            }

            [contractversion(1.0)]
            apicontract GamingUIProviderContract
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum GameChatMessageOrigin
            {
                Voice = 0,
                Text  = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum GameChatOverlayPosition
            {
                BottomCenter = 0,
                BottomLeft   = 1,
                BottomRight  = 2,
                MiddleRight  = 3,
                MiddleLeft   = 4,
                TopCenter    = 5,
                TopLeft      = 6,
                TopRight     = 7
            };

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Gaming.UI.GameBar)]
            [uuid(1DB9A292-CC78-4173-BE45-B61E67283EA7)]
            interface IGameBarStatics : IInspectable
            {
                [eventadd] HRESULT VisibilityChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT VisibilityChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT IsInputRedirectedChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT IsInputRedirectedChanged([in] EventRegistrationToken token);
                [propget] HRESULT Visible([out] [retval] boolean* value);
                [propget] HRESULT IsInputRedirected([out] [retval] boolean* value);
            }

            [contract(Windows.Gaming.UI.GameChatOverlayContract, 1.0)]
            [exclusiveto(Windows.Gaming.UI.GameChatMessageReceivedEventArgs)]
            [uuid(A28201F1-3FB9-4E42-A403-7AFCE2023B1E)]
            interface IGameChatMessageReceivedEventArgs : IInspectable
            {
                [propget] HRESULT AppId([out] [retval] HSTRING* value);
                [propget] HRESULT AppDisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT SenderName([out] [retval] HSTRING* value);
                [propget] HRESULT Message([out] [retval] HSTRING* value);
                [propget] HRESULT Origin([out] [retval] Windows.Gaming.UI.GameChatMessageOrigin* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Gaming.UI.GameChatOverlay)]
            [uuid(FBC64865-F6FC-4A48-AE07-03AC6ED43704)]
            interface IGameChatOverlay : IInspectable
            {
                [propget] HRESULT DesiredPosition([out] [retval] Windows.Gaming.UI.GameChatOverlayPosition* value);
                [propput] HRESULT DesiredPosition([in] Windows.Gaming.UI.GameChatOverlayPosition value);
                HRESULT AddMessage([in] HSTRING sender, [in] HSTRING message, [in] Windows.Gaming.UI.GameChatMessageOrigin origin);
            }

            [contract(Windows.Gaming.UI.GameChatOverlayContract, 1.0)]
            [exclusiveto(Windows.Gaming.UI.GameChatOverlayMessageSource)]
            [uuid(1E177397-59FB-4F4F-8E9A-80ACF817743C)]
            interface IGameChatOverlayMessageSource : IInspectable
            {
                [eventadd] HRESULT MessageReceived([in] Windows.Foundation.TypedEventHandler<Windows.Gaming.UI.GameChatOverlayMessageSource*, Windows.Gaming.UI.GameChatMessageReceivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MessageReceived([in] EventRegistrationToken token);
                HRESULT SetDelayBeforeClosingAfterMessageReceived([in] Windows.Foundation.TimeSpan value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Gaming.UI.GameChatOverlay)]
            [uuid(89ACF614-7867-49F7-9687-25D9DBF444D1)]
            interface IGameChatOverlayStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Gaming.UI.GameChatOverlay** value);
            }

            [contract(Windows.Gaming.UI.GamingUIProviderContract, 1.0)]
            [exclusiveto(Windows.Gaming.UI.GameUIProviderActivatedEventArgs)]
            [uuid(A7B3203E-CAF7-4DED-BBD2-47DE43BB6DD5)]
            interface IGameUIProviderActivatedEventArgs : IInspectable
                requires
                    Windows.ApplicationModel.Activation.IActivatedEventArgs
            {
                [propget] HRESULT GameUIArgs([out] [retval] Windows.Foundation.Collections.ValueSet** value);
                HRESULT ReportCompleted([in] Windows.Foundation.Collections.ValueSet* results);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Gaming.UI.IGameBarStatics, Windows.Foundation.UniversalApiContract, 2.0)]
            [threading(both)]
            runtimeclass GameBar
            {
            }

            [contract(Windows.Gaming.UI.GameChatOverlayContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass GameChatMessageReceivedEventArgs
            {
                [default] interface Windows.Gaming.UI.IGameChatMessageReceivedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Gaming.UI.IGameChatOverlayStatics, Windows.Foundation.UniversalApiContract, 4.0)]
            runtimeclass GameChatOverlay
            {
                [default] interface Windows.Gaming.UI.IGameChatOverlay;
            }

            [activatable(Windows.Gaming.UI.GameChatOverlayContract, 1.0)]
            [contract(Windows.Gaming.UI.GameChatOverlayContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass GameChatOverlayMessageSource
            {
                [default] interface Windows.Gaming.UI.IGameChatOverlayMessageSource;
            }

            [contract(Windows.Gaming.UI.GamingUIProviderContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass GameUIProviderActivatedEventArgs
            {
                [default] interface Windows.Gaming.UI.IGameUIProviderActivatedEventArgs;
                interface Windows.ApplicationModel.Activation.IActivatedEventArgs;
            }
        }
    }
}
