using System.Collections.Generic;

namespace Process.Interface;

/// <summary>
/// <see cref="IProcessor"/>, allows to process values through many sub-<see cref="IProcessor"/>s
/// </summary>
public interface IProcessorChain : IProcessor
{
  /// <summary>
  /// Collection containing the applicable <see cref="IProcessor"/>s for this <see cref="IProcessorChain"/>
  /// </summary>
  ICollection<IProcessor> Processors { get; }
}

/// <inheritdoc cref="IProcessorChain" />
public interface IProcessorChain<in TInput, out TOutput>
  : IProcessorChain, IProcessor<TInput, TOutput>
{
}
