import { TSerializableEntitiesService } from '../../Abstract'; import { TActorService } from '../../Actor'; import { TCameraService } from '../../Camera'; import { TLoopService } from '../../Loop'; import { TWithCreateFromConfigService, TWithCreateService, TWithFactoryService, TWithRegistryService } from '../../Mixins'; import { TMouseService } from '../../Mouse'; import { TAnyIntersectionsWatcher } from './TAnyIntersectionsWatcher'; import { TAnyIntersectionsWatcherConfig } from './TAnyIntersectionsWatcherConfig'; import { TAnyIntersectionsWatcherParams } from './TAnyIntersectionsWatcherParams'; import { TIntersectionsCameraWatcher } from './TIntersectionsCameraWatcher'; import { TIntersectionsDirectionWatcher } from './TIntersectionsDirectionWatcher'; import { TIntersectionsWatcherFactory } from './TIntersectionsWatcherFactory'; import { TIntersectionsWatcherRegistry } from './TIntersectionsWatcherRegistry'; export type TIntersectionsWatcherServiceWithCreate = TWithCreateService; export type TIntersectionsWatcherServiceWithCreateFromConfig = Omit, 'createFromConfig'>; export type TIntersectionsWatcherServiceWithFactory = TWithFactoryService; export type TIntersectionsWatcherServiceWithRegistry = TWithRegistryService; export type TIntersectionsWatcherService = TSerializableEntitiesService & TIntersectionsWatcherServiceWithCreate & TIntersectionsWatcherServiceWithCreateFromConfig & Readonly<{ createFromConfig: (configs: ReadonlyArray, mouseService: TMouseService, cameraService: TCameraService, actorsService: TActorService, loopService: TLoopService) => ReadonlyArray; findCameraWatcher: (name: string) => TIntersectionsCameraWatcher | undefined | never; getCameraWatcher: (name: string) => TIntersectionsCameraWatcher | never; findDirectionWatcher: (name: string) => TIntersectionsDirectionWatcher | undefined | never; getDirectionWatcher: (name: string) => TIntersectionsDirectionWatcher | never; }> & TIntersectionsWatcherServiceWithFactory & TIntersectionsWatcherServiceWithRegistry;