beignet 0.26.0 → 0.27.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 (78) hide show
  1. package/README.md +11 -0
  2. package/dist/cli/auth.js +7 -0
  3. package/dist/cli/auth.js.map +1 -1
  4. package/dist/cli/beignet-node.js +240 -27
  5. package/dist/cli/beignet-node.js.map +1 -1
  6. package/dist/cli/cli.js +65 -2
  7. package/dist/cli/cli.js.map +1 -1
  8. package/dist/cli/config.js +7 -0
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/daemon-options.js +1 -0
  11. package/dist/cli/daemon-options.js.map +1 -1
  12. package/dist/cli/daemon.js +49 -4
  13. package/dist/cli/daemon.js.map +1 -1
  14. package/dist/cli/errors.js +7 -1
  15. package/dist/cli/errors.js.map +1 -1
  16. package/dist/cli/onchain-sweep.js +391 -0
  17. package/dist/cli/onchain-sweep.js.map +1 -0
  18. package/dist/cli/openapi.js +274 -6
  19. package/dist/cli/openapi.js.map +1 -1
  20. package/dist/lightning/chain/chain-monitor.js +3 -0
  21. package/dist/lightning/chain/chain-monitor.js.map +1 -1
  22. package/dist/lightning/chain/closing.js.map +1 -1
  23. package/dist/lightning/chain/types.js.map +1 -1
  24. package/dist/lightning/channel/channel-manager.js +111 -11
  25. package/dist/lightning/channel/channel-manager.js.map +1 -1
  26. package/dist/lightning/channel/channel-state.js.map +1 -1
  27. package/dist/lightning/channel/channel.js +386 -37
  28. package/dist/lightning/channel/channel.js.map +1 -1
  29. package/dist/lightning/channel/commitment-builder.js +2 -0
  30. package/dist/lightning/channel/commitment-builder.js.map +1 -1
  31. package/dist/lightning/channel/validation.js +10 -7
  32. package/dist/lightning/channel/validation.js.map +1 -1
  33. package/dist/lightning/channel/zero-reserve.js +3 -0
  34. package/dist/lightning/channel/zero-reserve.js.map +1 -0
  35. package/dist/lightning/features/flags.js +2 -0
  36. package/dist/lightning/features/flags.js.map +1 -1
  37. package/dist/lightning/gossip/gossip-sync.js +118 -34
  38. package/dist/lightning/gossip/gossip-sync.js.map +1 -1
  39. package/dist/lightning/gossip/pathfinding.js +3 -1
  40. package/dist/lightning/gossip/pathfinding.js.map +1 -1
  41. package/dist/lightning/gossip/pay-all.js +197 -0
  42. package/dist/lightning/gossip/pay-all.js.map +1 -0
  43. package/dist/lightning/message/dual-funding.js +30 -5
  44. package/dist/lightning/message/dual-funding.js.map +1 -1
  45. package/dist/lightning/node/lightning-node.js +337 -48
  46. package/dist/lightning/node/lightning-node.js.map +1 -1
  47. package/dist/lightning/node/types.js +3 -0
  48. package/dist/lightning/node/types.js.map +1 -1
  49. package/dist/lightning/storage/serialization.js +28 -0
  50. package/dist/lightning/storage/serialization.js.map +1 -1
  51. package/dist/lightning/watchtower/watchtower-client.js +8 -2
  52. package/dist/lightning/watchtower/watchtower-client.js.map +1 -1
  53. package/dist/types/cli/beignet-node.d.ts +16 -3
  54. package/dist/types/cli/errors.d.ts +3 -0
  55. package/dist/types/cli/index.d.ts +1 -0
  56. package/dist/types/cli/onchain-sweep.d.ts +57 -0
  57. package/dist/types/cli/types.d.ts +27 -0
  58. package/dist/types/lightning/chain/closing.d.ts +8 -0
  59. package/dist/types/lightning/chain/types.d.ts +1 -0
  60. package/dist/types/lightning/channel/channel-manager.d.ts +5 -1
  61. package/dist/types/lightning/channel/channel-state.d.ts +10 -0
  62. package/dist/types/lightning/channel/channel.d.ts +16 -2
  63. package/dist/types/lightning/channel/commitment-builder.d.ts +1 -0
  64. package/dist/types/lightning/channel/validation.d.ts +6 -3
  65. package/dist/types/lightning/channel/zero-reserve.d.ts +10 -0
  66. package/dist/types/lightning/features/flags.d.ts +1 -0
  67. package/dist/types/lightning/gossip/gossip-sync.d.ts +14 -0
  68. package/dist/types/lightning/gossip/pathfinding.d.ts +8 -1
  69. package/dist/types/lightning/gossip/pay-all.d.ts +26 -0
  70. package/dist/types/lightning/message/dual-funding.d.ts +3 -0
  71. package/dist/types/lightning/node/lightning-node.d.ts +29 -3
  72. package/dist/types/lightning/node/types.d.ts +25 -0
  73. package/dist/types/lightning/storage/serialization.d.ts +17 -0
  74. package/docs/IROH-QUALIFICATION-2026-10-03.json +239 -0
  75. package/docs/IROH-QUALIFICATION-2026-10-03.md +115 -0
  76. package/docs/PAY-ALL.md +61 -0
  77. package/docs/ZERO-RESERVE.md +47 -0
  78. package/package.json +4 -4
package/README.md CHANGED
@@ -670,6 +670,17 @@ LightningNode High-level API (EventEmitter)
670
670
 
671
671
  ## Tests
672
672
 
673
+ Use **Node.js 20 (20.19+)** for development and `npm ci` to install the locked tools.
674
+ The linter and test runner have newer Node requirements than the library API.
675
+ CI uses Node.js 20.
676
+
677
+ The lint configuration keeps the established CommonJS imports, enum aliases,
678
+ unused catch bindings, `any` warnings and Chai assertion style. Rules removed
679
+ from the upgraded linter's recommended preset remain explicitly enabled where
680
+ they were enforced before. Prettier covers TypeScript semicolons, with the core
681
+ semicolon rule retained for JavaScript. Typed promise checks remain enabled for
682
+ every TypeScript file.
683
+
673
684
  ```bash
674
685
  npm run test:local # test:lightning + test:cli at once; no infrastructure needed
675
686
  npm run test:lightning # 6200+ Lightning unit tests (parallel), no infrastructure needed
package/dist/cli/auth.js CHANGED
@@ -18,6 +18,7 @@ exports.ROUTE_SCOPES = {
18
18
  'GET /channels/ready': ['readonly'],
19
19
  'GET /payments': ['readonly'],
20
20
  'GET /payment': ['readonly'],
21
+ 'GET /onchain/sweep': ['readonly'],
21
22
  'GET /payment/proof': ['readonly'],
22
23
  'GET /payment/verify-proof': ['readonly'],
23
24
  'GET /forwards': ['readonly'],
@@ -89,6 +90,7 @@ exports.ROUTE_SCOPES = {
89
90
  'GET /can-receive': ['readonly', 'invoice'],
90
91
  'GET /events': ['readonly', 'invoice'],
91
92
  'POST /invoice/decode': ['readonly', 'invoice'],
93
+ 'POST /invoice/pay-all/quote': ['readonly'],
92
94
  'POST /invoice/validate': ['readonly', 'invoice'],
93
95
  'POST /offer/decode': ['readonly', 'invoice'],
94
96
  'POST /payment/wait': ['readonly', 'invoice'],
@@ -111,10 +113,14 @@ exports.ROUTE_SCOPES = {
111
113
  'GET /webhooks': [],
112
114
  'POST /send': [],
113
115
  'POST /send-max': [],
116
+ 'POST /onchain/sweep/prepare': [],
117
+ 'POST /onchain/sweep/submit': [],
118
+ 'POST /onchain/sweep/cancel': [],
114
119
  'POST /tx/bump-fee': [],
115
120
  'POST /tx/boost': [],
116
121
  'POST /consolidate': [],
117
122
  'POST /invoice/pay': [],
123
+ 'POST /invoice/pay-all': [],
118
124
  'POST /invoice/pay-safe': [],
119
125
  'POST /invoice/pay-async': [],
120
126
  'POST /invoice/pay-retry': [],
@@ -154,6 +160,7 @@ exports.ROUTE_SCOPES = {
154
160
  'POST /channel/connect-and-open': [],
155
161
  'POST /channels/ensure-minimum': [],
156
162
  'POST /channel/close': [],
163
+ 'POST /channel/close-quote': ['readonly'],
157
164
  'POST /channel/forceclose': [],
158
165
  'POST /channel/rebroadcast-close': [],
159
166
  'POST /channel/funding-quote': ['readonly'],
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ const helpers_1 = require("../utils/helpers");
43
43
  const conversion_1 = require("../utils/conversion");
44
44
  const wallet_3 = require("../types/wallet");
45
45
  const wallet_storage_1 = require("./wallet-storage");
46
+ const onchain_sweep_1 = require("./onchain-sweep");
46
47
  const fs_utils_1 = require("./fs-utils");
47
48
  const backup_mac_1 = require("./backup-mac");
48
49
  const node_storage_view_1 = require("./node-storage-view");
@@ -174,6 +175,9 @@ function parseScid(scid) {
174
175
  }
175
176
  exports.parseScid = parseScid;
176
177
  exports.ENGINE_PAYMENT_ERROR_CODES = {
178
+ PAY_ALL_REVIEW_EXPIRED: 'PAY_ALL_REVIEW_EXPIRED',
179
+ PAY_ALL_REMAINDER: 'PAY_ALL_REMAINDER',
180
+ PAY_ALL_BUDGET_MISMATCH: 'PAY_ALL_BUDGET_MISMATCH',
177
181
  NO_ROUTE: 'NO_ROUTE',
178
182
  DUPLICATE_PAYMENT: 'DUPLICATE_PAYMENT',
179
183
  NO_CHANNEL_TO_HOP: 'PEER_NOT_CONNECTED',
@@ -861,6 +865,10 @@ class BeignetNode extends events_1.EventEmitter {
861
865
  throw new errors_1.BeignetError('INVALID_PARAMS', `leaseRates: ${refusal}`);
862
866
  }
863
867
  }
868
+ if (opts.waiveClientReserve !== undefined &&
869
+ typeof opts.waiveClientReserve !== 'boolean') {
870
+ throw new errors_1.BeignetError('INVALID_PARAMS', 'waiveClientReserve must be a boolean');
871
+ }
864
872
  if (opts.jitReceive !== undefined) {
865
873
  const refusal = jitReceiveRefusal(opts.jitReceive);
866
874
  if (refusal !== null) {
@@ -1135,6 +1143,11 @@ class BeignetNode extends events_1.EventEmitter {
1135
1143
  }
1136
1144
  : {}),
1137
1145
  ...(opts.fforIssuer === true ? { fforIssuer: { enabled: true } } : {}),
1146
+ zeroReserve: {
1147
+ role: 'primary',
1148
+ advertise: opts.waiveClientReserve === true,
1149
+ waiveClientReserve: opts.waiveClientReserve === true
1150
+ },
1138
1151
  jitReceive: opts.jitReceive?.enabled === true
1139
1152
  ? {
1140
1153
  enabled: true,
@@ -2700,6 +2713,7 @@ class BeignetNode extends events_1.EventEmitter {
2700
2713
  return path.join(this.dataDir, `${this.networkName}.capsule-restore.json`);
2701
2714
  }
2702
2715
  carryDaemonState(from, to) {
2716
+ this.onchainSweeps().carryTo(to);
2703
2717
  const overrides = from.loadWalletData(auth_1.AUTH_KEY_OVERRIDES_STORAGE_KEY);
2704
2718
  if (overrides !== null) {
2705
2719
  to.saveWalletData(auth_1.AUTH_KEY_OVERRIDES_STORAGE_KEY, overrides);
@@ -3286,9 +3300,15 @@ class BeignetNode extends events_1.EventEmitter {
3286
3300
  ]);
3287
3301
  let totalMsat = 0n;
3288
3302
  for (const ch of this.node.listChannels()) {
3289
- if (!recovering.has(ch.state))
3303
+ const effectiveState = ch.state === types_7.ChannelState.AWAITING_REESTABLISH
3304
+ ? this.node
3305
+ .getChannelManager()
3306
+ .getChannel(ch.channelId)
3307
+ ?.getFullState().preReestablishState ?? ch.state
3308
+ : ch.state;
3309
+ if (!recovering.has(effectiveState))
3290
3310
  continue;
3291
- if (ch.state === types_7.ChannelState.FORCE_CLOSED &&
3311
+ if (effectiveState === types_7.ChannelState.FORCE_CLOSED &&
3292
3312
  this.isForceCloseBalanceInWallet(ch.channelId)) {
3293
3313
  continue;
3294
3314
  }
@@ -3730,6 +3750,50 @@ class BeignetNode extends events_1.EventEmitter {
3730
3750
  }
3731
3751
  });
3732
3752
  }
3753
+ onchainSweeps() {
3754
+ return new onchain_sweep_1.OnchainSweeps({
3755
+ storage: this.storage,
3756
+ wallet: this.wallet,
3757
+ network: this.getBitcoinNetwork(),
3758
+ broadcast: (hex) => this._broadcastRawTx(hex),
3759
+ admitAndSave: (debitSats, save) => {
3760
+ this._checkMaxPayment(debitSats);
3761
+ this._checkSpendLimit(debitSats);
3762
+ const before = {
3763
+ total: this._dailySpentSats,
3764
+ onchain: this._dailySpentOnchainSats,
3765
+ lightning: this._dailySpentLightningSats,
3766
+ reset: this._dailySpendResetTime
3767
+ };
3768
+ try {
3769
+ this.storage.transaction(() => {
3770
+ this._recordSpend(debitSats, 'onchain');
3771
+ this._persistSpendState(true);
3772
+ save();
3773
+ });
3774
+ }
3775
+ catch (error) {
3776
+ this._dailySpentSats = before.total;
3777
+ this._dailySpentOnchainSats = before.onchain;
3778
+ this._dailySpentLightningSats = before.lightning;
3779
+ this._dailySpendResetTime = before.reset;
3780
+ throw error;
3781
+ }
3782
+ }
3783
+ });
3784
+ }
3785
+ prepareOnchainSweep(request) {
3786
+ return this._runOnchainSend(() => this.onchainSweeps().prepare(request));
3787
+ }
3788
+ submitOnchainSweep(requestId) {
3789
+ return this._runOnchainSend(() => this.onchainSweeps().submit(requestId));
3790
+ }
3791
+ getOnchainSweep(requestId) {
3792
+ return this.onchainSweeps().get(requestId);
3793
+ }
3794
+ cancelOnchainSweep(requestId) {
3795
+ return this._runOnchainSend(() => this.onchainSweeps().cancel(requestId));
3796
+ }
3733
3797
  async bumpFeeOnchain(txid, satsPerVbyte) {
3734
3798
  this._validateTxid(txid);
3735
3799
  this._validateFeeRate(satsPerVbyte, true);
@@ -3942,9 +4006,48 @@ class BeignetNode extends events_1.EventEmitter {
3942
4006
  };
3943
4007
  }
3944
4008
  listOnchainTransactions() {
3945
- return Object.values(this.wallet.transactions)
3946
- .map((tx) => this.toOnchainTxInfo(tx))
3947
- .sort((a, b) => b.timestamp - a.timestamp);
4009
+ const transactions = new Map(Object.values(this.wallet.transactions).map((tx) => {
4010
+ const info = this.toOnchainTxInfo(tx);
4011
+ return [info.txid, info];
4012
+ }));
4013
+ for (const close of this.node.listExternalClosePayments()) {
4014
+ const bitcoin = require('bitcoinjs-lib');
4015
+ transactions.set(close.txid, {
4016
+ txid: close.txid,
4017
+ type: 'sent',
4018
+ valueSats: close.amountSats,
4019
+ feeSats: close.feeSats,
4020
+ satsPerVbyte: close.satsPerVbyte,
4021
+ address: bitcoin.address.fromOutputScript(Buffer.from(close.scriptHex, 'hex'), this.getBitcoinNetwork()),
4022
+ confirmed: close.confirmationHeight > 0,
4023
+ ...(close.confirmationHeight > 0
4024
+ ? { height: close.confirmationHeight }
4025
+ : {}),
4026
+ timestamp: close.timestamp,
4027
+ source: 'cooperative-close',
4028
+ channelId: close.channelId
4029
+ });
4030
+ }
4031
+ if (typeof this.storage?.loadWalletData === 'function') {
4032
+ for (const sweep of this.onchainSweeps().list()) {
4033
+ if (!sweep.txid ||
4034
+ !['submitted', 'confirmed'].includes(sweep.status) ||
4035
+ transactions.has(sweep.txid))
4036
+ continue;
4037
+ transactions.set(sweep.txid, {
4038
+ txid: sweep.txid,
4039
+ type: 'sent',
4040
+ valueSats: sweep.amountSats,
4041
+ feeSats: sweep.feeSats,
4042
+ satsPerVbyte: sweep.satsPerVbyte,
4043
+ address: sweep.address,
4044
+ confirmed: sweep.status === 'confirmed',
4045
+ timestamp: sweep.createdAt,
4046
+ source: 'onchain-sweep'
4047
+ });
4048
+ }
4049
+ }
4050
+ return [...transactions.values()].sort((a, b) => b.timestamp - a.timestamp);
3948
4051
  }
3949
4052
  listUtxos() {
3950
4053
  return this.wallet.listUtxos().map((utxo) => ({
@@ -3958,19 +4061,23 @@ class BeignetNode extends events_1.EventEmitter {
3958
4061
  }
3959
4062
  async freezeUtxo(txid, index) {
3960
4063
  this._validateTxid(txid);
3961
- const res = await this.wallet.freezeUtxo({ txid, index });
3962
- if (res.isErr()) {
3963
- throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, res.error.message);
3964
- }
3965
- return { frozen: `${txid}:${index}` };
4064
+ return this._runOnchainSend(async () => {
4065
+ this.onchainSweeps().assertInputMutable(txid, index);
4066
+ const res = await this.wallet.freezeUtxo({ txid, index });
4067
+ if (res.isErr())
4068
+ throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, res.error.message);
4069
+ return { frozen: `${txid}:${index}` };
4070
+ });
3966
4071
  }
3967
4072
  async unfreezeUtxo(txid, index) {
3968
4073
  this._validateTxid(txid);
3969
- const res = await this.wallet.unfreezeUtxo({ txid, index });
3970
- if (res.isErr()) {
3971
- throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, res.error.message);
3972
- }
3973
- return { unfrozen: `${txid}:${index}` };
4074
+ return this._runOnchainSend(async () => {
4075
+ this.onchainSweeps().assertInputMutable(txid, index);
4076
+ const res = await this.wallet.unfreezeUtxo({ txid, index });
4077
+ if (res.isErr())
4078
+ throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, res.error.message);
4079
+ return { unfrozen: `${txid}:${index}` };
4080
+ });
3974
4081
  }
3975
4082
  async setAddressLabel(address, label) {
3976
4083
  const res = await this.wallet.setAddressLabel(address, label);
@@ -4182,11 +4289,45 @@ class BeignetNode extends events_1.EventEmitter {
4182
4289
  await Promise.all(openPromises);
4183
4290
  return opened;
4184
4291
  }
4185
- async closeChannel(channelId, acceptStaleStateRisk = false) {
4292
+ async closeQuote(channelId, address, acceptStaleStateRisk = false) {
4293
+ const idBuf = requireChannelIdHex(channelId);
4294
+ const script = this._decodeSpliceDestination(address);
4295
+ if (!this.node.getChannel(idBuf))
4296
+ throw new errors_1.BeignetError(errors_1.BeignetErrorCode.CHANNEL_NOT_FOUND, `Channel not found: ${channelId}`);
4297
+ const destination = script ?? (await this.cooperativeCloseDestination());
4298
+ try {
4299
+ return this.node.closeQuote(idBuf, destination, acceptStaleStateRisk);
4300
+ }
4301
+ catch (error) {
4302
+ throw new errors_1.BeignetError('CLOSE_UNAVAILABLE', error.message);
4303
+ }
4304
+ }
4305
+ async closeChannel(channelId, acceptStaleStateRisk = false, address) {
4186
4306
  const idBuf = requireChannelIdHex(channelId);
4307
+ const destination = this._decodeSpliceDestination(address);
4187
4308
  if (!this.node.getChannel(idBuf)) {
4188
4309
  throw new errors_1.BeignetError(errors_1.BeignetErrorCode.CHANNEL_NOT_FOUND, `Channel not found: ${idBuf.toString('hex')}`);
4189
4310
  }
4311
+ const scriptPubkey = destination ?? (await this.cooperativeCloseDestination());
4312
+ let externalSpendSats;
4313
+ if (destination) {
4314
+ let quote;
4315
+ try {
4316
+ quote = this.node.closeQuote(idBuf, destination, acceptStaleStateRisk);
4317
+ }
4318
+ catch (error) {
4319
+ throw new errors_1.BeignetError('CLOSE_UNAVAILABLE', error.message);
4320
+ }
4321
+ externalSpendSats = quote.amountSats + quote.feeSats;
4322
+ this._checkMaxPayment(externalSpendSats);
4323
+ this._checkSpendLimit(externalSpendSats);
4324
+ }
4325
+ const result = this.node.closeChannel(idBuf, scriptPubkey, acceptStaleStateRisk, destination !== undefined);
4326
+ if (result.ok && externalSpendSats !== undefined)
4327
+ this._recordSpend(externalSpendSats, 'onchain');
4328
+ return result;
4329
+ }
4330
+ async cooperativeCloseDestination() {
4190
4331
  let scriptPubkey = await this.boundedCurrentWalletAddressScript();
4191
4332
  if (!scriptPubkey)
4192
4333
  scriptPubkey = this.sweepDestinationScript;
@@ -4194,7 +4335,7 @@ class BeignetNode extends events_1.EventEmitter {
4194
4335
  const bitcoin = require('bitcoinjs-lib');
4195
4336
  scriptPubkey = bitcoin.address.toOutputScript(this.node.getFundingAddress(), this.getBitcoinNetwork());
4196
4337
  }
4197
- return this.node.closeChannel(idBuf, scriptPubkey, acceptStaleStateRisk);
4338
+ return scriptPubkey;
4198
4339
  }
4199
4340
  async boundedCurrentWalletAddressScript() {
4200
4341
  return this.raceWithTimeout(this.resolveCurrentWalletAddressScript().catch(() => undefined), this._closeAddressLookupTimeoutMs);
@@ -4814,6 +4955,12 @@ class BeignetNode extends events_1.EventEmitter {
4814
4955
  peerPubkey,
4815
4956
  state: ch.state,
4816
4957
  localBalanceSats: Number(ch.localBalanceMsat / 1000n),
4958
+ maxSendableSats: Number((ch.spendableOutboundMsat ?? 0n) / 1000n),
4959
+ localReserveWaived: ch.localReserveWaived === true,
4960
+ remoteReserveWaived: ch.remoteReserveWaived === true,
4961
+ isOpener: ch.isOpener,
4962
+ localReserveSats: Number((ch.localReserveMsat ?? 0n) / 1000n),
4963
+ remoteReserveSats: Number((ch.remoteReserveMsat ?? 0n) / 1000n),
4817
4964
  remoteBalanceSats: Number(ch.remoteBalanceMsat / 1000n),
4818
4965
  capacitySats: Number(ch.fundingSatoshis),
4819
4966
  isAnchor: (0, types_7.isAnchorChannel)(ch.channelType ?? null)
@@ -5680,7 +5827,7 @@ class BeignetNode extends events_1.EventEmitter {
5680
5827
  this._persistSpendState();
5681
5828
  return count;
5682
5829
  }
5683
- _persistSpendState() {
5830
+ _persistSpendState(strict = false) {
5684
5831
  if (this._dailySpendLimitSats === undefined)
5685
5832
  return;
5686
5833
  const storage = this.storage;
@@ -5702,6 +5849,8 @@ class BeignetNode extends events_1.EventEmitter {
5702
5849
  storage.saveMetadata(exports.DAILY_SPEND_STATE_KEY, JSON.stringify(state));
5703
5850
  }
5704
5851
  catch (err) {
5852
+ if (strict)
5853
+ throw err;
5705
5854
  this.log('warn', 'Could not persist the daily spend ledger', {
5706
5855
  error: err instanceof Error ? err.message : String(err)
5707
5856
  });
@@ -6161,6 +6310,39 @@ class BeignetNode extends events_1.EventEmitter {
6161
6310
  }
6162
6311
  return new errors_1.BeignetError(code, msg);
6163
6312
  }
6313
+ quotePayAll(bolt11, maxFeeMsat) {
6314
+ try {
6315
+ const quote = this.node.quotePayAll(bolt11, requireMsatValue(maxFeeMsat, 'maxFeeMsat'));
6316
+ return {
6317
+ ...quote,
6318
+ debitMsat: quote.debitMsat.toString(),
6319
+ maxFeeMsat: quote.maxFeeMsat.toString(),
6320
+ minRecipientMsat: quote.minRecipientMsat.toString(),
6321
+ remainderMsat: quote.remainderMsat.toString()
6322
+ };
6323
+ }
6324
+ catch (err) {
6325
+ throw this._toBeignetPaymentError(err);
6326
+ }
6327
+ }
6328
+ async payInvoiceAll(bolt11, debitMsat, maxFeeMsat, timeoutMs = 60000) {
6329
+ this._checkDraining();
6330
+ const decoded = decodeInvoiceInput(bolt11);
6331
+ const debit = requireMsatValue(debitMsat, 'debitMsat');
6332
+ const feeCap = requireMsatValue(maxFeeMsat, 'maxFeeMsat');
6333
+ if (debit <= 0n || debit > 0xffffffffffffffffn || feeCap >= debit) {
6334
+ throw new errors_1.BeignetError('INVALID_PARAMS', 'Pay-all requires a positive u64 debitMsat and maxFeeMsat below it');
6335
+ }
6336
+ if (!Number.isSafeInteger(timeoutMs) ||
6337
+ timeoutMs < 1 ||
6338
+ timeoutMs > 2147483647) {
6339
+ throw new errors_1.BeignetError('INVALID_PARAMS', 'timeoutMs must be a positive timer duration');
6340
+ }
6341
+ const claim = this._admitLightningSpend(decoded.paymentHash.toString('hex'), debit, 0n);
6342
+ return this.waitForInvoicePayment(decoded.paymentHash, timeoutMs, claim, () => {
6343
+ this.node.sendPayAll(bolt11, debit, feeCap);
6344
+ });
6345
+ }
6164
6346
  async payInvoice(bolt11, timeoutMs = 60000, maxFeeSats, amountSats, metadata, cltvLimit, maxFeeMsatCap) {
6165
6347
  this._checkDraining();
6166
6348
  const decoded = decodeInvoiceInput(bolt11);
@@ -6173,10 +6355,16 @@ class BeignetNode extends events_1.EventEmitter {
6173
6355
  const maxFeeMsat = resolveMaxFeeMsat(maxFeeSats, maxFeeMsatCap, payAmountMsat);
6174
6356
  const maxCltvExpiryHeight = this._cltvCeiling(cltvLimit);
6175
6357
  const claim = this._admitLightningSpend(paymentHashHex, payAmountMsat, maxFeeMsat);
6358
+ return this.waitForInvoicePayment(decoded.paymentHash, timeoutMs, claim, () => {
6359
+ this.node.sendPayment(bolt11, undefined, maxFeeMsat, amountMsat, maxCltvExpiryHeight, undefined, metadata);
6360
+ });
6361
+ }
6362
+ waitForInvoicePayment(paymentHash, timeoutMs, claim, dispatch) {
6363
+ const paymentHashHex = paymentHash.toString('hex');
6176
6364
  return new Promise((resolve, reject) => {
6177
6365
  const timer = setTimeout(() => {
6178
6366
  cleanup();
6179
- reject(this._paymentTimeout(decoded.paymentHash, 'Payment', timeoutMs, claim));
6367
+ reject(this._paymentTimeout(paymentHash, 'Payment', timeoutMs, claim));
6180
6368
  }, timeoutMs);
6181
6369
  const cleanup = () => {
6182
6370
  clearTimeout(timer);
@@ -6200,13 +6388,19 @@ class BeignetNode extends events_1.EventEmitter {
6200
6388
  };
6201
6389
  this.node.on('payment:sent', onSent);
6202
6390
  this.node.on('payment:failed', onFailed);
6391
+ const beforeDispatch = this.node.getPayment(paymentHash);
6203
6392
  try {
6204
- this.node.sendPayment(bolt11, undefined, maxFeeMsat, amountMsat, maxCltvExpiryHeight, undefined, metadata);
6393
+ dispatch();
6205
6394
  }
6206
6395
  catch (err) {
6207
6396
  cleanup();
6208
- if (claim)
6397
+ const dispatched = this.node.getPayment(paymentHash) !== beforeDispatch;
6398
+ if (dispatched && this.node.hasHtlcInFlight(paymentHash)) {
6399
+ this.node.failPaymentUnlessInFlight(paymentHash);
6400
+ }
6401
+ else if (claim) {
6209
6402
  this._closeAsyncSpendClaim(paymentHashHex, claim);
6403
+ }
6210
6404
  reject(this._toBeignetPaymentError(err));
6211
6405
  }
6212
6406
  });
@@ -6621,6 +6815,7 @@ class BeignetNode extends events_1.EventEmitter {
6621
6815
  return null;
6622
6816
  const feeMsat = paymentFeeMsat(record);
6623
6817
  return {
6818
+ ...(record.payAll ? { payAll: this.toPaymentInfo(record).payAll } : {}),
6624
6819
  paymentHash: proof.paymentHash.toString('hex'),
6625
6820
  preimage: proof.preimage.toString('hex'),
6626
6821
  amountSats: paymentAmountSats(record),
@@ -6711,6 +6906,17 @@ class BeignetNode extends events_1.EventEmitter {
6711
6906
  }
6712
6907
  toPaymentInfo(p) {
6713
6908
  const info = {
6909
+ ...(p.payAll
6910
+ ? {
6911
+ payAll: {
6912
+ debitMsat: p.payAll.debitMsat.toString(),
6913
+ maxFeeMsat: p.payAll.maxFeeMsat.toString(),
6914
+ deliveredMsat: p.payAll.deliveredMsat.toString(),
6915
+ feeMsat: p.payAll.feeMsat.toString(),
6916
+ remainderMsat: p.payAll.remainderMsat.toString()
6917
+ }
6918
+ }
6919
+ : {}),
6714
6920
  paymentHash: p.paymentHash.toString('hex'),
6715
6921
  amountSats: paymentAmountSats(p),
6716
6922
  status: p.status,
@@ -6853,10 +7059,10 @@ class BeignetNode extends events_1.EventEmitter {
6853
7059
  isAnchor: (0, types_7.isAnchorChannel)(state.channelType)
6854
7060
  };
6855
7061
  }
6856
- spliceQuote(channelId, direction, feeratePerkw) {
7062
+ spliceQuote(channelId, direction, feeratePerkw, destinationAddress) {
6857
7063
  const idBuf = requireChannelIdHex(channelId);
6858
7064
  requireU32(feeratePerkw, 'feeratePerkw', 1, splice_weight_1.MAX_SPLICE_FEERATE_PERKW);
6859
- return fundingOrRefuse(() => this.node.spliceQuote(idBuf, direction, feeratePerkw));
7065
+ return fundingOrRefuse(() => this.node.spliceQuote(idBuf, direction, feeratePerkw, this._decodeSpliceDestination(destinationAddress)));
6860
7066
  }
6861
7067
  spliceIn(channelId, amountSats, feeratePerkw, fundingUtxos) {
6862
7068
  const idBuf = requireChannelIdHex(channelId);
@@ -6865,10 +7071,7 @@ class BeignetNode extends events_1.EventEmitter {
6865
7071
  const result = fundingOrRefuse(() => this.node.spliceIn(idBuf, BigInt(amountSats), feeratePerkw, fundingUtxos));
6866
7072
  return result;
6867
7073
  }
6868
- spliceOut(channelId, amountSats, feeratePerkw, destinationAddress) {
6869
- const idBuf = requireChannelIdHex(channelId);
6870
- requirePositiveSafeInteger(amountSats, 'amountSats');
6871
- requireU32(feeratePerkw, 'feeratePerkw', 1, splice_weight_1.MAX_SPLICE_FEERATE_PERKW);
7074
+ _decodeSpliceDestination(destinationAddress) {
6872
7075
  let destinationScript;
6873
7076
  if (destinationAddress !== undefined) {
6874
7077
  if (typeof destinationAddress !== 'string' ||
@@ -6883,6 +7086,13 @@ class BeignetNode extends events_1.EventEmitter {
6883
7086
  throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, `destinationAddress is not a valid address for this network: ${err instanceof Error ? err.message : 'failed to decode'}`);
6884
7087
  }
6885
7088
  }
7089
+ return destinationScript;
7090
+ }
7091
+ spliceOut(channelId, amountSats, feeratePerkw, destinationAddress) {
7092
+ const idBuf = requireChannelIdHex(channelId);
7093
+ requirePositiveSafeInteger(amountSats, 'amountSats');
7094
+ requireU32(feeratePerkw, 'feeratePerkw', 1, splice_weight_1.MAX_SPLICE_FEERATE_PERKW);
7095
+ const destinationScript = this._decodeSpliceDestination(destinationAddress);
6886
7096
  let externalSpendSats;
6887
7097
  if (destinationScript !== undefined) {
6888
7098
  const feeSats = Number((0, splice_weight_1.spliceFeeSats)((0, splice_weight_1.estimateSpliceTxWeight)({
@@ -7327,7 +7537,9 @@ class BeignetNode extends events_1.EventEmitter {
7327
7537
  const snapshot = this.node.getLiquiditySnapshot();
7328
7538
  let reserveMsat = 0n;
7329
7539
  let sendableMsat = 0n;
7540
+ let maxSendableMsat = 0n;
7330
7541
  for (const ch of this.node.listChannels()) {
7542
+ maxSendableMsat += ch.spendableOutboundMsat ?? 0n;
7331
7543
  if (isHeldRestore(ch))
7332
7544
  continue;
7333
7545
  if (ch.state !== types_7.ChannelState.NORMAL && !ch.htlcUsable)
@@ -7351,6 +7563,7 @@ class BeignetNode extends events_1.EventEmitter {
7351
7563
  inboundLiquidityPct: snapshot.inboundLiquidityPct,
7352
7564
  reserveSats: Number(reserveMsat / 1000n),
7353
7565
  sendableSats: Number(sendableMsat / 1000n),
7566
+ maxSendableSats: Number(maxSendableMsat / 1000n),
7354
7567
  recommendations: snapshot.recommendations
7355
7568
  };
7356
7569
  }