<?php

declare(strict_types=1);

namespace Drupal\ffmpeg_media\ValueObject;

use Drupal\ffmpeg_media\Service\CircuitBreakerInterface;
use Drupal\ffmpeg_media\Service\ConfigValueProviderInterface;
use Drupal\ffmpeg_media\Service\HardwareDetectorInterface;
use Drupal\ffmpeg_media\Service\LockManagerInterface;
use Drupal\ffmpeg_media\Service\ProgressTrackerInterface;
use Drupal\ffmpeg_media\Service\QueueManagerInterface;

/**
 * Groups data-source dependencies for the metrics collection service.
 *
 * Reduces constructor parameter count by bundling related metrics
 * data-providing services into a single injectable aggregate.
 */
final readonly class MetricsCollectorDependencies {

  /**
   * Constructs a MetricsCollectorDependencies object.
   *
   * @param \Drupal\ffmpeg_media\Service\ConfigValueProviderInterface $configValueProvider
   *   Config value provider.
   * @param \Drupal\ffmpeg_media\Service\QueueManagerInterface $queueManager
   *   Queue manager.
   * @param \Drupal\ffmpeg_media\Service\ProgressTrackerInterface $progressTracker
   *   Progress tracker.
   * @param \Drupal\ffmpeg_media\Service\HardwareDetectorInterface $hardwareDetector
   *   Hardware detector.
   * @param \Drupal\ffmpeg_media\Service\CircuitBreakerInterface $circuitBreaker
   *   Circuit breaker.
   * @param \Drupal\ffmpeg_media\Service\LockManagerInterface $lockManager
   *   Lock manager.
   */
  public function __construct(
    public ConfigValueProviderInterface $configValueProvider,
    public QueueManagerInterface $queueManager,
    public ProgressTrackerInterface $progressTracker,
    public HardwareDetectorInterface $hardwareDetector,
    public CircuitBreakerInterface $circuitBreaker,
    public LockManagerInterface $lockManager,
  ) {}

}
