"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from .subscriberchanneldto import SubscriberChannelDto, SubscriberChannelDtoTypedDict
from novu_py.types import BaseModel
import pydantic
from typing import Dict, List, Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict


DataTypedDict = TypeAliasType("DataTypedDict", Union[str, List[str], bool, float])


Data = TypeAliasType("Data", Union[str, List[str], bool, float])


class SubscriberPayloadDtoTypedDict(TypedDict):
    subscriber_id: str
    r"""The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems"""
    email: NotRequired[str]
    r"""The email address of the subscriber."""
    first_name: NotRequired[str]
    r"""The first name of the subscriber."""
    last_name: NotRequired[str]
    r"""The last name of the subscriber."""
    phone: NotRequired[str]
    r"""The phone number of the subscriber."""
    avatar: NotRequired[str]
    r"""An HTTP URL to the profile image of your subscriber."""
    locale: NotRequired[str]
    r"""The locale of the subscriber."""
    data: NotRequired[Dict[str, DataTypedDict]]
    r"""An optional payload object that can contain any properties."""
    channels: NotRequired[List[SubscriberChannelDtoTypedDict]]
    r"""An optional array of subscriber channels."""
    timezone: NotRequired[str]
    r"""The timezone of the subscriber."""


class SubscriberPayloadDto(BaseModel):
    subscriber_id: Annotated[str, pydantic.Field(alias="subscriberId")]
    r"""The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems"""

    email: Optional[str] = None
    r"""The email address of the subscriber."""

    first_name: Annotated[Optional[str], pydantic.Field(alias="firstName")] = None
    r"""The first name of the subscriber."""

    last_name: Annotated[Optional[str], pydantic.Field(alias="lastName")] = None
    r"""The last name of the subscriber."""

    phone: Optional[str] = None
    r"""The phone number of the subscriber."""

    avatar: Optional[str] = None
    r"""An HTTP URL to the profile image of your subscriber."""

    locale: Optional[str] = None
    r"""The locale of the subscriber."""

    data: Optional[Dict[str, Data]] = None
    r"""An optional payload object that can contain any properties."""

    channels: Optional[List[SubscriberChannelDto]] = None
    r"""An optional array of subscriber channels."""

    timezone: Optional[str] = None
    r"""The timezone of the subscriber."""
