import { TSerializableEntitiesService } from '../../Abstract'; import { TWithFactoryService, TWithRegistryService } from '../../Mixins'; import { TransformAgent } from '../Constants'; import { TOptional } from '@hellpig/anarchy-shared/Utils'; import { TAbstractTransformAgent } from './TAbstractTransformAgent'; import { TGetTransformAgentsOptions, TGetTransformAgentsParams } from './TGetTransformAgentsParams'; import { TTransformAgents } from './TTransformAgents'; import { TTransformDrive, TTransformDriveCompatibleEntity } from './TTransformDrive'; import { TTransformDriveFactory } from './TTransformDriveFactory'; import { TTransformDriveFactoryParams } from './TTransformDriveFactoryParams'; import { TTransformDriveParams } from './TTransformDriveParams'; import { TTransformDriveRegistry } from './TTransformDriveRegistry'; import { TTransformDriveSerializedData } from './TTransformDriveSerializedData'; export type TCreateFromServiceTransformDriveFn = (params: P1, agents: P2) => T; export type TWithCreateTransformDriveService = Readonly<{ create: TCreateFromServiceTransformDriveFn; createFromList: (paramsList: ReadonlyArray, agentsList: ReadonlyArray) => ReadonlyArray; }>; export type TTransformDriveServiceWithCreate = TWithCreateTransformDriveService, TTransformDriveParams, Partial>>; export type TTransformDriveServiceWithFactory = TWithFactoryService, TTransformDriveFactoryParams, undefined, TTransformDriveFactory>; export type TTransformDriveServiceWithRegistry = TWithRegistryService; export type TTransformDriveService = TSerializableEntitiesService, TTransformDriveSerializedData> & TTransformDriveServiceWithCreate & TTransformDriveServiceWithFactory & TTransformDriveServiceWithRegistry & Readonly<{ getTransformAgents: (params: TGetTransformAgentsParams, options: TGetTransformAgentsOptions) => TOptional; }>;