from abc import ABC, abstractmethod from fastapi import UploadFile from typing import Dict, Optional class ILevelController(ABC): @abstractmethod async def generate_exercises(self, dto): pass @abstractmethod async def get_level_exam(self): pass @abstractmethod async def get_level_utas(self): pass @abstractmethod async def upload_level(self, file: UploadFile, solutions: Optional[UploadFile] = None): pass @abstractmethod async def get_custom_level(self, data: Dict): pass