"""Base adapter interface for flight price sources.""" from abc import ABC, abstractmethod from typing import Optional class FlightAdapter(ABC): """Abstract base class for flight search adapters. All adapters must return a list of flight result dicts with keys: price_eur (float) - total round-trip price in EUR outbound_date (str) - departure date YYYY-MM-DD return_date (str) - return date YYYY-MM-DD deep_link (str) - booking URL carrier (str) - airline name or IATA code """ @abstractmethod def search( self, origin: str, destination: str, date_from: str, date_to: str, min_nights: int, max_nights: int, ) -> list[dict]: """Search for round-trip flights. Args: origin: IATA airport/city code (e.g. "BER") destination: IATA airport/city code (e.g. "EZE") date_from: Earliest outbound date, YYYY-MM-DD date_to: Latest outbound date, YYYY-MM-DD min_nights: Minimum stay duration max_nights: Maximum stay duration Returns: List of result dicts (may be empty). Sorted by price ascending is preferred but not required. """ ...