# coding: utf-8

"""
    Pdf4me

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: v1
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class BillingData(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'qr_type': 'str',
        'version': 'str',
        'coding_type': 'str',
        'iban': 'str',
        'cr_address_type': 'str',
        'cr_name': 'str',
        'cr_street_or_address_line1': 'str',
        'cr_build_no_or_address_line2': 'str',
        'cr_postal_code': 'str',
        'cr_city': 'str',
        'cr_country': 'str',
        'ucr_address_type': 'str',
        'ucr_name': 'str',
        'ucr_street_or_address_line1': 'str',
        'ucr_build_no_or_address_line2': 'str',
        'ucr_postal_code': 'str',
        'ucr_city': 'str',
        'ucr_country': 'str',
        'amount': 'float',
        'currency': 'str',
        'ud_address_type': 'str',
        'ud_name': 'str',
        'ud_street_or_address_line1': 'str',
        'ud_build_no_or_address_line2': 'str',
        'ud_postal_code': 'str',
        'ud_city': 'str',
        'ud_country': 'str',
        'reference_type': 'str',
        'reference': 'str',
        'unstructured_message': 'str',
        'billing_info': 'str',
        'av1_parameters': 'str',
        'av2_parameters': 'str'
    }

    attribute_map = {
        'qr_type': 'qrType',
        'version': 'version',
        'coding_type': 'codingType',
        'iban': 'iban',
        'cr_address_type': 'cr_AddressType',
        'cr_name': 'cr_Name',
        'cr_street_or_address_line1': 'cr_StreetOrAddressLine1',
        'cr_build_no_or_address_line2': 'cr_BuildNoOrAddressLine2',
        'cr_postal_code': 'cr_PostalCode',
        'cr_city': 'cr_City',
        'cr_country': 'cr_Country',
        'ucr_address_type': 'ucr_AddressType',
        'ucr_name': 'ucr_Name',
        'ucr_street_or_address_line1': 'ucr_StreetOrAddressLine1',
        'ucr_build_no_or_address_line2': 'ucr_BuildNoOrAddressLine2',
        'ucr_postal_code': 'ucr_PostalCode',
        'ucr_city': 'ucr_City',
        'ucr_country': 'ucr_Country',
        'amount': 'amount',
        'currency': 'currency',
        'ud_address_type': 'ud_AddressType',
        'ud_name': 'ud_Name',
        'ud_street_or_address_line1': 'ud_StreetOrAddressLine1',
        'ud_build_no_or_address_line2': 'ud_BuildNoOrAddressLine2',
        'ud_postal_code': 'ud_PostalCode',
        'ud_city': 'ud_City',
        'ud_country': 'ud_Country',
        'reference_type': 'referenceType',
        'reference': 'reference',
        'unstructured_message': 'unstructuredMessage',
        'billing_info': 'billingInfo',
        'av1_parameters': 'av1_Parameters',
        'av2_parameters': 'av2_Parameters'
    }

    def __init__(self, qr_type=None, version=None, coding_type=None, iban=None, cr_address_type=None, cr_name=None, cr_street_or_address_line1=None, cr_build_no_or_address_line2=None, cr_postal_code=None, cr_city=None, cr_country=None, ucr_address_type=None, ucr_name=None, ucr_street_or_address_line1=None, ucr_build_no_or_address_line2=None, ucr_postal_code=None, ucr_city=None, ucr_country=None, amount=None, currency=None, ud_address_type=None, ud_name=None, ud_street_or_address_line1=None, ud_build_no_or_address_line2=None, ud_postal_code=None, ud_city=None, ud_country=None, reference_type=None, reference=None, unstructured_message=None, billing_info=None, av1_parameters=None, av2_parameters=None):  # noqa: E501
        """BillingData - a model defined in Swagger"""  # noqa: E501

        self._qr_type = None
        self._version = None
        self._coding_type = None
        self._iban = None
        self._cr_address_type = None
        self._cr_name = None
        self._cr_street_or_address_line1 = None
        self._cr_build_no_or_address_line2 = None
        self._cr_postal_code = None
        self._cr_city = None
        self._cr_country = None
        self._ucr_address_type = None
        self._ucr_name = None
        self._ucr_street_or_address_line1 = None
        self._ucr_build_no_or_address_line2 = None
        self._ucr_postal_code = None
        self._ucr_city = None
        self._ucr_country = None
        self._amount = None
        self._currency = None
        self._ud_address_type = None
        self._ud_name = None
        self._ud_street_or_address_line1 = None
        self._ud_build_no_or_address_line2 = None
        self._ud_postal_code = None
        self._ud_city = None
        self._ud_country = None
        self._reference_type = None
        self._reference = None
        self._unstructured_message = None
        self._billing_info = None
        self._av1_parameters = None
        self._av2_parameters = None
        self.discriminator = None

        if qr_type is not None:
            self.qr_type = qr_type
        if version is not None:
            self.version = version
        if coding_type is not None:
            self.coding_type = coding_type
        if iban is not None:
            self.iban = iban
        if cr_address_type is not None:
            self.cr_address_type = cr_address_type
        if cr_name is not None:
            self.cr_name = cr_name
        if cr_street_or_address_line1 is not None:
            self.cr_street_or_address_line1 = cr_street_or_address_line1
        if cr_build_no_or_address_line2 is not None:
            self.cr_build_no_or_address_line2 = cr_build_no_or_address_line2
        if cr_postal_code is not None:
            self.cr_postal_code = cr_postal_code
        if cr_city is not None:
            self.cr_city = cr_city
        if cr_country is not None:
            self.cr_country = cr_country
        if ucr_address_type is not None:
            self.ucr_address_type = ucr_address_type
        if ucr_name is not None:
            self.ucr_name = ucr_name
        if ucr_street_or_address_line1 is not None:
            self.ucr_street_or_address_line1 = ucr_street_or_address_line1
        if ucr_build_no_or_address_line2 is not None:
            self.ucr_build_no_or_address_line2 = ucr_build_no_or_address_line2
        if ucr_postal_code is not None:
            self.ucr_postal_code = ucr_postal_code
        if ucr_city is not None:
            self.ucr_city = ucr_city
        if ucr_country is not None:
            self.ucr_country = ucr_country
        if amount is not None:
            self.amount = amount
        if currency is not None:
            self.currency = currency
        if ud_address_type is not None:
            self.ud_address_type = ud_address_type
        if ud_name is not None:
            self.ud_name = ud_name
        if ud_street_or_address_line1 is not None:
            self.ud_street_or_address_line1 = ud_street_or_address_line1
        if ud_build_no_or_address_line2 is not None:
            self.ud_build_no_or_address_line2 = ud_build_no_or_address_line2
        if ud_postal_code is not None:
            self.ud_postal_code = ud_postal_code
        if ud_city is not None:
            self.ud_city = ud_city
        if ud_country is not None:
            self.ud_country = ud_country
        if reference_type is not None:
            self.reference_type = reference_type
        if reference is not None:
            self.reference = reference
        if unstructured_message is not None:
            self.unstructured_message = unstructured_message
        if billing_info is not None:
            self.billing_info = billing_info
        if av1_parameters is not None:
            self.av1_parameters = av1_parameters
        if av2_parameters is not None:
            self.av2_parameters = av2_parameters

    @property
    def qr_type(self):
        """Gets the qr_type of this BillingData.  # noqa: E501


        :return: The qr_type of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._qr_type

    @qr_type.setter
    def qr_type(self, qr_type):
        """Sets the qr_type of this BillingData.


        :param qr_type: The qr_type of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["sPC"]  # noqa: E501
        if qr_type not in allowed_values:
            raise ValueError(
                "Invalid value for `qr_type` ({0}), must be one of {1}"  # noqa: E501
                .format(qr_type, allowed_values)
            )

        self._qr_type = qr_type

    @property
    def version(self):
        """Gets the version of this BillingData.  # noqa: E501


        :return: The version of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._version

    @version.setter
    def version(self, version):
        """Sets the version of this BillingData.


        :param version: The version of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["v20"]  # noqa: E501
        if version not in allowed_values:
            raise ValueError(
                "Invalid value for `version` ({0}), must be one of {1}"  # noqa: E501
                .format(version, allowed_values)
            )

        self._version = version

    @property
    def coding_type(self):
        """Gets the coding_type of this BillingData.  # noqa: E501


        :return: The coding_type of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._coding_type

    @coding_type.setter
    def coding_type(self, coding_type):
        """Sets the coding_type of this BillingData.


        :param coding_type: The coding_type of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["default", "uTF8"]  # noqa: E501
        if coding_type not in allowed_values:
            raise ValueError(
                "Invalid value for `coding_type` ({0}), must be one of {1}"  # noqa: E501
                .format(coding_type, allowed_values)
            )

        self._coding_type = coding_type

    @property
    def iban(self):
        """Gets the iban of this BillingData.  # noqa: E501


        :return: The iban of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._iban

    @iban.setter
    def iban(self, iban):
        """Sets the iban of this BillingData.


        :param iban: The iban of this BillingData.  # noqa: E501
        :type: str
        """
        if iban is not None and len(iban) > 21:
            raise ValueError("Invalid value for `iban`, length must be less than or equal to `21`")  # noqa: E501

        self._iban = iban

    @property
    def cr_address_type(self):
        """Gets the cr_address_type of this BillingData.  # noqa: E501


        :return: The cr_address_type of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._cr_address_type

    @cr_address_type.setter
    def cr_address_type(self, cr_address_type):
        """Sets the cr_address_type of this BillingData.


        :param cr_address_type: The cr_address_type of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["s", "k"]  # noqa: E501
        if cr_address_type not in allowed_values:
            raise ValueError(
                "Invalid value for `cr_address_type` ({0}), must be one of {1}"  # noqa: E501
                .format(cr_address_type, allowed_values)
            )

        self._cr_address_type = cr_address_type

    @property
    def cr_name(self):
        """Gets the cr_name of this BillingData.  # noqa: E501


        :return: The cr_name of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._cr_name

    @cr_name.setter
    def cr_name(self, cr_name):
        """Sets the cr_name of this BillingData.


        :param cr_name: The cr_name of this BillingData.  # noqa: E501
        :type: str
        """
        if cr_name is not None and len(cr_name) > 70:
            raise ValueError("Invalid value for `cr_name`, length must be less than or equal to `70`")  # noqa: E501

        self._cr_name = cr_name

    @property
    def cr_street_or_address_line1(self):
        """Gets the cr_street_or_address_line1 of this BillingData.  # noqa: E501


        :return: The cr_street_or_address_line1 of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._cr_street_or_address_line1

    @cr_street_or_address_line1.setter
    def cr_street_or_address_line1(self, cr_street_or_address_line1):
        """Sets the cr_street_or_address_line1 of this BillingData.


        :param cr_street_or_address_line1: The cr_street_or_address_line1 of this BillingData.  # noqa: E501
        :type: str
        """
        if cr_street_or_address_line1 is not None and len(cr_street_or_address_line1) > 70:
            raise ValueError("Invalid value for `cr_street_or_address_line1`, length must be less than or equal to `70`")  # noqa: E501

        self._cr_street_or_address_line1 = cr_street_or_address_line1

    @property
    def cr_build_no_or_address_line2(self):
        """Gets the cr_build_no_or_address_line2 of this BillingData.  # noqa: E501


        :return: The cr_build_no_or_address_line2 of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._cr_build_no_or_address_line2

    @cr_build_no_or_address_line2.setter
    def cr_build_no_or_address_line2(self, cr_build_no_or_address_line2):
        """Sets the cr_build_no_or_address_line2 of this BillingData.


        :param cr_build_no_or_address_line2: The cr_build_no_or_address_line2 of this BillingData.  # noqa: E501
        :type: str
        """
        if cr_build_no_or_address_line2 is not None and len(cr_build_no_or_address_line2) > 70:
            raise ValueError("Invalid value for `cr_build_no_or_address_line2`, length must be less than or equal to `70`")  # noqa: E501

        self._cr_build_no_or_address_line2 = cr_build_no_or_address_line2

    @property
    def cr_postal_code(self):
        """Gets the cr_postal_code of this BillingData.  # noqa: E501


        :return: The cr_postal_code of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._cr_postal_code

    @cr_postal_code.setter
    def cr_postal_code(self, cr_postal_code):
        """Sets the cr_postal_code of this BillingData.


        :param cr_postal_code: The cr_postal_code of this BillingData.  # noqa: E501
        :type: str
        """
        if cr_postal_code is not None and len(cr_postal_code) > 16:
            raise ValueError("Invalid value for `cr_postal_code`, length must be less than or equal to `16`")  # noqa: E501

        self._cr_postal_code = cr_postal_code

    @property
    def cr_city(self):
        """Gets the cr_city of this BillingData.  # noqa: E501


        :return: The cr_city of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._cr_city

    @cr_city.setter
    def cr_city(self, cr_city):
        """Sets the cr_city of this BillingData.


        :param cr_city: The cr_city of this BillingData.  # noqa: E501
        :type: str
        """
        if cr_city is not None and len(cr_city) > 35:
            raise ValueError("Invalid value for `cr_city`, length must be less than or equal to `35`")  # noqa: E501

        self._cr_city = cr_city

    @property
    def cr_country(self):
        """Gets the cr_country of this BillingData.  # noqa: E501


        :return: The cr_country of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._cr_country

    @cr_country.setter
    def cr_country(self, cr_country):
        """Sets the cr_country of this BillingData.


        :param cr_country: The cr_country of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["andorra", "unitedArabEmirates", "afghanistan", "antiguaandBarbuda", "anguilla", "albania", "armenia", "angola", "antarctica", "argentina", "americanSamoa", "austria", "australia", "aruba", "ålandIslands", "azerbaijan", "bosniaandHerzegovina", "barbados", "bangladesh", "belgium", "burkinaFaso", "bulgaria", "bahrain", "burundi", "benin", "saintBarthélemy", "bermuda", "bruneiDarussalam", "boliviaPlurinationalStateof", "bonaireSintEustatiusandSaba", "brazil", "bahamas", "bhutan", "bouvetIsland", "botswana", "belarus", "belize", "canada", "cocosKeelingIslands", "congoDemocraticRepublicofthe", "centralAfricanRepublic", "congo", "switzerland", "côtedIvoire", "cookIslands", "chile", "cameroon", "china", "colombia", "costaRica", "cuba", "caboVerde", "curaçao", "christmasIsland", "cyprus", "czechia", "germany", "djibouti", "denmark", "dominica", "dominicanRepublic", "algeria", "ecuador", "estonia", "egypt", "westernSahara", "eritrea", "spain", "ethiopia", "finland", "fiji", "falklandIslandsMalvinas", "micronesiaFederatedStatesof", "faroeIslands", "france", "gabon", "unitedKingdomofGreatBritainandNorthernIreland", "grenada", "georgia", "frenchGuiana", "guernsey", "ghana", "gibraltar", "greenland", "gambia", "guinea", "guadeloupe", "equatorialGuinea", "greece", "southGeorgiaandtheSouthSandwichIslands", "guatemala", "guam", "guineaBissau", "guyana", "hongKong", "heardIslandandMcDonaldIslands", "honduras", "croatia", "haiti", "hungary", "indonesia", "ireland", "israel", "isleofMan", "india", "britishIndianOceanTerritory", "iraq", "iranIslamicRepublicof", "iceland", "italy", "jersey", "jamaica", "jordan", "japan", "kenya", "kyrgyzstan", "cambodia", "kiribati", "comoros", "saintKittsandNevis", "koreaDemocraticPeoplesRepublicof", "koreaRepublicof", "kuwait", "caymanIslands", "kazakhstan", "laoPeoplesDemocraticRepublic", "lebanon", "saintLucia", "liechtenstein", "sriLanka", "liberia", "lesotho", "lithuania", "luxembourg", "latvia", "libya", "morocco", "monaco", "moldovaRepublicof", "montenegro", "saintMartinFrenchpart", "madagascar", "marshallIslands", "northMacedonia", "mali", "myanmar", "mongolia", "macao", "northernMarianaIslands", "martinique", "mauritania", "montserrat", "malta", "mauritius", "maldives", "malawi", "mexico", "malaysia", "mozambique", "namibia", "newCaledonia", "niger", "norfolkIsland", "nigeria", "nicaragua", "netherlands", "norway", "nepal", "nauru", "niue", "newZealand", "oman", "panama", "peru", "frenchPolynesia", "papuaNewGuinea", "philippines", "pakistan", "poland", "saintPierreandMiquelon", "pitcairn", "puertoRico", "palestineStateof", "portugal", "palau", "paraguay", "qatar", "réunion", "romania", "serbia", "russianFederation", "rwanda", "saudiArabia", "solomonIslands", "seychelles", "sudan", "sweden", "singapore", "saintHelenaAscensionandTristandaCunha", "slovenia", "svalbardandJanMayen", "slovakia", "sierraLeone", "sanMarino", "senegal", "somalia", "suriname", "southSudan", "saoTomeandPrincipe", "elSalvador", "sintMaartenDutchpart", "syrianArabRepublic", "eswatini", "turksandCaicosIslands", "chad", "frenchSouthernTerritories", "togo", "thailand", "tajikistan", "tokelau", "timorLeste", "turkmenistan", "tunisia", "tonga", "turkey", "trinidadandTobago", "tuvalu", "taiwanProvinceofChina", "tanzaniaUnitedRepublicof", "ukraine", "uganda", "unitedStatesMinorOutlyingIslands", "unitedStatesofAmerica", "uruguay", "uzbekistan", "holySee", "saintVincentandtheGrenadines", "venezuelaBolivarianRepublicof", "virginIslandsBritish", "virginIslandsUS", "vietNam", "vanuatu", "wallisandFutuna", "samoa", "yemen", "mayotte", "southAfrica", "zambia", "zimbabwe"]  # noqa: E501
        if cr_country not in allowed_values:
            raise ValueError(
                "Invalid value for `cr_country` ({0}), must be one of {1}"  # noqa: E501
                .format(cr_country, allowed_values)
            )

        self._cr_country = cr_country

    @property
    def ucr_address_type(self):
        """Gets the ucr_address_type of this BillingData.  # noqa: E501


        :return: The ucr_address_type of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ucr_address_type

    @ucr_address_type.setter
    def ucr_address_type(self, ucr_address_type):
        """Sets the ucr_address_type of this BillingData.


        :param ucr_address_type: The ucr_address_type of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["s", "k"]  # noqa: E501
        if ucr_address_type not in allowed_values:
            raise ValueError(
                "Invalid value for `ucr_address_type` ({0}), must be one of {1}"  # noqa: E501
                .format(ucr_address_type, allowed_values)
            )

        self._ucr_address_type = ucr_address_type

    @property
    def ucr_name(self):
        """Gets the ucr_name of this BillingData.  # noqa: E501


        :return: The ucr_name of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ucr_name

    @ucr_name.setter
    def ucr_name(self, ucr_name):
        """Sets the ucr_name of this BillingData.


        :param ucr_name: The ucr_name of this BillingData.  # noqa: E501
        :type: str
        """
        if ucr_name is not None and len(ucr_name) > 70:
            raise ValueError("Invalid value for `ucr_name`, length must be less than or equal to `70`")  # noqa: E501

        self._ucr_name = ucr_name

    @property
    def ucr_street_or_address_line1(self):
        """Gets the ucr_street_or_address_line1 of this BillingData.  # noqa: E501


        :return: The ucr_street_or_address_line1 of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ucr_street_or_address_line1

    @ucr_street_or_address_line1.setter
    def ucr_street_or_address_line1(self, ucr_street_or_address_line1):
        """Sets the ucr_street_or_address_line1 of this BillingData.


        :param ucr_street_or_address_line1: The ucr_street_or_address_line1 of this BillingData.  # noqa: E501
        :type: str
        """
        if ucr_street_or_address_line1 is not None and len(ucr_street_or_address_line1) > 70:
            raise ValueError("Invalid value for `ucr_street_or_address_line1`, length must be less than or equal to `70`")  # noqa: E501

        self._ucr_street_or_address_line1 = ucr_street_or_address_line1

    @property
    def ucr_build_no_or_address_line2(self):
        """Gets the ucr_build_no_or_address_line2 of this BillingData.  # noqa: E501


        :return: The ucr_build_no_or_address_line2 of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ucr_build_no_or_address_line2

    @ucr_build_no_or_address_line2.setter
    def ucr_build_no_or_address_line2(self, ucr_build_no_or_address_line2):
        """Sets the ucr_build_no_or_address_line2 of this BillingData.


        :param ucr_build_no_or_address_line2: The ucr_build_no_or_address_line2 of this BillingData.  # noqa: E501
        :type: str
        """
        if ucr_build_no_or_address_line2 is not None and len(ucr_build_no_or_address_line2) > 70:
            raise ValueError("Invalid value for `ucr_build_no_or_address_line2`, length must be less than or equal to `70`")  # noqa: E501

        self._ucr_build_no_or_address_line2 = ucr_build_no_or_address_line2

    @property
    def ucr_postal_code(self):
        """Gets the ucr_postal_code of this BillingData.  # noqa: E501


        :return: The ucr_postal_code of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ucr_postal_code

    @ucr_postal_code.setter
    def ucr_postal_code(self, ucr_postal_code):
        """Sets the ucr_postal_code of this BillingData.


        :param ucr_postal_code: The ucr_postal_code of this BillingData.  # noqa: E501
        :type: str
        """
        if ucr_postal_code is not None and len(ucr_postal_code) > 16:
            raise ValueError("Invalid value for `ucr_postal_code`, length must be less than or equal to `16`")  # noqa: E501

        self._ucr_postal_code = ucr_postal_code

    @property
    def ucr_city(self):
        """Gets the ucr_city of this BillingData.  # noqa: E501


        :return: The ucr_city of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ucr_city

    @ucr_city.setter
    def ucr_city(self, ucr_city):
        """Sets the ucr_city of this BillingData.


        :param ucr_city: The ucr_city of this BillingData.  # noqa: E501
        :type: str
        """
        if ucr_city is not None and len(ucr_city) > 35:
            raise ValueError("Invalid value for `ucr_city`, length must be less than or equal to `35`")  # noqa: E501

        self._ucr_city = ucr_city

    @property
    def ucr_country(self):
        """Gets the ucr_country of this BillingData.  # noqa: E501


        :return: The ucr_country of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ucr_country

    @ucr_country.setter
    def ucr_country(self, ucr_country):
        """Sets the ucr_country of this BillingData.


        :param ucr_country: The ucr_country of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["andorra", "unitedArabEmirates", "afghanistan", "antiguaandBarbuda", "anguilla", "albania", "armenia", "angola", "antarctica", "argentina", "americanSamoa", "austria", "australia", "aruba", "ålandIslands", "azerbaijan", "bosniaandHerzegovina", "barbados", "bangladesh", "belgium", "burkinaFaso", "bulgaria", "bahrain", "burundi", "benin", "saintBarthélemy", "bermuda", "bruneiDarussalam", "boliviaPlurinationalStateof", "bonaireSintEustatiusandSaba", "brazil", "bahamas", "bhutan", "bouvetIsland", "botswana", "belarus", "belize", "canada", "cocosKeelingIslands", "congoDemocraticRepublicofthe", "centralAfricanRepublic", "congo", "switzerland", "côtedIvoire", "cookIslands", "chile", "cameroon", "china", "colombia", "costaRica", "cuba", "caboVerde", "curaçao", "christmasIsland", "cyprus", "czechia", "germany", "djibouti", "denmark", "dominica", "dominicanRepublic", "algeria", "ecuador", "estonia", "egypt", "westernSahara", "eritrea", "spain", "ethiopia", "finland", "fiji", "falklandIslandsMalvinas", "micronesiaFederatedStatesof", "faroeIslands", "france", "gabon", "unitedKingdomofGreatBritainandNorthernIreland", "grenada", "georgia", "frenchGuiana", "guernsey", "ghana", "gibraltar", "greenland", "gambia", "guinea", "guadeloupe", "equatorialGuinea", "greece", "southGeorgiaandtheSouthSandwichIslands", "guatemala", "guam", "guineaBissau", "guyana", "hongKong", "heardIslandandMcDonaldIslands", "honduras", "croatia", "haiti", "hungary", "indonesia", "ireland", "israel", "isleofMan", "india", "britishIndianOceanTerritory", "iraq", "iranIslamicRepublicof", "iceland", "italy", "jersey", "jamaica", "jordan", "japan", "kenya", "kyrgyzstan", "cambodia", "kiribati", "comoros", "saintKittsandNevis", "koreaDemocraticPeoplesRepublicof", "koreaRepublicof", "kuwait", "caymanIslands", "kazakhstan", "laoPeoplesDemocraticRepublic", "lebanon", "saintLucia", "liechtenstein", "sriLanka", "liberia", "lesotho", "lithuania", "luxembourg", "latvia", "libya", "morocco", "monaco", "moldovaRepublicof", "montenegro", "saintMartinFrenchpart", "madagascar", "marshallIslands", "northMacedonia", "mali", "myanmar", "mongolia", "macao", "northernMarianaIslands", "martinique", "mauritania", "montserrat", "malta", "mauritius", "maldives", "malawi", "mexico", "malaysia", "mozambique", "namibia", "newCaledonia", "niger", "norfolkIsland", "nigeria", "nicaragua", "netherlands", "norway", "nepal", "nauru", "niue", "newZealand", "oman", "panama", "peru", "frenchPolynesia", "papuaNewGuinea", "philippines", "pakistan", "poland", "saintPierreandMiquelon", "pitcairn", "puertoRico", "palestineStateof", "portugal", "palau", "paraguay", "qatar", "réunion", "romania", "serbia", "russianFederation", "rwanda", "saudiArabia", "solomonIslands", "seychelles", "sudan", "sweden", "singapore", "saintHelenaAscensionandTristandaCunha", "slovenia", "svalbardandJanMayen", "slovakia", "sierraLeone", "sanMarino", "senegal", "somalia", "suriname", "southSudan", "saoTomeandPrincipe", "elSalvador", "sintMaartenDutchpart", "syrianArabRepublic", "eswatini", "turksandCaicosIslands", "chad", "frenchSouthernTerritories", "togo", "thailand", "tajikistan", "tokelau", "timorLeste", "turkmenistan", "tunisia", "tonga", "turkey", "trinidadandTobago", "tuvalu", "taiwanProvinceofChina", "tanzaniaUnitedRepublicof", "ukraine", "uganda", "unitedStatesMinorOutlyingIslands", "unitedStatesofAmerica", "uruguay", "uzbekistan", "holySee", "saintVincentandtheGrenadines", "venezuelaBolivarianRepublicof", "virginIslandsBritish", "virginIslandsUS", "vietNam", "vanuatu", "wallisandFutuna", "samoa", "yemen", "mayotte", "southAfrica", "zambia", "zimbabwe"]  # noqa: E501
        if ucr_country not in allowed_values:
            raise ValueError(
                "Invalid value for `ucr_country` ({0}), must be one of {1}"  # noqa: E501
                .format(ucr_country, allowed_values)
            )

        self._ucr_country = ucr_country

    @property
    def amount(self):
        """Gets the amount of this BillingData.  # noqa: E501


        :return: The amount of this BillingData.  # noqa: E501
        :rtype: float
        """
        return self._amount

    @amount.setter
    def amount(self, amount):
        """Sets the amount of this BillingData.


        :param amount: The amount of this BillingData.  # noqa: E501
        :type: float
        """

        self._amount = amount

    @property
    def currency(self):
        """Gets the currency of this BillingData.  # noqa: E501


        :return: The currency of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._currency

    @currency.setter
    def currency(self, currency):
        """Sets the currency of this BillingData.


        :param currency: The currency of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["cHF", "eUR"]  # noqa: E501
        if currency not in allowed_values:
            raise ValueError(
                "Invalid value for `currency` ({0}), must be one of {1}"  # noqa: E501
                .format(currency, allowed_values)
            )

        self._currency = currency

    @property
    def ud_address_type(self):
        """Gets the ud_address_type of this BillingData.  # noqa: E501


        :return: The ud_address_type of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ud_address_type

    @ud_address_type.setter
    def ud_address_type(self, ud_address_type):
        """Sets the ud_address_type of this BillingData.


        :param ud_address_type: The ud_address_type of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["s", "k"]  # noqa: E501
        if ud_address_type not in allowed_values:
            raise ValueError(
                "Invalid value for `ud_address_type` ({0}), must be one of {1}"  # noqa: E501
                .format(ud_address_type, allowed_values)
            )

        self._ud_address_type = ud_address_type

    @property
    def ud_name(self):
        """Gets the ud_name of this BillingData.  # noqa: E501


        :return: The ud_name of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ud_name

    @ud_name.setter
    def ud_name(self, ud_name):
        """Sets the ud_name of this BillingData.


        :param ud_name: The ud_name of this BillingData.  # noqa: E501
        :type: str
        """
        if ud_name is not None and len(ud_name) > 70:
            raise ValueError("Invalid value for `ud_name`, length must be less than or equal to `70`")  # noqa: E501

        self._ud_name = ud_name

    @property
    def ud_street_or_address_line1(self):
        """Gets the ud_street_or_address_line1 of this BillingData.  # noqa: E501


        :return: The ud_street_or_address_line1 of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ud_street_or_address_line1

    @ud_street_or_address_line1.setter
    def ud_street_or_address_line1(self, ud_street_or_address_line1):
        """Sets the ud_street_or_address_line1 of this BillingData.


        :param ud_street_or_address_line1: The ud_street_or_address_line1 of this BillingData.  # noqa: E501
        :type: str
        """
        if ud_street_or_address_line1 is not None and len(ud_street_or_address_line1) > 70:
            raise ValueError("Invalid value for `ud_street_or_address_line1`, length must be less than or equal to `70`")  # noqa: E501

        self._ud_street_or_address_line1 = ud_street_or_address_line1

    @property
    def ud_build_no_or_address_line2(self):
        """Gets the ud_build_no_or_address_line2 of this BillingData.  # noqa: E501


        :return: The ud_build_no_or_address_line2 of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ud_build_no_or_address_line2

    @ud_build_no_or_address_line2.setter
    def ud_build_no_or_address_line2(self, ud_build_no_or_address_line2):
        """Sets the ud_build_no_or_address_line2 of this BillingData.


        :param ud_build_no_or_address_line2: The ud_build_no_or_address_line2 of this BillingData.  # noqa: E501
        :type: str
        """
        if ud_build_no_or_address_line2 is not None and len(ud_build_no_or_address_line2) > 70:
            raise ValueError("Invalid value for `ud_build_no_or_address_line2`, length must be less than or equal to `70`")  # noqa: E501

        self._ud_build_no_or_address_line2 = ud_build_no_or_address_line2

    @property
    def ud_postal_code(self):
        """Gets the ud_postal_code of this BillingData.  # noqa: E501


        :return: The ud_postal_code of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ud_postal_code

    @ud_postal_code.setter
    def ud_postal_code(self, ud_postal_code):
        """Sets the ud_postal_code of this BillingData.


        :param ud_postal_code: The ud_postal_code of this BillingData.  # noqa: E501
        :type: str
        """
        if ud_postal_code is not None and len(ud_postal_code) > 16:
            raise ValueError("Invalid value for `ud_postal_code`, length must be less than or equal to `16`")  # noqa: E501

        self._ud_postal_code = ud_postal_code

    @property
    def ud_city(self):
        """Gets the ud_city of this BillingData.  # noqa: E501


        :return: The ud_city of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ud_city

    @ud_city.setter
    def ud_city(self, ud_city):
        """Sets the ud_city of this BillingData.


        :param ud_city: The ud_city of this BillingData.  # noqa: E501
        :type: str
        """
        if ud_city is not None and len(ud_city) > 35:
            raise ValueError("Invalid value for `ud_city`, length must be less than or equal to `35`")  # noqa: E501

        self._ud_city = ud_city

    @property
    def ud_country(self):
        """Gets the ud_country of this BillingData.  # noqa: E501


        :return: The ud_country of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._ud_country

    @ud_country.setter
    def ud_country(self, ud_country):
        """Sets the ud_country of this BillingData.


        :param ud_country: The ud_country of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["andorra", "unitedArabEmirates", "afghanistan", "antiguaandBarbuda", "anguilla", "albania", "armenia", "angola", "antarctica", "argentina", "americanSamoa", "austria", "australia", "aruba", "ålandIslands", "azerbaijan", "bosniaandHerzegovina", "barbados", "bangladesh", "belgium", "burkinaFaso", "bulgaria", "bahrain", "burundi", "benin", "saintBarthélemy", "bermuda", "bruneiDarussalam", "boliviaPlurinationalStateof", "bonaireSintEustatiusandSaba", "brazil", "bahamas", "bhutan", "bouvetIsland", "botswana", "belarus", "belize", "canada", "cocosKeelingIslands", "congoDemocraticRepublicofthe", "centralAfricanRepublic", "congo", "switzerland", "côtedIvoire", "cookIslands", "chile", "cameroon", "china", "colombia", "costaRica", "cuba", "caboVerde", "curaçao", "christmasIsland", "cyprus", "czechia", "germany", "djibouti", "denmark", "dominica", "dominicanRepublic", "algeria", "ecuador", "estonia", "egypt", "westernSahara", "eritrea", "spain", "ethiopia", "finland", "fiji", "falklandIslandsMalvinas", "micronesiaFederatedStatesof", "faroeIslands", "france", "gabon", "unitedKingdomofGreatBritainandNorthernIreland", "grenada", "georgia", "frenchGuiana", "guernsey", "ghana", "gibraltar", "greenland", "gambia", "guinea", "guadeloupe", "equatorialGuinea", "greece", "southGeorgiaandtheSouthSandwichIslands", "guatemala", "guam", "guineaBissau", "guyana", "hongKong", "heardIslandandMcDonaldIslands", "honduras", "croatia", "haiti", "hungary", "indonesia", "ireland", "israel", "isleofMan", "india", "britishIndianOceanTerritory", "iraq", "iranIslamicRepublicof", "iceland", "italy", "jersey", "jamaica", "jordan", "japan", "kenya", "kyrgyzstan", "cambodia", "kiribati", "comoros", "saintKittsandNevis", "koreaDemocraticPeoplesRepublicof", "koreaRepublicof", "kuwait", "caymanIslands", "kazakhstan", "laoPeoplesDemocraticRepublic", "lebanon", "saintLucia", "liechtenstein", "sriLanka", "liberia", "lesotho", "lithuania", "luxembourg", "latvia", "libya", "morocco", "monaco", "moldovaRepublicof", "montenegro", "saintMartinFrenchpart", "madagascar", "marshallIslands", "northMacedonia", "mali", "myanmar", "mongolia", "macao", "northernMarianaIslands", "martinique", "mauritania", "montserrat", "malta", "mauritius", "maldives", "malawi", "mexico", "malaysia", "mozambique", "namibia", "newCaledonia", "niger", "norfolkIsland", "nigeria", "nicaragua", "netherlands", "norway", "nepal", "nauru", "niue", "newZealand", "oman", "panama", "peru", "frenchPolynesia", "papuaNewGuinea", "philippines", "pakistan", "poland", "saintPierreandMiquelon", "pitcairn", "puertoRico", "palestineStateof", "portugal", "palau", "paraguay", "qatar", "réunion", "romania", "serbia", "russianFederation", "rwanda", "saudiArabia", "solomonIslands", "seychelles", "sudan", "sweden", "singapore", "saintHelenaAscensionandTristandaCunha", "slovenia", "svalbardandJanMayen", "slovakia", "sierraLeone", "sanMarino", "senegal", "somalia", "suriname", "southSudan", "saoTomeandPrincipe", "elSalvador", "sintMaartenDutchpart", "syrianArabRepublic", "eswatini", "turksandCaicosIslands", "chad", "frenchSouthernTerritories", "togo", "thailand", "tajikistan", "tokelau", "timorLeste", "turkmenistan", "tunisia", "tonga", "turkey", "trinidadandTobago", "tuvalu", "taiwanProvinceofChina", "tanzaniaUnitedRepublicof", "ukraine", "uganda", "unitedStatesMinorOutlyingIslands", "unitedStatesofAmerica", "uruguay", "uzbekistan", "holySee", "saintVincentandtheGrenadines", "venezuelaBolivarianRepublicof", "virginIslandsBritish", "virginIslandsUS", "vietNam", "vanuatu", "wallisandFutuna", "samoa", "yemen", "mayotte", "southAfrica", "zambia", "zimbabwe"]  # noqa: E501
        if ud_country not in allowed_values:
            raise ValueError(
                "Invalid value for `ud_country` ({0}), must be one of {1}"  # noqa: E501
                .format(ud_country, allowed_values)
            )

        self._ud_country = ud_country

    @property
    def reference_type(self):
        """Gets the reference_type of this BillingData.  # noqa: E501


        :return: The reference_type of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._reference_type

    @reference_type.setter
    def reference_type(self, reference_type):
        """Sets the reference_type of this BillingData.


        :param reference_type: The reference_type of this BillingData.  # noqa: E501
        :type: str
        """
        allowed_values = ["qRR", "sCOR", "nON"]  # noqa: E501
        if reference_type not in allowed_values:
            raise ValueError(
                "Invalid value for `reference_type` ({0}), must be one of {1}"  # noqa: E501
                .format(reference_type, allowed_values)
            )

        self._reference_type = reference_type

    @property
    def reference(self):
        """Gets the reference of this BillingData.  # noqa: E501


        :return: The reference of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._reference

    @reference.setter
    def reference(self, reference):
        """Sets the reference of this BillingData.


        :param reference: The reference of this BillingData.  # noqa: E501
        :type: str
        """
        if reference is not None and len(reference) > 27:
            raise ValueError("Invalid value for `reference`, length must be less than or equal to `27`")  # noqa: E501

        self._reference = reference

    @property
    def unstructured_message(self):
        """Gets the unstructured_message of this BillingData.  # noqa: E501


        :return: The unstructured_message of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._unstructured_message

    @unstructured_message.setter
    def unstructured_message(self, unstructured_message):
        """Sets the unstructured_message of this BillingData.


        :param unstructured_message: The unstructured_message of this BillingData.  # noqa: E501
        :type: str
        """
        if unstructured_message is not None and len(unstructured_message) > 140:
            raise ValueError("Invalid value for `unstructured_message`, length must be less than or equal to `140`")  # noqa: E501

        self._unstructured_message = unstructured_message

    @property
    def billing_info(self):
        """Gets the billing_info of this BillingData.  # noqa: E501


        :return: The billing_info of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._billing_info

    @billing_info.setter
    def billing_info(self, billing_info):
        """Sets the billing_info of this BillingData.


        :param billing_info: The billing_info of this BillingData.  # noqa: E501
        :type: str
        """
        if billing_info is not None and len(billing_info) > 140:
            raise ValueError("Invalid value for `billing_info`, length must be less than or equal to `140`")  # noqa: E501

        self._billing_info = billing_info

    @property
    def av1_parameters(self):
        """Gets the av1_parameters of this BillingData.  # noqa: E501


        :return: The av1_parameters of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._av1_parameters

    @av1_parameters.setter
    def av1_parameters(self, av1_parameters):
        """Sets the av1_parameters of this BillingData.


        :param av1_parameters: The av1_parameters of this BillingData.  # noqa: E501
        :type: str
        """
        if av1_parameters is not None and len(av1_parameters) > 100:
            raise ValueError("Invalid value for `av1_parameters`, length must be less than or equal to `100`")  # noqa: E501

        self._av1_parameters = av1_parameters

    @property
    def av2_parameters(self):
        """Gets the av2_parameters of this BillingData.  # noqa: E501


        :return: The av2_parameters of this BillingData.  # noqa: E501
        :rtype: str
        """
        return self._av2_parameters

    @av2_parameters.setter
    def av2_parameters(self, av2_parameters):
        """Sets the av2_parameters of this BillingData.


        :param av2_parameters: The av2_parameters of this BillingData.  # noqa: E501
        :type: str
        """
        if av2_parameters is not None and len(av2_parameters) > 100:
            raise ValueError("Invalid value for `av2_parameters`, length must be less than or equal to `100`")  # noqa: E501

        self._av2_parameters = av2_parameters

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(BillingData, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, BillingData):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
