from pydantic import BaseModel
from ..core.camera_parameters import CameraParameters
from .database_config import DatabaseConfig
from .flight_config import OperationalArea


class ModelPaths(BaseModel):
    superpoint: str = "models/superpoint.engine"
    lightglue: str = "models/lightglue.engine"
    dinov2: str = "models/dinov2.engine"
    litesam: str = "models/litesam.engine"


class APIConfig(BaseModel):
    host: str = "0.0.0.0"
    port: int = 8000
    debug: bool = False


class SystemConfig(BaseModel):
    camera: CameraParameters
    operational_area: OperationalArea = OperationalArea()
    models: ModelPaths = ModelPaths()
    database: DatabaseConfig = DatabaseConfig()
    api: APIConfig = APIConfig()

