UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

74 lines 2.59 kB
/** * Базовая реализация State Machine для CSElement */ import { EventEmitter } from 'eventemitter3'; import { IStateMachine, StateMachineConfig, StateMachineContext, StateMachineEvent, StateMachineEventType, StateMachineEventCallback, State, Transition, TransitionResult, TransitionHistoryEntry } from '../types/state-machine-interfaces'; import { ICSElement } from '../types/interfaces'; /** * Реализация State Machine */ export declare class StateMachine extends EventEmitter implements IStateMachine { private _config; private _context; private _states; private _transitions; private _transitionsByEvent; private _callbacks; private _destroyed; constructor(element: ICSElement, config: StateMachineConfig); get name(): string; get currentState(): string; get context(): StateMachineContext; get config(): StateMachineConfig; /** * Отправить событие в state machine */ send(event: string | StateMachineEvent, payload?: any): Promise<TransitionResult>; /** * Проверить, возможен ли переход */ canTransition(event: string, toState?: string): boolean; /** * Получить возможные переходы из текущего состояния */ getPossibleTransitions(): Transition[]; /** * Получить состояние по имени */ getState(name: string): State | undefined; /** * Получить переход по ID */ getTransition(id: string): Transition | undefined; /** * Получить историю переходов */ getHistory(limit?: number): TransitionHistoryEntry[]; /** * Сбросить state machine в начальное состояние */ reset(): Promise<void>; /** * Уничтожить state machine */ destroy(): void; /** * Подписаться на события state machine */ subscribe(event: StateMachineEventType, callback: StateMachineEventCallback): string; /** * Отписаться от событий */ unsubscribe(event: StateMachineEventType, callbackId: string): boolean; private validateConfig; private initializeStates; private initializeTransitions; private findTransitionsForEvent; private canExecuteTransition; private executeTransition; private enterState; private exitState; private emitEvent; private generateId; } //# sourceMappingURL=StateMachine.d.ts.map