# 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 .enterprise_knowledge_source_space_param import EnterpriseKnowledgeSourceSpaceParam
from .enterprise_knowledge_source_wiki_param import EnterpriseKnowledgeSourceWikiParam
from .enterprise_knowledge_source_message_param import EnterpriseKnowledgeSourceMessageParam
from .enterprise_knowledge_source_helpdesk_param import EnterpriseKnowledgeSourceHelpdeskParam
from .enterprise_knowledge_source_lingo_param import EnterpriseKnowledgeSourceLingoParam
from .enterprise_knowledge_source_comment_param import EnterpriseKnowledgeSourceCommentParam
from .enterprise_knowledge_source_minutes_param import EnterpriseKnowledgeSourceMinutesParam
from .enterprise_knowledge_source_mail_param import EnterpriseKnowledgeSourceMailParam


class EnterpriseKnowledgeSourceParam(object):
    _types = {
        "space": EnterpriseKnowledgeSourceSpaceParam,
        "wiki": EnterpriseKnowledgeSourceWikiParam,
        "message": EnterpriseKnowledgeSourceMessageParam,
        "helpdesk_faq": EnterpriseKnowledgeSourceHelpdeskParam,
        "lingo": EnterpriseKnowledgeSourceLingoParam,
        "comment": EnterpriseKnowledgeSourceCommentParam,
        "minutes": EnterpriseKnowledgeSourceMinutesParam,
        "mail": EnterpriseKnowledgeSourceMailParam,
    }

    def __init__(self, d=None):
        self.space: Optional[EnterpriseKnowledgeSourceSpaceParam] = None
        self.wiki: Optional[EnterpriseKnowledgeSourceWikiParam] = None
        self.message: Optional[EnterpriseKnowledgeSourceMessageParam] = None
        self.helpdesk_faq: Optional[EnterpriseKnowledgeSourceHelpdeskParam] = None
        self.lingo: Optional[EnterpriseKnowledgeSourceLingoParam] = None
        self.comment: Optional[EnterpriseKnowledgeSourceCommentParam] = None
        self.minutes: Optional[EnterpriseKnowledgeSourceMinutesParam] = None
        self.mail: Optional[EnterpriseKnowledgeSourceMailParam] = None
        init(self, d, self._types)

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


class EnterpriseKnowledgeSourceParamBuilder(object):
    def __init__(self) -> None:
        self._enterprise_knowledge_source_param = EnterpriseKnowledgeSourceParam()

    def space(self, space: EnterpriseKnowledgeSourceSpaceParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.space = space
        return self

    def wiki(self, wiki: EnterpriseKnowledgeSourceWikiParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.wiki = wiki
        return self

    def message(self, message: EnterpriseKnowledgeSourceMessageParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.message = message
        return self

    def helpdesk_faq(self,
                     helpdesk_faq: EnterpriseKnowledgeSourceHelpdeskParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.helpdesk_faq = helpdesk_faq
        return self

    def lingo(self, lingo: EnterpriseKnowledgeSourceLingoParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.lingo = lingo
        return self

    def comment(self, comment: EnterpriseKnowledgeSourceCommentParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.comment = comment
        return self

    def minutes(self, minutes: EnterpriseKnowledgeSourceMinutesParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.minutes = minutes
        return self

    def mail(self, mail: EnterpriseKnowledgeSourceMailParam) -> "EnterpriseKnowledgeSourceParamBuilder":
        self._enterprise_knowledge_source_param.mail = mail
        return self

    def build(self) -> "EnterpriseKnowledgeSourceParam":
        return self._enterprise_knowledge_source_param
