use thiserror::Error;
pub type Result<T> = core::result::Result<T, RootError>;
#[derive(Debug, Clone, PartialEq, Eq, Error)]
pub enum RootError {
#[error("ceremony configuration rejected: {reason}")]
InvalidConfig { reason: String },
#[error("canonical encoding failed: {detail}")]
CanonicalEncoding { detail: String },
#[error("frost operation failed: {detail}")]
Frost { detail: String },
#[error("threshold not met: required {required}, supplied {supplied}")]
ThresholdNotMet { required: u16, supplied: u16 },
#[error("signature verification failed: {reason}")]
SignatureRejected { reason: String },
#[error("root bundle rejected: {reason}")]
BundleRejected { reason: String },
#[error("portal envelope rejected: {reason}")]
PortalRejected { reason: String },
#[error("share protection failed: {reason}")]
ProtectionFailed { reason: String },
}