# 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 .knowledge_qa_enterprise_reference import KnowledgeQaEnterpriseReference
from .knowledge_qa_internet_reference import KnowledgeQaInternetReference


class KnowledgeQaReference(object):
    _types = {
        "enterprise_refs": List[KnowledgeQaEnterpriseReference],
        "internet_refs": List[KnowledgeQaInternetReference],
    }

    def __init__(self, d=None):
        self.enterprise_refs: Optional[List[KnowledgeQaEnterpriseReference]] = None
        self.internet_refs: Optional[List[KnowledgeQaInternetReference]] = None
        init(self, d, self._types)

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


class KnowledgeQaReferenceBuilder(object):
    def __init__(self) -> None:
        self._knowledge_qa_reference = KnowledgeQaReference()

    def enterprise_refs(self, enterprise_refs: List[KnowledgeQaEnterpriseReference]) -> "KnowledgeQaReferenceBuilder":
        self._knowledge_qa_reference.enterprise_refs = enterprise_refs
        return self

    def internet_refs(self, internet_refs: List[KnowledgeQaInternetReference]) -> "KnowledgeQaReferenceBuilder":
        self._knowledge_qa_reference.internet_refs = internet_refs
        return self

    def build(self) -> "KnowledgeQaReference":
        return self._knowledge_qa_reference
