#pragma once

#include <vector>

namespace dragonx {
namespace ui {

struct ConsoleCommandEntry {
    const char* name;
    const char* desc;                 // terse one-line summary (always set)
    const char* params;               // parameter template, e.g. "\"address\" amount [comment]"
    // Optional novice-facing enrichment (C++17 aggregate defaults — entries that omit these keep
    // the empty/false fallbacks, and the command explorer falls back to `desc`):
    const char* details     = "";     // longer plain-language explanation
    const char* example     = "";     // one concrete, runnable example line
    const char* keywords    = "";     // space-separated search synonyms ("balance money funds")
    bool        destructive = false;  // consequential/sensitive -> safety badge + run confirmation
};

struct ConsoleCommandCategory {
    const char* name;
    const ConsoleCommandEntry* commands;
    int count;
};

// The full-node daemon's JSON-RPC command reference (browsed by the console's command-reference modal).
const std::vector<ConsoleCommandCategory>& consoleCommandCategories();

// The lite backend's own command set (the ~25 verbs the SDXL backend accepts) — the lite-variant
// analog of the RPC reference, shown by the same modal when the executor is the lite one.
const std::vector<ConsoleCommandCategory>& liteConsoleCommandCategories();

} // namespace ui
} // namespace dragonx
