from typing import Optional, Any

from ....core.interfaces.dto import Dto
from ....core.enums.status import Status
from ....core.interfaces.core import Core
from ....enums.context.configs.key import ConfigKey


class Config[T: Any, Properties: Any](Core[Properties]):
  key: ConfigKey

  eid: str  # uid, aid, cid

  value: Optional[T]

  status: Optional[Status]


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


class ConfigDto[T: Any, Properties: Any](Dto[Properties]):
  key: ConfigKey

  eid: str  # uid, aid, cid

  value: Optional[T]

  status: Optional[Status]
