# 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 .message_text_content import MessageTextContent
from .message_post_content import MessagePostContent
from .message_merge_forward_content import MessageMergeForwardContent
from .message_system_content import MessageSystemContent
from .message_location_content import MessageLocationContent
from .message_share_group_chat_content import MessageShareGroupChatContent
from .message_share_user_card_content import MessageShareUserCardContent
from .message_sticker_content import MessageStickerContent
from .message_card_content import MessageCardContent
from .message_video_chat_content import MessageVideoChatContent
from .message_todo_content import MessageTodoContent
from .message_hong_bao_content import MessageHongBaoContent
from .message_calendar_content import MessageCalendarContent
from .message_file_content import MessageFileContent
from .message_image_content import MessageImageContent
from .message_audio_content import MessageAudioContent
from .message_media_content import MessageMediaContent
from .message_share_calendar_event_content import MessageShareCalendarEventContent
from .message_general_calendar_content import MessageGeneralCalendarContent


class MessageContent(object):
    _types = {
        "text_content": MessageTextContent,
        "post_content": MessagePostContent,
        "merge_forward_content": MessageMergeForwardContent,
        "system_content": MessageSystemContent,
        "location_content": MessageLocationContent,
        "share_group_chat_content": MessageShareGroupChatContent,
        "share_user_card_content": MessageShareUserCardContent,
        "sticker_content": MessageStickerContent,
        "card_content": MessageCardContent,
        "video_chat_content": MessageVideoChatContent,
        "to_do_content": MessageTodoContent,
        "hong_bao_content": MessageHongBaoContent,
        "calendar_content": MessageCalendarContent,
        "file_content": MessageFileContent,
        "image_content": MessageImageContent,
        "audio_content": MessageAudioContent,
        "media_content": MessageMediaContent,
        "share_calendar_event_content": MessageShareCalendarEventContent,
        "general_calendar_content": MessageGeneralCalendarContent,
    }

    def __init__(self, d=None):
        self.text_content: Optional[MessageTextContent] = None
        self.post_content: Optional[MessagePostContent] = None
        self.merge_forward_content: Optional[MessageMergeForwardContent] = None
        self.system_content: Optional[MessageSystemContent] = None
        self.location_content: Optional[MessageLocationContent] = None
        self.share_group_chat_content: Optional[MessageShareGroupChatContent] = None
        self.share_user_card_content: Optional[MessageShareUserCardContent] = None
        self.sticker_content: Optional[MessageStickerContent] = None
        self.card_content: Optional[MessageCardContent] = None
        self.video_chat_content: Optional[MessageVideoChatContent] = None
        self.to_do_content: Optional[MessageTodoContent] = None
        self.hong_bao_content: Optional[MessageHongBaoContent] = None
        self.calendar_content: Optional[MessageCalendarContent] = None
        self.file_content: Optional[MessageFileContent] = None
        self.image_content: Optional[MessageImageContent] = None
        self.audio_content: Optional[MessageAudioContent] = None
        self.media_content: Optional[MessageMediaContent] = None
        self.share_calendar_event_content: Optional[MessageShareCalendarEventContent] = None
        self.general_calendar_content: Optional[MessageGeneralCalendarContent] = None
        init(self, d, self._types)

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


class MessageContentBuilder(object):
    def __init__(self) -> None:
        self._message_content = MessageContent()

    def text_content(self, text_content: MessageTextContent) -> "MessageContentBuilder":
        self._message_content.text_content = text_content
        return self

    def post_content(self, post_content: MessagePostContent) -> "MessageContentBuilder":
        self._message_content.post_content = post_content
        return self

    def merge_forward_content(self, merge_forward_content: MessageMergeForwardContent) -> "MessageContentBuilder":
        self._message_content.merge_forward_content = merge_forward_content
        return self

    def system_content(self, system_content: MessageSystemContent) -> "MessageContentBuilder":
        self._message_content.system_content = system_content
        return self

    def location_content(self, location_content: MessageLocationContent) -> "MessageContentBuilder":
        self._message_content.location_content = location_content
        return self

    def share_group_chat_content(self,
                                 share_group_chat_content: MessageShareGroupChatContent) -> "MessageContentBuilder":
        self._message_content.share_group_chat_content = share_group_chat_content
        return self

    def share_user_card_content(self, share_user_card_content: MessageShareUserCardContent) -> "MessageContentBuilder":
        self._message_content.share_user_card_content = share_user_card_content
        return self

    def sticker_content(self, sticker_content: MessageStickerContent) -> "MessageContentBuilder":
        self._message_content.sticker_content = sticker_content
        return self

    def card_content(self, card_content: MessageCardContent) -> "MessageContentBuilder":
        self._message_content.card_content = card_content
        return self

    def video_chat_content(self, video_chat_content: MessageVideoChatContent) -> "MessageContentBuilder":
        self._message_content.video_chat_content = video_chat_content
        return self

    def to_do_content(self, to_do_content: MessageTodoContent) -> "MessageContentBuilder":
        self._message_content.to_do_content = to_do_content
        return self

    def hong_bao_content(self, hong_bao_content: MessageHongBaoContent) -> "MessageContentBuilder":
        self._message_content.hong_bao_content = hong_bao_content
        return self

    def calendar_content(self, calendar_content: MessageCalendarContent) -> "MessageContentBuilder":
        self._message_content.calendar_content = calendar_content
        return self

    def file_content(self, file_content: MessageFileContent) -> "MessageContentBuilder":
        self._message_content.file_content = file_content
        return self

    def image_content(self, image_content: MessageImageContent) -> "MessageContentBuilder":
        self._message_content.image_content = image_content
        return self

    def audio_content(self, audio_content: MessageAudioContent) -> "MessageContentBuilder":
        self._message_content.audio_content = audio_content
        return self

    def media_content(self, media_content: MessageMediaContent) -> "MessageContentBuilder":
        self._message_content.media_content = media_content
        return self

    def share_calendar_event_content(self,
                                     share_calendar_event_content: MessageShareCalendarEventContent) -> "MessageContentBuilder":
        self._message_content.share_calendar_event_content = share_calendar_event_content
        return self

    def general_calendar_content(self,
                                 general_calendar_content: MessageGeneralCalendarContent) -> "MessageContentBuilder":
        self._message_content.general_calendar_content = general_calendar_content
        return self

    def build(self) -> "MessageContent":
        return self._message_content
