# Code generated by Lark OpenAPI.

from typing import Callable, Type

from lark_oapi.event.processor import IEventProcessor
from .model.p2_calendar_calendar_acl_created_v4 import P2CalendarCalendarAclCreatedV4
from .model.p2_calendar_calendar_acl_deleted_v4 import P2CalendarCalendarAclDeletedV4
from .model.p2_calendar_calendar_changed_v4 import P2CalendarCalendarChangedV4
from .model.p2_calendar_calendar_event_changed_v4 import P2CalendarCalendarEventChangedV4


class P2CalendarCalendarChangedV4Processor(IEventProcessor[P2CalendarCalendarChangedV4]):
    def __init__(self, f: Callable[[P2CalendarCalendarChangedV4], None]):
        self.f = f

    def type(self) -> Type[P2CalendarCalendarChangedV4]:
        return P2CalendarCalendarChangedV4

    def do(self, data: P2CalendarCalendarChangedV4) -> None:
        self.f(data)


class P2CalendarCalendarAclCreatedV4Processor(IEventProcessor[P2CalendarCalendarAclCreatedV4]):
    def __init__(self, f: Callable[[P2CalendarCalendarAclCreatedV4], None]):
        self.f = f

    def type(self) -> Type[P2CalendarCalendarAclCreatedV4]:
        return P2CalendarCalendarAclCreatedV4

    def do(self, data: P2CalendarCalendarAclCreatedV4) -> None:
        self.f(data)


class P2CalendarCalendarAclDeletedV4Processor(IEventProcessor[P2CalendarCalendarAclDeletedV4]):
    def __init__(self, f: Callable[[P2CalendarCalendarAclDeletedV4], None]):
        self.f = f

    def type(self) -> Type[P2CalendarCalendarAclDeletedV4]:
        return P2CalendarCalendarAclDeletedV4

    def do(self, data: P2CalendarCalendarAclDeletedV4) -> None:
        self.f(data)


class P2CalendarCalendarEventChangedV4Processor(IEventProcessor[P2CalendarCalendarEventChangedV4]):
    def __init__(self, f: Callable[[P2CalendarCalendarEventChangedV4], None]):
        self.f = f

    def type(self) -> Type[P2CalendarCalendarEventChangedV4]:
        return P2CalendarCalendarEventChangedV4

    def do(self, data: P2CalendarCalendarEventChangedV4) -> None:
        self.f(data)
