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

from messageprocessor import MessageProcessor
from simplehttprouter import Route

from ._BaseRouteDefinition import BaseRouteDefinition


class AutoMappedRouteBuilder(ABC):

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