from __future__ import annotations

from abc import ABC, abstractmethod

from ai_orchestrator.schemas.task_request import TaskRequest


class OrchestratorEngine(ABC):
    @abstractmethod
    async def submit_task(self, task_id: str, request: TaskRequest) -> None:
        raise NotImplementedError

    @abstractmethod
    async def get_status(self, task_id: str):
        raise NotImplementedError

    @abstractmethod
    async def get_result(self, task_id: str):
        raise NotImplementedError

    @abstractmethod
    async def cancel_task(self, task_id: str) -> None:
        raise NotImplementedError
