# 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 .doc_meta import DocMeta


class DocResUnit(object):
    _types = {
        "title_highlighted": str,
        "summary_highlighted": str,
        "entity_type": str,
        "result_meta": DocMeta,
    }

    def __init__(self, d=None):
        self.title_highlighted: Optional[str] = None
        self.summary_highlighted: Optional[str] = None
        self.entity_type: Optional[str] = None
        self.result_meta: Optional[DocMeta] = None
        init(self, d, self._types)

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


class DocResUnitBuilder(object):
    def __init__(self) -> None:
        self._doc_res_unit = DocResUnit()

    def title_highlighted(self, title_highlighted: str) -> "DocResUnitBuilder":
        self._doc_res_unit.title_highlighted = title_highlighted
        return self

    def summary_highlighted(self, summary_highlighted: str) -> "DocResUnitBuilder":
        self._doc_res_unit.summary_highlighted = summary_highlighted
        return self

    def entity_type(self, entity_type: str) -> "DocResUnitBuilder":
        self._doc_res_unit.entity_type = entity_type
        return self

    def result_meta(self, result_meta: DocMeta) -> "DocResUnitBuilder":
        self._doc_res_unit.result_meta = result_meta
        return self

    def build(self) -> "DocResUnit":
        return self._doc_res_unit
