package org.zstack.core.statemachine;
public interface StateMachine<T extends Enum<T>, K extends Enum<K>> {
void addTranscation(T old, K evt, T next);
T getNextState(T old, K evt);
void addListener(StateMachineListener<T, K> l);
void removeListener(StateMachineListener<T, K> l);
void fireBeforeListener(T old, K evt, T next, Object...args);
void fireAfterListener(T prev, K evt, T curr, Object...args);
}