pub fn unprefixed() -> Vec<&'static str> {
vec![
"ACCOUNT",
"ARCHIVE_URL",
"CONFIG_HOME",
"CONTRACT_ID",
"DATA_HOME",
"FEE",
"INCLUSION_FEE",
"INVOKE_VIEW",
"NETWORK",
"NETWORK_PASSPHRASE",
"NO_CACHE",
"NO_UPDATE_CHECK",
"OPERATION_SOURCE_ACCOUNT",
"RPC_HEADERS",
"RPC_URL",
"SECRET_KEY",
"SEND",
"SIGN_WITH_KEY",
"SIGN_WITH_LAB",
"SIGN_WITH_LEDGER",
]
}
const VISIBLE: &[&str] = &[
"ACCOUNT",
"ARCHIVE_URL",
"CONFIG_HOME",
"CONTRACT_ID",
"DATA_HOME",
"FEE",
"INCLUSION_FEE",
"INVOKE_VIEW",
"NETWORK",
"NETWORK_PASSPHRASE",
"NO_CACHE",
"NO_UPDATE_CHECK",
"OPERATION_SOURCE_ACCOUNT",
"RPC_URL",
"SEND",
"SIGN_WITH_LAB",
"SIGN_WITH_LEDGER",
];
pub fn is_concealed(key: &str) -> bool {
let name = key
.strip_prefix("STELLAR_")
.or_else(|| key.strip_prefix("SOROBAN_"))
.unwrap_or(key);
VISIBLE.contains(&name)
}
pub fn prefixed(key: &str) -> Vec<String> {
unprefixed()
.iter()
.map(|var| format!("{key}_{var}"))
.collect::<Vec<String>>()
}