import { TSerializableEntitiesService, TSerializableResourceService } from '../../Abstract'; import { FsmEventsStrategy } from '../Constants'; import { TFsmConfig, TFsmInstanceRegistry, TFsmParams, TFsmSource, TFsmStates, TFsmWrapper } from '.'; import { TWithFactoryService } from '../../Mixins'; import { TFsmInstanceFactory } from './TFsmInstanceFactory'; import { TFsmSourceRegistry } from './TFsmSourceRegistry'; export type TFsmServiceWithFactory = TWithFactoryService; export type TFsmService = TSerializableEntitiesService & TSerializableResourceService & TFsmServiceWithFactory & Readonly<{ create: (params: TFsmParams, force?: boolean) => TFsmWrapper | never; createFromList: (params: ReadonlyArray, force?: boolean) => ReadonlyArray; createInstance: (source: TFsmSource) => TFsmWrapper; createInstanceBySourceName: (sourceName: string, currentState?: TFsmStates, strategy?: FsmEventsStrategy) => TFsmWrapper; createInstanceFromList: (source: ReadonlyArray) => ReadonlyArray; createSource: (source: TFsmParams) => TFsmSource; createSourceFromConfig: (fsm: ReadonlyArray) => ReadonlyArray; createSourceFromList: (source: ReadonlyArray) => ReadonlyArray; getInstanceRegistry: () => TFsmInstanceRegistry; getSourceRegistry: () => TFsmSourceRegistry; }>;