from abc import ABC, abstractmethod from typing import Optional from models.flight import Flight, Waypoint from models.core import GPSPoint class FlightLifecycleManagerBase(ABC): @abstractmethod async def create_flight( self, name: str, description: str, start_gps: GPSPoint, rough_waypoints: list[GPSPoint], camera_params: dict, altitude: float, ) -> Flight: pass @abstractmethod async def delete_flight(self, flight_id: str) -> bool: pass @abstractmethod async def update_waypoints( self, flight_id: str, waypoints: list[Waypoint] ) -> bool: pass @abstractmethod async def get_flight(self, flight_id: str) -> Optional[Flight]: pass @abstractmethod async def start_processing(self, flight_id: str) -> bool: pass @abstractmethod async def stop_processing(self, flight_id: str) -> bool: pass @abstractmethod async def get_processing_status(self, flight_id: str) -> dict: pass