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.vtkCommonExecutionModel

class vtkVPICReader(vtkmodules.vtkCommonExecutionModel.vtkImageAlgorithm):
    def DisableAllPointArrays(self) -> None: ...
    def EnableAllPointArrays(self) -> None: ...
    def GetFileName(self) -> str: ...
    def GetNumberOfGenerationsFromBase(self, type:str) -> int: ...
    @staticmethod
    def GetNumberOfGenerationsFromBaseType(type:str) -> int: ...
    def GetNumberOfPointArrays(self) -> int: ...
    @overload
    def GetOutput(self) -> 'vtkImageData': ...
    @overload
    def GetOutput(self, index:int) -> 'vtkImageData': ...
    def GetPointArrayName(self, index:int) -> str: ...
    def GetPointArrayStatus(self, name:str) -> int: ...
    def GetStride(self) -> Tuple[int, int, int]: ...
    def GetXLayout(self) -> Tuple[int, int]: ...
    def GetYLayout(self) -> Tuple[int, int]: ...
    def GetZLayout(self) -> Tuple[int, int]: ...
    def IsA(self, type:str) -> int: ...
    @staticmethod
    def IsTypeOf(type:str) -> int: ...
    def NewInstance(self) -> 'vtkVPICReader': ...
    @staticmethod
    def SafeDownCast(o:'vtkObjectBase') -> 'vtkVPICReader': ...
    def SetFileName(self, _arg:str) -> None: ...
    def SetPointArrayStatus(self, name:str, status:int) -> None: ...
    @overload
    def SetStride(self, _arg1:int, _arg2:int, _arg3:int) -> None: ...
    @overload
    def SetStride(self, _arg:Sequence[int]) -> None: ...
    @overload
    def SetXExtent(self, _arg1:int, _arg2:int) -> None: ...
    @overload
    def SetXExtent(self, _arg:Sequence[int]) -> None: ...
    @overload
    def SetYExtent(self, _arg1:int, _arg2:int) -> None: ...
    @overload
    def SetYExtent(self, _arg:Sequence[int]) -> None: ...
    @overload
    def SetZExtent(self, _arg1:int, _arg2:int) -> None: ...
    @overload
    def SetZExtent(self, _arg:Sequence[int]) -> None: ...

