use thiserror::Error;
pub use yldfi_common::api::ApiError;
#[derive(Error, Debug)]
#[non_exhaustive]
pub enum DomainError {
#[error("No route found for the requested swap")]
NoRouteFound,
#[error("No transaction data in quote response")]
NoTransaction,
#[error("Invalid chain ID: {0}")]
InvalidChainId(u64),
#[error("Invalid token address: {0}")]
InvalidTokenAddress(String),
#[error("Slippage exceeded maximum allowed: {0}%")]
SlippageExceeded(f64),
}
pub type Error = ApiError<DomainError>;
pub type Result<T> = std::result::Result<T, Error>;
pub fn no_route_found() -> Error {
ApiError::domain(DomainError::NoRouteFound)
}
pub fn no_transaction() -> Error {
ApiError::domain(DomainError::NoTransaction)
}
pub fn invalid_chain_id(chain_id: u64) -> Error {
ApiError::domain(DomainError::InvalidChainId(chain_id))
}
pub fn invalid_token_address(address: impl Into<String>) -> Error {
ApiError::domain(DomainError::InvalidTokenAddress(address.into()))
}
pub fn slippage_exceeded(slippage: f64) -> Error {
ApiError::domain(DomainError::SlippageExceeded(slippage))
}