//
// 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";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        namespace RemoteDesktop
        {
            namespace Input
            {
                typedef enum RemoteKeyEventAttributes RemoteKeyEventAttributes;

                typedef enum RemoteTextConnectionOptions RemoteTextConnectionOptions;

                delegate RemoteTextConnectionDataHandler;

                interface IRemoteTextConnection;

                interface IRemoteTextConnection2;

                interface IRemoteTextConnectionFactory;

                interface IRemoteTextConnectionFactory2;

                runtimeclass RemoteTextConnection;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace System
    {
        namespace RemoteDesktop
        {
            namespace Input
            {
                [contract(Windows.Foundation.UniversalApiContract, 16.0)]
                [flags]
                enum RemoteKeyEventAttributes
                {
                    None      = 0x0,
                    KeyUp     = 0x1,
                    Repeat    = 0x2,
                    Extended  = 0x4,
                    Extended1 = 0x8
                };

                [contract(Windows.Foundation.UniversalApiContract, 16.0)]
                [flags]
                enum RemoteTextConnectionOptions
                {
                    None                        = 0x0,
                    EnablePredictedKeyReporting = 0x1
                };

                [contract(Windows.Foundation.UniversalApiContract, 13.0)]
                [uuid(099FFBC8-8BCB-41B5-B056-57E77021BF1B)]
                delegate
                    HRESULT RemoteTextConnectionDataHandler([in] UINT32 __pduDataSize, [in] [size_is(__pduDataSize)] BYTE* pduData, [out] [retval] boolean* result);

                [contract(Windows.Foundation.UniversalApiContract, 13.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Input.RemoteTextConnection)]
                [uuid(4E7BB02A-183E-5E66-B5E4-3E6E5C570CF1)]
                interface IRemoteTextConnection : IInspectable
                {
                    [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                    [propput] HRESULT IsEnabled([in] boolean value);
                    HRESULT RegisterThread([in] UINT32 threadId);
                    HRESULT UnregisterThread([in] UINT32 threadId);
                    HRESULT ReportDataReceived([in] UINT32 __pduDataSize, [in] [size_is(__pduDataSize)] BYTE* pduData);
                }

                [contract(Windows.Foundation.UniversalApiContract, 16.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Input.RemoteTextConnection)]
                [uuid(05F99345-84C8-56C5-934F-73EA00F8C2D5)]
                interface IRemoteTextConnection2 : IInspectable
                {
                    HRESULT ReportPredictedKeyEvent([in] UINT16 scanCode, [in] Windows.System.RemoteDesktop.Input.RemoteKeyEventAttributes attributes);
                }

                [contract(Windows.Foundation.UniversalApiContract, 13.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Input.RemoteTextConnection)]
                [uuid(88E075C2-0CAE-596C-850F-78D345CD728B)]
                interface IRemoteTextConnectionFactory : IInspectable
                {
                    HRESULT CreateInstance([in] GUID connectionId, [in] Windows.System.RemoteDesktop.Input.RemoteTextConnectionDataHandler* pduForwarder, [out] [retval] Windows.System.RemoteDesktop.Input.RemoteTextConnection** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 16.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Input.RemoteTextConnection)]
                [uuid(9425C7D9-ED9B-5D00-99CC-B0B8DC9E4C60)]
                interface IRemoteTextConnectionFactory2 : IInspectable
                {
                    HRESULT CreateInstance([in] GUID connectionId, [in] Windows.System.RemoteDesktop.Input.RemoteTextConnectionDataHandler* pduForwarder, [in] Windows.System.RemoteDesktop.Input.RemoteTextConnectionOptions options, [out] [retval] Windows.System.RemoteDesktop.Input.RemoteTextConnection** value);
                }

                [activatable(Windows.System.RemoteDesktop.Input.IRemoteTextConnectionFactory, Windows.Foundation.UniversalApiContract, 13.0)]
                [activatable(Windows.System.RemoteDesktop.Input.IRemoteTextConnectionFactory2, Windows.Foundation.UniversalApiContract, 16.0)]
                [contract(Windows.Foundation.UniversalApiContract, 13.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass RemoteTextConnection
                {
                    [default] interface Windows.System.RemoteDesktop.Input.IRemoteTextConnection;
                    [contract(Windows.Foundation.UniversalApiContract, 16.0)] interface Windows.System.RemoteDesktop.Input.IRemoteTextConnection2;
                    interface Windows.Foundation.IClosable;
                }
            }
        }
    }
}
