agent-pay 0.1.0

L402 + DID-signed invoices: agent-to-agent Lightning payments (Rust port of @p-vbordei/agent-pay)
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum Error {
    #[error("invalid did:key: {0}")]
    InvalidDidKey(String),
    #[error("multibase decode error: {0}")]
    Multibase(String),
    #[error("ed25519 error: {0}")]
    Ed25519(String),
    #[error("bolt11 error: {0}")]
    Bolt11(String),
    #[error("jws error: {0}")]
    Jws(String),
    #[error("envelope error: {0}")]
    Envelope(String),
    #[error("token error: {0}")]
    Token(String),
    #[error("lightning error: {0}")]
    Lightning(String),
    #[error("paywall: {0}")]
    Paywall(String),
    #[error("fetch-with-l402: {reason}: {message}")]
    FetchWithL402 { message: String, reason: String },
    #[error("json error: {0}")]
    Json(#[from] serde_json::Error),
    #[error("http error: {0}")]
    Http(String),
    #[error("{0}")]
    Other(String),
}

impl Error {
    pub fn fetch(message: impl Into<String>, reason: impl Into<String>) -> Self {
        Error::FetchWithL402 {
            message: message.into(),
            reason: reason.into(),
        }
    }
}