20#ifndef ORES_TRADING_MESSAGING_TRADE_PROTOCOL_HPP
21#define ORES_TRADING_MESSAGING_TRADE_PROTOCOL_HPP
26#include "ores.trading.api/domain/activity_type.hpp"
27#include "ores.trading.api/domain/trade.hpp"
29namespace ores::trading::messaging {
31struct get_activity_types_request {
32 using response_type =
struct get_activity_types_response;
33 static constexpr std::string_view nats_subject =
"trading.v1.activity_types.list";
36struct get_activity_types_response {
37 std::vector<ores::trading::domain::activity_type> activity_types;
40struct get_trades_request {
41 using response_type =
struct get_trades_response;
42 static constexpr std::string_view nats_subject =
"trading.v1.trades.list";
48struct get_trades_response {
49 std::vector<ores::trading::domain::trade> trades;
50 int total_available_count = 0;
53struct save_trade_request {
54 using response_type =
struct save_trade_response;
55 static constexpr std::string_view nats_subject =
"trading.v1.trades.save";
56 std::vector<ores::trading::domain::trade> trades;
58 static save_trade_request from(std::vector<ores::trading::domain::trade> trades) {
59 return { .trades = std::move(trades) };
63struct save_trade_response {
68struct delete_trade_request {
69 using response_type =
struct delete_trade_response;
70 static constexpr std::string_view nats_subject =
"trading.v1.trades.delete";
71 std::vector<std::string> ids;
74struct delete_trade_response {
79struct get_trade_history_request {
80 using response_type =
struct get_trade_history_response;
81 static constexpr std::string_view nats_subject =
"trading.v1.trades.history";
85struct get_trade_history_response {
88 std::vector<ores::trading::domain::trade> versions;