#pragma once

#include "../CommandHistory.h"
#include <pxr/usd/usd/stage.h>
#include <pxr/usd/sdf/path.h>
#include <pxr/usd/sdf/layer.h>
#include <pxr/base/tf/token.h>
#include <string>

namespace UsdLayerManager {

class CreatePrimCommand : public ICommand {
public:
    CreatePrimCommand(pxr::UsdStageRefPtr stage,
                      const pxr::SdfPath&  primPath,
                      const pxr::TfToken&  typeName);

    void Execute() override;
    void Undo()    override;
    std::string GetDescription() const override { return m_description; }

private:
    pxr::UsdStageRefPtr m_stage;
    pxr::SdfPath        m_primPath;
    pxr::TfToken        m_typeName;
    std::string         m_description;
};

} // namespace UsdLayerManager
