#pragma once

#include <softbus_api/ExecuteCommand.h>
#include <softbus_edge/egress/ShadowChannelStore.h>
#include <softbus_registry/PointRegistry.h>
#include <softbus_edge/egress/UplinkClient.h>

namespace softbus::edge {

class CommandExecutor {
public:
    CommandExecutor(softbus::registry::PointRegistry* registry,
                    ShadowChannelStore* store,
                    UplinkClient* uplink,
                    std::string deviceId);

    softbus::core::SoftbusAck execute(const softbus::api::ExecuteCommand& command);

private:
    softbus::registry::PointRegistry* registry_{nullptr};
    ShadowChannelStore* store_{nullptr};
    UplinkClient* uplink_{nullptr};
    std::string deviceId_;
};

} // namespace softbus::edge
