// Copyright (c) Microsoft. All rights reserved.
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Agents.AI.Purview.Models.Common;
using Microsoft.Extensions.AI;
namespace Microsoft.Agents.AI.Purview;
///
/// Orchestrates the processing of scoped content by combining protection scope, process content, and content activities operations.
///
internal interface IScopedContentProcessor
{
///
/// Process a list of messages.
/// The list of messages should be a prompt or response.
///
/// A list of objects sent to the agent or received from the agent..
/// The thread where the messages were sent.
/// An activity to indicate prompt or response.
/// Purview settings containing tenant id, app name, etc.
/// The user who sent the prompt or is receiving the response.
/// Cancellation token.
/// A bool indicating if the request should be blocked and the user id of the user who made the request.
Task<(bool shouldBlock, string? userId)> ProcessMessagesAsync(IEnumerable messages, string? threadId, Activity activity, PurviewSettings purviewSettings, string? userId, CancellationToken cancellationToken);
}