11declare module FSM {
22
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+
337 export interface TransitionMessage {
438 msgId : string ;
539 data ? : any ;
@@ -9,6 +43,14 @@ declare module FSM {
943 ( session :Session ) :void
1044 }
1145
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+
1254 class Session {
1355
1456 consume ( message : TransitionMessage , consumeCallback ? : FSM . ConsumeCallback ) ;
@@ -53,10 +95,10 @@ declare module FSM {
5395
5496declare module Automata {
5597
56- export function registerFSM ( object :any ) ;
57- export function registerFDA ( object :any ) ;
58- export function createSession ( fda_name : string , controller : any ) : FSM . Session ;
59- export function newGuardException ( message : string ) : FSM . GuardException ;
60- export function newSessionListener ( obj : any ) : FSM . SessionListener ;
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 ;
61103
62104}
0 commit comments