cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
92 lines • 3.75 kB
TypeScript
/**
* Интеграция State Machine в CSElement
*/
import { CSElement } from './CSElement';
import { IStateMachine, StateMachineConfig, StateMachineManager, StateMachineEventType, StateMachineEventCallback, TransitionResult } from '../types/state-machine-interfaces';
/**
* Расширение CSElement для поддержки State Machine
*/
export declare class StateMachineIntegration {
private static _globalStateMachineManager;
/**
* Получить глобальный менеджер State Machine
*/
static get stateMachineManager(): StateMachineManager;
/**
* Создать State Machine для элемента
*/
static createStateMachine(element: CSElement, config: StateMachineConfig): IStateMachine;
/**
* Получить State Machine элемента
*/
static getStateMachine(element: CSElement): IStateMachine | undefined;
/**
* Удалить State Machine элемента
*/
static removeStateMachine(element: CSElement): boolean;
/**
* Проверить, есть ли у элемента State Machine
*/
static hasStateMachine(element: CSElement): boolean;
/**
* Получить все State Machine
*/
static getAllStateMachines(): Map<string, IStateMachine>;
/**
* Найти State Machine по состоянию
*/
static findByState(state: string): IStateMachine[];
/**
* Отправить событие всем State Machine в определенном состоянии
*/
static sendToState(state: string, event: string, payload?: any): Promise<Map<string, TransitionResult>>;
/**
* Получить статистику State Machine
*/
static getStats(): {
total: number;
byState: Map<string, number>;
byName: Map<string, number>;
};
/**
* Очистить все State Machine
*/
static clear(): void;
}
/**
* Методы для добавления в CSElement
*/
export interface CSElementStateMachineMethods {
createStateMachine(config: StateMachineConfig): IStateMachine;
getStateMachine(): IStateMachine | undefined;
removeStateMachine(): boolean;
hasStateMachine(): boolean;
getCurrentState(): string | undefined;
canTransition(event: string, toState?: string): boolean;
getPossibleTransitions(): any[];
getStateHistory(): any[];
sendStateMachineEvent(event: string, payload?: any): Promise<TransitionResult | undefined>;
onStateChanged(callback: StateMachineEventCallback): string | undefined;
onTransitionStarted(callback: StateMachineEventCallback): string | undefined;
onTransitionCompleted(callback: StateMachineEventCallback): string | undefined;
onTransitionFailed(callback: StateMachineEventCallback): string | undefined;
offStateMachineEvent(eventType: StateMachineEventType, callbackId: string): boolean;
resetStateMachine(): Promise<void>;
destroyStateMachine(): void;
}
/**
* Миксин для добавления методов State Machine в CSElement
*/
export declare function addStateMachineMethods(CSElementClass: typeof CSElement): void;
declare module './CSElement' {
interface CSElement extends CSElementStateMachineMethods {
}
namespace CSElement {
function getStateMachineManager(): StateMachineManager;
function findElementsByState(state: string): CSElement[];
function sendEventToElementsInState(state: string, event: string, payload?: any): Promise<Map<string, TransitionResult>>;
function getStateMachineStats(): any;
function clearAllStateMachines(): void;
}
}
//# sourceMappingURL=StateMachineIntegration.d.ts.map