from typing import Optional import numpy as np from .base import ImageRotationManagerBase from models.processing import RotationResult from models.flight import HeadingRecord class ImageRotationManager(ImageRotationManagerBase): async def estimate_rotation( self, uav_image: np.ndarray, satellite_image: np.ndarray ) -> RotationResult: raise NotImplementedError async def get_rotation_for_frame( self, flight_id: str, frame_id: int ) -> Optional[float]: raise NotImplementedError async def update_heading_history( self, flight_id: str, record: HeadingRecord ) -> None: raise NotImplementedError async def predict_heading(self, flight_id: str) -> Optional[float]: raise NotImplementedError async def is_sharp_turn( self, flight_id: str, current_heading: float ) -> bool: raise NotImplementedError def rotate_image(self, image: np.ndarray, angle: float) -> np.ndarray: raise NotImplementedError