#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;
};

const std::vector<ConsoleCommandCategory>& consoleCommandCategories();

} // namespace ui
} // namespace dragonx
