import { TAbstractService } from '../../Abstract'; import { TAudioLoop } from '../../Audio'; import { TCollisionsLoop } from '../../Collisions'; import { TControlsLoop } from '../../Controls'; import { TIntersectionsLoop } from '../../Intersections'; import { TKinematicLoop } from '../../Kinematic'; import { LoopType } from '../Constants'; import { TWithCreateService, TWithFactoryService, TWithRegistryService } from '../../Mixins'; import { TMouseLoop } from '../../Mouse'; import { TPhysicsLoop } from '../../Physics'; import { TRenderLoop } from '../../Space'; import { TSpatialLoop } from '../../Spatial'; import { TTextLoop } from '../../Text'; import { TTransformLoop } from '../../TransformDrive'; import { TLoop } from './TLoop'; import { TLoopFactory } from './TLoopFactory'; import { TLoopParams } from './TLoopParams'; import { TLoopRegistry } from './TLoopRegistry'; export type TLoopServiceWithCreate = TWithCreateService; export type TLoopServiceWithFactory = TWithFactoryService; export type TLoopServiceWithRegistry = TWithRegistryService; export type TLoopService = TAbstractService & Readonly<{ getRenderLoop: (name?: string) => TRenderLoop; getAudioLoop: (name?: string) => TAudioLoop; getPhysicsLoop: (name?: string) => TPhysicsLoop; getCollisionsLoop: (name?: string) => TCollisionsLoop; getKinematicLoop: (name?: string) => TKinematicLoop; getSpatialLoop: (name?: string) => TSpatialLoop; getTransformLoop: (name?: string) => TTransformLoop; getTextLoop: (name?: string) => TTextLoop; getMouseLoop: (name?: string) => TMouseLoop; getIntersectionsLoop: (name?: string) => TIntersectionsLoop; getControlsLoop: (name?: string) => TControlsLoop; getLoop: (name: string | undefined, type: LoopType) => TLoop; }> & TLoopServiceWithCreate & TLoopServiceWithFactory & TLoopServiceWithRegistry;