use thiserror::Error;
use tonic::Status;
#[derive(Debug, Error)]
pub enum Error {
#[error(transparent)]
Amount(#[from] cdk_common::amount::Error),
#[error("Unknown invoice amount")]
UnknownInvoiceAmount,
#[error("Unknown invoice")]
UnknownInvoice,
#[error("LND connection error")]
Connection,
#[error("Invalid hash")]
InvalidHash,
#[error("LND payment failed")]
PaymentFailed,
#[error("LND unknown payment status")]
UnknownPaymentStatus,
#[error("LND missing last hop in route")]
MissingLastHop,
#[error("No route found")]
NoRoute,
#[error("Amount overflow")]
AmountOverflow,
#[error("LND error: `{0}`")]
LndError(Status),
#[error("LND invalid config: `{0}`")]
InvalidConfig(String),
#[error("Could not read file")]
ReadFile,
#[error("Database error: {0}")]
Database(String),
}
impl From<Error> for cdk_common::payment::Error {
fn from(e: Error) -> Self {
Self::Lightning(Box::new(e))
}
}