# Code generated by Lark OpenAPI.

from typing import Callable, Type

from lark_oapi.event.processor import IEventProcessor
from .model.p2_contact_custom_attr_event_updated_v3 import P2ContactCustomAttrEventUpdatedV3
from .model.p2_contact_department_created_v3 import P2ContactDepartmentCreatedV3
from .model.p2_contact_department_deleted_v3 import P2ContactDepartmentDeletedV3
from .model.p2_contact_department_updated_v3 import P2ContactDepartmentUpdatedV3
from .model.p2_contact_employee_type_enum_actived_v3 import P2ContactEmployeeTypeEnumActivedV3
from .model.p2_contact_employee_type_enum_created_v3 import P2ContactEmployeeTypeEnumCreatedV3
from .model.p2_contact_employee_type_enum_deactivated_v3 import P2ContactEmployeeTypeEnumDeactivatedV3
from .model.p2_contact_employee_type_enum_deleted_v3 import P2ContactEmployeeTypeEnumDeletedV3
from .model.p2_contact_employee_type_enum_updated_v3 import P2ContactEmployeeTypeEnumUpdatedV3
from .model.p2_contact_scope_updated_v3 import P2ContactScopeUpdatedV3
from .model.p2_contact_user_created_v3 import P2ContactUserCreatedV3
from .model.p2_contact_user_deleted_v3 import P2ContactUserDeletedV3
from .model.p2_contact_user_updated_v3 import P2ContactUserUpdatedV3


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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