from typing import Optional import numpy as np from .base import SatelliteDataManagerBase from models.core import GPSPoint from models.satellite import TileCoords, TileBounds class SatelliteDataManager(SatelliteDataManagerBase): async def get_tile( self, gps: GPSPoint, zoom: int ) -> Optional[tuple[np.ndarray, TileBounds]]: raise NotImplementedError async def get_tile_by_coords( self, coords: TileCoords ) -> Optional[tuple[np.ndarray, TileBounds]]: raise NotImplementedError async def get_tiles_in_radius( self, center: GPSPoint, radius_meters: float, zoom: int ) -> list[tuple[np.ndarray, TileBounds]]: raise NotImplementedError async def get_tile_bounds(self, coords: TileCoords) -> TileBounds: raise NotImplementedError async def prefetch_area( self, nw: GPSPoint, se: GPSPoint, zoom: int ) -> int: raise NotImplementedError def gps_to_tile_coords(self, gps: GPSPoint, zoom: int) -> TileCoords: raise NotImplementedError def tile_coords_to_gps(self, coords: TileCoords) -> GPSPoint: raise NotImplementedError