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

// Forward Declare
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace AppBroadcasting
        {
            apicontract AppBroadcastingContract;

            interface IAppBroadcastingMonitor;

            interface IAppBroadcastingStatus;

            interface IAppBroadcastingStatusDetails;

            interface IAppBroadcastingUI;

            interface IAppBroadcastingUIStatics;

            runtimeclass AppBroadcastingMonitor;

            runtimeclass AppBroadcastingStatus;

            runtimeclass AppBroadcastingStatusDetails;

            runtimeclass AppBroadcastingUI;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace AppBroadcasting
        {
            declare
            {
                interface Windows.Foundation.TypedEventHandler<Windows.Media.AppBroadcasting.AppBroadcastingMonitor*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace AppBroadcasting
        {
            [contractversion(1.0)]
            apicontract AppBroadcastingContract
            {
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [exclusiveto(Windows.Media.AppBroadcasting.AppBroadcastingMonitor)]
            [uuid(00F95A68-8907-48A0-B8EF-24D208137542)]
            interface IAppBroadcastingMonitor : IInspectable
            {
                [propget] HRESULT IsCurrentAppBroadcasting([out] [retval] boolean* value);
                [eventadd] HRESULT IsCurrentAppBroadcastingChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.AppBroadcasting.AppBroadcastingMonitor*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT IsCurrentAppBroadcastingChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [exclusiveto(Windows.Media.AppBroadcasting.AppBroadcastingStatus)]
            [uuid(1225E4DF-03A1-42F8-8B80-C9228CD9CF2E)]
            interface IAppBroadcastingStatus : IInspectable
            {
                [propget] HRESULT CanStartBroadcast([out] [retval] boolean* value);
                [propget] HRESULT Details([out] [retval] Windows.Media.AppBroadcasting.AppBroadcastingStatusDetails** value);
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [exclusiveto(Windows.Media.AppBroadcasting.AppBroadcastingStatusDetails)]
            [uuid(069DADA4-B573-4E3C-8E19-1BAFACD09713)]
            interface IAppBroadcastingStatusDetails : IInspectable
            {
                [propget] HRESULT IsAnyAppBroadcasting([out] [retval] boolean* value);
                [propget] HRESULT IsCaptureResourceUnavailable([out] [retval] boolean* value);
                [propget] HRESULT IsGameStreamInProgress([out] [retval] boolean* value);
                [propget] HRESULT IsGpuConstrained([out] [retval] boolean* value);
                [propget] HRESULT IsAppInactive([out] [retval] boolean* value);
                [propget] HRESULT IsBlockedForApp([out] [retval] boolean* value);
                [propget] HRESULT IsDisabledByUser([out] [retval] boolean* value);
                [propget] HRESULT IsDisabledBySystem([out] [retval] boolean* value);
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [exclusiveto(Windows.Media.AppBroadcasting.AppBroadcastingUI)]
            [uuid(E56F9F8F-EE99-4DCA-A3C3-70AF3DB44F5F)]
            interface IAppBroadcastingUI : IInspectable
            {
                HRESULT GetStatus([out] [retval] Windows.Media.AppBroadcasting.AppBroadcastingStatus** result);
                HRESULT ShowBroadcastUI();
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [exclusiveto(Windows.Media.AppBroadcasting.AppBroadcastingUI)]
            [uuid(55A8A79D-23CB-4579-9C34-886FE02C045A)]
            interface IAppBroadcastingUIStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Media.AppBroadcasting.AppBroadcastingUI** result);
                HRESULT GetForUser([in] Windows.System.User* user, [out] [retval] Windows.Media.AppBroadcasting.AppBroadcastingUI** result);
            }

            [activatable(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppBroadcastingMonitor
            {
                [default] interface Windows.Media.AppBroadcasting.IAppBroadcastingMonitor;
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppBroadcastingStatus
            {
                [default] interface Windows.Media.AppBroadcasting.IAppBroadcastingStatus;
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppBroadcastingStatusDetails
            {
                [default] interface Windows.Media.AppBroadcasting.IAppBroadcastingStatusDetails;
            }

            [contract(Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.AppBroadcasting.IAppBroadcastingUIStatics, Windows.Media.AppBroadcasting.AppBroadcastingContract, 1.0)]
            [threading(both)]
            runtimeclass AppBroadcastingUI
            {
                [default] interface Windows.Media.AppBroadcasting.IAppBroadcastingUI;
            }
        }
    }
}
