from typing import Optional, List, Any

from ....core.interfaces.dto import Dto
from ....core.interfaces.core import Core
from ....enums.financial.accounts import AccountType, AccountOwnership


class Account[Properties: Any](Core[Properties]):
  type: AccountType
  ownership: AccountOwnership
  members: Optional[List[str]]  # User ID's


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


class AccountDto[Properties: Any](Dto[Properties]):
  type: AccountType
  ownership: AccountOwnership
  members: Optional[List[str]]  # User ID's
