package tk.amberide.ide.data.state;
import tk.amberide.ide.data.state.node.IState;
import java.util.Collection;
public interface IStateManager {
void registerStateOwner(Object owner);
void unregisterStateOwner(Object owner);
void registerMacro(String macro, String value);
void unregisterMacro(String macro);
void registerStateListener(Class listener);
void unregisterStateListener(Class listener);
int clearMacros();
IState getState(int scope, String name);
void addState(int scope, IState state);
void addState(int scope, String key, Object value);
void removeState(int scope, String key);
void removeState(int scope, IState state);
void addStates(int scope, Collection<IState> states);
void clearStates(int scope);
void clearStates();
Collection<IState> getStates(int scope);
void emitStates(int scope) throws Exception;
void emitStates() throws Exception;
void loadStates(int scope) throws Exception;
void loadStates() throws Exception;
}