// DragonX Wallet - ImGui Edition
// Copyright 2024-2026 The Hush Developers
// Released under the GPLv3

#pragma once

#include <string>

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();
};

} // namespace ui
} // namespace dragonx
