# This file was generated by liblab | https://liblab.com/

from typing import List
from .utils.json_map import JsonMap
from .base import BaseModel


@JsonMap(
    {
        "address_line": "AddressLine",
        "city": "City",
        "state_province_code": "StateProvinceCode",
        "postal_code": "PostalCode",
        "country_code": "CountryCode",
        "residential_address_indicator": "ResidentialAddressIndicator",
        "po_box_indicator": "POBoxIndicator",
    }
)
class AlternateDeliveryAddressAddress(BaseModel):
    """Address container for Alternate Delivery Address.

    :param address_line: The UPS Access Point's street address, including name and number (when applicable).  Length is not validated.
    :type address_line: List[str]
    :param city: UPS Access Point city., defaults to None
    :type city: str, optional
    :param state_province_code: UPS Access Point State or Province code., defaults to None
    :type state_province_code: str, optional
    :param postal_code: UPS Access Point Postal code., defaults to None
    :type postal_code: str, optional
    :param country_code: UPS Access Point country or territory code.
    :type country_code: str
    :param residential_address_indicator: Presence/Absence Indicator. Any value inside is ignored.This field is a flag to indicate if the Alternate Delivery location is a residential location. True if ResidentialAddressIndicator tag exists.  For future use., defaults to None
    :type residential_address_indicator: str, optional
    :param po_box_indicator: Presence/Absence Indicator. Any value inside is ignored. This field is a flag to indicate if the Alternate Delivery location is a PO box location. True if POBoxIndicator tag exists; false otherwise.  Not valid with Shipment Indication Types: - 01 - Hold for Pickup at UPS Access Point - 02 - UPS Access Point™ Delivery , defaults to None
    :type po_box_indicator: str, optional
    """

    def __init__(
        self,
        address_line: List[str],
        country_code: str,
        city: str = None,
        state_province_code: str = None,
        postal_code: str = None,
        residential_address_indicator: str = None,
        po_box_indicator: str = None,
    ):
        self.address_line = address_line
        if city is not None:
            self.city = city
        if state_province_code is not None:
            self.state_province_code = state_province_code
        if postal_code is not None:
            self.postal_code = postal_code
        self.country_code = country_code
        if residential_address_indicator is not None:
            self.residential_address_indicator = residential_address_indicator
        if po_box_indicator is not None:
            self.po_box_indicator = po_box_indicator
