syntax = "proto3"; option optimize_for = LITE_RUNTIME; package fsmproto; message Action { string type = 1; map params = 2; } message ConditionValue { string param_name = 1; string symbol = 2; string compare_value = 3; } message ConditionData { repeated ConditionValue values = 1; } message Transition { string src = 1; string dst = 2; string event = 3; repeated ConditionData condition = 4; repeated Action before_switch_actions = 5; repeated Action after_switch_actions = 6; } message State { string name = 1; repeated Action entry = 2; repeated Action idle = 3; repeated Action exit = 4; string fsm_name = 5; string state_delegate_key = 6; } message Param { string type = 1; string default_value = 2; } message StateMachine { string init_state_name = 1; string machine_type = 2; map params = 3; repeated State states = 4; repeated Transition transitions = 5; }