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

// Forward Declare
namespace Windows
{
    namespace AI
    {
        namespace Agents
        {
            apicontract AgentsContract;
        }
    }
}
namespace Windows
{
    namespace AI
    {
        namespace Agents
        {
            namespace Mcp
            {
                typedef enum McpMessageDirection McpMessageDirection;

                interface IMcpMessageFilterExperimental;

                interface IMcpMessageFilterResponse;

                interface IMcpMessageFilterResponseExperimental;

                interface IMcpMessageFilterResponseExperimental2;

                runtimeclass McpMessageFilterResponse;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace AI
    {
        namespace Agents
        {
            namespace Mcp
            {
                [contract(Windows.AI.Agents.AgentsContract, 2.0)]
                [experimental]
                enum McpMessageDirection
                {
                    ClientToServer = 0,
                    ServerToClient = 1
                };

                [contract(Windows.AI.Agents.AgentsContract, 2.0)]
                [experimental]
                [uuid(C5F8F821-895C-5241-B45A-92E249A7D873)]
                interface IMcpMessageFilterExperimental : IInspectable
                {
                    HRESULT Initialize([in] HSTRING clientAppUserModelId, [in] UINT32 clientProcessId, [in] HSTRING serverIdentity, [in] HSTRING serverName, [in] UINT32 serverProcessId);
                    HRESULT OnMessage([in] HSTRING message, [in] Windows.AI.Agents.Mcp.McpMessageDirection direction, [in] Windows.AI.Agents.Mcp.McpMessageFilterResponse* filterResponse);
                }

                [contract(Windows.AI.Agents.AgentsContract, 2.0)]
                [exclusiveto(Windows.AI.Agents.Mcp.McpMessageFilterResponse)]
                [experimental]
                [uuid(363CE02C-7098-5E13-A408-7B43E1F452AC)]
                interface IMcpMessageFilterResponse : IInspectable
                {
                }

                [contract(Windows.AI.Agents.AgentsContract, 2.0)]
                [experimental]
                [uuid(E215B5F2-CB02-56CF-AAB0-84AEF65D1665)]
                interface IMcpMessageFilterResponseExperimental : IInspectable
                {
                    [propget] HRESULT IsAllowed([out] [retval] boolean* value);
                    [propput] HRESULT IsAllowed([in] boolean value);
                    [propget] HRESULT MessageIfNotAllowed([out] [retval] HSTRING* value);
                    [propput] HRESULT MessageIfNotAllowed([in] HSTRING value);
                }

                [contract(Windows.AI.Agents.AgentsContract, 2.0)]
                [experimental]
                [uuid(10F4B099-6632-505A-A638-E704C7E47ABF)]
                interface IMcpMessageFilterResponseExperimental2 : IInspectable
                {
                    HRESULT Allow();
                    HRESULT Reject([in] HSTRING reason);
                }

                [contract(Windows.AI.Agents.AgentsContract, 2.0)]
                [experimental]
                [marshaling_behavior(agile)]
                runtimeclass McpMessageFilterResponse
                {
                    [default] [experimental] interface Windows.AI.Agents.Mcp.IMcpMessageFilterResponse;
                }
            }
        }
    }
}
