use std::fmt;
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Error {
AlreadyRunning,
NotRunning,
OnchainTxCreationFailed,
ConnectionFailed,
InvoiceCreationFailed,
InvoiceRequestCreationFailed,
OfferCreationFailed,
RefundCreationFailed,
PaymentSendingFailed,
ProbeSendingFailed,
ChannelCreationFailed,
ChannelClosingFailed,
ChannelConfigUpdateFailed,
PersistenceFailed,
FeerateEstimationUpdateFailed,
FeerateEstimationUpdateTimeout,
WalletOperationFailed,
WalletOperationTimeout,
OnchainTxSigningFailed,
MessageSigningFailed,
TxSyncFailed,
TxSyncTimeout,
GossipUpdateFailed,
GossipUpdateTimeout,
LiquidityRequestFailed,
InvalidAddress,
InvalidSocketAddress,
InvalidPublicKey,
InvalidSecretKey,
InvalidOfferId,
InvalidNodeId,
InvalidPaymentId,
InvalidPaymentHash,
InvalidPaymentPreimage,
InvalidPaymentSecret,
InvalidAmount,
InvalidInvoice,
InvalidOffer,
InvalidRefund,
InvalidChannelId,
InvalidNetwork,
DuplicatePayment,
UnsupportedCurrency,
InsufficientFunds,
LiquiditySourceUnavailable,
LiquidityFeeTooHigh,
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
Self::AlreadyRunning => write!(f, "Node is already running."),
Self::NotRunning => write!(f, "Node is not running."),
Self::OnchainTxCreationFailed => {
write!(f, "On-chain transaction could not be created.")
},
Self::ConnectionFailed => write!(f, "Network connection closed."),
Self::InvoiceCreationFailed => write!(f, "Failed to create invoice."),
Self::InvoiceRequestCreationFailed => write!(f, "Failed to create invoice request."),
Self::OfferCreationFailed => write!(f, "Failed to create offer."),
Self::RefundCreationFailed => write!(f, "Failed to create refund."),
Self::PaymentSendingFailed => write!(f, "Failed to send the given payment."),
Self::ProbeSendingFailed => write!(f, "Failed to send the given payment probe."),
Self::ChannelCreationFailed => write!(f, "Failed to create channel."),
Self::ChannelClosingFailed => write!(f, "Failed to close channel."),
Self::ChannelConfigUpdateFailed => write!(f, "Failed to update channel config."),
Self::PersistenceFailed => write!(f, "Failed to persist data."),
Self::FeerateEstimationUpdateFailed => {
write!(f, "Failed to update fee rate estimates.")
},
Self::FeerateEstimationUpdateTimeout => {
write!(f, "Updating fee rate estimates timed out.")
},
Self::WalletOperationFailed => write!(f, "Failed to conduct wallet operation."),
Self::WalletOperationTimeout => write!(f, "A wallet operation timed out."),
Self::OnchainTxSigningFailed => write!(f, "Failed to sign given transaction."),
Self::MessageSigningFailed => write!(f, "Failed to sign given message."),
Self::TxSyncFailed => write!(f, "Failed to sync transactions."),
Self::TxSyncTimeout => write!(f, "Syncing transactions timed out."),
Self::GossipUpdateFailed => write!(f, "Failed to update gossip data."),
Self::GossipUpdateTimeout => write!(f, "Updating gossip data timed out."),
Self::LiquidityRequestFailed => write!(f, "Failed to request inbound liquidity."),
Self::InvalidAddress => write!(f, "The given address is invalid."),
Self::InvalidSocketAddress => write!(f, "The given network address is invalid."),
Self::InvalidPublicKey => write!(f, "The given public key is invalid."),
Self::InvalidSecretKey => write!(f, "The given secret key is invalid."),
Self::InvalidOfferId => write!(f, "The given offer id is invalid."),
Self::InvalidNodeId => write!(f, "The given node id is invalid."),
Self::InvalidPaymentId => write!(f, "The given payment id is invalid."),
Self::InvalidPaymentHash => write!(f, "The given payment hash is invalid."),
Self::InvalidPaymentPreimage => write!(f, "The given payment preimage is invalid."),
Self::InvalidPaymentSecret => write!(f, "The given payment secret is invalid."),
Self::InvalidAmount => write!(f, "The given amount is invalid."),
Self::InvalidInvoice => write!(f, "The given invoice is invalid."),
Self::InvalidOffer => write!(f, "The given offer is invalid."),
Self::InvalidRefund => write!(f, "The given refund is invalid."),
Self::InvalidChannelId => write!(f, "The given channel ID is invalid."),
Self::InvalidNetwork => write!(f, "The given network is invalid."),
Self::DuplicatePayment => {
write!(f, "A payment with the given hash has already been initiated.")
},
Self::InsufficientFunds => {
write!(f, "The available funds are insufficient to complete the given operation.")
},
Self::UnsupportedCurrency => {
write!(f, "The provided offer was denonminated in an unsupported currency.")
},
Self::LiquiditySourceUnavailable => {
write!(f, "The given operation failed due to the required liquidity source being unavailable.")
},
Self::LiquidityFeeTooHigh => {
write!(f, "The given operation failed due to the LSP's required opening fee being too high.")
},
}
}
}
impl std::error::Error for Error {}
impl From<bdk::Error> for Error {
fn from(e: bdk::Error) -> Self {
match e {
bdk::Error::Signer(_) => Self::OnchainTxSigningFailed,
_ => Self::WalletOperationFailed,
}
}
}
impl From<lightning_transaction_sync::TxSyncError> for Error {
fn from(_e: lightning_transaction_sync::TxSyncError) -> Self {
Self::TxSyncFailed
}
}