use thiserror::Error; #[derive(Debug, Error)] pub enum ProtocolError { #[error("invalid seed length")] InvalidSeedLength, #[error("invalid mnemonic")] InvalidMnemonic, #[error("invalid fingerprint format")] InvalidFingerprint, #[error("invalid signature")] InvalidSignature, #[error("pre-key signature verification failed")] PreKeySignatureInvalid, #[error("X3DH key exchange failed: {0}")] X3DHFailed(String), #[error("ratchet error: {0}")] RatchetError(String), #[error("decryption failed")] DecryptionFailed, #[error("message too old (exceeded max skip)")] MaxSkipExceeded, #[error("serialization error: {0}")] SerializationError(String), }