from typing import overload, Any, Callable, TypeVar, Union
from typing import Tuple, List, Sequence, MutableSequence

Callback = Union[Callable[..., None], None]
Buffer = TypeVar('Buffer')
Pointer = TypeVar('Pointer')
Template = TypeVar('Template')

import vtkmodules.vtkCommonCore
import vtkmodules.vtkRenderingCore
import vtkmodules.vtkViewsCore

class vtkContextInteractorStyle(vtkmodules.vtkRenderingCore.vtkInteractorStyle):
    def GetNumberOfGenerationsFromBase(self, type:str) -> int: ...
    @staticmethod
    def GetNumberOfGenerationsFromBaseType(type:str) -> int: ...
    def GetScene(self) -> 'vtkContextScene': ...
    def IsA(self, type:str) -> int: ...
    @staticmethod
    def IsTypeOf(type:str) -> int: ...
    def NewInstance(self) -> 'vtkContextInteractorStyle': ...
    def OnChar(self) -> None: ...
    def OnKeyPress(self) -> None: ...
    def OnKeyRelease(self) -> None: ...
    def OnLeftButtonDoubleClick(self) -> None: ...
    def OnLeftButtonDown(self) -> None: ...
    def OnLeftButtonUp(self) -> None: ...
    def OnMiddleButtonDoubleClick(self) -> None: ...
    def OnMiddleButtonDown(self) -> None: ...
    def OnMiddleButtonUp(self) -> None: ...
    def OnMouseMove(self) -> None: ...
    def OnMouseWheelBackward(self) -> None: ...
    def OnMouseWheelForward(self) -> None: ...
    def OnRightButtonDoubleClick(self) -> None: ...
    def OnRightButtonDown(self) -> None: ...
    def OnRightButtonUp(self) -> None: ...
    def OnSceneModified(self) -> None: ...
    def OnSelection(self, rect:MutableSequence[int]) -> None: ...
    @staticmethod
    def SafeDownCast(o:'vtkObjectBase') -> 'vtkContextInteractorStyle': ...
    def SetScene(self, scene:'vtkContextScene') -> None: ...

class vtkContextView(vtkmodules.vtkViewsCore.vtkRenderViewBase):
    def GetContext(self) -> 'vtkContext2D': ...
    def GetNumberOfGenerationsFromBase(self, type:str) -> int: ...
    @staticmethod
    def GetNumberOfGenerationsFromBaseType(type:str) -> int: ...
    def GetScene(self) -> 'vtkContextScene': ...
    def IsA(self, type:str) -> int: ...
    @staticmethod
    def IsTypeOf(type:str) -> int: ...
    def NewInstance(self) -> 'vtkContextView': ...
    @staticmethod
    def SafeDownCast(o:'vtkObjectBase') -> 'vtkContextView': ...
    def SetContext(self, context:'vtkContext2D') -> None: ...
    def SetScene(self, scene:'vtkContextScene') -> None: ...

