#pragma once

#include <memory>
#include "IUnique.h"
#include "IState.h"
#include "IConnection.h"
#include "IOptimizable.h"
#include "IManager.h"

namespace mdd {
    template <class T>
    class IInteractive
        : public IState
        , public IConnection<T>
        , public IOptimizable
        , public IManager
    {
    public:
        typedef std::shared_ptr<IInteractive> Ptr;
        virtual std::string setName(const std::string& name) = 0;
        virtual std::string getName() = 0;
    };
}