from typing import Optional, List, Any

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

from .keys import PushKeys, PushKeysDto


class Push[Properties: Any](Core[Properties]):
  session: str

  keys: PushKeys
  endpoint: str

  blacklist: Optional[List[str]]

  expiration: int


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


class PushDto[Properties: Any](Dto[Properties]):
  session: str

  keys: PushKeysDto
  endpoint: str

  blacklist: Optional[List[str]]

  expiration: int
