gl_client/lsps/lsps1/
schema.rs1use 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}