#pragma once

#include <softbus_api/ExecuteCommand.h>
#include <softbus_core/models/RawPacket.h>
#include <softbus_core/models/SoftbusTypes.h>

#include <string>

namespace softbus::bus {

enum class BusPayloadType {
    DataPoint,
    ExecuteCommand,
    Ack,
    Event,
    Heartbeat,
    RawPacket
};

struct BusMessage {
    BusPayloadType type{BusPayloadType::DataPoint};
    std::string topic;
    softbus::core::SoftbusDataPoint dataPoint;
    softbus::api::ExecuteCommand command;
    softbus::core::SoftbusAck ack;
    softbus::core::SoftbusEvent event;
    softbus::core::RawPacket rawPacket;
    std::string deviceId;
};

} // namespace softbus::bus
