from typing import Optional

from .base import FlightLifecycleManagerBase
from models.flight import Flight, Waypoint
from models.core import GPSPoint


class FlightLifecycleManager(FlightLifecycleManagerBase):
    async def create_flight(
        self,
        name: str,
        description: str,
        start_gps: GPSPoint,
        rough_waypoints: list[GPSPoint],
        camera_params: dict,
        altitude: float,
    ) -> Flight:
        raise NotImplementedError

    async def delete_flight(self, flight_id: str) -> bool:
        raise NotImplementedError

    async def update_waypoints(
        self, flight_id: str, waypoints: list[Waypoint]
    ) -> bool:
        raise NotImplementedError

    async def get_flight(self, flight_id: str) -> Optional[Flight]:
        raise NotImplementedError

    async def start_processing(self, flight_id: str) -> bool:
        raise NotImplementedError

    async def stop_processing(self, flight_id: str) -> bool:
        raise NotImplementedError

    async def get_processing_status(self, flight_id: str) -> dict:
        raise NotImplementedError

