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

from __future__ import annotations
from .utils.json_map import JsonMap
from .base import BaseModel
from .bill_third_party_address import BillThirdPartyAddress


@JsonMap({"account_number": "AccountNumber", "address": "Address"})
class ShipmentChargeBillThirdParty(BaseModel):
    """Container for the third party billing option.  This element or its sibling element, BillShipper, BillReceiver or Consignee Billed, must be present but no more than one can be present.

    :param account_number: The UPS account number of the third party shipper.  The account must be a valid UPS account number that is active. For US, PR and CA accounts, the account must be either a daily pickup account, an occasional account, or a customer B.I.N account, or a drop shipper account. All other accounts must be either a daily pickup account, an occasional account, a drop shipper account, or a non-shipping account.
    :type account_number: str
    :param address: Container for additional information for the third party UPS accounts address.
    :type address: BillThirdPartyAddress
    """

    def __init__(self, account_number: str, address: BillThirdPartyAddress):
        self.account_number = account_number
        self.address = self._define_object(address, BillThirdPartyAddress)
