# 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 .field_content_entity import FieldContentEntity


class UserFieldContent(object):
    _types = {
        "field_content": Dict[str, FieldContentEntity],
        "visible_field": Dict[str, bool],
        "user_field_position": int,
    }

    def __init__(self, d=None):
        self.field_content: Optional[Dict[str, FieldContentEntity]] = None
        self.visible_field: Optional[Dict[str, bool]] = None
        self.user_field_position: Optional[int] = None
        init(self, d, self._types)

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


class UserFieldContentBuilder(object):
    def __init__(self) -> None:
        self._user_field_content = UserFieldContent()

    def field_content(self, field_content: Dict[str, FieldContentEntity]) -> "UserFieldContentBuilder":
        self._user_field_content.field_content = field_content
        return self

    def visible_field(self, visible_field: Dict[str, bool]) -> "UserFieldContentBuilder":
        self._user_field_content.visible_field = visible_field
        return self

    def user_field_position(self, user_field_position: int) -> "UserFieldContentBuilder":
        self._user_field_content.user_field_position = user_field_position
        return self

    def build(self) -> "UserFieldContent":
        return self._user_field_content
