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("Conversion failed: {message}")]
14 FailedAfterSwap {
15 message: String,
16 sent_payment_id: Option<String>,
19 received_payment_id: Option<String>,
22 },
23 #[error("Duplicate transfer: conversion already handled")]
24 DuplicateTransfer,
25 #[error("Validation failed: {0}")]
26 ValidationFailed(String),
27 #[error("Refund failed: {0}")]
28 RefundFailed(String),
29 #[error("SDK error: {0}")]
30 Sdk(#[from] SdkError),
31 #[error("Storage error: {0}")]
32 Storage(#[from] crate::persist::StorageError),
33 #[error("Wallet error: {0}")]
34 Wallet(#[from] spark_wallet::SparkWalletError),
35}
36
37impl ConversionError {
38 pub fn is_duplicate_transfer(&self) -> bool {
41 matches!(self, ConversionError::DuplicateTransfer)
42 }
43}
44
45impl From<FlashnetError> for ConversionError {
46 fn from(e: FlashnetError) -> Self {
47 if let FlashnetError::Network {
49 code: Some(409), ..
50 } = &e
51 {
52 return ConversionError::DuplicateTransfer;
53 }
54 ConversionError::ConversionFailed(e.to_string())
55 }
56}