# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init


class ProfileSettingAddress(object):
    _types = {
        "address_type": str,
        "country_region": str,
        "region": str,
        "region_subdivision_1": str,
        "region_subdivision_2": str,
        "city_v2": str,
        "city_text": str,
        "local_city_text": str,
        "city_subdivision_1": str,
        "city_subdivision_2": str,
        "district_v2": str,
        "postal_code": str,
        "address_line_1": str,
        "local_address_line_1": str,
        "address_line_2": str,
        "local_address_line_2": str,
        "address_line_3": str,
        "local_address_line_3": str,
        "address_line_4": str,
        "local_address_line_5": str,
        "address_line_6": str,
        "local_address_line_6": str,
        "address_line_7": str,
        "local_address_line_7": str,
        "address_line_8": str,
        "local_address_line_8": str,
        "address_line_9": str,
        "local_address_line_9": str,
        "local_address_line_4": str,
        "address_line_5": str,
    }

    def __init__(self, d=None):
        self.address_type: Optional[str] = None
        self.country_region: Optional[str] = None
        self.region: Optional[str] = None
        self.region_subdivision_1: Optional[str] = None
        self.region_subdivision_2: Optional[str] = None
        self.city_v2: Optional[str] = None
        self.city_text: Optional[str] = None
        self.local_city_text: Optional[str] = None
        self.city_subdivision_1: Optional[str] = None
        self.city_subdivision_2: Optional[str] = None
        self.district_v2: Optional[str] = None
        self.postal_code: Optional[str] = None
        self.address_line_1: Optional[str] = None
        self.local_address_line_1: Optional[str] = None
        self.address_line_2: Optional[str] = None
        self.local_address_line_2: Optional[str] = None
        self.address_line_3: Optional[str] = None
        self.local_address_line_3: Optional[str] = None
        self.address_line_4: Optional[str] = None
        self.local_address_line_5: Optional[str] = None
        self.address_line_6: Optional[str] = None
        self.local_address_line_6: Optional[str] = None
        self.address_line_7: Optional[str] = None
        self.local_address_line_7: Optional[str] = None
        self.address_line_8: Optional[str] = None
        self.local_address_line_8: Optional[str] = None
        self.address_line_9: Optional[str] = None
        self.local_address_line_9: Optional[str] = None
        self.local_address_line_4: Optional[str] = None
        self.address_line_5: Optional[str] = None
        init(self, d, self._types)

    @staticmethod
    def builder() -> "ProfileSettingAddressBuilder":
        return ProfileSettingAddressBuilder()


class ProfileSettingAddressBuilder(object):
    def __init__(self) -> None:
        self._profile_setting_address = ProfileSettingAddress()

    def address_type(self, address_type: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_type = address_type
        return self

    def country_region(self, country_region: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.country_region = country_region
        return self

    def region(self, region: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.region = region
        return self

    def region_subdivision_1(self, region_subdivision_1: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.region_subdivision_1 = region_subdivision_1
        return self

    def region_subdivision_2(self, region_subdivision_2: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.region_subdivision_2 = region_subdivision_2
        return self

    def city_v2(self, city_v2: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.city_v2 = city_v2
        return self

    def city_text(self, city_text: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.city_text = city_text
        return self

    def local_city_text(self, local_city_text: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_city_text = local_city_text
        return self

    def city_subdivision_1(self, city_subdivision_1: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.city_subdivision_1 = city_subdivision_1
        return self

    def city_subdivision_2(self, city_subdivision_2: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.city_subdivision_2 = city_subdivision_2
        return self

    def district_v2(self, district_v2: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.district_v2 = district_v2
        return self

    def postal_code(self, postal_code: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.postal_code = postal_code
        return self

    def address_line_1(self, address_line_1: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_1 = address_line_1
        return self

    def local_address_line_1(self, local_address_line_1: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_1 = local_address_line_1
        return self

    def address_line_2(self, address_line_2: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_2 = address_line_2
        return self

    def local_address_line_2(self, local_address_line_2: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_2 = local_address_line_2
        return self

    def address_line_3(self, address_line_3: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_3 = address_line_3
        return self

    def local_address_line_3(self, local_address_line_3: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_3 = local_address_line_3
        return self

    def address_line_4(self, address_line_4: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_4 = address_line_4
        return self

    def local_address_line_5(self, local_address_line_5: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_5 = local_address_line_5
        return self

    def address_line_6(self, address_line_6: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_6 = address_line_6
        return self

    def local_address_line_6(self, local_address_line_6: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_6 = local_address_line_6
        return self

    def address_line_7(self, address_line_7: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_7 = address_line_7
        return self

    def local_address_line_7(self, local_address_line_7: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_7 = local_address_line_7
        return self

    def address_line_8(self, address_line_8: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_8 = address_line_8
        return self

    def local_address_line_8(self, local_address_line_8: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_8 = local_address_line_8
        return self

    def address_line_9(self, address_line_9: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_9 = address_line_9
        return self

    def local_address_line_9(self, local_address_line_9: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_9 = local_address_line_9
        return self

    def local_address_line_4(self, local_address_line_4: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.local_address_line_4 = local_address_line_4
        return self

    def address_line_5(self, address_line_5: str) -> "ProfileSettingAddressBuilder":
        self._profile_setting_address.address_line_5 = address_line_5
        return self

    def build(self) -> "ProfileSettingAddress":
        return self._profile_setting_address
