from typing import Optional, Any

from ....core.interfaces.dto import Dto
from ....core.interfaces.core import Core
from ....enums.logistic.locations import LocationType


from .geometry import LocationGeometry


class Location[Properties: Any](Core[Properties]):
  name: Optional[str]
  title: Optional[str]

  type: Optional[LocationType]
  geometry: LocationGeometry
  properties: Optional[Properties]


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


class LocationDto[Properties: Any](Dto[Properties]):
  name: Optional[str]
  title: Optional[str]

  type: Optional[LocationType]
  geometry: LocationGeometry
  properties: Optional[Properties]
