from abc import ABC, abstractmethod
from typing import Type, Dict, Union

from simplehttprouter import Route

from messageprocessor import MessageProcessor
from ._AutoMappedWebApi import AutoMappedWebApi

AnyType = Type["AnyType"]


class AutoMappedRouteBuilder(ABC):

    @abstractmethod
    def build_routes(self) -> Dict[Route, Union[Type[MessageProcessor], AutoMappedWebApi]]:
        raise NotImplementedError()
