breez_sdk_spark/token_conversion/
error.rs1use flashnet::FlashnetError;
2
3use crate::SdkError;
4
5#[derive(Debug, thiserror::Error)]
7pub enum ConversionError {
8 #[error("No conversion pools available")]
9 NoPoolsAvailable,
10 #[error("Conversion failed: {0}")]
11 ConversionFailed(String),
12 #[error("Duplicate transfer: conversion already handled")]
13 DuplicateTransfer,
14 #[error("Validation failed: {0}")]
15 ValidationFailed(String),
16 #[error("Refund failed: {0}")]
17 RefundFailed(String),
18 #[error("SDK error: {0}")]
19 Sdk(#[from] SdkError),
20 #[error("Storage error: {0}")]
21 Storage(#[from] crate::persist::StorageError),
22 #[error("Wallet error: {0}")]
23 Wallet(#[from] spark_wallet::SparkWalletError),
24}
25
26impl ConversionError {
27 pub fn is_duplicate_transfer(&self) -> bool {
30 matches!(self, ConversionError::DuplicateTransfer)
31 }
32}
33
34impl From<FlashnetError> for ConversionError {
35 fn from(e: FlashnetError) -> Self {
36 if let FlashnetError::Network {
38 code: Some(409), ..
39 } = &e
40 {
41 return ConversionError::DuplicateTransfer;
42 }
43 ConversionError::ConversionFailed(e.to_string())
44 }
45}