11use aes:: cipher:: block_padding:: UnpadError ;
2- use bitcoin:: Network ;
2+ use bdk:: signer:: SignerError ;
3+ use bdk:: wallet:: error:: BuildFeeBumpError ;
4+ use bdk:: wallet:: tx_builder:: AddUtxoError ;
35use lightning:: ln:: channelmanager:: RetryableSendFailure ;
46use lightning:: ln:: peer_handler:: PeerHandleError ;
5- use lightning_invoice:: payment:: PaymentError ;
67use lightning_invoice:: ParseOrSemanticError ;
78use lightning_rapid_gossip_sync:: GraphSyncError ;
89use lightning_transaction_sync:: TxSyncError ;
@@ -36,7 +37,7 @@ pub enum MutinyError {
3637 ConnectionFailed ,
3738 /// The invoice or address is on a different network
3839 #[ error( "The invoice or address is on a different network." ) ]
39- IncorrectNetwork ( Network ) ,
40+ IncorrectNetwork ,
4041 /// Payment of the given invoice has already been initiated.
4142 #[ error( "An invoice must not get payed twice." ) ]
4243 NonUniquePaymentHash ,
@@ -201,10 +202,11 @@ impl PartialEq for MutinyError {
201202 ( Self :: NotFound , Self :: NotFound ) => true ,
202203 ( Self :: FundingTxCreationFailed , Self :: FundingTxCreationFailed ) => true ,
203204 ( Self :: ConnectionFailed , Self :: ConnectionFailed ) => true ,
204- ( Self :: IncorrectNetwork ( net ) , Self :: IncorrectNetwork ( net2 ) ) => net == net2 ,
205+ ( Self :: IncorrectNetwork , Self :: IncorrectNetwork ) => true ,
205206 ( Self :: NonUniquePaymentHash , Self :: NonUniquePaymentHash ) => true ,
206207 ( Self :: PaymentTimeout , Self :: PaymentTimeout ) => true ,
207208 ( Self :: InvoiceInvalid , Self :: InvoiceInvalid ) => true ,
209+ ( Self :: InvoiceExpired , Self :: InvoiceExpired ) => true ,
208210 ( Self :: InvoiceCreationFailed , Self :: InvoiceCreationFailed ) => true ,
209211 ( Self :: ReserveAmountError , Self :: ReserveAmountError ) => true ,
210212 ( Self :: InsufficientBalance , Self :: InsufficientBalance ) => true ,
@@ -285,14 +287,9 @@ impl From<aes_gcm::aes::cipher::InvalidLength> for MutinyError {
285287 }
286288}
287289
288- impl From < bdk:: Error > for MutinyError {
289- fn from ( e : bdk:: Error ) -> Self {
290- match e {
291- bdk:: Error :: Signer ( _) => Self :: WalletSigningFailed ,
292- bdk:: Error :: InsufficientFunds { .. } => Self :: InsufficientBalance ,
293- bdk:: Error :: TransactionNotFound => Self :: NotFound ,
294- _ => Self :: WalletOperationFailed ,
295- }
290+ impl From < bdk_chain:: local_chain:: AlterCheckPointError > for MutinyError {
291+ fn from ( _e : bdk_chain:: local_chain:: AlterCheckPointError ) -> Self {
292+ Self :: WalletOperationFailed
296293 }
297294}
298295
@@ -305,20 +302,39 @@ impl From<bdk::descriptor::error::Error> for MutinyError {
305302impl From < bdk:: wallet:: NewError < MutinyError > > for MutinyError {
306303 fn from ( e : bdk:: wallet:: NewError < MutinyError > ) -> Self {
307304 match e {
308- bdk:: wallet:: NewError :: Persist ( e) => e,
305+ bdk:: wallet:: NewError :: Write ( e) => e,
309306 bdk:: wallet:: NewError :: Descriptor ( e) => e. into ( ) ,
307+ bdk:: wallet:: NewError :: NonEmptyDatabase => Self :: WalletOperationFailed ,
308+ }
309+ }
310+ }
311+
312+ impl From < bdk:: wallet:: LoadError < MutinyError > > for MutinyError {
313+ fn from ( e : bdk:: wallet:: LoadError < MutinyError > ) -> Self {
314+ match e {
315+ bdk:: wallet:: LoadError :: Descriptor ( e) => e. into ( ) ,
316+ bdk:: wallet:: LoadError :: Load ( e) => e,
317+ bdk:: wallet:: LoadError :: MissingGenesis => Self :: WalletOperationFailed ,
318+ bdk:: wallet:: LoadError :: MissingNetwork => Self :: WalletOperationFailed ,
319+ bdk:: wallet:: LoadError :: NotInitialized => Self :: WalletOperationFailed ,
310320 }
311321 }
312322}
313323
324+ impl From < AddUtxoError > for MutinyError {
325+ fn from ( _: AddUtxoError ) -> Self {
326+ Self :: WalletOperationFailed
327+ }
328+ }
329+
314330impl From < bip39:: Error > for MutinyError {
315331 fn from ( _e : bip39:: Error ) -> Self {
316332 Self :: InvalidMnemonic
317333 }
318334}
319335
320- impl From < bitcoin:: util :: bip32:: Error > for MutinyError {
321- fn from ( _e : bitcoin:: util :: bip32:: Error ) -> Self {
336+ impl From < bitcoin:: bip32:: Error > for MutinyError {
337+ fn from ( _e : bitcoin:: bip32:: Error ) -> Self {
322338 Self :: InvalidMnemonic
323339 }
324340}
@@ -366,15 +382,12 @@ impl From<PeerHandleError> for MutinyError {
366382 }
367383}
368384
369- impl From < PaymentError > for MutinyError {
370- fn from ( e : PaymentError ) -> Self {
371- match e {
372- PaymentError :: Invoice ( _) => Self :: InvoiceInvalid ,
373- PaymentError :: Sending ( s) => match s {
374- RetryableSendFailure :: PaymentExpired => Self :: InvoiceExpired ,
375- RetryableSendFailure :: RouteNotFound => Self :: RoutingFailed ,
376- RetryableSendFailure :: DuplicatePayment => Self :: NonUniquePaymentHash ,
377- } ,
385+ impl From < RetryableSendFailure > for MutinyError {
386+ fn from ( s : RetryableSendFailure ) -> Self {
387+ match s {
388+ RetryableSendFailure :: PaymentExpired => Self :: InvoiceExpired ,
389+ RetryableSendFailure :: RouteNotFound => Self :: RoutingFailed ,
390+ RetryableSendFailure :: DuplicatePayment => Self :: NonUniquePaymentHash ,
378391 }
379392 }
380393}
@@ -427,10 +440,15 @@ impl From<bitcoin::hashes::hex::Error> for MutinyError {
427440 }
428441}
429442
430- impl From < bitcoin:: util:: address:: Error > for MutinyError {
431- fn from ( _e : bitcoin:: util:: address:: Error ) -> Self {
432- MutinyError :: ReadError {
433- source : MutinyStorageError :: Other ( anyhow:: anyhow!( "Failed to decode address" ) ) ,
443+ impl From < bitcoin:: address:: Error > for MutinyError {
444+ fn from ( e : bitcoin:: address:: Error ) -> Self {
445+ match e {
446+ bitcoin:: address:: Error :: NetworkValidation { .. } => MutinyError :: IncorrectNetwork ,
447+ bitcoin:: address:: Error :: UnrecognizedScript => MutinyError :: InvalidArgumentsError ,
448+ bitcoin:: address:: Error :: UnknownAddressType ( _) => MutinyError :: InvalidArgumentsError ,
449+ _ => MutinyError :: ReadError {
450+ source : MutinyStorageError :: Other ( anyhow:: anyhow!( "Failed to decode address" ) ) ,
451+ } ,
434452 }
435453 }
436454}
@@ -442,15 +460,33 @@ impl From<esplora_client::Error> for MutinyError {
442460 }
443461}
444462
445- impl From < bdk_chain :: local_chain :: InsertBlockNotMatchingError > for MutinyError {
446- fn from ( _e : bdk_chain :: local_chain :: InsertBlockNotMatchingError ) -> Self {
463+ impl From < bdk :: wallet :: InsertTxError > for MutinyError {
464+ fn from ( _e : bdk :: wallet :: InsertTxError ) -> Self {
447465 Self :: WalletSyncError
448466 }
449467}
450468
451- impl From < bdk:: wallet:: InsertTxError > for MutinyError {
452- fn from ( _e : bdk:: wallet:: InsertTxError ) -> Self {
453- Self :: WalletSyncError
469+ impl < S > From < bdk:: wallet:: error:: CreateTxError < S > > for MutinyError {
470+ fn from ( _e : bdk:: wallet:: error:: CreateTxError < S > ) -> Self {
471+ Self :: WalletOperationFailed
472+ }
473+ }
474+
475+ impl From < BuildFeeBumpError > for MutinyError {
476+ fn from ( e : BuildFeeBumpError ) -> Self {
477+ match e {
478+ BuildFeeBumpError :: UnknownUtxo ( _) => Self :: NotFound ,
479+ BuildFeeBumpError :: TransactionNotFound ( _) => Self :: NotFound ,
480+ BuildFeeBumpError :: TransactionConfirmed ( _) => Self :: NotFound ,
481+ BuildFeeBumpError :: IrreplaceableTransaction ( _) => Self :: InvalidArgumentsError ,
482+ BuildFeeBumpError :: FeeRateUnavailable => Self :: WalletOperationFailed ,
483+ }
484+ }
485+ }
486+
487+ impl From < SignerError > for MutinyError {
488+ fn from ( _: SignerError ) -> Self {
489+ Self :: WalletOperationFailed
454490 }
455491}
456492
0 commit comments