beignet 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/README.md +284 -1
  2. package/dist/cli/beignet-node.js +1019 -47
  3. package/dist/cli/beignet-node.js.map +1 -1
  4. package/dist/cli/cli.js +1201 -16
  5. package/dist/cli/cli.js.map +1 -1
  6. package/dist/cli/config.js +21 -1
  7. package/dist/cli/config.js.map +1 -1
  8. package/dist/cli/daemon.js +342 -16
  9. package/dist/cli/daemon.js.map +1 -1
  10. package/dist/cli/errors.js +2 -0
  11. package/dist/cli/errors.js.map +1 -1
  12. package/dist/cli/openapi.js +1207 -14
  13. package/dist/cli/openapi.js.map +1 -1
  14. package/dist/cli/restore.js +89 -0
  15. package/dist/cli/restore.js.map +1 -0
  16. package/dist/cli/wallet-storage.js +34 -0
  17. package/dist/cli/wallet-storage.js.map +1 -0
  18. package/dist/electrum/index.js +105 -10
  19. package/dist/electrum/index.js.map +1 -1
  20. package/dist/lightning/advisor/fee-tuner.js +42 -0
  21. package/dist/lightning/advisor/fee-tuner.js.map +1 -0
  22. package/dist/lightning/advisor/index.js +9 -1
  23. package/dist/lightning/advisor/index.js.map +1 -1
  24. package/dist/lightning/advisor/rebalance-planner.js +55 -0
  25. package/dist/lightning/advisor/rebalance-planner.js.map +1 -0
  26. package/dist/lightning/backup/index.js +18 -0
  27. package/dist/lightning/backup/index.js.map +1 -0
  28. package/dist/lightning/backup/scb.js +42 -0
  29. package/dist/lightning/backup/scb.js.map +1 -0
  30. package/dist/lightning/chain/chain-monitor.js +27 -0
  31. package/dist/lightning/chain/chain-monitor.js.map +1 -1
  32. package/dist/lightning/chain/output-resolver.js +55 -6
  33. package/dist/lightning/chain/output-resolver.js.map +1 -1
  34. package/dist/lightning/chain/types.js +1 -0
  35. package/dist/lightning/chain/types.js.map +1 -1
  36. package/dist/lightning/channel/channel-manager.js +64 -0
  37. package/dist/lightning/channel/channel-manager.js.map +1 -1
  38. package/dist/lightning/channel/channel-state.js.map +1 -1
  39. package/dist/lightning/channel/channel.js +124 -4
  40. package/dist/lightning/channel/channel.js.map +1 -1
  41. package/dist/lightning/channel/dual-funding.js +6 -5
  42. package/dist/lightning/channel/dual-funding.js.map +1 -1
  43. package/dist/lightning/channel/types.js +3 -1
  44. package/dist/lightning/channel/types.js.map +1 -1
  45. package/dist/lightning/channel/validation.js +3 -3
  46. package/dist/lightning/channel/validation.js.map +1 -1
  47. package/dist/lightning/crypto/index.js +1 -0
  48. package/dist/lightning/crypto/index.js.map +1 -1
  49. package/dist/lightning/crypto/message-signing.js +116 -0
  50. package/dist/lightning/crypto/message-signing.js.map +1 -0
  51. package/dist/lightning/crypto/xchacha20poly1305.js +77 -0
  52. package/dist/lightning/crypto/xchacha20poly1305.js.map +1 -0
  53. package/dist/lightning/features/flags.js +1 -0
  54. package/dist/lightning/features/flags.js.map +1 -1
  55. package/dist/lightning/gossip/messages.js +37 -1
  56. package/dist/lightning/gossip/messages.js.map +1 -1
  57. package/dist/lightning/index.js +2 -1
  58. package/dist/lightning/index.js.map +1 -1
  59. package/dist/lightning/keys/wallet-keys.js +1 -0
  60. package/dist/lightning/keys/wallet-keys.js.map +1 -1
  61. package/dist/lightning/message/index.js +1 -0
  62. package/dist/lightning/message/index.js.map +1 -1
  63. package/dist/lightning/message/peer-storage.js +43 -0
  64. package/dist/lightning/message/peer-storage.js.map +1 -0
  65. package/dist/lightning/message/types.js +2 -0
  66. package/dist/lightning/message/types.js.map +1 -1
  67. package/dist/lightning/node/lightning-node.js +1583 -235
  68. package/dist/lightning/node/lightning-node.js.map +1 -1
  69. package/dist/lightning/node/types.js +18 -1
  70. package/dist/lightning/node/types.js.map +1 -1
  71. package/dist/lightning/offer/offer-manager.js +2 -5
  72. package/dist/lightning/offer/offer-manager.js.map +1 -1
  73. package/dist/lightning/offer/tlv.js +3 -1
  74. package/dist/lightning/offer/tlv.js.map +1 -1
  75. package/dist/lightning/storage/encryption.js +67 -0
  76. package/dist/lightning/storage/encryption.js.map +1 -0
  77. package/dist/lightning/storage/index.js +1 -0
  78. package/dist/lightning/storage/index.js.map +1 -1
  79. package/dist/lightning/storage/serialization.js +6 -2
  80. package/dist/lightning/storage/serialization.js.map +1 -1
  81. package/dist/lightning/storage/sqlite-storage.js +387 -33
  82. package/dist/lightning/storage/sqlite-storage.js.map +1 -1
  83. package/dist/lightning/watchtower/blob.js +135 -0
  84. package/dist/lightning/watchtower/blob.js.map +1 -0
  85. package/dist/lightning/watchtower/index.js +55 -0
  86. package/dist/lightning/watchtower/index.js.map +1 -0
  87. package/dist/lightning/watchtower/justice.js +182 -0
  88. package/dist/lightning/watchtower/justice.js.map +1 -0
  89. package/dist/lightning/watchtower/tower-connection.js +208 -0
  90. package/dist/lightning/watchtower/tower-connection.js.map +1 -0
  91. package/dist/lightning/watchtower/types.js +3 -0
  92. package/dist/lightning/watchtower/types.js.map +1 -0
  93. package/dist/lightning/watchtower/watchtower-client.js +402 -0
  94. package/dist/lightning/watchtower/watchtower-client.js.map +1 -0
  95. package/dist/lightning/watchtower/wtwire.js +201 -0
  96. package/dist/lightning/watchtower/wtwire.js.map +1 -0
  97. package/dist/shapes/electrum.js +32 -1
  98. package/dist/shapes/electrum.js.map +1 -1
  99. package/dist/shapes/wallet.js +11 -1
  100. package/dist/shapes/wallet.js.map +1 -1
  101. package/dist/transaction/index.js +163 -15
  102. package/dist/transaction/index.js.map +1 -1
  103. package/dist/types/cli/beignet-node.d.ts +144 -3
  104. package/dist/types/cli/daemon.d.ts +2 -0
  105. package/dist/types/cli/errors.d.ts +2 -0
  106. package/dist/types/cli/restore.d.ts +10 -0
  107. package/dist/types/cli/types.d.ts +228 -1
  108. package/dist/types/cli/wallet-storage.d.ts +3 -0
  109. package/dist/types/electrum/index.d.ts +12 -0
  110. package/dist/types/electrum.js +1 -0
  111. package/dist/types/electrum.js.map +1 -1
  112. package/dist/types/lightning/advisor/fee-tuner.d.ts +20 -0
  113. package/dist/types/lightning/advisor/index.d.ts +4 -0
  114. package/dist/types/lightning/advisor/rebalance-planner.d.ts +12 -0
  115. package/dist/types/lightning/backup/index.d.ts +1 -0
  116. package/dist/types/lightning/backup/scb.d.ts +24 -0
  117. package/dist/types/lightning/chain/chain-monitor.d.ts +1 -0
  118. package/dist/types/lightning/chain/types.d.ts +1 -0
  119. package/dist/types/lightning/channel/channel-manager.d.ts +7 -0
  120. package/dist/types/lightning/channel/channel-state.d.ts +2 -0
  121. package/dist/types/lightning/channel/channel.d.ts +6 -0
  122. package/dist/types/lightning/channel/dual-funding.d.ts +2 -1
  123. package/dist/types/lightning/channel/types.d.ts +2 -0
  124. package/dist/types/lightning/channel/validation.d.ts +1 -1
  125. package/dist/types/lightning/crypto/index.d.ts +1 -0
  126. package/dist/types/lightning/crypto/message-signing.d.ts +9 -0
  127. package/dist/types/lightning/crypto/xchacha20poly1305.d.ts +3 -0
  128. package/dist/types/lightning/features/flags.d.ts +1 -0
  129. package/dist/types/lightning/gossip/messages.d.ts +4 -0
  130. package/dist/types/lightning/index.d.ts +1 -0
  131. package/dist/types/lightning/keys/wallet-keys.d.ts +2 -1
  132. package/dist/types/lightning/message/index.d.ts +1 -0
  133. package/dist/types/lightning/message/peer-storage.d.ts +9 -0
  134. package/dist/types/lightning/message/types.d.ts +2 -0
  135. package/dist/types/lightning/node/lightning-node.d.ts +116 -4
  136. package/dist/types/lightning/node/types.d.ts +62 -1
  137. package/dist/types/lightning/storage/encryption.d.ts +11 -0
  138. package/dist/types/lightning/storage/index.d.ts +1 -0
  139. package/dist/types/lightning/storage/serialization.d.ts +2 -0
  140. package/dist/types/lightning/storage/sqlite-storage.d.ts +43 -3
  141. package/dist/types/lightning/storage/types.d.ts +62 -0
  142. package/dist/types/lightning/watchtower/blob.d.ts +32 -0
  143. package/dist/types/lightning/watchtower/index.d.ts +9 -0
  144. package/dist/types/lightning/watchtower/justice.d.ts +29 -0
  145. package/dist/types/lightning/watchtower/tower-connection.d.ts +34 -0
  146. package/dist/types/lightning/watchtower/types.d.ts +44 -0
  147. package/dist/types/lightning/watchtower/watchtower-client.d.ts +67 -0
  148. package/dist/types/lightning/watchtower/wtwire.d.ts +90 -0
  149. package/dist/types/shapes/electrum.d.ts +3 -1
  150. package/dist/types/transaction/index.d.ts +6 -0
  151. package/dist/types/transaction.js.map +1 -1
  152. package/dist/types/types/electrum.d.ts +3 -2
  153. package/dist/types/types/transaction.d.ts +1 -1
  154. package/dist/types/types/wallet.d.ts +78 -4
  155. package/dist/types/utils/descriptors.d.ts +2 -0
  156. package/dist/types/utils/fees.d.ts +3 -0
  157. package/dist/types/utils/helpers.d.ts +3 -1
  158. package/dist/types/utils/index.d.ts +5 -0
  159. package/dist/types/utils/multisig.d.ts +29 -0
  160. package/dist/types/utils/transaction.d.ts +7 -0
  161. package/dist/types/utils/wallet-storage-encryption.d.ts +3 -0
  162. package/dist/types/utils/wallet.d.ts +1 -1
  163. package/dist/types/utils/watch-only.d.ts +12 -0
  164. package/dist/types/wallet/constants.d.ts +1 -0
  165. package/dist/types/wallet/index.d.ts +61 -4
  166. package/dist/types/wallet.js +3 -0
  167. package/dist/types/wallet.js.map +1 -1
  168. package/dist/utils/derivation-path.js +8 -7
  169. package/dist/utils/derivation-path.js.map +1 -1
  170. package/dist/utils/descriptors.js +56 -0
  171. package/dist/utils/descriptors.js.map +1 -0
  172. package/dist/utils/electrum.js +10 -2
  173. package/dist/utils/electrum.js.map +1 -1
  174. package/dist/utils/fees.js +19 -0
  175. package/dist/utils/fees.js.map +1 -0
  176. package/dist/utils/helpers.js +22 -5
  177. package/dist/utils/helpers.js.map +1 -1
  178. package/dist/utils/index.js +5 -0
  179. package/dist/utils/index.js.map +1 -1
  180. package/dist/utils/multisig.js +90 -0
  181. package/dist/utils/multisig.js.map +1 -0
  182. package/dist/utils/transaction.js +30 -3
  183. package/dist/utils/transaction.js.map +1 -1
  184. package/dist/utils/wallet-storage-encryption.js +45 -0
  185. package/dist/utils/wallet-storage-encryption.js.map +1 -0
  186. package/dist/utils/wallet.js +3 -1
  187. package/dist/utils/wallet.js.map +1 -1
  188. package/dist/utils/watch-only.js +102 -0
  189. package/dist/utils/watch-only.js.map +1 -0
  190. package/dist/wallet/constants.js +2 -1
  191. package/dist/wallet/constants.js.map +1 -1
  192. package/dist/wallet/index.js +787 -30
  193. package/dist/wallet/index.js.map +1 -1
  194. package/docs/ROADMAP.md +292 -0
  195. package/package.json +1 -1
@@ -32,6 +32,20 @@ export interface ChannelInfo {
32
32
  shortChannelId?: string;
33
33
  feeratePerKw?: number;
34
34
  htlcCount?: number;
35
+ feeBaseMsat?: number;
36
+ feeProportionalMillionths?: number;
37
+ cltvExpiryDelta?: number;
38
+ htlcMinimumMsat?: string;
39
+ htlcMaximumMsat?: string;
40
+ }
41
+ export interface ChannelPolicyInfo {
42
+ channelId: string;
43
+ feeBaseMsat: number;
44
+ feeProportionalMillionths: number;
45
+ cltvExpiryDelta: number;
46
+ htlcMinimumMsat: string;
47
+ htlcMaximumMsat: string;
48
+ source: 'override' | 'default';
35
49
  }
36
50
  export interface PaymentRouteHop {
37
51
  pubkey: string;
@@ -81,6 +95,17 @@ export interface InvoiceInfo {
81
95
  createdAt?: number;
82
96
  status?: 'PENDING' | 'PAID' | 'EXPIRED';
83
97
  }
98
+ export interface HoldInvoiceInfo {
99
+ paymentHash: string;
100
+ bolt11: string;
101
+ state: 'OPEN' | 'ACCEPTED' | 'SETTLED' | 'CANCELLED';
102
+ heldAmountMsat: string;
103
+ htlcCount: number;
104
+ amountSats?: number;
105
+ description?: string;
106
+ expiry: number;
107
+ createdAt: number;
108
+ }
84
109
  export interface DecodedInvoice {
85
110
  network: string;
86
111
  amountSats?: number;
@@ -122,6 +147,58 @@ export interface UtxoInfo {
122
147
  address: string;
123
148
  valueSats: number;
124
149
  height: number;
150
+ frozen: boolean;
151
+ }
152
+ export interface DescriptorsInfo {
153
+ fingerprint: string;
154
+ network: string;
155
+ account: number;
156
+ birthdayHeight?: number;
157
+ watchOnly: boolean;
158
+ descriptors: Array<{
159
+ addressType: string;
160
+ external: string;
161
+ internal: string;
162
+ }>;
163
+ }
164
+ export interface PsbtBuildInfo {
165
+ psbtBase64: string;
166
+ feeSats: number;
167
+ vsizeEstimate: number;
168
+ satsPerVbyte: number;
169
+ inputs: Array<{
170
+ txid: string;
171
+ vout: number;
172
+ address: string;
173
+ valueSats: number;
174
+ path: string;
175
+ }>;
176
+ outputs: Array<{
177
+ address?: string;
178
+ valueSats: number;
179
+ }>;
180
+ }
181
+ export interface PsbtImportInfo {
182
+ txid: string;
183
+ txHex: string;
184
+ }
185
+ export interface BoostResult {
186
+ txid: string;
187
+ hex: string;
188
+ boostType: 'rbf' | 'cpfp';
189
+ feeSats: number;
190
+ originalTxid: string;
191
+ }
192
+ export interface BoostableTransactions {
193
+ rbf: OnchainTxInfo[];
194
+ cpfp: OnchainTxInfo[];
195
+ }
196
+ export interface ConsolidateResult {
197
+ txid: string;
198
+ hex: string;
199
+ utxosConsolidated: number;
200
+ address: string;
201
+ feeSats: number;
125
202
  }
126
203
  export interface BalanceInfo {
127
204
  onchain: number;
@@ -162,7 +239,7 @@ export interface Bolt12InvoiceInfo {
162
239
  }
163
240
  export interface BeignetConfig {
164
241
  mnemonic?: string;
165
- network?: 'mainnet' | 'testnet' | 'regtest';
242
+ network?: 'mainnet' | 'testnet' | 'regtest' | 'signet';
166
243
  alias?: string;
167
244
  dataDir?: string;
168
245
  electrumHost?: string;
@@ -173,10 +250,12 @@ export interface BeignetConfig {
173
250
  port: number;
174
251
  tls?: boolean;
175
252
  }>;
253
+ feeEstimationSource?: 'electrum' | 'http' | 'auto';
176
254
  listenPort?: number;
177
255
  daemonPort?: number;
178
256
  daemonHost?: string;
179
257
  preferAnchors?: boolean;
258
+ largeChannels?: boolean;
180
259
  apiToken?: string;
181
260
  autoBootstrap?: boolean;
182
261
  backupPath?: string;
@@ -187,6 +266,8 @@ export interface BeignetConfig {
187
266
  tlsKey?: string;
188
267
  torProxy?: string;
189
268
  announceAddresses?: string[];
269
+ watchtowers?: string[];
270
+ htlcEvents?: boolean;
190
271
  }
191
272
  export interface HealthInfo {
192
273
  status: 'ready' | 'syncing' | 'degraded';
@@ -220,11 +301,93 @@ export interface PaymentFilter {
220
301
  metadataKey?: string;
221
302
  metadataValue?: string;
222
303
  }
304
+ export interface ForwardsFilter {
305
+ since?: number;
306
+ until?: number;
307
+ limit?: number;
308
+ offset?: number;
309
+ channelId?: string;
310
+ }
311
+ export interface ForwardingEventInfo {
312
+ id: number;
313
+ settledAt: number;
314
+ inChannelId: string;
315
+ outChannelId: string;
316
+ inScid?: string;
317
+ outScid?: string;
318
+ amountInMsat: string;
319
+ amountOutMsat: string;
320
+ feeMsat: string;
321
+ }
322
+ export interface ForwardingSummaryInfo {
323
+ count: number;
324
+ volumeOutMsat: string;
325
+ feesEarnedMsat: string;
326
+ }
223
327
  export interface RouteEstimate {
224
328
  feeSats: number;
225
329
  hops: number;
226
330
  cltvDelta: number;
227
331
  }
332
+ export interface GraphInfo {
333
+ nodeCount: number;
334
+ channelCount: number;
335
+ lastSyncAt?: number;
336
+ }
337
+ export interface GraphChannelPolicy {
338
+ feeBaseMsat: number;
339
+ feeProportionalMillionths: number;
340
+ cltvExpiryDelta: number;
341
+ htlcMinimumMsat: string;
342
+ htlcMaximumMsat?: string;
343
+ disabled: boolean;
344
+ lastUpdate: number;
345
+ }
346
+ export interface GraphChannelInfo {
347
+ shortChannelId: string;
348
+ node1Pubkey: string;
349
+ node2Pubkey: string;
350
+ capacitySats?: number;
351
+ node1Policy?: GraphChannelPolicy;
352
+ node2Policy?: GraphChannelPolicy;
353
+ }
354
+ export interface GraphNodeInfo {
355
+ pubkey: string;
356
+ alias?: string;
357
+ color?: string;
358
+ addresses?: Array<{
359
+ type: number;
360
+ host: string;
361
+ port: number;
362
+ }>;
363
+ featuresHex?: string;
364
+ lastUpdate?: number;
365
+ channelCount: number;
366
+ channels: string[];
367
+ }
368
+ export interface GraphDescribeResult {
369
+ totalChannels: number;
370
+ limit: number;
371
+ offset: number;
372
+ channels: GraphChannelInfo[];
373
+ }
374
+ export interface RouteHop {
375
+ pubkey: string;
376
+ shortChannelId: string;
377
+ amountToForwardMsat: string;
378
+ outgoingCltvValue: number;
379
+ feeMsat: string;
380
+ cltvExpiryDelta: number;
381
+ }
382
+ export interface RouteQueryResult {
383
+ destination: string;
384
+ amountSats: number;
385
+ hops: RouteHop[];
386
+ totalAmountMsat: string;
387
+ totalFeeMsat: string;
388
+ totalCltvDelta: number;
389
+ finalCltvExpiry: number;
390
+ }
228
391
  export interface NodeStats {
229
392
  totalPaymentsSent: number;
230
393
  totalPaymentsReceived: number;
@@ -254,6 +417,38 @@ export interface LiquiditySnapshot {
254
417
  inboundLiquidityPct: number;
255
418
  recommendations: LiquidityRecommendation[];
256
419
  }
420
+ export interface RebalancePlanInfo {
421
+ fromChannelId: string;
422
+ toChannelId: string;
423
+ amountSats: number;
424
+ reason: string;
425
+ }
426
+ export interface AdvisorRecommendations extends LiquiditySnapshot {
427
+ rebalancePlan: RebalancePlanInfo[];
428
+ }
429
+ export interface RebalanceResult {
430
+ paymentHash: string;
431
+ amountSats: number;
432
+ feeMsat: string;
433
+ feeSats: number;
434
+ hops: number;
435
+ }
436
+ export interface RebalanceAttemptInfo {
437
+ fromChannelId: string;
438
+ toChannelId: string;
439
+ amountSats: number;
440
+ status: 'SUCCEEDED' | 'FAILED' | 'SKIPPED_BUDGET';
441
+ feeMsat?: string;
442
+ error?: string;
443
+ }
444
+ export interface RebalanceExecutionSummary {
445
+ attempts: RebalanceAttemptInfo[];
446
+ succeeded: number;
447
+ failed: number;
448
+ skippedBudget: number;
449
+ feeSpentMsat: string;
450
+ budgetRemainingMsat: string;
451
+ }
257
452
  export interface WebhookRegistration {
258
453
  id: string;
259
454
  url: string;
@@ -351,12 +546,44 @@ export interface BeignetNodeEvents {
351
546
  nextRetryMs: number;
352
547
  error: string;
353
548
  }) => void;
549
+ 'invoice:settled': (data: {
550
+ paymentHash: string;
551
+ bolt11: string;
552
+ amountSats: number;
553
+ }) => void;
554
+ 'channel:opening': (data: {
555
+ channelId: string;
556
+ fundingTxid: string;
557
+ }) => void;
354
558
  'channel:ready': (data: {
355
559
  channelId: string;
356
560
  }) => void;
561
+ 'channel:pending-close': (data: {
562
+ channelId: string;
563
+ initiator: 'local' | 'remote';
564
+ }) => void;
565
+ 'channel:force-closing': (data: {
566
+ channelId: string;
567
+ initiator: 'local' | 'remote';
568
+ }) => void;
357
569
  'channel:closed': (data: {
358
570
  channelId: string;
359
571
  }) => void;
572
+ 'htlc:forwarded': (data: {
573
+ inChannelId: string;
574
+ outChannelId: string;
575
+ amountInMsat: string;
576
+ amountOutMsat: string;
577
+ feeMsat: string;
578
+ }) => void;
579
+ 'htlc:fulfilled': (data: {
580
+ channelId: string;
581
+ htlcId: string;
582
+ }) => void;
583
+ 'htlc:failed': (data: {
584
+ channelId: string;
585
+ htlcId: string;
586
+ }) => void;
360
587
  'peer:connect': (data: {
361
588
  pubkey: string;
362
589
  }) => void;
@@ -0,0 +1,3 @@
1
+ import { IStorageBackend } from '../lightning/storage/types';
2
+ import { TStorage } from '../types/wallet';
3
+ export declare function createWalletStorage(storage: IStorageBackend): TStorage;
@@ -9,6 +9,9 @@ export declare class Electrum {
9
9
  private net;
10
10
  private tls;
11
11
  private _connectInFlight;
12
+ private _serverFailures;
13
+ private _currentServer;
14
+ private _rotationCount;
12
15
  servers?: TServer | TServer[];
13
16
  network: EAvailableNetworks;
14
17
  electrumNetwork: EElectrumNetworks;
@@ -33,9 +36,18 @@ export declare class Electrum {
33
36
  disableRegtestCheck?: boolean;
34
37
  }): Promise<Result<TConnectToElectrumRes>>;
35
38
  private _doConnect;
39
+ private attemptConnect;
40
+ private getServerCandidates;
41
+ private orderCandidates;
42
+ private serverKey;
43
+ private recordServerFailure;
44
+ private recordServerSuccess;
45
+ get currentServer(): TServer | null;
46
+ get rotationCount(): number;
36
47
  isConnected(): Promise<boolean>;
37
48
  getAddressBalance(scriptHash: string): Promise<IElectrumGetAddressBalanceRes>;
38
49
  getAddressScriptHashBalances(scriptHashes: string[]): Promise<IGetAddressScriptHashBalances>;
50
+ getFeeEstimate(blocksWillingToWait: number): Promise<Result<number>>;
39
51
  getConnectedPeer(): Promise<Result<IPeerData>>;
40
52
  listUnspentAddressScriptHashes({ addresses }: {
41
53
  addresses: TUnspentAddressScriptHashData;
@@ -6,6 +6,7 @@ var EElectrumNetworks;
6
6
  EElectrumNetworks["bitcoin"] = "bitcoin";
7
7
  EElectrumNetworks["bitcoinTestnet"] = "bitcoinTestnet";
8
8
  EElectrumNetworks["bitcoinRegtest"] = "bitcoinRegtest";
9
+ EElectrumNetworks["bitcoinSignet"] = "bitcoinSignet";
9
10
  })(EElectrumNetworks = exports.EElectrumNetworks || (exports.EElectrumNetworks = {}));
10
11
  var EProtocol;
11
12
  (function (EProtocol) {
@@ -1 +1 @@
1
- {"version":3,"file":"electrum.js","sourceRoot":"","sources":["../../src/types/electrum.ts"],"names":[],"mappings":";;;AAYA,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC5B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;AAClC,CAAC,EAJW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAI5B;AAcD,IAAY,SAGX;AAHD,WAAY,SAAS;IACpB,wBAAW,CAAA;IACX,wBAAW,CAAA;AACZ,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB;AAED,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC5B,gCAAW,CAAA;IACX,0CAAqB,CAAA;IACrB,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;AAC5B,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B"}
1
+ {"version":3,"file":"electrum.js","sourceRoot":"","sources":["../../src/types/electrum.ts"],"names":[],"mappings":";;;AAgBA,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC5B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,oDAA+B,CAAA;AAChC,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B;AAcD,IAAY,SAGX;AAHD,WAAY,SAAS;IACpB,wBAAW,CAAA;IACX,wBAAW,CAAA;AACZ,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB;AAED,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC5B,gCAAW,CAAA;IACX,0CAAqB,CAAA;IACrB,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;AAC5B,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B"}
@@ -0,0 +1,20 @@
1
+ export interface IFeeTuneInput {
2
+ channelId: string;
3
+ currentPpm: number;
4
+ localBalanceFraction: number;
5
+ outboundForwards: number;
6
+ totalForwards: number;
7
+ }
8
+ export interface IFeeTuneAdjustment {
9
+ channelId: string;
10
+ oldPpm: number;
11
+ newPpm: number;
12
+ reason: 'DEPLETED_OUTBOUND' | 'IDLE';
13
+ }
14
+ export interface IFeeTuneOptions {
15
+ floorPpm: number;
16
+ ceilPpm: number;
17
+ }
18
+ export declare const DEFAULT_FEE_TUNE_FLOOR_PPM = 1;
19
+ export declare const DEFAULT_FEE_TUNE_CEIL_PPM = 10000;
20
+ export declare function computeFeeTuneAdjustments(inputs: IFeeTuneInput[], options: IFeeTuneOptions): IFeeTuneAdjustment[];
@@ -4,3 +4,7 @@ export { FeeAdvisor } from './fee-advisor';
4
4
  export type { IFeeSnapshot, FeeTrend, FeeRecommendation } from './fee-advisor';
5
5
  export { ChannelSuggestions } from './channel-suggestions';
6
6
  export type { IChannelSuggestion, IChannelSuggestionsOptions } from './channel-suggestions';
7
+ export { planRebalances, MIN_REBALANCE_SATS, DEFAULT_MIN_IMBALANCE_PCT } from './rebalance-planner';
8
+ export type { IRebalancePlan } from './rebalance-planner';
9
+ export { computeFeeTuneAdjustments, DEFAULT_FEE_TUNE_FLOOR_PPM, DEFAULT_FEE_TUNE_CEIL_PPM } from './fee-tuner';
10
+ export type { IFeeTuneInput, IFeeTuneAdjustment, IFeeTuneOptions } from './fee-tuner';
@@ -0,0 +1,12 @@
1
+ import { IChannelSnapshot } from './liquidity-advisor';
2
+ export interface IRebalancePlan {
3
+ fromChannelId: string;
4
+ toChannelId: string;
5
+ amountSats: bigint;
6
+ reason: string;
7
+ }
8
+ export declare const MIN_REBALANCE_SATS = 1000n;
9
+ export declare const DEFAULT_MIN_IMBALANCE_PCT = 20;
10
+ export declare function planRebalances(channels: IChannelSnapshot[], options?: {
11
+ minImbalancePct?: number;
12
+ }): IRebalancePlan[];
@@ -0,0 +1 @@
1
+ export * from './scb';
@@ -0,0 +1,24 @@
1
+ /// <reference types="node" />
2
+ export declare const SCB_PREFIX = "beignet-scb-v1:";
3
+ export declare const SCB_VERSION = 1;
4
+ export interface IScbChannelEntry {
5
+ channelId: string;
6
+ peerNodeId: string;
7
+ peerAddresses: string[];
8
+ fundingTxid: string;
9
+ fundingOutputIndex: number;
10
+ fundingSatoshis: string;
11
+ channelKeyIndex: number | null;
12
+ channelType: string;
13
+ role: 'OPENER' | 'ACCEPTOR';
14
+ isTaproot: boolean;
15
+ isAnchor: boolean;
16
+ }
17
+ export interface IStaticChannelBackup {
18
+ version: 1;
19
+ network: string;
20
+ createdAt: number;
21
+ channels: IScbChannelEntry[];
22
+ }
23
+ export declare function encodeScb(backup: IStaticChannelBackup, seed: Buffer): string;
24
+ export declare function decodeScb(encoded: string, seed: Buffer): IStaticChannelBackup;
@@ -47,6 +47,7 @@ export declare class ChainMonitor {
47
47
  private _scheduleSweep;
48
48
  private _handleOurCommitment;
49
49
  private _handleTheirCurrentCommitment;
50
+ private _handleTheirFutureCommitment;
50
51
  rebuildSweep(output: ITrackedOutput, feeRatePerVbyte: number): bitcoin.Transaction | null;
51
52
  private _handleRevokedCommitment;
52
53
  }
@@ -4,6 +4,7 @@ export declare enum CommitmentType {
4
4
  OUR_COMMITMENT = "OUR_COMMITMENT",
5
5
  THEIR_CURRENT_COMMITMENT = "THEIR_CURRENT_COMMITMENT",
6
6
  THEIR_REVOKED_COMMITMENT = "THEIR_REVOKED_COMMITMENT",
7
+ THEIR_FUTURE_COMMITMENT = "THEIR_FUTURE_COMMITMENT",
7
8
  UNKNOWN = "UNKNOWN"
8
9
  }
9
10
  export declare enum OutputStatus {
@@ -36,6 +36,7 @@ export interface IChannelManagerConfig {
36
36
  channelKeyDeriver?: (channelIndex: number) => IPerChannelKeys;
37
37
  leaseRates?: ILeaseRates;
38
38
  localFeatures?: FeatureFlags;
39
+ largeChannels?: boolean;
39
40
  }
40
41
  export declare class ChannelManager extends EventEmitter {
41
42
  private config;
@@ -90,6 +91,11 @@ export declare class ChannelManager extends EventEmitter {
90
91
  delayedPaymentBasepointSecret?: Buffer;
91
92
  htlcBasepointSecret?: Buffer;
92
93
  } | null;
94
+ getRecoveryChannelMaterial(channelKeyIndex: number | null): {
95
+ basepoints: IChannelBasepoints;
96
+ perCommitmentSeed: Buffer;
97
+ localConfig: IChannelConfig;
98
+ };
93
99
  setMonitorDestinationScript(destinationScript: Buffer): void;
94
100
  forceClose(channelId: Buffer, destinationScript: Buffer, feeRatePerVbyte?: number, network?: import('bitcoinjs-lib').Network): ChannelResult;
95
101
  handleFundingSpent(channelId: Buffer, spendingTx: import('bitcoinjs-lib').Transaction, blockHeight: number, destinationScript: Buffer, feeRatePerVbyte?: number, revocationBasepointSecret?: Buffer, paymentPrivkey?: Buffer, network?: import('bitcoinjs-lib').Network): ChainAction[];
@@ -139,6 +145,7 @@ export declare class ChannelManager extends EventEmitter {
139
145
  private handleStfu;
140
146
  initiateQuiescence(channelId: Buffer): ChannelResult;
141
147
  private peerSupportsSplicing;
148
+ private maxFundingForPeer;
142
149
  private peerNegotiatedSimpleClose;
143
150
  private handleSpliceMsg;
144
151
  private handleSpliceAckMsg;
@@ -121,6 +121,8 @@ export interface IChannelState {
121
121
  lastCooperativeCloseTxHex?: string;
122
122
  localNonce?: Uint8Array;
123
123
  localNextNonce?: Uint8Array;
124
+ dataLossDetected?: boolean;
125
+ dlpRemotePerCommitmentPoint?: Buffer;
124
126
  remoteNonce?: Buffer;
125
127
  remoteSigningNonce?: Buffer;
126
128
  }
@@ -50,6 +50,8 @@ export declare class Channel {
50
50
  private _spliceRemoteCommitmentSig;
51
51
  private _pendingBatch;
52
52
  private _lastSentBatch;
53
+ private _remoteCommitmentTxCache;
54
+ private static readonly REVOKED_TX_CACHE_MAX;
53
55
  private _forgottenSplice;
54
56
  private _spliceAbortPending;
55
57
  private _reestablishRetransmitted;
@@ -62,7 +64,9 @@ export declare class Channel {
62
64
  private _taprootClosingCache;
63
65
  private _currentBlockHeight;
64
66
  private _channelKeyIndex;
67
+ private _maxFundingSatoshis;
65
68
  constructor(state: IChannelState, signer?: ChannelSigner);
69
+ setMaxFundingSatoshis(max: bigint): void;
66
70
  get channelKeyIndex(): number | null;
67
71
  set channelKeyIndex(value: number | null);
68
72
  setSigner(signer: ChannelSigner): void;
@@ -114,6 +118,8 @@ export declare class Channel {
114
118
  handleUpdateFailMalformedHtlc(msg: IUpdateFailMalformedHtlcMessage): ChannelAction[];
115
119
  private _queuePendingLocalUpdate;
116
120
  private _snapshotRemoteCommitmentHtlcs;
121
+ private _cacheRemoteCommitmentForWatchtower;
122
+ takeRevokedCommitmentTx(perCommitmentSecret: Buffer): Buffer | null;
117
123
  signCommitment(signature: Buffer, htlcSignatures: Buffer[], partialSignatureWithNonce?: Buffer, spliceBatch?: {
118
124
  spliceSignature: Buffer;
119
125
  spliceHtlcSignatures: Buffer[];
@@ -53,7 +53,8 @@ export declare class DualFundingSession {
53
53
  private _rbfCount;
54
54
  private _openMsg;
55
55
  private _acceptMsg;
56
- constructor(isInitiator: boolean, channelId: Buffer);
56
+ private _maxFundingSatoshis;
57
+ constructor(isInitiator: boolean, channelId: Buffer, maxFundingSatoshis?: bigint);
57
58
  getState(): DualFundingState;
58
59
  isInitiator(): boolean;
59
60
  getChannelId(): Buffer;
@@ -61,6 +61,7 @@ export interface IChannelConfig {
61
61
  }
62
62
  export declare const MAX_ACCEPTED_HTLCS = 483;
63
63
  export declare const MAX_FUNDING_SATOSHIS = 16777216n;
64
+ export declare const MAX_WUMBO_FUNDING_SATOSHIS = 1000000000n;
64
65
  export declare const MIN_DUST_LIMIT_SATOSHIS = 354n;
65
66
  export declare const DEFAULT_CHANNEL_CONFIG: IChannelConfig;
66
67
  export interface ChannelResult {
@@ -70,3 +71,4 @@ export interface ChannelResult {
70
71
  }
71
72
  export declare const BITCOIN_CHAIN_HASH: Buffer;
72
73
  export declare const REGTEST_CHAIN_HASH: Buffer;
74
+ export declare const SIGNET_CHAIN_HASH: Buffer;
@@ -4,6 +4,6 @@ export declare function deriveChannelId(fundingTxid: Buffer, fundingOutputIndex:
4
4
  export declare function generateTemporaryChannelId(): Buffer;
5
5
  export declare function deriveV2ChannelId(revocationBasepointA: Buffer, revocationBasepointB: Buffer): Buffer;
6
6
  export declare function deriveV2TemporaryChannelId(openerRevocationBasepoint: Buffer): Buffer;
7
- export declare function validateOpenChannelParams(msg: IOpenChannelMessage): string | null;
7
+ export declare function validateOpenChannelParams(msg: IOpenChannelMessage, maxFundingSatoshis?: bigint): string | null;
8
8
  export declare function validateAcceptChannelParams(open: IOpenChannelMessage, accept: IAcceptChannelMessage): string | null;
9
9
  export declare function isValidShutdownScript(script: Buffer, allowAnySegwit?: boolean, allowOpReturn?: boolean): boolean;
@@ -1,3 +1,4 @@
1
1
  export * from './chacha20poly1305';
2
2
  export * from './hkdf';
3
3
  export * from './ecdh';
4
+ export * from './message-signing';
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ export declare function zbase32Encode(data: Buffer): string;
3
+ export declare function zbase32Decode(text: string): Buffer | null;
4
+ export declare function signMessageWithKey(message: string | Buffer, privateKey: Buffer): string;
5
+ export interface IVerifyMessageResult {
6
+ valid: boolean;
7
+ pubkey: Buffer | null;
8
+ }
9
+ export declare function verifyMessageSignature(message: string | Buffer, signature: string): IVerifyMessageResult;
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ export declare function encrypt(key: Buffer, nonce: Buffer, plaintext: Buffer, aad?: Buffer): Buffer;
3
+ export declare function decrypt(key: Buffer, nonce: Buffer, ciphertextWithTag: Buffer, aad?: Buffer): Buffer;
@@ -15,6 +15,7 @@ export declare enum Feature {
15
15
  SHUTDOWN_ANY_SEGWIT = 26,
16
16
  DUAL_FUND = 28,
17
17
  ONION_MESSAGES = 38,
18
+ PROVIDE_STORAGE = 42,
18
19
  QUIESCE = 34,
19
20
  CHANNEL_TYPE = 44,
20
21
  SCID_ALIAS = 46,
@@ -13,4 +13,8 @@ export declare function decodeNodeAddress(buf: Buffer, offset: number): {
13
13
  address: INodeAddress;
14
14
  bytesRead: number;
15
15
  };
16
+ export declare function nodeAddressToHostPort(addr: INodeAddress): {
17
+ host: string;
18
+ port: number;
19
+ } | null;
16
20
  export declare function parseAnnouncedAddress(input: string): INodeAddress;
@@ -18,3 +18,4 @@ export * as bootstrap from './bootstrap';
18
18
  export * as interactiveTx from './interactive-tx';
19
19
  export * as offer from './offer';
20
20
  export * as advisor from './advisor';
21
+ export * as backup from './backup';
@@ -4,7 +4,8 @@ import { IChannelBasepoints } from './derivation';
4
4
  export declare enum LnCoinType {
5
5
  BITCOIN = 0,
6
6
  TESTNET = 1,
7
- REGTEST = 1
7
+ REGTEST = 1,
8
+ SIGNET = 1
8
9
  }
9
10
  export interface ILightningKeysFromSeed {
10
11
  nodePrivateKey: Buffer;
@@ -11,6 +11,7 @@ export * from './channel-commitment';
11
11
  export * from './channel-close';
12
12
  export * from './channel-reestablish';
13
13
  export * from './stfu';
14
+ export * from './peer-storage';
14
15
  export * from './interactive-tx';
15
16
  export * from './dual-funding';
16
17
  export * from './splice';
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ export declare const PEER_STORAGE_MAX_BYTES = 65531;
3
+ export interface IPeerStorageMessage {
4
+ blob: Buffer;
5
+ }
6
+ export declare function encodePeerStorageMessage(msg: IPeerStorageMessage): Buffer;
7
+ export declare function decodePeerStorageMessage(payload: Buffer): IPeerStorageMessage;
8
+ export declare function encodePeerStorageRetrievalMessage(msg: IPeerStorageMessage): Buffer;
9
+ export declare function decodePeerStorageRetrievalMessage(payload: Buffer): IPeerStorageMessage;
@@ -4,6 +4,8 @@ export declare enum MessageType {
4
4
  WARNING = 1,
5
5
  PING = 18,
6
6
  PONG = 19,
7
+ PEER_STORAGE = 7,
8
+ PEER_STORAGE_RETRIEVAL = 9,
7
9
  OPEN_CHANNEL = 32,
8
10
  ACCEPT_CHANNEL = 33,
9
11
  FUNDING_CREATED = 34,