"""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 Any, Dict, List, Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class UpdateSubscriberRequestDtoTypedDict(TypedDict):
    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"""The avatar URL of the subscriber."""
    locale: NotRequired[str]
    r"""The locale of the subscriber, for example \"en-US\"."""
    data: NotRequired[Dict[str, Any]]
    r"""Custom data associated with the subscriber. Can contain any additional properties."""
    channels: NotRequired[List[SubscriberChannelDtoTypedDict]]
    r"""An array of communication channels for the subscriber."""


class UpdateSubscriberRequestDto(BaseModel):
    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"""The avatar URL of the subscriber."""

    locale: Optional[str] = None
    r"""The locale of the subscriber, for example \"en-US\"."""

    data: Optional[Dict[str, Any]] = None
    r"""Custom data associated with the subscriber. Can contain any additional properties."""

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