<?php

namespace App\Domain\Scraping\Domain\Contract\Repository;

use App\Domain\Scraping\Domain\Model\Source;

interface SourceRepositoryInterface
{
    public function getById(string $id): ?Source;

    /**
     * @return Source[]
     */
    public function getAll(): array;

    /**
     * Validate that all source IDs exist and are active
     *
     * @param array $sourceIds
     * @return bool
     */
    public function validateSourcesExist(array $sourceIds): bool;

    /**
     * Get sources by their IDs in the same order as provided
     *
     * @param array $sourceIds
     * @return Source[]
     */
    public function getByIds(array $sourceIds): array;

    /**
     * Get all active sources
     *
     * @return Source[]
     */
    public function getAllActive(): array;
}
