
from typing import Callable, Protocol, Union

from dearpygui_router.screen import Screen, ScreenHandler

Tag = Union[int, str]

class RouterProtocol(Protocol):
    def register(self, route_name: str, screen: ScreenHandler, is_initial=False): ...
    def register_screen_function(self, route_name: str, fn: Callable, is_initial=False): ...
    def register_screen_object(self, route_name: str, obj: Screen, is_initial=False): ...
    def register_screen_item(self, route_name: str, item_tag: Tag, is_initial=False): ...
    def register_screen_factory(self, route_name: str, factory: Callable, is_initial=False): ...
    def navigate(self, route_name: str) -> None: ...
    def home(self): ...
    def add_to_context(self) -> None: ...
    def add_nested(self, router: "RouterProtocol") -> None: ...