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

// Forward Declare
namespace Windows
{
    namespace UI
    {
        namespace UIAutomation
        {
            runtimeclass AutomationElement;

            runtimeclass AutomationTextRange;

            apicontract UIAutomationContract;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace UIAutomation
        {
            namespace Core
            {
                typedef enum AutomationRemoteOperationStatus AutomationRemoteOperationStatus;

                typedef struct AutomationRemoteOperationOperandId AutomationRemoteOperationOperandId;

                interface IAutomationRemoteOperationResult;

                interface ICoreAutomationRemoteOperation;

                runtimeclass AutomationRemoteOperationResult;

                runtimeclass CoreAutomationRemoteOperation;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace UIAutomation
        {
            namespace Core
            {
                [contract(Windows.UI.UIAutomation.UIAutomationContract, 1.0)]
                enum AutomationRemoteOperationStatus
                {
                    Success                  = 0,
                    MalformedBytecode        = 1,
                    InstructionLimitExceeded = 2,
                    UnhandledException       = 3,
                    ExecutionFailure         = 4
                };

                [contract(Windows.UI.UIAutomation.UIAutomationContract, 1.0)]
                struct AutomationRemoteOperationOperandId
                {
                    INT32 Value;
                };

                [contract(Windows.UI.UIAutomation.UIAutomationContract, 1.0)]
                [exclusiveto(Windows.UI.UIAutomation.Core.AutomationRemoteOperationResult)]
                [uuid(E0F80C42-4A67-5534-BF5A-09E8A99B36B1)]
                interface IAutomationRemoteOperationResult : IInspectable
                {
                    [propget] HRESULT Status([out] [retval] Windows.UI.UIAutomation.Core.AutomationRemoteOperationStatus* value);
                    [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
                    [propget] HRESULT ErrorLocation([out] [retval] INT32* value);
                    HRESULT HasOperand([in] Windows.UI.UIAutomation.Core.AutomationRemoteOperationOperandId operandId, [out] [retval] boolean* result);
                    HRESULT GetOperand([in] Windows.UI.UIAutomation.Core.AutomationRemoteOperationOperandId operandId, [out] [retval] IInspectable** result);
                }

                [contract(Windows.UI.UIAutomation.UIAutomationContract, 1.0)]
                [exclusiveto(Windows.UI.UIAutomation.Core.CoreAutomationRemoteOperation)]
                [uuid(3AC656F4-E2BC-5C6E-B8E7-B224FB74B060)]
                interface ICoreAutomationRemoteOperation : IInspectable
                {
                    HRESULT IsOpcodeSupported([in] UINT32 opcode, [out] [retval] boolean* result);
                    HRESULT ImportElement([in] Windows.UI.UIAutomation.Core.AutomationRemoteOperationOperandId operandId, [in] Windows.UI.UIAutomation.AutomationElement* element);
                    HRESULT ImportTextRange([in] Windows.UI.UIAutomation.Core.AutomationRemoteOperationOperandId operandId, [in] Windows.UI.UIAutomation.AutomationTextRange* textRange);
                    HRESULT AddToResults([in] Windows.UI.UIAutomation.Core.AutomationRemoteOperationOperandId operandId);
                    HRESULT Execute([in] UINT32 __bytecodeBufferSize, [in] [size_is(__bytecodeBufferSize)] BYTE* bytecodeBuffer, [out] [retval] Windows.UI.UIAutomation.Core.AutomationRemoteOperationResult** result);
                }

                [contract(Windows.UI.UIAutomation.UIAutomationContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass AutomationRemoteOperationResult
                {
                    [default] interface Windows.UI.UIAutomation.Core.IAutomationRemoteOperationResult;
                }

                [activatable(Windows.UI.UIAutomation.UIAutomationContract, 1.0)]
                [contract(Windows.UI.UIAutomation.UIAutomationContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CoreAutomationRemoteOperation
                {
                    [default] interface Windows.UI.UIAutomation.Core.ICoreAutomationRemoteOperation;
                }
            }
        }
    }
}
