#[derive(Debug, thiserror::Error)]
pub enum SFrameError {
#[error("MLS export failed: {0}")]
MlsExport(String),
#[error("AEAD encryption failed")]
Encrypt,
#[error("AEAD decryption failed")]
Decrypt,
#[error("invalid SFrame header: {0}")]
Header(String),
#[error("replay detected: KID={kid} CTR={ctr}")]
Replay {
kid: u64,
ctr: u64,
},
#[error("unknown KID {0:#x}: epoch or sender not registered")]
UnknownKid(u64),
}