// DragonX Wallet - ImGui Edition // Copyright 2024-2026 The Hush Developers // Released under the GPLv3 #pragma once #include #include namespace dragonx { namespace data { /** * @brief A single trading pair on an exchange (e.g. DRGX/BTC) */ struct ExchangePair { std::string base; ///< e.g. "DRGX" std::string quote; ///< e.g. "BTC" std::string displayName; ///< e.g. "DRGX/BTC" std::string tradeUrl; ///< Link to the exchange pair page }; /** * @brief Metadata for a supported exchange */ struct ExchangeInfo { std::string name; ///< e.g. "TradeOgre" std::string baseUrl; ///< e.g. "https://tradeogre.com" std::vector pairs; }; /** * @brief Returns the static registry of supported exchanges + pairs. * Used as the offline fallback / seed when the live CoinGecko list is unavailable. */ const std::vector& getExchangeRegistry(); /** * @brief Parse a CoinGecko /coins/{id}/tickers JSON body into the exchange registry. * * Groups tickers by exchange (market.name), preserving first-seen order, into * ExchangeInfo entries (each pair carries base/target/displayName/trade_url). Returns * an empty vector on parse failure or when no usable tickers are present. Pure (no I/O). */ std::vector parseCoinGeckoTickers(const std::string& json); } // namespace data } // namespace dragonx