<?php

declare(strict_types=1);

namespace Drupal\ffmpeg_media\VideoFilter;

/**
 * Collects and composes video filters from all registered providers.
 *
 * @internal Runtime service, not part of the supported contrib extension API.
 */
interface VideoFilterCollectorInterface {

  /**
   * Collects filters from all providers and returns composed result.
   *
   * Providers are sorted by weight and their filter_complex fragments
   * are chained together. Extra inputs from all providers are aggregated.
   *
   * @param \Drupal\ffmpeg_media\VideoFilter\FilterContext $context
   *   The conversion context.
   *
   * @return \Drupal\ffmpeg_media\VideoFilter\VideoFilterResult|null
   *   Composed filter result with all provider contributions merged,
   *   or NULL if no provider contributed any filters.
   */
  public function collectFilters(FilterContext $context): ?VideoFilterResult;

}
