use std::io::Write;
use crate::language::CliLanguage;
pub fn non_english_seed_advisory<W: Write>(stderr: &mut W, lang: CliLanguage, form: &str) {
if lang == CliLanguage::English {
return;
}
let name = lang.as_str();
let _ = writeln!(
stderr,
"warning: encoding a {name} BIP-39 seed as {form} — it carries only the \
entropy, not the wordlist language. Record \"{name}\" alongside the backup: \
recovering the entropy with English-defaulted software derives a DIFFERENT \
seed and a DIFFERENT wallet."
);
}
pub fn secret_in_argv_warning<W: Write>(stderr: &mut W, flag: &str, alternative: &str) {
let _ = writeln!(
stderr,
"warning: secret material on argv ({flag}) — pipe via {alternative} to avoid /proc/$PID/cmdline exposure"
);
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OutputClass {
PrivateKeyMaterial,
WatchOnly,
Template,
}
pub fn emit_output_class_advisory<W: std::io::Write>(class: OutputClass, stderr: &mut W) {
let line = match class {
OutputClass::PrivateKeyMaterial =>
"warning: stdout carries private key material (can spend) \u{2014} redirect or encrypt (e.g. '> file.txt' or '| age -e ...')",
OutputClass::WatchOnly => "note: stdout is watch-only \u{2014} public keys only, cannot spend",
OutputClass::Template => "note: stdout is a keyless descriptor template (no keys)",
};
let _ = writeln!(stderr, "{line}");
}