from abc import ABC, abstractmethod
from analogai.deepthink.application.usecases.learning.make_hypothetical_statement.models import (
    MakeHypotheticalStatementRequest,
    MakeHypotheticalStatementResponse,
)


class MakeHypotheticalStatementInputPort(ABC):
    @abstractmethod
    def execute(self, request: MakeHypotheticalStatementRequest):
        pass


class MakeHypotheticalStatementOutputPort(ABC):
    @abstractmethod
    def output_create_statement_success(self, response: MakeHypotheticalStatementResponse) -> object | None:
        pass

    @abstractmethod
    def output_forbidden(self, response: MakeHypotheticalStatementResponse) -> object | None:
        pass
