 #pragma once
 
 #include "SimCore/Messages/SimTrack.hpp"
#include "nlohmann/json_fwd.hpp"
#include <string>

 namespace SimControl
{
    
    class TrackItem : public SimCore::SimTrack
        {

            public: 
            /**
             * @brief Construct a new Track Item object
             * 
             * @param track 
             */
            TrackItem(SimCore::SimTrack track);

            /**
             * @brief mark track as deleteed
             * 
             */
            void markAsDelete();

            /**
             * @brief 
             * 
             * @return true if is marked as deleted
             * @return false if not
             */
            bool isMarkedAsDelete();

            /**
             * @brief Get the Last Update Timestamp object
             * 
             * @return std::chrono::time_point<std::chrono::system_clock> 
             */
            std::time_t getLastUpdateTimestamp();


            /**
            * @brief 
            * 
            * @return nlohmann::json 
            */
             nlohmann::json toJSON();

             /**
              * @brief 
              * 
              * @return std::string 
              */
             std::string toString();


            private: 
                bool markedAsDeleted; 
                std::time_t lastReceiveTimestamp_; 


        };

}