Empire.EnergyManager : components.EnergyManager::EnergyManager {
restricted local:
	safe uint get_abilityCount() const;
	Ability@[] getAbilities() const;
	Ability@[] getAbility(int id) const;
	Ability@[] getAbilityOfType(uint id) const;
	uint get_abilityTypes(int id) const;

restricted remote:
	async relocking void activateAbility(int id);
	async relocking void activateAbility(int id, vec3d point);
	async relocking void activateAbility(int id, Object@ target);
	
server:
	void powerTick(double time);

	int addAbility(uint id);
	void removeAbility(int id);
	void disableAbility(int id);
	void enableAbility(int id);

//Networking
	void writeAbilities(Message& msg) const;
	bool writeAbilityDelta(Message& msg) const;

shadow:
	void readAbilities(Message& msg);
	void readAbilityDelta(Message& msg);
}
