lwk/
error.rs

1use std::sync::{MutexGuard, PoisonError};
2
3use elements::pset::ParseError;
4
5/// Possible errors emitted
6#[derive(uniffi::Error, thiserror::Error, Debug)]
7#[allow(missing_docs)]
8pub enum LwkError {
9    #[error("{msg}")]
10    Generic { msg: String },
11
12    #[error("Poison error: {msg}")]
13    PoisonError { msg: String },
14}
15
16impl From<lwk_wollet::Error> for LwkError {
17    fn from(value: lwk_wollet::Error) -> Self {
18        LwkError::Generic {
19            msg: format!("{:?}", value),
20        }
21    }
22}
23
24impl From<ParseError> for LwkError {
25    fn from(value: ParseError) -> Self {
26        LwkError::Generic {
27            msg: format!("{:?}", value),
28        }
29    }
30}
31
32impl From<elements::pset::Error> for LwkError {
33    fn from(value: elements::pset::Error) -> Self {
34        LwkError::Generic {
35            msg: format!("{:?}", value),
36        }
37    }
38}
39
40impl From<elements::encode::Error> for LwkError {
41    fn from(value: elements::encode::Error) -> Self {
42        LwkError::Generic {
43            msg: format!("{:?}", value),
44        }
45    }
46}
47
48impl From<elements::bitcoin::transaction::ParseOutPointError> for LwkError {
49    fn from(value: elements::bitcoin::transaction::ParseOutPointError) -> Self {
50        LwkError::Generic {
51            msg: format!("{:?}", value),
52        }
53    }
54}
55
56impl From<elements::bitcoin::key::FromWifError> for LwkError {
57    fn from(value: elements::bitcoin::key::FromWifError) -> Self {
58        LwkError::Generic {
59            msg: format!("{:?}", value),
60        }
61    }
62}
63
64impl From<elements::hashes::hex::HexToBytesError> for LwkError {
65    fn from(value: elements::hashes::hex::HexToBytesError) -> Self {
66        LwkError::Generic {
67            msg: format!("{:?}", value),
68        }
69    }
70}
71
72impl From<elements::hashes::hex::HexToArrayError> for LwkError {
73    fn from(value: elements::hashes::hex::HexToArrayError) -> Self {
74        LwkError::Generic {
75            msg: format!("{:?}", value),
76        }
77    }
78}
79
80impl From<elements::AddressError> for LwkError {
81    fn from(value: elements::AddressError) -> Self {
82        LwkError::Generic {
83            msg: format!("{:?}", value),
84        }
85    }
86}
87
88impl From<lwk_signer::bip39::Error> for LwkError {
89    fn from(value: lwk_signer::bip39::Error) -> Self {
90        LwkError::Generic {
91            msg: format!("{:?}", value),
92        }
93    }
94}
95
96impl From<lwk_signer::NewError> for LwkError {
97    fn from(value: lwk_signer::NewError) -> Self {
98        LwkError::Generic {
99            msg: format!("{:?}", value),
100        }
101    }
102}
103
104impl From<lwk_signer::SignError> for LwkError {
105    fn from(value: lwk_signer::SignError) -> Self {
106        LwkError::Generic {
107            msg: format!("{:?}", value),
108        }
109    }
110}
111
112impl From<serde_json::Error> for LwkError {
113    fn from(value: serde_json::Error) -> Self {
114        LwkError::Generic {
115            msg: format!("{:?}", value),
116        }
117    }
118}
119
120impl From<lwk_common::QrError> for LwkError {
121    fn from(value: lwk_common::QrError) -> Self {
122        LwkError::Generic {
123            msg: format!("{:?}", value),
124        }
125    }
126}
127
128impl From<String> for LwkError {
129    fn from(msg: String) -> Self {
130        LwkError::Generic { msg }
131    }
132}
133
134impl From<&str> for LwkError {
135    fn from(msg: &str) -> Self {
136        LwkError::Generic {
137            msg: msg.to_owned(),
138        }
139    }
140}
141
142impl<T> From<PoisonError<MutexGuard<'_, T>>> for LwkError {
143    fn from(e: PoisonError<MutexGuard<'_, T>>) -> Self {
144        LwkError::PoisonError { msg: e.to_string() }
145    }
146}
147
148impl From<lwk_common::precision::Error> for LwkError {
149    fn from(value: lwk_common::precision::Error) -> Self {
150        LwkError::Generic {
151            msg: format!("{:?}", value),
152        }
153    }
154}
155
156impl From<elements::bitcoin::secp256k1::Error> for LwkError {
157    fn from(value: elements::bitcoin::secp256k1::Error) -> Self {
158        LwkError::Generic {
159            msg: format!("{:?}", value),
160        }
161    }
162}
163
164impl From<elements::bitcoin::bip32::Error> for LwkError {
165    fn from(value: elements::bitcoin::bip32::Error) -> Self {
166        LwkError::Generic {
167            msg: format!("{:?}", value),
168        }
169    }
170}
171
172impl From<elements::UnblindError> for LwkError {
173    fn from(value: elements::UnblindError) -> Self {
174        LwkError::Generic {
175            msg: format!("{:?}", value),
176        }
177    }
178}
179
180impl From<lwk_wollet::elements_miniscript::psbt::Error> for LwkError {
181    fn from(value: lwk_wollet::elements_miniscript::psbt::Error) -> Self {
182        LwkError::Generic {
183            msg: format!("{:?}", value),
184        }
185    }
186}