use crate::blueprints::resource::AccessRule;
use crate::*;
#[cfg(feature = "radix_engine_fuzzing")]
use arbitrary::Arbitrary;
#[derive(Debug, Clone, Copy, PartialOrd, PartialEq, Ord, Eq, ScryptoSbor, Hash)]
pub enum Role {
Primary,
Recovery,
Confirmation,
}
#[derive(Debug, Clone, Copy, PartialOrd, PartialEq, Ord, Eq, ScryptoSbor, Hash)]
pub enum Proposer {
Primary,
Recovery,
}
impl From<Proposer> for Role {
fn from(value: Proposer) -> Self {
match value {
Proposer::Primary => Role::Primary,
Proposer::Recovery => Role::Recovery,
}
}
}
#[cfg_attr(feature = "radix_engine_fuzzing", derive(Arbitrary))]
#[derive(Debug, Clone, Eq, PartialEq, ScryptoSbor, ManifestSbor)]
pub struct RuleSet {
pub primary_role: AccessRule,
pub recovery_role: AccessRule,
pub confirmation_role: AccessRule,
}
#[derive(Debug, Clone, PartialEq, Eq, ScryptoSbor)]
pub struct RecoveryProposal {
pub rule_set: RuleSet,
pub timed_recovery_delay_in_minutes: Option<u32>,
}