pub use crate::contract::abi::studio::*;
use ::miniscript::*;
use bitcoin::PublicKey;
use bitcoin::Script;
use bitcoin::XOnlyPublicKey;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, JsonSchema, Clone, Debug)]
pub enum SupportedDescriptors {
Pk(Descriptor<PublicKey>),
XOnly(Descriptor<XOnlyPublicKey>),
}
impl From<Descriptor<PublicKey>> for SupportedDescriptors {
fn from(x: Descriptor<PublicKey>) -> Self {
SupportedDescriptors::Pk(x)
}
}
impl From<Descriptor<XOnlyPublicKey>> for SupportedDescriptors {
fn from(x: Descriptor<XOnlyPublicKey>) -> Self {
SupportedDescriptors::XOnly(x)
}
}
impl SupportedDescriptors {
pub fn script_pubkey(&self) -> Script {
match self {
SupportedDescriptors::Pk(p) => p.script_pubkey(),
SupportedDescriptors::XOnly(x) => x.script_pubkey(),
}
}
}