from dishka import BaseScope, Provider, Scope, provide_all

from template_project.application.auth_identity.interactors.sign_in import SignInInteractor
from template_project.application.auth_identity.interactors.sign_up import SignUpInteractor
from template_project.application.notification_device.interactors.register_device import (
    RegisterNotificationDeviceInteractor,
)
from template_project.application.notification_device.interactors.send_notification import NotificationInteractor
from template_project.application.resume.interactors.add import AddResumeInteractor
from template_project.application.resume.interactors.edit import EditResumeInteractor
from template_project.application.resume.interactors.get import (
    GetResumeHistoryInteractor,
    GetResumeInteractor,
    GetResumeListInteractor,
)
from template_project.application.resume.interactors.prediction_pipeline import ResumePredictionInteractor
from template_project.application.user.profile.interactors.get_profile import GetProfileInteractor
from template_project.application.user.profile.interactors.patch_profile import PatchProfileInteractor


class InteractorProvider(Provider):
    scope: BaseScope | None = Scope.REQUEST

    interactors = provide_all(
        SignInInteractor,
        SignUpInteractor,
        GetProfileInteractor,
        PatchProfileInteractor,
        NotificationInteractor,
        RegisterNotificationDeviceInteractor,
        GetResumeInteractor,
        GetResumeListInteractor,
        GetResumeHistoryInteractor,
        AddResumeInteractor,
        EditResumeInteractor,
        ResumePredictionInteractor,
    )
