#[derive(Debug, thiserror::Error)]
pub enum RoomKeyError {
#[error("room group: {0}")]
Group(String),
#[error("seal record: {0}")]
Seal(String),
#[error(
"record did not open: it was sealed under a different key, epoch, or location — a \
relocated record fails here rather than decrypting wrongly"
)]
DidNotOpen,
#[error(
"record is sealed under epoch {sealed} but this holder is at epoch {held}: a commit \
has not been delivered"
)]
EpochAhead { sealed: u32, held: u32 },
#[error(
"record is sealed under epoch {sealed}, which this holder cannot reach — the epoch \
key chain reaches back only to {earliest}"
)]
EpochUnreachable { sealed: u32, earliest: u32 },
}