1use std::sync::{MutexGuard, PoisonError};
2
3use elements::pset::ParseError;
4
5#[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}