// DragonX Wallet - ImGui Edition // Copyright 2024-2026 The Hush Developers // Released under the GPLv3 #pragma once #include namespace dragonx { class App; namespace ui { /** * @brief Dialog for shielding coinbase rewards and merging funds */ class ShieldDialog { public: enum class Mode { ShieldCoinbase, // Shield mining rewards (t-addr coinbase -> z-addr) MergeToAddress // Merge multiple inputs to single z-addr }; /** * @brief Show the shield dialog * @param mode Operating mode */ static void show(Mode mode = Mode::ShieldCoinbase); /** * @brief Show shield coinbase dialog for specific address */ static void showShieldCoinbase(const std::string& fromAddress = "*"); /** * @brief Show merge to address dialog (generic — both transparent + shielded sources) */ static void showMerge(); /** * @brief Show the consolidate-funds flow preset for wallet-bloat reduction (shielded notes). * Used by the large-wallet nudges (Settings banner + alert action). */ static void showConsolidate(); /** * @brief Render the dialog (call each frame) */ static void render(App* app); /** * @brief Close the dialog (used by the UI sweep teardown) */ static void hide(); /** * @brief Forget the scope (inputs) read for the Merge/Consolidate view: the node connection changed, * so it may be a different wallet. The next render reads it again once the node is ready. */ static void invalidateScope(); }; } // namespace ui } // namespace dragonx