# 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 MindMapNode(object):
    _types = {
        "parent_id": str,
        "type": str,
        "z_index": int,
        "layout_position": str,
        "children": List[str],
        "collapsed": bool,
    }

    def __init__(self, d=None):
        self.parent_id: Optional[str] = None
        self.type: Optional[str] = None
        self.z_index: Optional[int] = None
        self.layout_position: Optional[str] = None
        self.children: Optional[List[str]] = None
        self.collapsed: Optional[bool] = None
        init(self, d, self._types)

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


class MindMapNodeBuilder(object):
    def __init__(self) -> None:
        self._mind_map_node = MindMapNode()

    def parent_id(self, parent_id: str) -> "MindMapNodeBuilder":
        self._mind_map_node.parent_id = parent_id
        return self

    def type(self, type: str) -> "MindMapNodeBuilder":
        self._mind_map_node.type = type
        return self

    def z_index(self, z_index: int) -> "MindMapNodeBuilder":
        self._mind_map_node.z_index = z_index
        return self

    def layout_position(self, layout_position: str) -> "MindMapNodeBuilder":
        self._mind_map_node.layout_position = layout_position
        return self

    def children(self, children: List[str]) -> "MindMapNodeBuilder":
        self._mind_map_node.children = children
        return self

    def collapsed(self, collapsed: bool) -> "MindMapNodeBuilder":
        self._mind_map_node.collapsed = collapsed
        return self

    def build(self) -> "MindMapNode":
        return self._mind_map_node
