from typing import Optional, List, Any

from ....core.interfaces.dto import Dto
from ....core.interfaces.core import Core


class Travel[Properties: Any](Core[Properties]):
  cargoes: Optional[List[str]]
  drivers: Optional[List[str]]
  vehicles: Optional[List[str]]

  locations: List[str]  # from start-to-end


# ----------------------------------------
# Data Transfer Object Interface
# ----------------------------------------


class TravelDto[Properties: Any](Dto[Properties]):
  cargoes: Optional[List[str]]
  drivers: Optional[List[str]]
  vehicles: Optional[List[str]]

  locations: List[str]  # from start-to-end
