gl_client/lsps/lsps1/
schema.rs

1use crate::lsps::lsps0::common_schemas::{IsoDatetime, SatAmount};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5pub type OnchainFeeRate = u64;
6
7#[derive(Debug, Serialize, Deserialize)]
8pub struct Lsps1InfoResponse {
9    supported_versions: Vec<u16>,
10    website: Option<String>,
11    options: Lsps1Options,
12}
13
14#[derive(Debug, Serialize, Deserialize)]
15pub struct Lsps1Options {
16    minimum_channel_confirmations: Option<u8>,
17    minimum_onchain_payment_confirmations: Option<u8>,
18    supports_zero_channel_reserve: bool,
19    min_onchain_payment_size_sat: Option<u64>,
20    max_channel_expiry_blocks: Option<u32>,
21    min_initial_client_balance_sat: Option<u64>,
22    min_initial_lsp_balance_sat: Option<u64>,
23    max_initial_client_balance_sat: Option<u64>,
24    min_channel_balance_sat: Option<u64>,
25    max_channel_balance_sat: Option<u64>,
26}
27
28#[derive(Debug, Serialize, Deserialize)]
29pub struct Lsps1GetOrderRequest {
30    pub api_version: u16,
31    pub lsp_balance_sat: SatAmount,
32    pub client_balance_sat: SatAmount,
33    pub confirms_within_blocks: u8,
34    pub channel_expiry_blocks: u32,
35    pub token: Option<String>,
36    pub refund_onchain_address: Option<String>,
37    #[serde(rename = "announceChannel")]
38    pub announce_channel: String,
39}
40
41#[derive(Debug, Serialize, Deserialize)]
42pub struct Lsps1GetOrderResponse {
43    uuid: Uuid,
44    api_version: u16,
45    lsp_balance_sat: SatAmount,
46    client_balance_sat: SatAmount,
47    confirms_within_blocks: u8,
48    channel_expiry_blocks: u8,
49    token: String,
50    #[serde(rename = "announceChannel")]
51    announce_channel: bool,
52    created_at: IsoDatetime,
53    expires_at: IsoDatetime,
54    order_state: OrderState,
55    payment: Payment,
56}
57
58#[derive(Debug, Serialize, Deserialize)]
59enum OrderState {
60    #[serde(rename = "CREATED")]
61    Created,
62    #[serde(rename = "COMPLETED")]
63    Completed,
64    #[serde(rename = "FAILED")]
65    Failed,
66}
67
68#[derive(Debug, Serialize, Deserialize)]
69enum PaymentState {
70    #[serde(rename = "EXPECT_PAYMENT")]
71    ExpectPayment,
72    #[serde(rename = "HOLD")]
73    Hold,
74    #[serde(rename = "STATE")]
75    State,
76    #[serde(rename = "REFUNDED")]
77    Refunded,
78}
79
80#[derive(Debug, Serialize, Deserialize)]
81struct OnchainPayment {
82    outpoint: String,
83    sat: SatAmount,
84    confirmed: bool,
85}
86
87#[derive(Debug, Serialize, Deserialize)]
88struct Payment {
89    state: PaymentState,
90    fee_total_sat: SatAmount,
91    order_total_sat: SatAmount,
92
93    bolt11_invoice: String,
94    onchain_address: String,
95    required_onchain_block_confirmations: u8,
96
97    minimum_fee_for_0conf: OnchainFeeRate,
98    on_chain_payments: Vec<OnchainPayment>,
99}