# Code generated by Lark OpenAPI.

from typing import Callable, Type

from lark_oapi.event.processor import IEventProcessor
from .model.p2_hire_application_stage_changed_v1 import P2HireApplicationStageChangedV1
from .model.p2_hire_eco_account_created_v1 import P2HireEcoAccountCreatedV1
from .model.p2_hire_eco_background_check_canceled_v1 import P2HireEcoBackgroundCheckCanceledV1
from .model.p2_hire_eco_background_check_created_v1 import P2HireEcoBackgroundCheckCreatedV1
from .model.p2_hire_eco_exam_created_v1 import P2HireEcoExamCreatedV1
from .model.p2_hire_ehr_import_task_for_internship_offer_imported_v1 import \
    P2HireEhrImportTaskForInternshipOfferImportedV1
from .model.p2_hire_ehr_import_task_imported_v1 import P2HireEhrImportTaskImportedV1
from .model.p2_hire_offer_status_changed_v1 import P2HireOfferStatusChangedV1
from .model.p2_hire_referral_account_assets_update_v1 import P2HireReferralAccountAssetsUpdateV1


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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