from typing import Optional, Any


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


class Setting[T: Any, Properties: Any](Core[Properties]):
  key: str
  type: ValueType

  value: Optional[T]
  status: Optional[Status]


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


class SettingDto[T: Any, Properties: Any](Dto[Properties]):
  key: str
  type: ValueType

  value: Optional[T]
  status: Optional[Status]
