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

#include "faq_content.h"

namespace dragonx {
namespace ui {
namespace faq {

// ── Wallet group ───────────────────────────────────────────────────────────
// Variant-aware: gs_1 (what the app IS) and sec_1 (where encryption lives) differ between the
// full-node and Lite builds; migrate-to-seed (seed_2) is full-node only; and the Lite build gets a
// trailing "Lite Wallet" subcategory that stands in for the (hidden) Daemon group. The remaining
// answers are worded neutrally so one string serves both variants.
static std::vector<FaqSubcategory> buildWalletFaq(bool fullNode)
{
    std::vector<FaqSubcategory> w;
    w.push_back({ "faq_w_gs_title", {
        { fullNode ? "faq_w_gs_1_q" : "faq_l_gs_1_q", fullNode ? "faq_w_gs_1_a" : "faq_l_gs_1_a" },
        { "faq_w_gs_2_q", "faq_w_gs_2_a" },
        { "faq_w_gs_3_q", "faq_w_gs_3_a" },
        { "faq_w_gs_4_q", "faq_w_gs_4_a" },
    }});
    w.push_back({ "faq_w_addr_title", {
        { "faq_w_addr_1_q", "faq_w_addr_1_a" },
        { "faq_w_addr_2_q", "faq_w_addr_2_a" },
        { "faq_w_addr_3_q", "faq_w_addr_3_a" },
        { "faq_w_addr_4_q", "faq_w_addr_4_a" },
    }});
    w.push_back({ "faq_w_send_title", {
        { "faq_w_send_1_q", "faq_w_send_1_a" },
        { "faq_w_send_2_q", "faq_w_send_2_a" },
        { "faq_w_send_3_q", "faq_w_send_3_a" },
        { "faq_w_send_4_q", "faq_w_send_4_a" },
    }});
    w.push_back({ "faq_w_bal_title", {
        { "faq_w_bal_1_q", "faq_w_bal_1_a" },
        { "faq_w_bal_2_q", "faq_w_bal_2_a" },
        { "faq_w_bal_3_q", "faq_w_bal_3_a" },
    }});
    w.push_back({ "faq_w_sec_title", {
        { "faq_w_sec_1_q", fullNode ? "faq_w_sec_1_a" : "faq_l_sec_1_a" },
        { "faq_w_sec_2_q", "faq_w_sec_2_a" },
        { "faq_w_sec_3_q", "faq_w_sec_3_a" },
    }});
    {
        std::vector<FaqEntry> seed = { { "faq_w_seed_1_q", "faq_w_seed_1_a" } };
        if (fullNode) seed.push_back({ "faq_w_seed_2_q", "faq_w_seed_2_a" });  // migrate-to-seed is full-node only
        seed.push_back({ "faq_w_seed_3_q", "faq_w_seed_3_a" });
        seed.push_back({ "faq_w_seed_4_q", "faq_w_seed_4_a" });
        w.push_back({ "faq_w_seed_title", std::move(seed) });
    }
    w.push_back({ "faq_w_chat_title", {
        { "faq_w_chat_1_q", "faq_w_chat_1_a" },
        { "faq_w_chat_2_q", "faq_w_chat_2_a" },
        { "faq_w_chat_3_q", "faq_w_chat_3_a" },
        { "faq_w_chat_4_q", "faq_w_chat_4_a" },
    }});
    w.push_back({ "faq_w_set_title", {
        { "faq_w_set_1_q", "faq_w_set_1_a" },
        { "faq_w_set_2_q", "faq_w_set_2_a" },
        { "faq_w_set_3_q", "faq_w_set_3_a" },
        { "faq_w_set_4_q", "faq_w_set_4_a" },
    }});
    // Lite-only: explain the server model (stands in for the hidden Daemon group).
    if (!fullNode) {
        w.push_back({ "faq_l_lite_title", {
            { "faq_l_lite_1_q", "faq_l_lite_1_a" },
            { "faq_l_lite_2_q", "faq_l_lite_2_a" },
            { "faq_l_lite_3_q", "faq_l_lite_3_a" },
        }});
    }
    return w;
}

const std::vector<FaqSubcategory>& walletFaq(bool fullNode)
{
    static const std::vector<FaqSubcategory> kFull = buildWalletFaq(true);
    static const std::vector<FaqSubcategory> kLite = buildWalletFaq(false);
    return fullNode ? kFull : kLite;
}

// ── Daemon group (full-node only) ──────────────────────────────────────────
const std::vector<FaqSubcategory>& daemonFaq()
{
    static const std::vector<FaqSubcategory> kDaemon = {
        { "faq_d_node_title", {
            { "faq_d_node_1_q", "faq_d_node_1_a" },
            { "faq_d_node_2_q", "faq_d_node_2_a" },
            { "faq_d_node_3_q", "faq_d_node_3_a" },
        }},
        { "faq_d_sync_title", {
            { "faq_d_sync_1_q", "faq_d_sync_1_a" },
            { "faq_d_sync_2_q", "faq_d_sync_2_a" },
            { "faq_d_sync_3_q", "faq_d_sync_3_a" },
            { "faq_d_sync_4_q", "faq_d_sync_4_a" },
        }},
        { "faq_d_mgmt_title", {
            { "faq_d_mgmt_1_q", "faq_d_mgmt_1_a" },
            { "faq_d_mgmt_2_q", "faq_d_mgmt_2_a" },
            { "faq_d_mgmt_3_q", "faq_d_mgmt_3_a" },
        }},
        { "faq_d_upd_title", {
            { "faq_d_upd_1_q", "faq_d_upd_1_a" },
            { "faq_d_upd_2_q", "faq_d_upd_2_a" },
            { "faq_d_upd_3_q", "faq_d_upd_3_a" },
        }},
        { "faq_d_mine_title", {
            { "faq_d_mine_1_q", "faq_d_mine_1_a" },
            { "faq_d_mine_2_q", "faq_d_mine_2_a" },
            { "faq_d_mine_3_q", "faq_d_mine_3_a" },
            { "faq_d_mine_4_q", "faq_d_mine_4_a" },
        }},
        { "faq_d_net_title", {
            { "faq_d_net_1_q", "faq_d_net_1_a" },
            { "faq_d_net_2_q", "faq_d_net_2_a" },
        }},
        { "faq_d_perf_title", {
            { "faq_d_perf_1_q", "faq_d_perf_1_a" },
            { "faq_d_perf_2_q", "faq_d_perf_2_a" },
        }},
        { "faq_d_trbl_title", {
            { "faq_d_trbl_1_q", "faq_d_trbl_1_a" },
            { "faq_d_trbl_2_q", "faq_d_trbl_2_a" },
            { "faq_d_trbl_3_q", "faq_d_trbl_3_a" },
            { "faq_d_trbl_4_q", "faq_d_trbl_4_a" },
        }},
    };
    return kDaemon;
}

} // namespace faq
} // namespace ui
} // namespace dragonx
