use std::str::FromStr;
use miniscript::descriptor::DescriptorType;
use miniscript::Descriptor;
fn main() {
let desc = miniscript::Descriptor::<bitcoin::PublicKey>::from_str(
"wsh(c:pk_k(020202020202020202020202020202020202020202020202020202020202020202))",
)
.unwrap();
assert!(desc.sanity_check().is_ok());
assert_eq!(
format!("{:x}", desc.script_pubkey()),
"0020daef16dd7c946a3e735a6e43310cb2ce33dfd14a04f76bf8241a16654cb2f0f9"
);
let desc_type = desc.desc_type();
assert_eq!(desc_type, DescriptorType::Wsh);
if let Descriptor::Wsh(wsh) = &desc {
assert_eq!(
format!("{:x}", wsh.script_pubkey()),
"0020daef16dd7c946a3e735a6e43310cb2ce33dfd14a04f76bf8241a16654cb2f0f9"
);
}
assert_eq!(
format!(
"{:x}",
desc.explicit_script()
.expect("Wsh descriptors have inner scripts")
),
"21020202020202020202020202020202020202020202020202020202020202020202ac"
);
let desc = miniscript::Descriptor::<bitcoin::PublicKey>::from_str(
"sh(wsh(c:pk_k(020202020202020202020202020202020202020202020202020202020202020202)))",
)
.unwrap();
assert!(desc.desc_type() == DescriptorType::ShWsh);
}