//
// 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.Core.idl";
import "Windows.Graphics.idl";
import "Windows.Media.Core.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Core
        {
            runtimeclass CoreApplicationView;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        runtimeclass Deferral;

        interface IAsyncAction;

        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        typedef struct PointInt32 PointInt32;

        typedef struct SizeInt32 SizeInt32;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Core
        {
            runtimeclass MediaSource;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamWithContentType;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Miracast
        {
            typedef enum MiracastReceiverApplySettingsStatus MiracastReceiverApplySettingsStatus;

            typedef enum MiracastReceiverAuthorizationMethod MiracastReceiverAuthorizationMethod;

            typedef enum MiracastReceiverDisconnectReason MiracastReceiverDisconnectReason;

            typedef enum MiracastReceiverGameControllerDeviceUsageMode MiracastReceiverGameControllerDeviceUsageMode;

            typedef enum MiracastReceiverListeningStatus MiracastReceiverListeningStatus;

            typedef enum MiracastReceiverSessionStartStatus MiracastReceiverSessionStartStatus;

            typedef enum MiracastReceiverWiFiStatus MiracastReceiverWiFiStatus;

            typedef enum MiracastTransmitterAuthorizationStatus MiracastTransmitterAuthorizationStatus;

            interface IMiracastReceiver;

            interface IMiracastReceiverApplySettingsResult;

            interface IMiracastReceiverConnection;

            interface IMiracastReceiverConnectionCreatedEventArgs;

            interface IMiracastReceiverCursorImageChannel;

            interface IMiracastReceiverCursorImageChannelSettings;

            interface IMiracastReceiverDisconnectedEventArgs;

            interface IMiracastReceiverGameControllerDevice;

            interface IMiracastReceiverInputDevices;

            interface IMiracastReceiverKeyboardDevice;

            interface IMiracastReceiverMediaSourceCreatedEventArgs;

            interface IMiracastReceiverSession;

            interface IMiracastReceiverSessionStartResult;

            interface IMiracastReceiverSettings;

            interface IMiracastReceiverStatus;

            interface IMiracastReceiverStreamControl;

            interface IMiracastReceiverVideoStreamSettings;

            interface IMiracastTransmitter;

            runtimeclass MiracastReceiver;

            runtimeclass MiracastReceiverApplySettingsResult;

            runtimeclass MiracastReceiverConnection;

            runtimeclass MiracastReceiverConnectionCreatedEventArgs;

            runtimeclass MiracastReceiverCursorImageChannel;

            runtimeclass MiracastReceiverCursorImageChannelSettings;

            runtimeclass MiracastReceiverDisconnectedEventArgs;

            runtimeclass MiracastReceiverGameControllerDevice;

            runtimeclass MiracastReceiverInputDevices;

            runtimeclass MiracastReceiverKeyboardDevice;

            runtimeclass MiracastReceiverMediaSourceCreatedEventArgs;

            runtimeclass MiracastReceiverSession;

            runtimeclass MiracastReceiverSessionStartResult;

            runtimeclass MiracastReceiverSettings;

            runtimeclass MiracastReceiverStatus;

            runtimeclass MiracastReceiverStreamControl;

            runtimeclass MiracastReceiverVideoStreamSettings;

            runtimeclass MiracastTransmitter;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Miracast
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Miracast.MiracastReceiverConnection*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Miracast.MiracastTransmitter*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Miracast.MiracastReceiverConnection*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Miracast.MiracastTransmitter*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Miracast.MiracastReceiverConnection*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Miracast.MiracastTransmitter*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverApplySettingsResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverSession*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverSessionStartResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverSettings*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverStatus*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverVideoStreamSettings*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiver*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverCursorImageChannel*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverGameControllerDevice*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverKeyboardDevice*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverSession*, Windows.Media.Miracast.MiracastReceiverConnectionCreatedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverSession*, Windows.Media.Miracast.MiracastReceiverDisconnectedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverSession*, Windows.Media.Miracast.MiracastReceiverMediaSourceCreatedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Miracast
        {
            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastReceiverApplySettingsStatus
            {
                Success              = 0,
                UnknownFailure       = 1,
                MiracastNotSupported = 2,
                AccessDenied         = 3,
                FriendlyNameTooLong  = 4,
                ModelNameTooLong     = 5,
                ModelNumberTooLong   = 6,
                InvalidSettings      = 7
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastReceiverAuthorizationMethod
            {
                None                  = 0,
                ConfirmConnection     = 1,
                PinDisplayIfRequested = 2,
                PinDisplayRequired    = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastReceiverDisconnectReason
            {
                Finished               = 0,
                AppSpecificError       = 1,
                ConnectionNotAccepted  = 2,
                DisconnectedByUser     = 3,
                FailedToStartStreaming = 4,
                MediaDecodingError     = 5,
                MediaStreamingError    = 6,
                MediaDecryptionError   = 7
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastReceiverGameControllerDeviceUsageMode
            {
                AsGameController   = 0,
                AsMouseAndKeyboard = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastReceiverListeningStatus
            {
                NotListening        = 0,
                Listening           = 1,
                ConnectionPending   = 2,
                Connected           = 3,
                DisabledByPolicy    = 4,
                TemporarilyDisabled = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastReceiverSessionStartStatus
            {
                Success              = 0,
                UnknownFailure       = 1,
                MiracastNotSupported = 2,
                AccessDenied         = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastReceiverWiFiStatus
            {
                MiracastSupportUndetermined = 0,
                MiracastNotSupported        = 1,
                MiracastSupportNotOptimized = 2,
                MiracastSupported           = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            enum MiracastTransmitterAuthorizationStatus
            {
                Undecided    = 0,
                Allowed      = 1,
                AlwaysPrompt = 2,
                Blocked      = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiver)]
            [uuid(7A315258-E444-51B4-AFF7-B88DAA1229E0)]
            interface IMiracastReceiver : IInspectable
            {
                HRESULT GetDefaultSettings([out] [retval] Windows.Media.Miracast.MiracastReceiverSettings** result);
                HRESULT GetCurrentSettings([out] [retval] Windows.Media.Miracast.MiracastReceiverSettings** result);
                HRESULT GetCurrentSettingsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverSettings*>** operation);
                HRESULT DisconnectAllAndApplySettings([in] Windows.Media.Miracast.MiracastReceiverSettings* settings, [out] [retval] Windows.Media.Miracast.MiracastReceiverApplySettingsResult** result);
                HRESULT DisconnectAllAndApplySettingsAsync([in] Windows.Media.Miracast.MiracastReceiverSettings* settings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverApplySettingsResult*>** operation);
                HRESULT GetStatus([out] [retval] Windows.Media.Miracast.MiracastReceiverStatus** result);
                HRESULT GetStatusAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverStatus*>** operation);
                [eventadd] HRESULT StatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiver*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT StatusChanged([in] EventRegistrationToken token);
                HRESULT CreateSession([in] Windows.ApplicationModel.Core.CoreApplicationView* view, [out] [retval] Windows.Media.Miracast.MiracastReceiverSession** result);
                HRESULT CreateSessionAsync([in] Windows.ApplicationModel.Core.CoreApplicationView* view, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverSession*>** operation);
                HRESULT ClearKnownTransmitters();
                HRESULT RemoveKnownTransmitter([in] Windows.Media.Miracast.MiracastTransmitter* transmitter);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverApplySettingsResult)]
            [uuid(D0AA6272-09CD-58E1-A4F2-5D5143D312F9)]
            interface IMiracastReceiverApplySettingsResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Miracast.MiracastReceiverApplySettingsStatus* value);
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverConnection)]
            [uuid(704B2F36-D2E5-551F-A854-F822B7917D28)]
            interface IMiracastReceiverConnection : IInspectable
            {
                [overload("Disconnect")] HRESULT Disconnect([in] Windows.Media.Miracast.MiracastReceiverDisconnectReason reason);
                [overload("Disconnect")] HRESULT DisconnectWithMessage([in] Windows.Media.Miracast.MiracastReceiverDisconnectReason reason, [in] HSTRING message);
                HRESULT Pause();
                HRESULT PauseAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT Resume();
                HRESULT ResumeAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                [propget] HRESULT Transmitter([out] [retval] Windows.Media.Miracast.MiracastTransmitter** value);
                [propget] HRESULT InputDevices([out] [retval] Windows.Media.Miracast.MiracastReceiverInputDevices** value);
                [propget] HRESULT CursorImageChannel([out] [retval] Windows.Media.Miracast.MiracastReceiverCursorImageChannel** value);
                [propget] HRESULT StreamControl([out] [retval] Windows.Media.Miracast.MiracastReceiverStreamControl** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverConnectionCreatedEventArgs)]
            [uuid(7D8DFA39-307A-5C0F-94BD-D0C69D169982)]
            interface IMiracastReceiverConnectionCreatedEventArgs : IInspectable
            {
                [propget] HRESULT Connection([out] [retval] Windows.Media.Miracast.MiracastReceiverConnection** value);
                [propget] HRESULT Pin([out] [retval] HSTRING* value);
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverCursorImageChannel)]
            [uuid(D9AC332D-723A-5A9D-B90A-81153EFA2A0F)]
            interface IMiracastReceiverCursorImageChannel : IInspectable
            {
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                [propget] HRESULT MaxImageSize([out] [retval] Windows.Graphics.SizeInt32* value);
                [propget] HRESULT Position([out] [retval] Windows.Graphics.PointInt32* value);
                [propget] HRESULT ImageStream([out] [retval] Windows.Storage.Streams.IRandomAccessStreamWithContentType** value);
                [eventadd] HRESULT ImageStreamChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverCursorImageChannel*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ImageStreamChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT PositionChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverCursorImageChannel*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PositionChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverCursorImageChannelSettings)]
            [uuid(CCDBEDFF-BD00-5B9C-8E4C-00CACF86B634)]
            interface IMiracastReceiverCursorImageChannelSettings : IInspectable
            {
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsEnabled([in] boolean value);
                [propget] HRESULT MaxImageSize([out] [retval] Windows.Graphics.SizeInt32* value);
                [propput] HRESULT MaxImageSize([in] Windows.Graphics.SizeInt32 value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverDisconnectedEventArgs)]
            [uuid(D9A15E5E-5FEE-57E6-B4B0-04727DB93229)]
            interface IMiracastReceiverDisconnectedEventArgs : IInspectable
            {
                [propget] HRESULT Connection([out] [retval] Windows.Media.Miracast.MiracastReceiverConnection** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverGameControllerDevice)]
            [uuid(2D7171E8-BED4-5118-A058-E2477EB5888D)]
            interface IMiracastReceiverGameControllerDevice : IInspectable
            {
                [propget] HRESULT TransmitInput([out] [retval] boolean* value);
                [propput] HRESULT TransmitInput([in] boolean value);
                [propget] HRESULT IsRequestedByTransmitter([out] [retval] boolean* value);
                [propget] HRESULT IsTransmittingInput([out] [retval] boolean* value);
                [propget] HRESULT Mode([out] [retval] Windows.Media.Miracast.MiracastReceiverGameControllerDeviceUsageMode* value);
                [propput] HRESULT Mode([in] Windows.Media.Miracast.MiracastReceiverGameControllerDeviceUsageMode value);
                [eventadd] HRESULT Changed([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverGameControllerDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Changed([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverInputDevices)]
            [uuid(DA35BB02-28AA-5EE8-96F5-A42901C66F00)]
            interface IMiracastReceiverInputDevices : IInspectable
            {
                [propget] HRESULT Keyboard([out] [retval] Windows.Media.Miracast.MiracastReceiverKeyboardDevice** value);
                [propget] HRESULT GameController([out] [retval] Windows.Media.Miracast.MiracastReceiverGameControllerDevice** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverKeyboardDevice)]
            [uuid(BEB67272-06C0-54FF-AC96-217464FF2501)]
            interface IMiracastReceiverKeyboardDevice : IInspectable
            {
                [propget] HRESULT TransmitInput([out] [retval] boolean* value);
                [propput] HRESULT TransmitInput([in] boolean value);
                [propget] HRESULT IsRequestedByTransmitter([out] [retval] boolean* value);
                [propget] HRESULT IsTransmittingInput([out] [retval] boolean* value);
                [eventadd] HRESULT Changed([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverKeyboardDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Changed([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverMediaSourceCreatedEventArgs)]
            [uuid(17CF519E-1246-531D-945A-6B158E39C3AA)]
            interface IMiracastReceiverMediaSourceCreatedEventArgs : IInspectable
            {
                [propget] HRESULT Connection([out] [retval] Windows.Media.Miracast.MiracastReceiverConnection** value);
                [propget] HRESULT MediaSource([out] [retval] Windows.Media.Core.MediaSource** value);
                [propget] HRESULT CursorImageChannelSettings([out] [retval] Windows.Media.Miracast.MiracastReceiverCursorImageChannelSettings** value);
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverSession)]
            [uuid(1D2BCDB4-EF8B-5209-BFC9-C32116504803)]
            interface IMiracastReceiverSession : IInspectable
            {
                [eventadd] HRESULT ConnectionCreated([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverSession*, Windows.Media.Miracast.MiracastReceiverConnectionCreatedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ConnectionCreated([in] EventRegistrationToken token);
                [eventadd] HRESULT MediaSourceCreated([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverSession*, Windows.Media.Miracast.MiracastReceiverMediaSourceCreatedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MediaSourceCreated([in] EventRegistrationToken token);
                [eventadd] HRESULT Disconnected([in] Windows.Foundation.TypedEventHandler<Windows.Media.Miracast.MiracastReceiverSession*, Windows.Media.Miracast.MiracastReceiverDisconnectedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Disconnected([in] EventRegistrationToken token);
                [propget] HRESULT AllowConnectionTakeover([out] [retval] boolean* value);
                [propput] HRESULT AllowConnectionTakeover([in] boolean value);
                [propget] HRESULT MaxSimultaneousConnections([out] [retval] INT32* value);
                [propput] HRESULT MaxSimultaneousConnections([in] INT32 value);
                HRESULT Start([out] [retval] Windows.Media.Miracast.MiracastReceiverSessionStartResult** result);
                HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverSessionStartResult*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverSessionStartResult)]
            [uuid(B7C573EE-40CA-51FF-95F2-C9DE34F2E90E)]
            interface IMiracastReceiverSessionStartResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Miracast.MiracastReceiverSessionStartStatus* value);
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverSettings)]
            [uuid(57CD2F24-C55A-5FBE-9464-EB05307705DD)]
            interface IMiracastReceiverSettings : IInspectable
            {
                [propget] HRESULT FriendlyName([out] [retval] HSTRING* value);
                [propput] HRESULT FriendlyName([in] HSTRING value);
                [propget] HRESULT ModelName([out] [retval] HSTRING* value);
                [propput] HRESULT ModelName([in] HSTRING value);
                [propget] HRESULT ModelNumber([out] [retval] HSTRING* value);
                [propput] HRESULT ModelNumber([in] HSTRING value);
                [propget] HRESULT AuthorizationMethod([out] [retval] Windows.Media.Miracast.MiracastReceiverAuthorizationMethod* value);
                [propput] HRESULT AuthorizationMethod([in] Windows.Media.Miracast.MiracastReceiverAuthorizationMethod value);
                [propget] HRESULT RequireAuthorizationFromKnownTransmitters([out] [retval] boolean* value);
                [propput] HRESULT RequireAuthorizationFromKnownTransmitters([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverStatus)]
            [uuid(C28A5591-23AB-519E-AD09-90BFF6DCC87E)]
            interface IMiracastReceiverStatus : IInspectable
            {
                [propget] HRESULT ListeningStatus([out] [retval] Windows.Media.Miracast.MiracastReceiverListeningStatus* value);
                [propget] HRESULT WiFiStatus([out] [retval] Windows.Media.Miracast.MiracastReceiverWiFiStatus* value);
                [propget] HRESULT IsConnectionTakeoverSupported([out] [retval] boolean* value);
                [propget] HRESULT MaxSimultaneousConnections([out] [retval] INT32* value);
                [propget] HRESULT KnownTransmitters([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Miracast.MiracastTransmitter*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverStreamControl)]
            [uuid(38EA2D8B-2769-5AD7-8A8A-254B9DF7BA82)]
            interface IMiracastReceiverStreamControl : IInspectable
            {
                HRESULT GetVideoStreamSettings([out] [retval] Windows.Media.Miracast.MiracastReceiverVideoStreamSettings** result);
                HRESULT GetVideoStreamSettingsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Miracast.MiracastReceiverVideoStreamSettings*>** operation);
                HRESULT SuggestVideoStreamSettings([in] Windows.Media.Miracast.MiracastReceiverVideoStreamSettings* settings);
                HRESULT SuggestVideoStreamSettingsAsync([in] Windows.Media.Miracast.MiracastReceiverVideoStreamSettings* settings, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                [propget] HRESULT MuteAudio([out] [retval] boolean* value);
                [propput] HRESULT MuteAudio([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastReceiverVideoStreamSettings)]
            [uuid(169B5E1B-149D-52D0-B126-6F89744E4F50)]
            interface IMiracastReceiverVideoStreamSettings : IInspectable
            {
                [propget] HRESULT Size([out] [retval] Windows.Graphics.SizeInt32* value);
                [propput] HRESULT Size([in] Windows.Graphics.SizeInt32 value);
                [propget] HRESULT Bitrate([out] [retval] INT32* value);
                [propput] HRESULT Bitrate([in] INT32 value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Media.Miracast.MiracastTransmitter)]
            [uuid(342D79FD-2E64-5508-8A30-833D1EAC70D0)]
            interface IMiracastTransmitter : IInspectable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propput] HRESULT Name([in] HSTRING value);
                [propget] HRESULT AuthorizationStatus([out] [retval] Windows.Media.Miracast.MiracastTransmitterAuthorizationStatus* value);
                [propput] HRESULT AuthorizationStatus([in] Windows.Media.Miracast.MiracastTransmitterAuthorizationStatus value);
                HRESULT GetConnections([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Miracast.MiracastReceiverConnection*>** result);
                [propget] HRESULT MacAddress([out] [retval] HSTRING* value);
                [propget] HRESULT LastConnectionTime([out] [retval] Windows.Foundation.DateTime* value);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 8.0)]
            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MiracastReceiver
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiver;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverApplySettingsResult
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverApplySettingsResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverConnection
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverConnection;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverConnectionCreatedEventArgs
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverConnectionCreatedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverCursorImageChannel
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverCursorImageChannel;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverCursorImageChannelSettings
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverCursorImageChannelSettings;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverDisconnectedEventArgs
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverDisconnectedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverGameControllerDevice
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverGameControllerDevice;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverInputDevices
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverInputDevices;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverKeyboardDevice
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverKeyboardDevice;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverMediaSourceCreatedEventArgs
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverMediaSourceCreatedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverSession
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverSession;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverSessionStartResult
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverSessionStartResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverSettings
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverSettings;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverStatus
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverStatus;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverStreamControl
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverStreamControl;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastReceiverVideoStreamSettings
            {
                [default] interface Windows.Media.Miracast.IMiracastReceiverVideoStreamSettings;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            runtimeclass MiracastTransmitter
            {
                [default] interface Windows.Media.Miracast.IMiracastTransmitter;
            }
        }
    }
}
