1+ declare module FSM {
2+
3+ export interface FSMDefinitionStateTimer {
4+ timeout : number ;
5+ event : FSM . TransitionMessage ;
6+ }
7+
8+ export interface FSMDefinitionState {
9+ name : string ;
10+ initial : boolean ;
11+ onTimer : FSMDefinitionStateTimer ;
12+ onEnter : string | FSM . StateCallback ;
13+ onExit : string | StateCallback ;
14+ }
15+
16+ export interface FSMDefinitionSubState {
17+ name : string ;
18+ }
19+
20+ export interface FSMDefinitionTransition {
21+ event :string ;
22+ from : string ;
23+ to : string ;
24+ onTransition : string | TransitionCallback ;
25+ onPreGuard : string | TransitionCallback ;
26+ onPostGuard : string | TransitionCallback ;
27+ }
28+
29+ export interface FSMDefinition {
30+ name : string ;
31+ state : FSMDefinitionState [ ] | FSMDefinitionSubState [ ] ;
32+ transition : FSMDefinitionTransition [ ] ;
33+ onEnter : string | StateCallback ;
34+ onExit : string | StateCallback ;
35+ }
36+
37+ export interface TransitionMessage {
38+ msgId : string ;
39+ data ? : any ;
40+ }
41+
42+ export interface ConsumeCallback {
43+ ( session :Session ) :void
44+ }
45+
46+ export interface TransitionCallback {
47+ ( state :State , transition :Transition , message :TransitionMessage ) :void ;
48+ }
49+
50+ export interface StateCallback {
51+ ( state :State , transition :Transition , message :TransitionMessage ) :void ;
52+ }
53+
54+ class Session {
55+
56+ consume ( message : TransitionMessage , consumeCallback ? : FSM . ConsumeCallback ) ;
57+ addListener ( sl : SessionListener ) ;
58+ removeListener ( sl : SessionListener ) ;
59+ printStackTrace ( ) ;
60+ addProperty ( key :string , value :any ) ;
61+ removeProperty ( key :string ) ;
62+ getProperty ( key :string ) : any ;
63+ start ( callback :ConsumeCallback ) : void ;
64+ }
65+
66+ class GuardException {
67+
68+ msg : string ;
69+ toString ( ) : string ;
70+ }
71+
72+ class SessionListener {
73+ contextCreated ( obj ) ;
74+ contextDestroyed ( obj ) ;
75+ finalStateReached ( obj ) ;
76+ stateChanged ( obj ) ;
77+ customEvent ( obj ) ;
78+ guardPreCondition ( obj ) ;
79+ guardPostCondition ( obj ) ;
80+ }
81+
82+ class State {
83+ getName ( ) : string ;
84+ isFinal ( ) : boolean ;
85+ }
86+
87+ class Transition {
88+ getEvent ( ) : string ;
89+ }
90+
91+ export interface StateTransitionCallback {
92+ ( session :Session , state :State , transition :Transition , message :TransitionMessage ) : void ;
93+ }
94+ }
95+
96+ declare module Automata {
97+
98+ export function registerFSM ( object :FSM . FSMDefinition ) ;
99+ export function registerFDA ( object :FSM . FSMDefinition ) ;
100+ export function createSession ( fda_name : string , controller : any ) : FSM . Session ;
101+ export function newGuardException ( message : string ) : FSM . GuardException ;
102+ export function newSessionListener ( obj : any ) : FSM . SessionListener ;
103+
104+ }
0 commit comments