from typing import Optional, List, Any

from ....core.interfaces.dto import Dto
from ....core.interfaces.core import Core
from ....enums.touch.smss import SmsProvider


class Sms[T: Any, Properties: Any](Core[Properties]):
  provider: SmsProvider

  message: str
  receptors: List[str]
  sender: Optional[str]

  res: Optional[T]


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


class SmsDto[T: Any, Properties: Any](Dto[Properties]):
  provider: SmsProvider

  message: str
  receptors: List[str]
  sender: Optional[str]

  res: Optional[T]


class SmsSendDto[T: Any, Properties: Any](Dto[Properties]):
  provider: Optional[SmsProvider]

  message: str
  receptors: List[str]
  sender: Optional[str]
