lightning_liquidity/events/
mod.rs

1// This file is Copyright its original authors, visible in version control
2// history.
3//
4// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
5// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
7// You may not use this file except in accordance with one or both of these
8// licenses.
9
10//! Events are surfaced by the library to indicate some action must be taken
11//! by the end-user.
12//!
13//! Because we don't have a built-in runtime, it's up to the end-user to poll
14//! [`LiquidityManager::get_and_clear_pending_events`] to receive events.
15//!
16//! [`LiquidityManager::get_and_clear_pending_events`]: crate::LiquidityManager::get_and_clear_pending_events
17
18mod event_queue;
19
20pub use event_queue::MAX_EVENT_QUEUE_SIZE;
21pub(crate) use event_queue::{EventQueue, EventQueueDeserWrapper};
22
23use crate::lsps0;
24use crate::lsps1;
25use crate::lsps2;
26use crate::lsps5;
27
28/// An event which you should probably take some action in response to.
29#[derive(Debug, Clone, PartialEq, Eq)]
30pub enum LiquidityEvent {
31	/// An LSPS0 client event.
32	LSPS0Client(lsps0::event::LSPS0ClientEvent),
33	/// An LSPS1 (Channel Request) client event.
34	LSPS1Client(lsps1::event::LSPS1ClientEvent),
35	/// An LSPS1 (Channel Request) server event.
36	#[cfg(lsps1_service)]
37	LSPS1Service(lsps1::event::LSPS1ServiceEvent),
38	/// An LSPS2 (JIT Channel) client event.
39	LSPS2Client(lsps2::event::LSPS2ClientEvent),
40	/// An LSPS2 (JIT Channel) server event.
41	LSPS2Service(lsps2::event::LSPS2ServiceEvent),
42	/// An LSPS5 (Webhook) client event.
43	LSPS5Client(lsps5::event::LSPS5ClientEvent),
44	/// An LSPS5 (Webhook) server event.
45	LSPS5Service(lsps5::event::LSPS5ServiceEvent),
46}
47
48impl From<lsps0::event::LSPS0ClientEvent> for LiquidityEvent {
49	fn from(event: lsps0::event::LSPS0ClientEvent) -> Self {
50		Self::LSPS0Client(event)
51	}
52}
53
54impl From<lsps1::event::LSPS1ClientEvent> for LiquidityEvent {
55	fn from(event: lsps1::event::LSPS1ClientEvent) -> Self {
56		Self::LSPS1Client(event)
57	}
58}
59
60#[cfg(lsps1_service)]
61impl From<lsps1::event::LSPS1ServiceEvent> for LiquidityEvent {
62	fn from(event: lsps1::event::LSPS1ServiceEvent) -> Self {
63		Self::LSPS1Service(event)
64	}
65}
66
67impl From<lsps2::event::LSPS2ClientEvent> for LiquidityEvent {
68	fn from(event: lsps2::event::LSPS2ClientEvent) -> Self {
69		Self::LSPS2Client(event)
70	}
71}
72
73impl From<lsps2::event::LSPS2ServiceEvent> for LiquidityEvent {
74	fn from(event: lsps2::event::LSPS2ServiceEvent) -> Self {
75		Self::LSPS2Service(event)
76	}
77}
78
79impl From<lsps5::event::LSPS5ClientEvent> for LiquidityEvent {
80	fn from(event: lsps5::event::LSPS5ClientEvent) -> Self {
81		Self::LSPS5Client(event)
82	}
83}
84
85impl From<lsps5::event::LSPS5ServiceEvent> for LiquidityEvent {
86	fn from(event: lsps5::event::LSPS5ServiceEvent) -> Self {
87		Self::LSPS5Service(event)
88	}
89}