use alloc::string::String;
use alloy_eips::BlockNumHash;
use alloy_primitives::B256;
use thiserror::Error;
#[derive(Error, Clone, Debug, PartialEq, Eq)]
pub enum BuilderError {
#[error("Block mismatch. Expected {0:?}, got {1:?}")]
BlockMismatch(BlockNumHash, BlockNumHash),
#[error("Block mismatch on epoch reset. Expected {0:?}, got {1:?}")]
BlockMismatchEpochReset(BlockNumHash, BlockNumHash, B256),
#[error("System config update failed")]
SystemConfigUpdate,
#[error(
"Time invariant broken. L1 origin: {0:?} | Next L2 time: {1} | L1 block: {2:?} | L1 timestamp {3:?}"
)]
BrokenTimeInvariant(BlockNumHash, u64, BlockNumHash, u64),
#[error("Attributes unavailable")]
AttributesUnavailable,
#[error("Error in attributes builder: {0}")]
Custom(String),
}