<?php

declare(strict_types=1);

namespace Drupal\ffmpeg_media\ValueObject;

use Drupal\Component\Datetime\TimeInterface;
use Drupal\Core\Queue\QueueFactory;
use Drupal\ffmpeg_media\Service\DashboardStatsServiceInterface;
use Drupal\ffmpeg_media\Service\FFmpegExecutorInterface;
use Drupal\ffmpeg_media\Service\HardwareDetectorInterface;
use Drupal\ffmpeg_media\Service\ProgressTrackerInterface;
use Drupal\ffmpeg_media\Service\QueueManagerInterface;
use Symfony\Component\HttpFoundation\RequestStack;

/**
 * Groups domain-specific dependencies for health check endpoints.
 *
 * @internal
 */
final readonly class HealthCheckDependencies {

  /**
   * Constructs a HealthCheckDependencies object.
   *
   * @param \Drupal\ffmpeg_media\Service\FFmpegExecutorInterface $ffmpegExecutor
   *   FFmpeg executor service.
   * @param \Drupal\ffmpeg_media\Service\HardwareDetectorInterface $hardwareDetector
   *   Hardware detector service.
   * @param \Drupal\ffmpeg_media\Service\QueueManagerInterface $queueManager
   *   Queue manager service.
   * @param \Drupal\ffmpeg_media\Service\ProgressTrackerInterface $progressTracker
   *   Progress tracker service.
   * @param \Drupal\ffmpeg_media\Service\DashboardStatsServiceInterface $statsService
   *   Dashboard stats service.
   * @param \Drupal\Core\Queue\QueueFactory $queueFactory
   *   Queue factory.
   * @param \Drupal\Component\Datetime\TimeInterface $time
   *   Time service.
   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
   *   Request stack.
   */
  public function __construct(
    public FFmpegExecutorInterface $ffmpegExecutor,
    public HardwareDetectorInterface $hardwareDetector,
    public QueueManagerInterface $queueManager,
    public ProgressTrackerInterface $progressTracker,
    public DashboardStatsServiceInterface $statsService,
    public QueueFactory $queueFactory,
    public TimeInterface $time,
    public RequestStack $requestStack,
  ) {}

}
