from PySide2 import QtCore as core
from _typeshed import Incomplete
from collections.abc import Generator

class BaseItem:
    COLUMN_COUNT: int
    def __init__(self, parent: Incomplete | None = ...) -> None: ...
    def loadChildItems(self) -> None: ...
    def addChildItem(self, item, atIndex: Incomplete | None = ...) -> None: ...
    def childCount(self, forceLoad: bool = ...): ...
    def getChildItemAtIndex(self, index): ...
    def getIndexOfChildItem(self, childItem): ...
    def columnCount(self): ...
    def data(self, column: int = ..., role=...) -> None: ...
    def hasChildItems(self): ...
    def modelIndex(self, column: int = ...): ...
    def flags(self, column): ...
    def setValue(self, value, column: int = ...): ...
    def reset(self) -> None: ...
    def clear(self) -> None: ...
    def iterChildItems(self) -> Generator[Incomplete, None, None]: ...
    @property
    def parentItem(self): ...
    @property
    def model(self): ...

class BaseItemModel(core.QAbstractItemModel):
    def __init__(self, parent: Incomplete | None = ...) -> None: ...
    def getItemFromIndex(self, index): ...
    def index(self, row, column, parent=...): ...
    def parent(self, index): ...
    def rowCount(self, parent: Incomplete | None = ...): ...
    def columnCount(self, parent: Incomplete | None = ...): ...
    def flags(self, index): ...
    def data(self, index, role=...): ...
    def setData(self, index, value, role=...): ...
    def batchSetData(self, indices, value, role=...): ...

class BaseItemModelProxy(core.QSortFilterProxyModel):
    def __init__(self, model, parent: Incomplete | None = ...) -> None: ...
    @property
    def model(self): ...
    def getItemFromIndex(self, index): ...
