#[cfg(not(feature = "std"))]
extern crate alloc;
use crate::{Errorizable, Version};
#[derive(Errorizable, Debug, Clone, PartialEq, Eq)]
pub enum MetadataError {
#[error("Missing required field: id")]
MissingId,
#[error("Missing required field: order")]
MissingTimestamp,
#[error("Missing required field: hash (required for V2)")]
MissingHash,
#[error("Missing required field: encryption (required for V1+)")]
MissingEncryption,
#[error("Field '{field}' is not supported in protocol version {version:?}")]
UnsupportedField { field: &'static str, version: Version },
}
#[derive(Errorizable, Debug)]
pub enum BuildError {
#[error("Invalid metadata: {0}")]
#[from]
#[source]
InvalidMetadata(MetadataError),
#[error("Matrix error: {0}")]
#[from]
#[source]
MatrixError(crate::matrix::MatrixError),
#[error("Serialization error: {0}")]
#[from]
#[source]
Serialization(der::Error),
#[cfg(feature = "aead")]
#[error("Encryption error: {0}")]
#[from]
#[source]
Encryption(aead::Error),
#[cfg(feature = "signature")]
#[error("Signature error: {0}")]
#[from]
#[source]
Signature(signature::Error),
#[cfg(feature = "compress")]
#[error("Compression error: {0}")]
Compression(crate::error::CompressionError),
#[cfg(feature = "random")]
#[error("Random number generation error: {0}")]
#[from]
#[source]
Random(rand_core::Error),
#[error("Missing message body")]
MissingMessage,
}