import { TWrapper } from '../../Abstract'; import { TAnyCameraWrapper } from '../../Camera'; import { ControlsType } from '../Constants'; import { TMilliseconds } from '../../Math'; import { TWithActiveMixin } from '../../Mixins'; import { TReadonlyVector3 } from '../../ThreeLib'; import { Euler, Quaternion, Vector3 } from 'three'; import { OrbitControls } from '../../../../../node_modules/@types/three/examples/jsm/controls/OrbitControls'; import { TControlsServiceDependencies } from './TControlsServiceDependencies'; import { TOrbitControlsAccessors } from './TOrbitControlsAccessors'; import { TOrbitControlsConfig } from './TOrbitControlsConfig'; export type TOrbitControlsWrapper = Omit, 'serialize'> & Readonly<{ serialize: (dependencies: TControlsServiceDependencies) => TOrbitControlsConfig; }> & TOrbitControlsAccessors & Readonly<{ update: (delta: TMilliseconds) => boolean; enable: () => void; isEnable: () => boolean; disable: () => void; moveToTargetSmoothly: (position: TReadonlyVector3 | Vector3) => void; rotateCameraBy: (rotation: Quaternion | Euler) => void; rotateCameraTo: (rotation: Quaternion | Euler) => void; getCamera: () => TAnyCameraWrapper; getType: () => ControlsType; }> & TWithActiveMixin;