# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init
from .i18n_text import I18nText
from .url_value import UrlValue
from .enum_value import EnumValue
from .user_value import UserValue
from .department_field import DepartmentField
from .image import Image


class FieldContentEntity(object):
    _types = {
        "text_value": I18nText,
        "url_value": UrlValue,
        "enum_value": EnumValue,
        "user_value": UserValue,
        "date_time_value": str,
        "number_value": str,
        "boolean_value": bool,
        "department": DepartmentField,
        "avator": Image,
        "field_type": int,
    }

    def __init__(self, d=None):
        self.text_value: Optional[I18nText] = None
        self.url_value: Optional[UrlValue] = None
        self.enum_value: Optional[EnumValue] = None
        self.user_value: Optional[UserValue] = None
        self.date_time_value: Optional[str] = None
        self.number_value: Optional[str] = None
        self.boolean_value: Optional[bool] = None
        self.department: Optional[DepartmentField] = None
        self.avator: Optional[Image] = None
        self.field_type: Optional[int] = None
        init(self, d, self._types)

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


class FieldContentEntityBuilder(object):
    def __init__(self) -> None:
        self._field_content_entity = FieldContentEntity()

    def text_value(self, text_value: I18nText) -> "FieldContentEntityBuilder":
        self._field_content_entity.text_value = text_value
        return self

    def url_value(self, url_value: UrlValue) -> "FieldContentEntityBuilder":
        self._field_content_entity.url_value = url_value
        return self

    def enum_value(self, enum_value: EnumValue) -> "FieldContentEntityBuilder":
        self._field_content_entity.enum_value = enum_value
        return self

    def user_value(self, user_value: UserValue) -> "FieldContentEntityBuilder":
        self._field_content_entity.user_value = user_value
        return self

    def date_time_value(self, date_time_value: str) -> "FieldContentEntityBuilder":
        self._field_content_entity.date_time_value = date_time_value
        return self

    def number_value(self, number_value: str) -> "FieldContentEntityBuilder":
        self._field_content_entity.number_value = number_value
        return self

    def boolean_value(self, boolean_value: bool) -> "FieldContentEntityBuilder":
        self._field_content_entity.boolean_value = boolean_value
        return self

    def department(self, department: DepartmentField) -> "FieldContentEntityBuilder":
        self._field_content_entity.department = department
        return self

    def avator(self, avator: Image) -> "FieldContentEntityBuilder":
        self._field_content_entity.avator = avator
        return self

    def field_type(self, field_type: int) -> "FieldContentEntityBuilder":
        self._field_content_entity.field_type = field_type
        return self

    def build(self) -> "FieldContentEntity":
        return self._field_content_entity
