Monero C++ Library
Loading...
Searching...
No Matches
monero_daemon_model.h
1
52
53#pragma once
54
55#include <map>
56#include <boost/property_tree/ptree.hpp>
57#include <boost/property_tree/json_parser.hpp>
58#include "rapidjson/document.h"
59#include "rapidjson/writer.h"
60#include "rapidjson/stringbuffer.h"
61
65namespace monero {
66
71
72 virtual ~serializable_struct() = default;
73
79 std::string serialize() const;
80
87 virtual rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const = 0;
88 };
89
94 boost::optional<std::string> m_ssl_private_key_path;
95 boost::optional<std::string> m_ssl_certificate_path;
96 boost::optional<std::string> m_ssl_ca_file;
97 std::vector<std::string> m_ssl_allowed_fingerprints;
98 boost::optional<bool> m_ssl_allow_any_cert;
99
100 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
101 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<ssl_options>& options);
102 static std::shared_ptr<ssl_options> deserialize(const std::string& json);
103 };
104
108 enum monero_connection_type : uint8_t {
109 INVALID = 0,
110 IPV4,
111 IPV6,
112 TOR,
113 I2P
114 };
115
119 enum monero_network_type : uint8_t {
120 MAINNET = 0,
121 TESTNET,
122 STAGENET
123 };
124
128 struct monero_bandwidth_limits : public serializable_struct {
129 boost::optional<int> m_up;
130 boost::optional<int> m_down;
131
132 monero_bandwidth_limits() { }
133 monero_bandwidth_limits(int up, int down): m_up(up), m_down(down) { }
134
135 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
136 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_bandwidth_limits>& limits);
137 };
138
143 boost::optional<uint32_t> m_number;
144 boost::optional<bool> m_is_release;
145
146 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
147 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_version>& version);
148 static std::shared_ptr<monero_version> deserialize(const std::string& json);
149 };
150
151 // forward declarations
152 struct monero_tx;
153 struct monero_output;
154
161 boost::optional<std::string> m_hash;
162 boost::optional<uint64_t> m_height;
163 boost::optional<uint64_t> m_timestamp;
164 boost::optional<uint64_t> m_size;
165 boost::optional<uint64_t> m_weight;
166 boost::optional<uint64_t> m_long_term_weight;
167 boost::optional<uint64_t> m_depth;
168 boost::optional<uint64_t> m_difficulty_low;
169 boost::optional<uint64_t> m_difficulty_high;
170 boost::optional<uint64_t> m_cumulative_difficulty_low;
171 boost::optional<uint64_t> m_cumulative_difficulty_high;
172 boost::optional<uint32_t> m_major_version;
173 boost::optional<uint32_t> m_minor_version;
174 boost::optional<uint32_t> m_nonce;
175 boost::optional<std::string> m_miner_tx_hash;
176 boost::optional<uint32_t> m_num_txs;
177 boost::optional<bool> m_orphan_status;
178 boost::optional<std::string> m_prev_hash;
179 boost::optional<uint64_t> m_reward;
180 boost::optional<std::string> m_pow_hash;
181
182 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
183 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_block_header>& header);
184 static std::shared_ptr<monero_block_header> deserialize(const std::string& json);
185 std::shared_ptr<monero_block_header> copy(const std::shared_ptr<monero_block_header>& src, const std::shared_ptr<monero_block_header>& tgt) const;
186 virtual void merge(const std::shared_ptr<monero_block_header>& self, const std::shared_ptr<monero_block_header>& other);
187 };
188
193 boost::optional<std::string> m_hex;
194 std::shared_ptr<monero_tx> m_miner_tx;
195 std::vector<std::shared_ptr<monero_tx>> m_txs;
196 std::vector<std::string> m_tx_hashes;
197
198 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
199 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_block>& block);
200 static std::shared_ptr<monero_block> deserialize(const std::string& json);
201 std::shared_ptr<monero_block> copy(const std::shared_ptr<monero_block>& src, const std::shared_ptr<monero_block>& tgt) const;
202 void merge(const std::shared_ptr<monero_block_header>& self, const std::shared_ptr<monero_block_header>& other);
203 void merge(const std::shared_ptr<monero_block>& self, const std::shared_ptr<monero_block>& other);
204 };
205
210 static const std::string DEFAULT_PAYMENT_ID; // default payment id "0000000000000000"
211 static const std::string DEFAULT_ID;
212
213 std::shared_ptr<monero_block> m_block;
214 boost::optional<std::string> m_hash;
215 boost::optional<uint32_t> m_version;
216 boost::optional<bool> m_is_miner_tx;
217 boost::optional<std::string> m_payment_id;
218 boost::optional<uint64_t> m_fee;
219 boost::optional<uint32_t> m_ring_size;
220 boost::optional<bool> m_relay;
221 boost::optional<bool> m_is_relayed;
222 boost::optional<bool> m_is_confirmed;
223 boost::optional<bool> m_in_tx_pool;
224 boost::optional<bool> m_is_locked;
225 boost::optional<uint64_t> m_num_confirmations;
226 boost::optional<uint64_t> m_unlock_time;
227 boost::optional<uint64_t> m_last_relayed_timestamp;
228 boost::optional<uint64_t> m_received_timestamp;
229 boost::optional<bool> m_is_double_spend_seen;
230 boost::optional<std::string> m_key;
231 boost::optional<std::string> m_full_hex;
232 boost::optional<std::string> m_pruned_hex;
233 boost::optional<std::string> m_prunable_hex;
234 boost::optional<std::string> m_prunable_hash;
235 boost::optional<uint64_t> m_size;
236 boost::optional<uint64_t> m_weight;
237 std::vector<std::shared_ptr<monero_output>> m_inputs;
238 std::vector<std::shared_ptr<monero_output>> m_outputs;
239 std::vector<uint64_t> m_output_indices;
240 boost::optional<std::string> m_metadata;
241 boost::optional<std::string> m_common_tx_sets;
242 std::vector<uint8_t> m_extra;
243 boost::optional<std::string> m_rct_signatures; // TODO: implement
244 boost::optional<std::string> m_rct_sig_prunable; // TODO: implement
245 boost::optional<bool> m_is_kept_by_block;
246 boost::optional<bool> m_is_failed;
247 boost::optional<uint64_t> m_last_failed_height;
248 boost::optional<std::string> m_last_failed_hash;
249 boost::optional<uint64_t> m_max_used_block_height;
250 boost::optional<std::string> m_max_used_block_hash;
251 std::vector<std::string> m_signatures;
252
253 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
254 static void from_property_tree(const boost::property_tree::ptree& node, std::shared_ptr<monero_tx> tx);
255 static std::shared_ptr<monero_tx> deserialize(const std::string& json);
256 std::shared_ptr<monero_tx> copy(const std::shared_ptr<monero_tx>& src, const std::shared_ptr<monero_tx>& tgt) const;
257 virtual void merge(const std::shared_ptr<monero_tx>& self, const std::shared_ptr<monero_tx>& other);
258 boost::optional<uint64_t> get_height() const;
259 };
260
265 boost::optional<std::string> m_hex;
266 boost::optional<std::string> m_signature;
267
268 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
269 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_key_image>& key_image);
270 static std::shared_ptr<monero_key_image> deserialize(const std::string& json);
271 static std::vector<std::shared_ptr<monero_key_image>> deserialize_key_images(const std::string& key_images_json); // TODO: remove this specialty util used once
272 std::shared_ptr<monero_key_image> copy(const std::shared_ptr<monero_key_image>& src, const std::shared_ptr<monero_key_image>& tgt) const;
273 void merge(const std::shared_ptr<monero_key_image>& self, const std::shared_ptr<monero_key_image>& other);
274 };
275
280 std::shared_ptr<monero_tx> m_tx;
281 std::shared_ptr<monero_key_image> m_key_image;
282 boost::optional<uint64_t> m_amount;
283 boost::optional<uint64_t> m_index;
284 std::vector<uint64_t> m_ring_output_indices;
285 boost::optional<std::string> m_stealth_public_key;
286 boost::optional<std::string> m_mask;
287
288 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
289 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_output>& output);
290 static std::shared_ptr<monero_output> deserialize(const std::string& json);
291 std::shared_ptr<monero_output> copy(const std::shared_ptr<monero_output>& src, const std::shared_ptr<monero_output>& tgt) const;
292 virtual void merge(const std::shared_ptr<monero_output>& self, const std::shared_ptr<monero_output>& other);
293 };
294
299 NOT_SPENT = 0,
300 CONFIRMED,
301 TX_POOL
302 };
303
308 boost::optional<uint64_t> m_credits;
309 boost::optional<std::string> m_top_block_hash;
310
311 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
312 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_rpc_payment_info>& rpc_payment_info);
313 static std::shared_ptr<monero_rpc_payment_info> deserialize(const std::string& json);
314 };
315
320 std::vector<std::string> m_block_hashes;
321 boost::optional<uint64_t> m_difficulty_low;
322 boost::optional<uint64_t> m_difficulty_high;
323 boost::optional<uint64_t> m_height;
324 boost::optional<uint64_t> m_length;
325 boost::optional<std::string> m_main_chain_parent_block_hash;
326
327 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
328 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_alt_chain>& alt_chain);
329 static std::shared_ptr<monero_alt_chain> deserialize(const std::string& json);
330 };
331
336 boost::optional<std::string> m_host;
337 boost::optional<uint32_t> m_ip;
338 boost::optional<bool> m_is_banned;
339 boost::optional<uint64_t> m_seconds;
340
341 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
342 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_ban>& ban);
343 static std::shared_ptr<monero_ban> deserialize(const std::string& json);
344 };
345
350 boost::optional<bool> m_is_pruned;
351 boost::optional<int> m_pruning_seed;
352
353 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_prune_result>& result);
354 static std::shared_ptr<monero_prune_result> deserialize(const std::string& json);
355 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
356 };
357
362 boost::optional<bool> m_is_active;
363 boost::optional<bool> m_is_background;
364 boost::optional<std::string> m_address;
365 boost::optional<uint64_t> m_speed;
366 boost::optional<int> m_num_threads;
367
368 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_mining_status>& status);
369 static std::shared_ptr<monero_mining_status> deserialize(const std::string& json);
370 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
371 };
372
377 boost::optional<uint64_t> m_emission_sum_low;
378 boost::optional<uint64_t> m_emission_sum_high;
379 boost::optional<uint64_t> m_fee_sum_low;
380 boost::optional<uint64_t> m_fee_sum_high;
381
382 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_miner_tx_sum>& sum);
383 static std::shared_ptr<monero_miner_tx_sum> deserialize(const std::string& json);
384 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
385 };
386
391 boost::optional<std::string> m_block_template_blob;
392 boost::optional<std::string> m_block_hashing_blob;
393 boost::optional<std::string> m_prev_hash;
394 boost::optional<std::string> m_seed_hash;
395 boost::optional<std::string> m_next_seed_hash;
396 boost::optional<uint64_t> m_difficulty_low;
397 boost::optional<uint64_t> m_difficulty_high;
398 boost::optional<uint64_t> m_expected_reward;
399 boost::optional<uint64_t> m_height;
400 boost::optional<uint64_t> m_reserved_offset;
401 boost::optional<uint64_t> m_seed_height;
402
403 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_block_template>& tmplt);
404 static std::shared_ptr<monero_block_template> deserialize(const std::string& json);
405 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
406 };
407
413 boost::optional<uint32_t> m_major_version;
414 boost::optional<uint64_t> m_height;
415 boost::optional<std::string> m_prev_hash;
416 boost::optional<std::string> m_seed_hash;
417 boost::optional<std::string> m_difficulty;
418 boost::optional<uint64_t> m_median_weight;
419 boost::optional<uint64_t> m_already_generated_coins;
420 std::vector<std::shared_ptr<monero_tx>> m_tx_pool_backlog;
421
422 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_miner_data>& data);
423 static std::shared_ptr<monero_miner_data> deserialize(const std::string& json);
424 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
425 };
426
430 struct monero_auxiliary_pow : public serializable_struct {
431 boost::optional<std::string> m_id;
432 boost::optional<std::string> m_hash;
433
434 monero_auxiliary_pow() { }
435 monero_auxiliary_pow(const std::string& id, const std::string& hash): m_id(id), m_hash(hash) { }
436
437 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_auxiliary_pow>& aux_pow);
438 static std::shared_ptr<monero_auxiliary_pow> deserialize(const std::string& json);
439 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
440 };
441
446 boost::optional<std::string> m_block_template_blob;
447 boost::optional<std::string> m_block_hashing_blob;
448 boost::optional<std::string> m_merkle_root;
449 boost::optional<uint32_t> m_merkle_tree_depth;
450 std::vector<std::shared_ptr<monero_auxiliary_pow>> m_aux_pow;
451
452 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_add_auxiliary_pow_result>& result);
453 static std::shared_ptr<monero_add_auxiliary_pow_result> deserialize(const std::string& json);
454 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
455 };
456
461 boost::optional<std::string> m_connection_id;
462 boost::optional<std::string> m_remote_address;
463 boost::optional<uint64_t> m_num_blocks;
464 boost::optional<uint64_t> m_rate;
465 boost::optional<uint64_t> m_speed;
466 boost::optional<uint64_t> m_size;
467 boost::optional<uint64_t> m_start_height;
468
469 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_connection_span>& span);
470 static std::shared_ptr<monero_connection_span> deserialize(const std::string& json);
471 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
472 };
473
478 boost::optional<std::string> m_id;
479 boost::optional<std::string> m_address;
480 boost::optional<std::string> m_host;
481 boost::optional<int> m_port;
482 boost::optional<bool> m_is_online;
483 boost::optional<uint64_t> m_last_seen_timestamp;
484 boost::optional<int> m_pruning_seed;
485 boost::optional<int> m_rpc_port;
486 boost::optional<uint64_t> m_rpc_credits_per_hash;
487 boost::optional<std::string> m_hash;
488 boost::optional<uint64_t> m_avg_download;
489 boost::optional<uint64_t> m_avg_upload;
490 boost::optional<uint64_t> m_current_download;
491 boost::optional<uint64_t> m_current_upload;
492 boost::optional<uint64_t> m_height;
493 boost::optional<bool> m_is_incoming;
494 boost::optional<uint64_t> m_live_time;
495 boost::optional<bool> m_is_local_ip;
496 boost::optional<bool> m_is_local_host;
497 boost::optional<uint64_t> m_num_receives;
498 boost::optional<uint64_t> m_num_sends;
499 boost::optional<uint64_t> m_receive_idle_time;
500 boost::optional<uint64_t> m_send_idle_time;
501 boost::optional<std::string> m_state;
502 boost::optional<int> m_num_support_flags;
503 boost::optional<monero_connection_type> m_connection_type;
504
505 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_peer>& peer);
506 static std::shared_ptr<monero_peer> deserialize(const std::string& json);
507 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
508 };
509
514 boost::optional<bool> m_has_invalid_input;
515 boost::optional<bool> m_has_invalid_output;
516 boost::optional<bool> m_has_too_few_outputs;
517 boost::optional<bool> m_is_good;
518 boost::optional<bool> m_is_relayed;
519 boost::optional<bool> m_is_double_spend;
520 boost::optional<bool> m_is_fee_too_low;
521 boost::optional<bool> m_is_mixin_too_low;
522 boost::optional<bool> m_is_overspend;
523 boost::optional<bool> m_is_too_big;
524 boost::optional<bool> m_sanity_check_failed;
525 boost::optional<bool> m_is_tx_extra_too_big;
526 boost::optional<bool> m_is_nonzero_unlock_time;
527 boost::optional<std::string> m_reason;
528
529 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_submit_tx_result>& result);
530 static std::shared_ptr<monero_submit_tx_result> deserialize(const std::string& json);
531 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
532 };
533
538 // TODO
539 };
540
545 boost::optional<uint64_t> m_amount;
546 boost::optional<uint64_t> m_base;
547 std::vector<uint64_t> m_distribution;
548 boost::optional<uint64_t> m_start_height;
549
550 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_output_distribution_entry>& entry);
551 static std::shared_ptr<monero_output_distribution_entry> deserialize(const std::string& json);
552 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
553 };
554
559 boost::optional<uint64_t> m_amount;
560 boost::optional<uint64_t> m_num_instances;
561 boost::optional<uint64_t> m_unlocked_instances;
562 boost::optional<uint64_t> m_recent_instances;
563
564 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_output_histogram_entry>& entry);
565 static std::shared_ptr<monero_output_histogram_entry> deserialize(const std::string& json);
566 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
567 };
568
573 boost::optional<int> m_num_txs;
574 boost::optional<int> m_num_not_relayed;
575 boost::optional<int> m_num_failing;
576 boost::optional<int> m_num_double_spends;
577 boost::optional<int> m_num10m;
578 boost::optional<uint64_t> m_fee_total;
579 boost::optional<uint64_t> m_bytes_max;
580 boost::optional<uint64_t> m_bytes_med;
581 boost::optional<uint64_t> m_bytes_min;
582 boost::optional<uint64_t> m_bytes_total;
583 std::map<uint64_t, uint64_t> m_histo;
584 boost::optional<uint64_t> m_histo98pc;
585 boost::optional<uint64_t> m_oldest_timestamp;
586
587 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
588 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_tx_pool_stats>& stats);
589 static std::shared_ptr<monero_tx_pool_stats> deserialize(const std::string& json);
590 };
591
596 boost::optional<bool> m_is_update_available;
597 boost::optional<std::string> m_version;
598 boost::optional<std::string> m_hash;
599 boost::optional<std::string> m_auto_uri;
600 boost::optional<std::string> m_user_uri;
601
602 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_daemon_update_check_result>& check);
603 static std::shared_ptr<monero_daemon_update_check_result> deserialize(const std::string& json);
604 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
605 };
606
611 boost::optional<std::string> m_download_path;
612
613 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_daemon_update_download_result>& check);
614 static std::shared_ptr<monero_daemon_update_download_result> deserialize(const std::string& json);
615 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
616 };
617
622 boost::optional<uint64_t> m_quantization_mask;
623 boost::optional<uint64_t> m_fee;
624 std::vector<uint64_t> m_fees;
625
626 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_fee_estimate>& estimate);
627 static std::shared_ptr<monero_fee_estimate> deserialize(const std::string& json);
628 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
629 };
630
635 boost::optional<std::string> m_version;
636 boost::optional<uint64_t> m_num_alt_blocks;
637 boost::optional<uint64_t> m_block_size_limit;
638 boost::optional<uint64_t> m_block_size_median;
639 boost::optional<uint64_t> m_block_weight_limit;
640 boost::optional<uint64_t> m_block_weight_median;
641 boost::optional<std::string> m_bootstrap_daemon_address;
642 boost::optional<uint64_t> m_difficulty_low;
643 boost::optional<uint64_t> m_difficulty_high;
644 boost::optional<uint64_t> m_cumulative_difficulty_low;
645 boost::optional<uint64_t> m_cumulative_difficulty_high;
646 boost::optional<uint64_t> m_free_space;
647 boost::optional<int> m_num_offline_peers;
648 boost::optional<int> m_num_online_peers;
649 boost::optional<uint64_t> m_height;
650 boost::optional<uint64_t> m_height_without_bootstrap;
651 boost::optional<monero_network_type> m_network_type;
652 boost::optional<bool> m_is_offline;
653 boost::optional<int> m_num_incoming_connections;
654 boost::optional<int> m_num_outgoing_connections;
655 boost::optional<int> m_num_rpc_connections;
656 boost::optional<uint64_t> m_start_timestamp;
657 boost::optional<uint64_t> m_adjusted_timestamp;
658 boost::optional<uint64_t> m_target;
659 boost::optional<uint64_t> m_target_height;
660 boost::optional<int> m_num_txs;
661 boost::optional<int> m_num_txs_pool;
662 boost::optional<bool> m_was_bootstrap_ever_used;
663 boost::optional<uint64_t> m_database_size;
664 boost::optional<bool> m_update_available;
665 boost::optional<bool> m_is_busy_syncing;
666 boost::optional<bool> m_is_synchronized;
667 boost::optional<bool> m_is_restricted;
668 boost::optional<bool> m_is_regtest;
669
670 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_daemon_info>& info);
671 static std::shared_ptr<monero_daemon_info> deserialize(const std::string& json);
672 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
673 };
674
679 boost::optional<std::string> m_overview;
680 boost::optional<uint64_t> m_height;
681 boost::optional<uint64_t> m_target_height;
682 boost::optional<int> m_next_needed_pruning_seed;
683 std::vector<std::shared_ptr<monero_peer>> m_peers;
684 std::vector<std::shared_ptr<monero_connection_span>> m_spans;
685
686 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_daemon_sync_info>& info);
687 static std::shared_ptr<monero_daemon_sync_info> deserialize(const std::string& json);
688 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
689 };
690
695 boost::optional<uint64_t> m_start_time;
696 boost::optional<uint64_t> m_total_packets_in;
697 boost::optional<uint64_t> m_total_bytes_in;
698 boost::optional<uint64_t> m_total_packets_out;
699 boost::optional<uint64_t> m_total_bytes_out;
700
701 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_daemon_network_stats>& stats);
702 static std::shared_ptr<monero_daemon_network_stats> deserialize(const std::string& json);
703 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
704 };
705
710 boost::optional<bool> m_is_enabled;
711 boost::optional<uint64_t> m_earliest_height;
712 boost::optional<int> m_state;
713 boost::optional<int> m_threshold;
714 boost::optional<int> m_version;
715 boost::optional<int> m_num_votes;
716 boost::optional<int> m_window;
717 boost::optional<int> m_voting;
718
719 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_hard_fork_info>& info);
720 static std::shared_ptr<monero_hard_fork_info> deserialize(const std::string& json);
721 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
722 };
723
728 std::vector<std::string> m_block_hashes;
729 boost::optional<uint64_t> m_height;
730
731 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_generate_blocks_result>& result);
732 static std::shared_ptr<monero_generate_blocks_result> deserialize(const std::string& json);
733 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
734 };
735
740 std::vector<std::shared_ptr<monero_block>> m_blocks;
741 boost::optional<uint64_t> m_current_height; // the daemon's chain height at request time
742
743 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_get_blocks_by_hash_result>& result);
744 static std::shared_ptr<monero_get_blocks_by_hash_result> deserialize(const std::string& json);
745 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
746 };
747
752 std::vector<std::string> m_hashes;
753 boost::optional<uint64_t> m_start_height; // height of first hash in m_hashes
754 boost::optional<uint64_t> m_current_height; // the daemon's chain height at request time
755
756 static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_get_block_hashes_result>& result);
757 static std::shared_ptr<monero_get_block_hashes_result> deserialize(const std::string& json);
758 rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const override;
759 };
760
761}
Definition monero_error.h:61
monero_key_image_spent_status
Definition monero_daemon_model.h:298
monero_connection_type
Definition monero_daemon_model.h:108
monero_network_type
Definition monero_daemon_model.h:119
Definition monero_daemon_model.h:445
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1202
Definition monero_daemon_model.h:319
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:889
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1164
Definition monero_daemon_model.h:335
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:927
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:213
Definition monero_daemon_model.h:160
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const
Definition monero_daemon_model.cpp:162
Definition monero_daemon_model.h:390
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1073
Definition monero_daemon_model.h:192
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const
Definition monero_daemon_model.cpp:282
Definition monero_daemon_model.h:460
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1242
Definition monero_daemon_model.h:634
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1690
Definition monero_daemon_model.h:694
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1813
Definition monero_daemon_model.h:678
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1772
Definition monero_daemon_model.h:595
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1554
Definition monero_daemon_model.h:610
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1587
Definition monero_daemon_model.h:621
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1620
Definition monero_daemon_model.h:727
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1888
Definition monero_daemon_model.h:751
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1949
Definition monero_daemon_model.h:739
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1917
Definition monero_daemon_model.h:709
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1851
Definition monero_daemon_model.h:264
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const
Definition monero_daemon_model.cpp:689
Definition monero_daemon_model.h:412
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1126
Definition monero_daemon_model.h:376
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1035
Definition monero_daemon_model.h:361
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:998
Definition monero_daemon_model.h:544
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1428
Definition monero_daemon_model.h:558
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1461
Definition monero_daemon_model.h:279
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const
Definition monero_daemon_model.cpp:757
Definition monero_daemon_model.h:477
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1311
Definition monero_daemon_model.h:349
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:961
Definition monero_daemon_model.h:307
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:853
Definition monero_daemon_model.h:513
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1381
Definition monero_daemon_model.h:537
Definition monero_daemon_model.h:572
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:1505
Definition monero_daemon_model.h:209
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const
Definition monero_daemon_model.cpp:394
Definition monero_daemon_model.h:142
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const
Definition monero_daemon_model.cpp:96
Definition monero_daemon_model.h:70
virtual rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const =0
std::string serialize() const
Definition monero_daemon_model.cpp:86
Definition monero_daemon_model.h:93
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_model.cpp:126