from typing import Optional, List, Any

from ....core.interfaces.dto import Dto
from ....core.interfaces.core import Core


class Member[Properties: Any](Core[Properties]):
  channel: str  # Channel ID
  account: str  # Account ID

  role: Optional[str]
  permissions: Optional[List[str]]


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


class MemberDto[Properties: Any](Dto[Properties]):
  channel: str  # Channel ID
  account: str  # Account ID

  role: Optional[str]
  permissions: Optional[List[str]]
