UNPKG

cs-element

Version:

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

92 lines 3.75 kB
/** * Интеграция 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