from abc import abstractmethod
from collections.abc import Sequence
from typing import Protocol

from template_project.application.resume.entity import Resume, ResumePrediction
from template_project.application.vacancy.data_structure import SuitableVacancy


class ResumePredictionGenerator(Protocol):
    @abstractmethod
    async def generate(
        self,
        resume: Resume,
        suitable_vacancies: Sequence[SuitableVacancy],
    ) -> ResumePrediction:
        raise NotImplementedError
