use alloc::string::{String, ToString};
use core::fmt;
#[derive(Debug, Clone, PartialEq)]
pub enum Error {
InsufficientBalance,
Replay,
PhoenixOwnership,
PhoenixCircuit(String),
PhoenixProver(String),
InvalidData,
BadLength(usize, usize),
InvalidChar(char, usize),
Rkyv(String),
Blob(String),
MemoTooLarge(usize),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Dusk-Core Error: {:?}", &self)
}
}
impl From<phoenix_core::Error> for Error {
fn from(core_error: phoenix_core::Error) -> Self {
#[allow(clippy::match_same_arms)]
match core_error {
phoenix_core::Error::InvalidNoteType(_) => Self::InvalidData,
phoenix_core::Error::MissingViewKey => Self::PhoenixOwnership,
phoenix_core::Error::InvalidEncryption => Self::PhoenixOwnership,
phoenix_core::Error::InvalidData => Self::InvalidData,
phoenix_core::Error::BadLength(found, expected) => {
Self::BadLength(found, expected)
}
phoenix_core::Error::InvalidChar(ch, index) => {
Self::InvalidChar(ch, index)
}
}
}
}
impl From<dusk_bytes::Error> for Error {
fn from(bytes_error: dusk_bytes::Error) -> Self {
match bytes_error {
dusk_bytes::Error::InvalidData => Self::InvalidData,
dusk_bytes::Error::BadLength { found, expected } => {
Self::BadLength(found, expected)
}
dusk_bytes::Error::InvalidChar { ch, index } => {
Self::InvalidChar(ch, index)
}
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum TxPreconditionError {
DeployLowPrice(u64),
DeployLowLimit(u64),
BlobLowLimit(u64),
BlobEmpty,
BlobTooMany(usize),
}
impl TxPreconditionError {
#[must_use]
pub fn legacy_to_string(&self) -> String {
match self {
TxPreconditionError::DeployLowPrice(_) => {
"gas price too low to deploy"
}
TxPreconditionError::DeployLowLimit(_) => {
"not enough gas to deploy"
}
TxPreconditionError::BlobLowLimit(_) => "not enough gas for blobs",
TxPreconditionError::BlobEmpty => {
"no blob attached to the transaction"
}
TxPreconditionError::BlobTooMany(_) => {
"too many blobs in the transaction"
}
}
.to_string()
}
}