import { TWrapper } from '../../Abstract'; import { TAnyCameraWrapper } from '../../Camera'; import { ControlsType } from '../Constants'; import { TMilliseconds } from '../../Math'; import { TWithActiveMixin } from '../../Mixins'; import { Euler, EventDispatcher, Quaternion } from 'three'; import { FirstPersonControls } from '../../../../../node_modules/@types/three/examples/jsm/controls/FirstPersonControls'; import { TControlsServiceDependencies } from './TControlsServiceDependencies'; import { TFpsControlsAccessors } from './TFpsControlsAccessors'; import { TFpsControlsConfig } from './TFpsControlsConfig'; export type TFpsControlsWrapper = Omit, 'serialize'> & Readonly<{ serialize: (dependencies: TControlsServiceDependencies) => TFpsControlsConfig; }> & TFpsControlsAccessors & Readonly<{ enable: () => void; update: (delta: TMilliseconds) => void; isEnable: () => boolean; disable: () => void; getType: () => ControlsType; rotateCameraBy: (rotation: Quaternion | Euler) => void; rotateCameraTo: (rotation: Quaternion | Euler) => void; getCamera: () => TAnyCameraWrapper; }> & TWithActiveMixin;