use std::collections::HashMap;
use serde::{Deserialize, Serialize};
pub type Base64String = String;
#[derive(Debug, Deserialize, Eq, PartialEq, Clone)]
pub enum InvoiceState {
OPEN = 0,
SETTLED = 1,
CANCELED = 2,
ACCEPTED = 3,
}
#[derive(Debug, Serialize)]
pub struct AddInvoiceRequest {
pub memo: Option<String>,
pub r_preimage: Option<String>,
pub value_msat: u64,
pub description_hash: Option<String>,
pub expiry: i32,
pub fallback_addr: Option<String>,
pub cltv_expiry: Option<i32>,
}
#[derive(Debug, Deserialize)]
pub struct AddInvoiceResponse {
pub r_hash: Base64String,
pub payment_request: String,
pub add_index: String,
pub payment_addr: Base64String,
}
#[derive(Debug, Deserialize, Clone)]
pub struct LookupInvoiceResponse {
pub memo: String,
pub r_preimage: Base64String,
pub r_hash: Base64String,
pub value: String,
pub value_msat: String,
pub settled: bool,
pub settle_date: String,
pub creation_date: String,
pub payment_request: String,
pub expiry: String,
pub state: InvoiceState,
}
#[derive(Debug, Serialize)]
pub struct FeeLimit {
pub fixed: Option<String>,
pub fixed_msat: Option<String>,
pub percent: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct SendPaymentSyncRequest {
pub dest: Option<Base64String>,
pub amt: Option<String>,
pub amt_msat: Option<String>,
pub payment_hash: Option<Base64String>,
pub payment_request: String,
pub final_cltv_delta: Option<i32>,
pub fee_limit: Option<FeeLimit>,
pub outgoing_chan_id: Option<String>,
pub last_hop_pubkey: Option<Base64String>,
pub cltv_limit: Option<i64>,
pub allow_self_payment: Option<bool>,
pub dest_features: Option<Vec<u8>>,
pub payment_addr: Option<Base64String>,
}
#[derive(Debug, Deserialize)]
pub struct MppRecord {
pub payment_addr: Base64String,
pub total_amt_msat: String,
}
#[derive(Debug, Deserialize)]
pub struct AmpRecord {
pub root_share: Base64String,
pub set_id: Base64String,
pub child_index: i64,
}
#[derive(Debug, Deserialize)]
pub struct Hop {
pub chan_id: String,
pub chan_capacity: String,
pub amt_to_forward: String,
pub fee: String,
pub expiry: i64,
pub amt_to_forward_msat: String,
pub fee_msat: String,
pub pub_key: Option<String>,
pub tlv_payload: bool,
pub mpp_record: Option<MppRecord>,
pub amp_record: Option<AmpRecord>,
pub custom_records: HashMap<String, String>,
pub metadata: Base64String,
}
#[derive(Debug, Deserialize)]
pub struct Route {
pub total_time_lock: i64,
pub total_amt: String,
pub total_amt_msat: String,
pub total_fees: String,
pub total_fees_msat: String,
pub hops: Vec<Hop>,
}
#[derive(Debug, Deserialize)]
pub struct SendPaymentSyncResponse {
pub payment_error: String,
pub payment_preimage: Base64String,
pub payment_route: Option<Route>,
pub payment_hash: Base64String,
}