using System.Threading.Tasks;

namespace AIRuntime.Runtime.Capabilities
{
    /// <summary>
    /// Represents the next step in the capability execution pipeline.
    ///
    /// Middleware should perform any work before execution,
    /// invoke the next delegate, then optionally perform work
    /// after execution.
    /// </summary>
    /// <param name="context">
    /// The current capability execution context.
    /// </param>
    public delegate Task CapabilityDelegate(
        CapabilityContext context);
}