import torch
from abc import abstractmethod
from typing import List

from ..model import ScoreModel


class VQAScoreModel(ScoreModel):

    @abstractmethod
    def forward(self, images: List[str], texts: List[str], question_template: str,
                answer_template: str) -> torch.Tensor:
        """Forward pass of the model to return n scores for n (image, text) pairs (in PyTorch Tensor)
        question_template: a string with optional {} to be replaced with the 'text'
        answer_template: a string with optional {} to be replaced with the 'text'
        """
        pass
