use multi_codec::Codec;
use multi_key::{Builder as MkBuilder, Multikey};
use multi_util::CodecInfo;
use multi_vlad::{Builder, Vlad};
fn main() {
let mut rng = rand::rng();
let mk: Multikey = MkBuilder::new_from_random_bytes(Codec::Ed25519Priv, &mut rng)
.unwrap()
.try_build()
.unwrap();
let wasm = vec![0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00];
let vlad: Vlad = Builder::default()
.with_signing_key(&mk)
.with_message(&wasm)
.try_build()
.unwrap();
vlad.validate().unwrap();
assert_eq!(vlad.wasm(), &wasm[..]);
vlad.verify(&mk).unwrap();
let bytes: Vec<u8> = vlad.clone().into();
let decoded = Vlad::try_from(&bytes[..]).unwrap();
assert_eq!(vlad, decoded);
decoded.verify(&mk).unwrap();
println!("Ed25519 Vlad built and verified successfully");
println!(" codec: {:?}", vlad.codec());
println!(" wasm bytes: {}", vlad.wasm().len());
println!(" total bytes: {}", bytes.len());
}