// generated from ${THIS_FILE.name}
// (by running `make templates` in `core`)
// do not edit manually!
#pragma GCC diagnostic ignored "-Wunused-value"
#pragma GCC diagnostic ignored "-Wunused-function"

static void _librust_qstrs(void) {
<%
import subprocess
import sys
from pathlib import Path
from typing import Union, Set

RUST_SRC = THIS_FILE.parent / "src"

ALTCOIN_PREFIXES = (
    "binance",
    "cardano",
    "eos",
    "ethereum",
    "fido",
    "monero",
    "nem",
    "ripple",
    "solana",
    "stellar",
    "tezos",
    "u2f",
)

def find_unique_patterns_in_dir(directory: Union[str, Path], pattern: str) -> Set[str]:
    command = f"grep -ro '{pattern}' {directory}"
    result = subprocess.run(command, stdout=subprocess.PIPE, text=True, shell=True)
    output_lines = result.stdout.strip().split("\n")
    return set([line.split(":", 1)[1] for line in output_lines if line])

pattern = r"\bMP_QSTR_\w*"
qstrings = find_unique_patterns_in_dir(RUST_SRC, pattern)

qstrings_universal = set()
for prefix in ALTCOIN_PREFIXES:
    mp_prefix = f"MP_QSTR_{prefix}__"
    qstrings_universal |= {qstr for qstr in qstrings if qstr.startswith(mp_prefix)}

qstrings_btconly = qstrings - qstrings_universal

# sort result alphabetically
qstrings_btconly_sorted = sorted(qstrings_btconly)
qstrings_universal_sorted = sorted(qstrings_universal)
%>\
% for qstr in qstrings_btconly_sorted:
  ${qstr};
% endfor
#if !BITCOIN_ONLY
% for qstr in qstrings_universal_sorted:
  ${qstr};
% endfor
#endif
}