from typing import Optional, Any


from ....core.interfaces.dto import Dto
from ....core.interfaces.core import Core
from ....core.enums.value_type import ValueType


class Artifact[T: Any, Properties: Any](Core[Properties]):
  key: str
  type: ValueType
  value: Optional[T]


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


class ArtifactDto[T: Any, Properties: Any](Dto[Properties]):
  key: str
  type: ValueType
  value: Optional[T]
