pub const R: &str = "\x1b[31m"; pub const Y: &str = "\x1b[33m"; pub const G: &str = "\x1b[32m"; pub const C: &str = "\x1b[36m"; pub const B: &str = "\x1b[34m"; pub const M: &str = "\x1b[35m"; pub const W: &str = "\x1b[37m"; pub const GR: &str = "\x1b[90m"; pub const DIM: &str = "\x1b[2m"; pub const X: &str = "\x1b[0m";
pub fn paint(color: bool, col: &str, s: &str) -> String {
if color { format!("{col}{s}{X}") } else { s.to_string() }
}
pub fn banner(color: bool) -> String {
let l = |col: &str, s: &str| paint(color, col, s);
let mut o = String::new();
o.push('\n');
o.push_str(&l(R, " โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโ โโโโโโโ \n"));
o.push_str(&l(Y, " โโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโ \n"));
o.push_str(&l(G, " โโโโโ โโโโโโโโโโโโโโ โโโโโโ โโโโโโ โโโโ\n"));
o.push_str(&l(C, " โโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโ\n"));
o.push_str(&l(B, " โโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ\n"));
o.push_str(&l(M, " โโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโ โโโโโโโ \n"));
o.push_str(&l(W, " ่จผ โ proof system ยท SuperSpartan ยท Brakedown\n"));
o.push('\n');
o.push_str(&l(GR, " zero trusted setup ยท post-quantum ยท sub-ms verify\n"));
o
}
pub fn help(color: bool) -> String {
let g = |s: &str| paint(color, GR, s);
let mut o = banner(color);
o.push('\n');
o.push_str(" zheng run -e '<formula>' [--object N] [--budget B] prove + verify a formula\n");
o.push_str(" zheng demo hash prove a Poseidon2 hash\n");
o.push_str(" zheng eval commit/open/verify a polynomial\n");
o.push_str(" zheng pack -e '<formula>' โฆ -o <file> write a program capsule\n");
o.push_str(" zheng prove <file> prove a program capsule\n");
o.push('\n');
o.push_str(&g(" zheng help print this help\n"));
o.push('\n');
o.push_str(&g(" output renders to the terminal; piped, it is a tape chunk stream.\n"));
o.push_str(&g(" exit: 0 verified ยท 1 prover/verifier error ยท 2 usage error\n"));
o
}