from typing import Optional, List, Any

from ....core.interfaces.dto import Dto
from ....core.enums.status import Status
from ....core.interfaces.core import Core
from ....enums.logistic.vehicles import VehicleType


class Vehicle[Properties: Any](Core[Properties]):
  type: VehicleType

  status: Status

  plates: List[str]
  drivers: Optional[List[str]]


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


class VehicleDto[Properties: Any](Dto[Properties]):
  type: VehicleType

  status: Status

  plates: List[str]
  drivers: Optional[List[str]]
