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

from __future__ import annotations
from ascend_sdk.types import BaseModel
import pydantic
from typing import List, Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class AddressCreateTypedDict(TypedDict):
    r"""The data structure containing attributes describing the location of an underlying entity."""

    city: NotRequired[str]
    r"""Required: Describes the city in which the entity is located."""
    country: NotRequired[str]
    r"""Required: The country code used for geolocation, identity verification, and/or mail delivery purposes."""
    postal_code: NotRequired[str]
    r"""Required: The postal code used for geolocation, identity verification, and/or mail delivery purposes."""
    state: NotRequired[str]
    r"""Required: The state code used for geolocation, identity verification, and/or mail delivery purposes."""
    street_address: NotRequired[List[str]]
    r"""The street name and number relating to a party's legal or mailing address."""


class AddressCreate(BaseModel):
    r"""The data structure containing attributes describing the location of an underlying entity."""

    city: Optional[str] = None
    r"""Required: Describes the city in which the entity is located."""

    country: Optional[str] = None
    r"""Required: The country code used for geolocation, identity verification, and/or mail delivery purposes."""

    postal_code: Optional[str] = None
    r"""Required: The postal code used for geolocation, identity verification, and/or mail delivery purposes."""

    state: Optional[str] = None
    r"""Required: The state code used for geolocation, identity verification, and/or mail delivery purposes."""

    street_address: Annotated[
        Optional[List[str]], pydantic.Field(alias="streetAddress")
    ] = None
    r"""The street name and number relating to a party's legal or mailing address."""
