# 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 .time_info import TimeInfo
from .time_info import TimeInfo


class CalendarEventSearchMeta(object):
    _types = {
        "app_link": str,
        "avatar": str,
        "description": str,
        "calendar_id": str,
        "event_id": str,
        "start": TimeInfo,
        "end": TimeInfo,
        "is_all_day": bool,
        "summary": str,
    }

    def __init__(self, d=None):
        self.app_link: Optional[str] = None
        self.avatar: Optional[str] = None
        self.description: Optional[str] = None
        self.calendar_id: Optional[str] = None
        self.event_id: Optional[str] = None
        self.start: Optional[TimeInfo] = None
        self.end: Optional[TimeInfo] = None
        self.is_all_day: Optional[bool] = None
        self.summary: Optional[str] = None
        init(self, d, self._types)

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


class CalendarEventSearchMetaBuilder(object):
    def __init__(self) -> None:
        self._calendar_event_search_meta = CalendarEventSearchMeta()

    def app_link(self, app_link: str) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.app_link = app_link
        return self

    def avatar(self, avatar: str) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.avatar = avatar
        return self

    def description(self, description: str) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.description = description
        return self

    def calendar_id(self, calendar_id: str) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.calendar_id = calendar_id
        return self

    def event_id(self, event_id: str) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.event_id = event_id
        return self

    def start(self, start: TimeInfo) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.start = start
        return self

    def end(self, end: TimeInfo) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.end = end
        return self

    def is_all_day(self, is_all_day: bool) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.is_all_day = is_all_day
        return self

    def summary(self, summary: str) -> "CalendarEventSearchMetaBuilder":
        self._calendar_event_search_meta.summary = summary
        return self

    def build(self) -> "CalendarEventSearchMeta":
        return self._calendar_event_search_meta
