# Code generated by lark_sdk_gen. DO NOT EDIT.

import typing
from pylark.lark_request import Response

from pylark.api_service_calendar_acl_create import (
    CreateCalendarACLReq,
    CreateCalendarACLResp,
    _gen_create_calendar_acl_req,
)
from pylark.api_service_calendar_acl_delete import (
    DeleteCalendarACLReq,
    DeleteCalendarACLResp,
    _gen_delete_calendar_acl_req,
)
from pylark.api_service_calendar_acl_get_list import (
    GetCalendarACLListReq,
    GetCalendarACLListResp,
    _gen_get_calendar_acl_list_req,
)
from pylark.api_service_calendar_acl_subscribe import (
    SubscribeCalendarACLReq,
    SubscribeCalendarACLResp,
    _gen_subscribe_calendar_acl_req,
)
from pylark.api_service_calendar_calendar_create import (
    CreateCalendarReq,
    CreateCalendarResp,
    _gen_create_calendar_req,
)
from pylark.api_service_calendar_calendar_delete import (
    DeleteCalendarReq,
    DeleteCalendarResp,
    _gen_delete_calendar_req,
)
from pylark.api_service_calendar_calendar_get import (
    GetCalendarReq,
    GetCalendarResp,
    _gen_get_calendar_req,
)
from pylark.api_service_calendar_calendar_get_list import (
    GetCalendarListReq,
    GetCalendarListResp,
    _gen_get_calendar_list_req,
)
from pylark.api_service_calendar_calendar_patch import (
    UpdateCalendarReq,
    UpdateCalendarResp,
    _gen_update_calendar_req,
)
from pylark.api_service_calendar_calendar_search import (
    SearchCalendarReq,
    SearchCalendarResp,
    _gen_search_calendar_req,
)
from pylark.api_service_calendar_calendar_subscribe import (
    SubscribeCalendarReq,
    SubscribeCalendarResp,
    _gen_subscribe_calendar_req,
)
from pylark.api_service_calendar_calendar_unsubscribe import (
    UnsubscribeCalendarReq,
    UnsubscribeCalendarResp,
    _gen_unsubscribe_calendar_req,
)
from pylark.api_service_calendar_calendar_subscription import (
    SubscribeCalendarChangeEventReq,
    SubscribeCalendarChangeEventResp,
    _gen_subscribe_calendar_change_event_req,
)
from pylark.api_service_calendar_calendar_event_create import (
    CreateCalendarEventReq,
    CreateCalendarEventResp,
    _gen_create_calendar_event_req,
)
from pylark.api_service_calendar_calendar_event_delete import (
    DeleteCalendarEventReq,
    DeleteCalendarEventResp,
    _gen_delete_calendar_event_req,
)
from pylark.api_service_calendar_calendar_event_get import (
    GetCalendarEventReq,
    GetCalendarEventResp,
    _gen_get_calendar_event_req,
)
from pylark.api_service_calendar_calendar_event_get_list import (
    GetCalendarEventListReq,
    GetCalendarEventListResp,
    _gen_get_calendar_event_list_req,
)
from pylark.api_service_calendar_calendar_event_patch import (
    UpdateCalendarEventReq,
    UpdateCalendarEventResp,
    _gen_update_calendar_event_req,
)
from pylark.api_service_calendar_calendar_event_search import (
    SearchCalendarEventReq,
    SearchCalendarEventResp,
    _gen_search_calendar_event_req,
)
from pylark.api_service_calendar_calendar_event_subscribe import (
    SubscribeCalendarEventReq,
    SubscribeCalendarEventResp,
    _gen_subscribe_calendar_event_req,
)
from pylark.api_service_calendar_calendar_event_attendee_create import (
    CreateCalendarEventAttendeeReq,
    CreateCalendarEventAttendeeResp,
    _gen_create_calendar_event_attendee_req,
)
from pylark.api_service_calendar_calendar_event_attendee_get_list import (
    GetCalendarEventAttendeeListReq,
    GetCalendarEventAttendeeListResp,
    _gen_get_calendar_event_attendee_list_req,
)
from pylark.api_service_calendar_calendar_event_attendee_delete import (
    DeleteCalendarEventAttendeeReq,
    DeleteCalendarEventAttendeeResp,
    _gen_delete_calendar_event_attendee_req,
)
from pylark.api_service_calendar_calendar_event_attendee_chat_member_list import (
    GetCalendarEventAttendeeChatMemberListReq,
    GetCalendarEventAttendeeChatMemberListResp,
    _gen_get_calendar_event_attendee_chat_member_list_req,
)
from pylark.api_service_calendar_calendar_freebusy_get_list import (
    GetCalendarFreeBusyListReq,
    GetCalendarFreeBusyListResp,
    _gen_get_calendar_free_busy_list_req,
)
from pylark.api_service_calendar_calendar_timeoff_event_create import (
    CreateCalendarTimeoffEventReq,
    CreateCalendarTimeoffEventResp,
    _gen_create_calendar_timeoff_event_req,
)
from pylark.api_service_calendar_calendar_timeoff_event_delete import (
    DeleteCalendarTimeoffEventReq,
    DeleteCalendarTimeoffEventResp,
    _gen_delete_calendar_timeoff_event_req,
)
from pylark.api_service_calendar_generate_caldav_conf import (
    GenerateCaldavConfReq,
    GenerateCaldavConfResp,
    _gen_generate_caldav_conf_req,
)


if typing.TYPE_CHECKING:
    from lark import Lark


class LarkCalendarService(object):
    cli: "Lark"

    def __init__(self, cli: "Lark"):
        self.cli = cli

    def create_calendar_acl(
        self, request: CreateCalendarACLReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateCalendarACLResp, Response]:
        return self.cli.raw_request(_gen_create_calendar_acl_req(request, options))

    def delete_calendar_acl(
        self, request: DeleteCalendarACLReq, options: typing.List[str] = None
    ) -> typing.Tuple[DeleteCalendarACLResp, Response]:
        return self.cli.raw_request(_gen_delete_calendar_acl_req(request, options))

    def get_calendar_acl_list(
        self, request: GetCalendarACLListReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetCalendarACLListResp, Response]:
        return self.cli.raw_request(_gen_get_calendar_acl_list_req(request, options))

    def subscribe_calendar_acl(
        self, request: SubscribeCalendarACLReq, options: typing.List[str] = None
    ) -> typing.Tuple[SubscribeCalendarACLResp, Response]:
        return self.cli.raw_request(_gen_subscribe_calendar_acl_req(request, options))

    def create_calendar(
        self, request: CreateCalendarReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateCalendarResp, Response]:
        return self.cli.raw_request(_gen_create_calendar_req(request, options))

    def delete_calendar(
        self, request: DeleteCalendarReq, options: typing.List[str] = None
    ) -> typing.Tuple[DeleteCalendarResp, Response]:
        return self.cli.raw_request(_gen_delete_calendar_req(request, options))

    def get_calendar(
        self, request: GetCalendarReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetCalendarResp, Response]:
        return self.cli.raw_request(_gen_get_calendar_req(request, options))

    def get_calendar_list(
        self, request: GetCalendarListReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetCalendarListResp, Response]:
        return self.cli.raw_request(_gen_get_calendar_list_req(request, options))

    def update_calendar(
        self, request: UpdateCalendarReq, options: typing.List[str] = None
    ) -> typing.Tuple[UpdateCalendarResp, Response]:
        return self.cli.raw_request(_gen_update_calendar_req(request, options))

    def search_calendar(
        self, request: SearchCalendarReq, options: typing.List[str] = None
    ) -> typing.Tuple[SearchCalendarResp, Response]:
        return self.cli.raw_request(_gen_search_calendar_req(request, options))

    def subscribe_calendar(
        self, request: SubscribeCalendarReq, options: typing.List[str] = None
    ) -> typing.Tuple[SubscribeCalendarResp, Response]:
        return self.cli.raw_request(_gen_subscribe_calendar_req(request, options))

    def unsubscribe_calendar(
        self, request: UnsubscribeCalendarReq, options: typing.List[str] = None
    ) -> typing.Tuple[UnsubscribeCalendarResp, Response]:
        return self.cli.raw_request(_gen_unsubscribe_calendar_req(request, options))

    def subscribe_calendar_change_event(
        self, request: SubscribeCalendarChangeEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[SubscribeCalendarChangeEventResp, Response]:
        return self.cli.raw_request(
            _gen_subscribe_calendar_change_event_req(request, options)
        )

    def create_calendar_event(
        self, request: CreateCalendarEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateCalendarEventResp, Response]:
        return self.cli.raw_request(_gen_create_calendar_event_req(request, options))

    def delete_calendar_event(
        self, request: DeleteCalendarEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[DeleteCalendarEventResp, Response]:
        return self.cli.raw_request(_gen_delete_calendar_event_req(request, options))

    def get_calendar_event(
        self, request: GetCalendarEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetCalendarEventResp, Response]:
        return self.cli.raw_request(_gen_get_calendar_event_req(request, options))

    def get_calendar_event_list(
        self, request: GetCalendarEventListReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetCalendarEventListResp, Response]:
        return self.cli.raw_request(_gen_get_calendar_event_list_req(request, options))

    def update_calendar_event(
        self, request: UpdateCalendarEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[UpdateCalendarEventResp, Response]:
        return self.cli.raw_request(_gen_update_calendar_event_req(request, options))

    def search_calendar_event(
        self, request: SearchCalendarEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[SearchCalendarEventResp, Response]:
        return self.cli.raw_request(_gen_search_calendar_event_req(request, options))

    def subscribe_calendar_event(
        self, request: SubscribeCalendarEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[SubscribeCalendarEventResp, Response]:
        return self.cli.raw_request(_gen_subscribe_calendar_event_req(request, options))

    def create_calendar_event_attendee(
        self, request: CreateCalendarEventAttendeeReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateCalendarEventAttendeeResp, Response]:
        return self.cli.raw_request(
            _gen_create_calendar_event_attendee_req(request, options)
        )

    def get_calendar_event_attendee_list(
        self, request: GetCalendarEventAttendeeListReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetCalendarEventAttendeeListResp, Response]:
        return self.cli.raw_request(
            _gen_get_calendar_event_attendee_list_req(request, options)
        )

    def delete_calendar_event_attendee(
        self, request: DeleteCalendarEventAttendeeReq, options: typing.List[str] = None
    ) -> typing.Tuple[DeleteCalendarEventAttendeeResp, Response]:
        return self.cli.raw_request(
            _gen_delete_calendar_event_attendee_req(request, options)
        )

    def get_calendar_event_attendee_chat_member_list(
        self,
        request: GetCalendarEventAttendeeChatMemberListReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[GetCalendarEventAttendeeChatMemberListResp, Response]:
        return self.cli.raw_request(
            _gen_get_calendar_event_attendee_chat_member_list_req(request, options)
        )

    def get_calendar_free_busy_list(
        self, request: GetCalendarFreeBusyListReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetCalendarFreeBusyListResp, Response]:
        return self.cli.raw_request(
            _gen_get_calendar_free_busy_list_req(request, options)
        )

    def create_calendar_timeoff_event(
        self, request: CreateCalendarTimeoffEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateCalendarTimeoffEventResp, Response]:
        return self.cli.raw_request(
            _gen_create_calendar_timeoff_event_req(request, options)
        )

    def delete_calendar_timeoff_event(
        self, request: DeleteCalendarTimeoffEventReq, options: typing.List[str] = None
    ) -> typing.Tuple[DeleteCalendarTimeoffEventResp, Response]:
        return self.cli.raw_request(
            _gen_delete_calendar_timeoff_event_req(request, options)
        )

    def generate_caldav_conf(
        self, request: GenerateCaldavConfReq, options: typing.List[str] = None
    ) -> typing.Tuple[GenerateCaldavConfResp, Response]:
        return self.cli.raw_request(_gen_generate_caldav_conf_req(request, options))
