import vtkCompositeCameraManipulator, {
  ICompositeCameraManipulatorInitialValues,
} from './CompositeCameraManipulator';
import vtkCompositeMouseManipulator, {
  ICompositeMouseManipulatorInitialValues,
} from './CompositeMouseManipulator';
import { vtkObject } from './../../interfaces';

export interface vtkMouseCameraTrackballRollManipulator
  extends vtkObject,
    vtkCompositeCameraManipulator,
    vtkCompositeMouseManipulator {}

export interface IMouseCameraTrackballRollManipulatorInitialValues
  extends ICompositeCameraManipulatorInitialValues,
    ICompositeMouseManipulatorInitialValues {}

export function newInstance(
  initialValues?: IMouseCameraTrackballRollManipulatorInitialValues
): vtkMouseCameraTrackballRollManipulator;

export function extend(
  publicAPI: object,
  model: object,
  initialValues?: IMouseCameraTrackballRollManipulatorInitialValues
): void;

export const vtkMouseCameraTrackballRollManipulator: {
  newInstance: typeof newInstance;
  extend: typeof extend;
};

export default vtkMouseCameraTrackballRollManipulator;
