#pragma once

#include "sdkexport.h"
#include "Pose.h"
#include "ConfData.h"
#include "ExtJoint.h"
#include <string>

namespace mpl {

namespace sdk {
class TypeConversions;
}

class MPL_API RobTarget {
public:
    RobTarget() = delete;
    ~RobTarget();
    RobTarget(const RobTarget&) = default;
    RobTarget& operator=(const RobTarget&) = default;
    RobTarget(RobTarget&&) = default;
    RobTarget& operator=(RobTarget&&) = default;

    unsigned getId() const;
    std::string getName() const;

    Pose getPose() const;
    ConfData getConfData() const;
    ExtJoint getExtJoint() const;

    bool hasExtJoint() const;

    std::string toString() const;

private:
    friend class sdk::TypeConversions;

    explicit RobTarget(const void* impl);

    const void* pimpl;
};

}
