#ifndef IOPTIMIZER_H
#define IOPTIMIZER_H
#include "json.hpp"
#include <IModule.h>
#include "IManager.h"

namespace mdd {
	class IOptimizer
		: public IManager
	{
		public:
			typedef std::shared_ptr<IOptimizer> Ptr;

			virtual bool connect(std::shared_ptr<IModule> module) = 0;
			
			virtual bool setEvaluation(std::string func) = 0;
			virtual double update() = 0;
			virtual void attachCallback(std::function<json(const json&)> callback) = 0;
			virtual json getPermutations() = 0;
	};
}
#endif // !IOPTIMIZER_H
