Skip to content

Commit 6b09421

Browse files
kaloudisclaude
andcommitted
feat: add LSPS7 UniFFI bindings and generated Swift/Kotlin bindings
Add LSPS7 types (LSPS7OrderResponse, LSPS7ExtendableChannel, LSPS7OriginalOrder, LSPS7OrderState, LSPS7OrderId) to UDL, FFI type converters, and ArcedNodeBuilder for UniFFI support. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 798173c commit 6b09421

File tree

4 files changed

+1075
-154
lines changed

4 files changed

+1075
-154
lines changed

bindings/ldk_node.udl

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ interface Builder {
103103
void set_pathfinding_scores_source(string url);
104104
void set_liquidity_source_lsps1(PublicKey node_id, SocketAddress address, string? token);
105105
void set_liquidity_source_lsps2(PublicKey node_id, SocketAddress address, string? token);
106+
void set_liquidity_source_lsps7(PublicKey node_id, SocketAddress address, string? token);
106107
void set_storage_dir_path(string storage_dir_path);
107108
void set_filesystem_logger(string? log_file_path, LogLevel? max_log_level);
108109
void set_log_facade_logger();
@@ -151,6 +152,7 @@ interface Node {
151152
OnchainPayment onchain_payment();
152153
UnifiedQrPayment unified_qr_payment();
153154
LSPS1Liquidity lsps1_liquidity();
155+
LSPS7Liquidity lsps7_liquidity();
154156
[Throws=NodeError]
155157
void connect(PublicKey node_id, SocketAddress address, boolean persist);
156158
[Throws=NodeError]
@@ -289,6 +291,15 @@ interface LSPS1Liquidity {
289291
LSPS1OrderStatus check_order_status(LSPS1OrderId order_id);
290292
};
291293

294+
interface LSPS7Liquidity {
295+
[Throws=NodeError]
296+
sequence<LSPS7ExtendableChannel> get_extendable_channels();
297+
[Throws=NodeError]
298+
LSPS7OrderResponse create_order(string short_channel_id, u32 channel_extension_expiry_blocks, string? token, string? refund_onchain_address);
299+
[Throws=NodeError]
300+
LSPS7OrderResponse check_order_status(string order_id);
301+
};
302+
292303
[Error]
293304
enum NodeError {
294305
"AlreadyRunning",
@@ -559,6 +570,34 @@ enum LSPS1PaymentState {
559570
"Refunded",
560571
};
561572

573+
dictionary LSPS7OrderResponse {
574+
LSPS7OrderId order_id;
575+
LSPS7OrderState order_state;
576+
u32 channel_extension_expiry_blocks;
577+
u32 new_channel_expiry_block;
578+
LSPS1PaymentInfo payment;
579+
LSPS7ExtendableChannel channel;
580+
};
581+
582+
dictionary LSPS7ExtendableChannel {
583+
LSPS7OriginalOrder? original_order;
584+
sequence<string>? extension_order_ids;
585+
string short_channel_id;
586+
u32 max_channel_extension_expiry_blocks;
587+
u32 expiration_block;
588+
};
589+
590+
dictionary LSPS7OriginalOrder {
591+
string id;
592+
string service;
593+
};
594+
595+
enum LSPS7OrderState {
596+
"Created",
597+
"Completed",
598+
"Failed",
599+
};
600+
562601
[NonExhaustive]
563602
enum Network {
564603
"Bitcoin",
@@ -901,6 +940,9 @@ typedef string NodeAlias;
901940
[Custom]
902941
typedef string LSPS1OrderId;
903942

943+
[Custom]
944+
typedef string LSPS7OrderId;
945+
904946
[Custom]
905947
typedef string LSPSDateTime;
906948

0 commit comments

Comments
 (0)