export type ScraperOperation = "sale" | "rent";

/**
 * Scrapers que construyen una búsqueda específica de alquiler y etiquetan
 * explícitamente sus resultados como `rent`.
 *
 * El resto sólo implementa URLs de venta. La lista explícita evita ejecutar
 * un scraper de venta y presentar su resultado durante un ciclo de alquiler.
 */
const RENT_CAPABLE_SCRAPERS = new Set<string>([
  "IdealistaScraper", // alias legacy resuelto a Playwright
  "IdealistaPlaywrightScraper",
  "FotocasaScraper", // alias legacy resuelto a Playwright
  "FotocasaPlaywrightScraper",
  "GlobalizaScraper",
  "HabitacliaScraper",
  "MilanunciosScraper",
  "PisosScraper",
  "TecnocasaScraper",
  "ThinkSpainScraper",
  "YaencontreScraper",
]);

export function supportsScraperOperation(
  scraperClass: string,
  operation: ScraperOperation
): boolean {
  return operation === "sale" || RENT_CAPABLE_SCRAPERS.has(scraperClass);
}

export function supportedScraperOperations(scraperClass: string): ScraperOperation[] {
  return supportsScraperOperation(scraperClass, "rent")
    ? ["sale", "rent"]
    : ["sale"];
}
