using System.Threading;
using System.Threading.Tasks;


namespace AIRuntime.Runtime.Capabilities.Permissions
{
    /// <summary>
    /// Handles capability requests that require explicit approval.
    /// </summary>
    public interface ICapabilityApprovalHandler
    {
        /// <summary>
        /// Requests approval before a capability executes.
        /// </summary>
        /// <param name="request">
        /// Details about the requested capability execution.
        /// </param>
        /// <param name="cancellationToken">
        /// Cancels the approval request and the active agent run.
        /// </param>
        Task<CapabilityApprovalResult> RequestApprovalAsync(
            CapabilityApprovalRequest request,
            CancellationToken cancellationToken);
    }
}