#![allow(clippy::unnecessary_cast)]
use commit_verify::commit_encode;
use crate::vm::alure;
#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug, Display)]
#[display(Debug)]
pub enum VmType {
Embedded,
AluVM,
}
#[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "serde_crate"))]
#[derive(StrictEncode, StrictDecode)]
#[strict_encoding(by_value, repr = u8)]
pub enum ValidationScript {
#[strict_encoding(value = 0x00)]
Embedded,
#[strict_encoding(value = 0x01)]
AluVM(alure::ValidationScript),
}
impl Default for ValidationScript {
fn default() -> Self { ValidationScript::Embedded }
}
impl commit_encode::Strategy for ValidationScript {
type Strategy = commit_encode::strategies::UsingStrict;
}
impl ValidationScript {
pub fn vm_type(&self) -> VmType {
match self {
ValidationScript::Embedded => VmType::Embedded,
ValidationScript::AluVM(_) => VmType::AluVM,
}
}
}
#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug, Display)]
#[cfg_attr(
feature = "serde",
derive(Serialize, Deserialize),
serde(crate = "serde_crate", rename_all = "kebab-case")
)]
#[derive(StrictEncode, StrictDecode)]
#[repr(u8)]
pub enum OverrideRules {
#[display("deny")]
Deny = 0u8,
#[display("allow-same-vm")]
AllowSameVm = 1u8,
#[display("allow-any-vm")]
AllowAnyVm = 2u8,
}
impl Default for OverrideRules {
fn default() -> Self { OverrideRules::Deny }
}