use thiserror::Error;
#[derive(Debug, Error)]
pub enum RatchetError {
#[error("ML-KEM encapsulation failed")]
EncapFailed,
#[error("ML-KEM decapsulation failed -- ciphertext may be forged or corrupted")]
DecapFailed,
#[error("Header contains invalid ML-KEM encapsulation key")]
InvalidPqEk,
#[error("Header contains invalid ML-KEM ciphertext")]
InvalidPqCt,
#[error(
"Skipped message key cache full ({0} entries) -- too many undelivered messages in flight"
)]
TooManySkipped(usize),
#[error("Message key not found -- message is too old or was already decrypted")]
MessageKeyNotFound,
#[error("Sending chain not initialised -- receiver must wait for first sender message")]
NoSendingChain,
#[error("Receiving chain not initialised -- no message has been received yet")]
NoReceivingChain,
#[error("Malformed header: {0}")]
MalformedHeader(&'static str),
#[error("Malformed session state: {0}")]
MalformedState(&'static str),
}