from ralium.webpage import WebHook
from ralium.config import WindowConfig
from ralium.window import Window

from ralium._util import (
    FunctionType,
    FilePathStr, 
    DirPathStr, 
    Callable,
    _RT
)

def _check_web_folder(webfolder: FilePathStr) -> None: ...
def _check_web_routes(webroutes: DirPathStr) -> None: ...
def _collect_global_css_files(webfolder: DirPathStr) -> list[FilePathStr]: ...
def _get_registry_contents(pyfile: FilePathStr) -> list[FunctionType]: ...
def _collect_webhooks(webfolder: DirPathStr, webroutes: DirPathStr) -> list[WebHook]: ...

class Module:
    _module_api_class: bool

    def __init__(self, *functions: tuple[FunctionType], **named_functions: dict[str, FunctionType]) -> None: ...

def create_window(webfolder: DirPathStr, config: WindowConfig | None = None) -> Window: ...
def register() -> Callable[..., _RT]: ...
def namespace(name: str, *functions: tuple[FunctionType], **named_functions: dict[str, FunctionType]) -> None: ...
def wrap(function: FunctionType) -> Callable[..., _RT]: ...