# mypy: disable-error-code="misc, override, attr-defined, no-redef, assignment"

import ConfigurationAPI_cmodule as Configuration
import UI4.Util.ExternalTools as ExternalTools
import UI4.Util.FileHelpers as FileHelpers
import PyQt5.QtWidgets
import PyXmlIO as PyXmlIO
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import RenderingAPI as RenderingAPI
import UI4.App.Tabs as Tabs
from UI4.Tabs.BaseTab import BaseTab as BaseTab
from typing import ClassVar, Set, Tuple

KATANA_ROOT: str
NODES_ROOT: str
PROJECTS_XML_PATH: str
SCENES_ROOT: str
THUMBS_ROOT: str

class ExampleProjectsTab(BaseTab):
    def __init__(self, parent) -> None: ...
    def _ExampleProjectsTab__constructLayout(self): ...
    def _ExampleProjectsTab__on_anchorClicked(self, url): ...
    def _ExampleProjectsTab__on_itemSelectionChanged(self): ...
    def openScene(self, index: int = ...): ...
    def showProject(self, project: Project): ...
    def showSection(self, section: Section): ...

class Project:
    def __init__(self, title, description, thumbnail, scenes, nodes) -> None: ...

class ProjectDataBrowserWidget(PyQt5.QtWidgets.QTextBrowser):
    PROJECT_HTML: ClassVar[str] = ...
    PROJECT_STYLESHEET: ClassVar[str] = ...
    def __init__(self) -> None: ...
    def clearDescription(self): ...
    def showProject(self, project: Project): ...

class ProjectListTreeWidget(PyQt5.QtWidgets.QTreeWidget):
    def __init__(self) -> None: ...
    def populate(self, sectionTitles: list[str], sections: dict[str, Section]): ...

class ProjectScene:
    def __init__(self, renderer, path) -> None: ...

class Section:
    def __init__(self, title, projectTitles) -> None: ...

def ParseProjectsXml(filename: str) -> tuple[list, dict, dict]: ...
