# 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 .rich_text_element import RichTextElement


class RichTextParagraph(object):
    _types = {
        "paragraph_type": int,
        "elements": List[RichTextElement],
        "indent": int,
        "list_begin_index": int,
        "quote": bool,
    }

    def __init__(self, d=None):
        self.paragraph_type: Optional[int] = None
        self.elements: Optional[List[RichTextElement]] = None
        self.indent: Optional[int] = None
        self.list_begin_index: Optional[int] = None
        self.quote: Optional[bool] = None
        init(self, d, self._types)

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


class RichTextParagraphBuilder(object):
    def __init__(self) -> None:
        self._rich_text_paragraph = RichTextParagraph()

    def paragraph_type(self, paragraph_type: int) -> "RichTextParagraphBuilder":
        self._rich_text_paragraph.paragraph_type = paragraph_type
        return self

    def elements(self, elements: List[RichTextElement]) -> "RichTextParagraphBuilder":
        self._rich_text_paragraph.elements = elements
        return self

    def indent(self, indent: int) -> "RichTextParagraphBuilder":
        self._rich_text_paragraph.indent = indent
        return self

    def list_begin_index(self, list_begin_index: int) -> "RichTextParagraphBuilder":
        self._rich_text_paragraph.list_begin_index = list_begin_index
        return self

    def quote(self, quote: bool) -> "RichTextParagraphBuilder":
        self._rich_text_paragraph.quote = quote
        return self

    def build(self) -> "RichTextParagraph":
        return self._rich_text_paragraph
