import enum
from ..qt import QKeyEvent as QKeyEvent, QMouseEvent as QMouseEvent, QRect as QRect, QWheelEvent as QWheelEvent, QWidget as QWidget, Qt as Qt, Signal as Signal
from _typeshed import Incomplete

class QCodeExtension(QWidget):
    A_NAME: str
    A_Z_ORDER: int
    editor: QCodeEditor
    def __init__(self, editor: QCodeEditor) -> None: ...
    def initialize(self) -> None: ...
    def shutdown(self) -> None: ...
    def beforeEditorKeyPressEvent(self, event: QKeyEvent) -> bool: ...
    def afterEditorKeyPressEvent(self, event: QKeyEvent): ...
    def editorMouseMoveEvent(self, event: QMouseEvent) -> bool: ...
    def editorMousePressEvent(self, event: QMouseEvent) -> bool: ...

class QCodePanel(QCodeExtension):
    class Area(enum.StrEnum):
        Top = 'top'
        Left = 'left'
        Right = 'right'
        Bottom = 'bottom'
        HorizontalScrollFollower = 'horizontal-scroll-follower'
    A_AREA: Area
    A_AREA_GRAVITY: int
    A_SCROLLABLE: bool
    sizeHintChanged: Incomplete
    editor: QCodeEditor
    orderInZone: int
    def __init__(self, editor: QCodeEditor) -> None: ...
    def wheelEvent(self, event: QWheelEvent): ...
    def sizeHint(self) -> None: ...
    def geometry(self): ...
    def syncGeometryWithContentXpos(self) -> None: ...
    def update(self, viewportRect: QRect = None, viewportDyScrolled: int = 0): ...
