from typing import Optional, List, Any

from ....core.interfaces.dto import Dto
from ....core.interfaces.core import Core
from ....enums.conjoint.accounts import AccountType


class Account[Properties: Any](Core[Properties]):
  type: AccountType

  profile: Optional[str]  # Profile ID

  bio: Optional[str]  # Short description or bio
  status: Optional[str]  # Emoji or text status


class Credential:
  ttl: int
  user: str
  # "pass": str # type: ignore
  urls: List[str]


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


class AccountDto[Properties: Any](Dto[Properties]):
  type: AccountType

  profile: Optional[str]  # Profile ID

  bio: Optional[str]  # Short description or bio
  status: Optional[str]  # Emoji or text status
