1
+ use std:: collections:: HashMap ;
2
+ use std:: convert:: TryInto ;
3
+ use std:: ops:: Deref ;
4
+ use std:: sync:: { Arc , Mutex , RwLock } ;
5
+
6
+ use bitcoin:: secp256k1:: PublicKey ;
7
+ use lightning:: ln:: msgs:: {
8
+ ChannelMessageHandler , ErrorAction , LightningError , OnionMessageHandler , RoutingMessageHandler ,
9
+ } ;
10
+ use lightning:: ln:: peer_handler:: {
11
+ APeerManager , CustomMessageHandler , PeerManager , SocketDescriptor ,
12
+ } ;
13
+ use lightning:: routing:: gossip:: NetworkGraph ;
14
+ use lightning:: sign:: { EntropySource , NodeSigner } ;
15
+ use lightning:: util:: logger:: { Level , Logger } ;
16
+
17
+ use crate :: transport:: msgs:: LSPSMessage ;
18
+
19
+ const SUPPORTED_SPEC_VERSION : u16 = 1 ;
20
+
21
+ struct LiquidityChannel {
22
+ id : u128 ,
23
+ user_id : u128 ,
24
+ state : ChannelState ,
25
+ api_version : u16 ,
26
+ lsp_balance_sat : u64 ,
27
+ client_balance_sat : u64 ,
28
+ confirms_within_blocks : u32 ,
29
+ channel_expiry_blocks : u32 ,
30
+ token : String ,
31
+ created_at : String ,
32
+ expires_at : String ,
33
+ counterparty_node_id : PublicKey ,
34
+ scid : Option < u64 > ,
35
+ }
36
+
37
+ enum ChannelState {
38
+ InfoRequested ,
39
+ PendingOrder ,
40
+ OrderRequested ,
41
+ PendingPayment ,
42
+ Ready ,
43
+ }
44
+
45
+
46
+ struct ChannelRequest {
47
+
48
+ }
49
+
50
+ pub struct LiquidityManager <
51
+ ES : Deref ,
52
+ Descriptor : SocketDescriptor + Send + Sync + ' static ,
53
+ L : Deref + Send + Sync + ' static ,
54
+ RM : Deref + Send + Sync + ' static ,
55
+ CM : Deref + Send + Sync + ' static ,
56
+ OM : Deref + Send + Sync + ' static ,
57
+ CMH : Deref + Send + Sync + ' static ,
58
+ NS : Deref + Send + Sync + ' static ,
59
+ > where
60
+ ES :: Target : EntropySource ,
61
+ L :: Target : Logger ,
62
+ RM :: Target : RoutingMessageHandler ,
63
+ CM :: Target : ChannelMessageHandler ,
64
+ OM :: Target : OnionMessageHandler ,
65
+ CMH :: Target : CustomMessageHandler ,
66
+ NS :: Target : NodeSigner ,
67
+ {
68
+ entropy_source : ES ,
69
+ peer_manager : Mutex < Option < Arc < PeerManager < Descriptor , CM , RM , OM , L , CMH , NS > > > > ,
70
+ pending_messages : Arc < Mutex < Vec < ( PublicKey , LSPSMessage ) > > > ,
71
+ pending_events : Arc < Mutex < Vec < Event > > > ,
72
+ //per_peer_state: RwLock<HashMap<PublicKey, Mutex<PeerState>>>,
73
+ channels_by_scid : RwLock < HashMap < u64 , LiquidityChannel > > ,
74
+ }
75
+
76
+
77
+ impl <
78
+ ES : Deref ,
79
+ Descriptor : SocketDescriptor + Send + Sync + ' static ,
80
+ L : Deref + Send + Sync + ' static ,
81
+ RM : Deref + Send + Sync + ' static ,
82
+ CM : Deref + Send + Sync + ' static ,
83
+ OM : Deref + Send + Sync + ' static ,
84
+ CMH : Deref + Send + Sync + ' static ,
85
+ NS : Deref + Send + Sync + ' static ,
86
+ > LiquidityManager < ES , Descriptor , L , RM , CM , OM , CMH , NS >
87
+ where
88
+ ES :: Target : EntropySource ,
89
+ L :: Target : Logger ,
90
+ RM :: Target : RoutingMessageHandler ,
91
+ CM :: Target : ChannelMessageHandler ,
92
+ OM :: Target : OnionMessageHandler ,
93
+ CMH :: Target : CustomMessageHandler ,
94
+ NS :: Target : NodeSigner ,
95
+ {
96
+
97
+ fn handle_get_info_request ( ) { }
98
+
99
+ fn handle_get_info_response ( ) { }
100
+
101
+ fn liquidity_source_selected ( ) { }
102
+
103
+ fn generate_order ( ) { }
104
+
105
+ fn handle_create_order_request ( ) { }
106
+
107
+ fn handle_create_order_response ( ) { }
108
+
109
+ fn handle_create_order_error ( ) { }
110
+
111
+ fn handle_get_order_request ( ) { }
112
+
113
+ fn handle_get_order_response ( ) { }
114
+
115
+ fn payment_for_channel ( ) { }
116
+
117
+ fn onchain_payment ( ) { }
118
+
119
+ fn lighnting_payment ( ) { }
120
+
121
+ fn check_payment_status ( ) { }
122
+
123
+ fn update_payment_status ( ) { }
124
+
125
+ fn channel_ready ( ) { }
126
+
127
+ fn update_order_status ( ) { }
128
+
129
+ fn channel_error ( ) { }
130
+
131
+ }
0 commit comments