<?php

namespace App\Domain\Scraping\Domain\Contract\Service;

interface ScraperFactoryInterface
{
    /**
     * Créer un scraper pour un type spécifique
     */
    public function createScraper(string $type): ScraperInterface;

    /**
     * Obtenir le scraper le plus approprié selon la priorité
     */
    public function getBestScraper(): ScraperInterface;

    /**
     * Obtenir le scraper de fallback (le plus simple)
     */
    public function getFallbackScraper(): ScraperInterface;

    /**
     * Essayer plusieurs scrapers en cascade jusqu'à ce qu'un fonctionne
     */
    public function getScraperWithFallback(string $preferredType): ScraperInterface;

    /**
     * Obtenir les types de scrapers supportés
     */
    public function getSupportedTypes(): array;

    /**
     * Vérifier si un type de scraper est supporté
     */
    public function isSupported(string $type): bool;
}
