astra-lightning 1.1.2 → 1.1.4

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 (265) hide show
  1. package/.github/workflows/unit-test.yml +20 -0
  2. package/CHANGELOG.md +46 -1
  3. package/README.md +2 -0
  4. package/bolt02/ids.json +1 -0
  5. package/grpc/grpc_services.json +1 -1
  6. package/grpc/protos/lightning.proto +251 -28
  7. package/grpc/protos/rfqrpc/rfq.proto +53 -5
  8. package/grpc/protos/router.proto +9 -4
  9. package/grpc/protos/routerrpc/router.proto +26 -4
  10. package/grpc/protos/{tapchannelrpc.proto → tapchannel.proto} +105 -25
  11. package/grpc/protos/tapcommon.proto +36 -0
  12. package/grpc/protos/taprootassets.proto +544 -23
  13. package/grpc/protos/walletkit.proto +78 -6
  14. package/index.js +162 -160
  15. package/lnd_methods/generic/get_height.js +1 -1
  16. package/lnd_methods/index.js +162 -160
  17. package/lnd_methods/info/constants.json +7 -0
  18. package/lnd_methods/invoices/create_invoice.js +10 -14
  19. package/lnd_methods/invoices/subscribe_to_invoice.d.ts +4 -0
  20. package/lnd_methods/invoices/subscribe_to_invoice.js +21 -21
  21. package/lnd_methods/macaroon/methods.json +4 -0
  22. package/lnd_methods/offchain/decode_asset_pay_req.d.ts +69 -28
  23. package/lnd_methods/offchain/decode_asset_pay_req.js +54 -61
  24. package/lnd_methods/offchain/get_pending_channels.d.ts +16 -0
  25. package/lnd_methods/offchain/get_pending_channels.js +6 -0
  26. package/lnd_methods/offchain/get_routing_fee_estimate.d.ts +32 -0
  27. package/lnd_methods/offchain/get_routing_fee_estimate.js +86 -0
  28. package/lnd_methods/offchain/index.d.ts +60 -60
  29. package/lnd_methods/offchain/index.js +6 -4
  30. package/lnd_methods/offchain/pay_via_routes.d.ts +4 -0
  31. package/lnd_methods/onchain/close_channel.d.ts +4 -0
  32. package/lnd_methods/onchain/close_channel.js +4 -0
  33. package/lnd_methods/onchain/open_channels.d.ts +1 -0
  34. package/lnd_methods/onchain/open_channels.js +7 -1
  35. package/lnd_methods/onchain/request_chain_fee_increase.js +5 -0
  36. package/lnd_methods/onchain/subscribe_to_blocks.js +1 -1
  37. package/lnd_responses/confirmed_from_payment_status.js +38 -40
  38. package/lnd_responses/constants.json +1 -0
  39. package/lnd_responses/forward_from_htlc_event.js +31 -31
  40. package/lnd_responses/info_as_wallet_info.js +28 -28
  41. package/lnd_responses/payment_request_details.js +28 -32
  42. package/lnd_responses/pending_as_pending_channels.js +8 -0
  43. package/lnd_responses/pending_from_payment.js +24 -24
  44. package/lnd_responses/routes_from_query_routes.js +30 -30
  45. package/lnd_responses/rpc_channel_as_channel.js +10 -9
  46. package/lnd_responses/rpc_fees_as_channel_fees.js +16 -16
  47. package/lnd_responses/rpc_forward_as_forward_request.js +27 -27
  48. package/lnd_responses/rpc_payment_as_payment.js +28 -31
  49. package/package.json +24 -20
  50. package/test/lnd_methods/offchain/test_get_routing_fee_estimate.js +82 -0
  51. package/test/lnd_methods/onchain/test_close_channel.js +5 -0
  52. package/test/lnd_methods/onchain/test_open_channels.js +5 -1
  53. package/test/lnd_methods/onchain/test_request_chain_fee_increase.js +13 -0
  54. package/test/lnd_responses/test_pending_as_pending_channels.js +34 -1
  55. package/test.js +194 -22
  56. package/.yarn/cache/@babel-code-frame-npm-7.25.7-40a9f53f43-f235cdf9c5.zip +0 -0
  57. package/.yarn/cache/@babel-helper-validator-identifier-npm-7.25.7-1c758f0472-062f55208d.zip +0 -0
  58. package/.yarn/cache/@babel-highlight-npm-7.25.7-308b20da71-b6aa45c5bf.zip +0 -0
  59. package/.yarn/cache/@grpc-grpc-js-npm-1.12.2-733ec8eabe-ee51317f92.zip +0 -0
  60. package/.yarn/cache/@grpc-proto-loader-npm-0.7.13-be5b6af1c1-399c1b8a46.zip +0 -0
  61. package/.yarn/cache/@jest-schemas-npm-29.6.3-292730e442-910040425f.zip +0 -0
  62. package/.yarn/cache/@js-sdsl-ordered-map-npm-4.4.2-158f6c6b74-a927ae4ff8.zip +0 -0
  63. package/.yarn/cache/@noble-hashes-npm-1.5.0-87c768d742-9cc031d5c8.zip +0 -0
  64. package/.yarn/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-a970d595bd.zip +0 -0
  65. package/.yarn/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-012480b5ca.zip +0 -0
  66. package/.yarn/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-190c643f15.zip +0 -0
  67. package/.yarn/cache/@protobufjs-aspromise-npm-1.1.2-71d00b938f-011fe7ef08.zip +0 -0
  68. package/.yarn/cache/@protobufjs-base64-npm-1.1.2-cd8ca6814a-67173ac34d.zip +0 -0
  69. package/.yarn/cache/@protobufjs-codegen-npm-2.0.4-36e188bbe6-59240c850b.zip +0 -0
  70. package/.yarn/cache/@protobufjs-eventemitter-npm-1.1.0-029cc7d431-0369163a3d.zip +0 -0
  71. package/.yarn/cache/@protobufjs-fetch-npm-1.1.0-ca857b7df4-3fce7e09eb.zip +0 -0
  72. package/.yarn/cache/@protobufjs-float-npm-1.0.2-5678f64d08-5781e12412.zip +0 -0
  73. package/.yarn/cache/@protobufjs-inquire-npm-1.1.0-3c7759e9ce-ca06f02eaf.zip +0 -0
  74. package/.yarn/cache/@protobufjs-path-npm-1.1.2-641d08de76-856eeb532b.zip +0 -0
  75. package/.yarn/cache/@protobufjs-pool-npm-1.1.0-47a76f96a1-d6a34fbbd2.zip +0 -0
  76. package/.yarn/cache/@protobufjs-utf8-npm-1.1.0-02c590807c-f9bf3163d1.zip +0 -0
  77. package/.yarn/cache/@sinclair-typebox-npm-0.27.8-23e206d653-00bd7362a3.zip +0 -0
  78. package/.yarn/cache/@tsd-typescript-npm-5.4.5-31c3b104b3-86498d5e15.zip +0 -0
  79. package/.yarn/cache/@types-caseless-npm-0.12.5-d7dbdab81c-f6a3628add.zip +0 -0
  80. package/.yarn/cache/@types-eslint-npm-7.29.0-46534a7300-df13991c55.zip +0 -0
  81. package/.yarn/cache/@types-estree-npm-1.0.6-b5e23f2ea2-8825d6e729.zip +0 -0
  82. package/.yarn/cache/@types-json-schema-npm-7.0.15-fd16381786-97ed0cb44d.zip +0 -0
  83. package/.yarn/cache/@types-minimist-npm-1.2.5-c85664a9d8-477047b606.zip +0 -0
  84. package/.yarn/cache/@types-node-npm-22.7.5-0428b60a8c-1a8bbb504e.zip +0 -0
  85. package/.yarn/cache/@types-node-npm-22.7.6-cbb64e0ad4-6afe2a1bd7.zip +0 -0
  86. package/.yarn/cache/@types-normalize-package-data-npm-2.4.4-676a8ba353-65dff72b54.zip +0 -0
  87. package/.yarn/cache/@types-request-npm-2.48.12-d921ef35cb-20dfad0a46.zip +0 -0
  88. package/.yarn/cache/@types-tough-cookie-npm-4.0.5-8c5e2162e1-f19409d019.zip +0 -0
  89. package/.yarn/cache/@types-ws-npm-8.5.12-90c42288cf-ddefb6ad16.zip +0 -0
  90. package/.yarn/cache/ansi-escapes-npm-4.3.2-3ad173702f-93111c4218.zip +0 -0
  91. package/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip +0 -0
  92. package/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip +0 -0
  93. package/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip +0 -0
  94. package/.yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-d7f4e97ce0.zip +0 -0
  95. package/.yarn/cache/array-union-npm-2.1.0-4e4852b221-5bee12395c.zip +0 -0
  96. package/.yarn/cache/arrify-npm-1.0.1-affafba9fe-745075dd4a.zip +0 -0
  97. package/.yarn/cache/async-npm-3.2.4-aba13508f9-43d07459a4.zip +0 -0
  98. package/.yarn/cache/async-npm-3.2.6-aa4f5aa081-ee6eb8cd8a.zip +0 -0
  99. package/.yarn/cache/asyncjs-util-npm-1.2.12-f1ef4c2905-55ff005a7f.zip +0 -0
  100. package/.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip +0 -0
  101. package/.yarn/cache/base-x-npm-3.0.10-2d05c06792-5230773955.zip +0 -0
  102. package/.yarn/cache/base-x-npm-4.0.0-64a1f6fa5e-b25db9e07e.zip +0 -0
  103. package/.yarn/cache/bech32-npm-2.0.0-ad98b7dd79-fa15acb270.zip +0 -0
  104. package/.yarn/cache/bip174-npm-2.1.1-d9fcaf36f9-bc5b99e7d1.zip +0 -0
  105. package/.yarn/cache/bip66-npm-1.1.5-e1d2ea7768-956cff6e51.zip +0 -0
  106. package/.yarn/cache/bitcoin-ops-npm-1.4.1-e1e62763b3-3daa3303d6.zip +0 -0
  107. package/.yarn/cache/bitcoinjs-lib-npm-6.1.3-8b823f7e69-b1d9ffd999.zip +0 -0
  108. package/.yarn/cache/bitcoinjs-lib-npm-6.1.6-d063b5a8ff-04370cf699.zip +0 -0
  109. package/.yarn/cache/bn.js-npm-5.2.1-dc952b1965-3dd8c8d380.zip +0 -0
  110. package/.yarn/cache/bolt07-npm-1.8.4-297a4ac40d-58cdf15aba.zip +0 -0
  111. package/.yarn/cache/bolt07-npm-1.9.4-6f74865601-d18efc5f83.zip +0 -0
  112. package/.yarn/cache/bolt09-npm-1.0.0-b3d5b54cf9-09d53b86f2.zip +0 -0
  113. package/.yarn/cache/bolt09-npm-2.1.0-1fc0cfcef2-629cd3bdd4.zip +0 -0
  114. package/.yarn/cache/braces-npm-3.0.3-582c14023c-b95aa0b3bd.zip +0 -0
  115. package/.yarn/cache/bs58-npm-4.0.1-8d2a7822b1-b3c5365bb9.zip +0 -0
  116. package/.yarn/cache/bs58-npm-5.0.0-da02537b92-2475cb0684.zip +0 -0
  117. package/.yarn/cache/bs58check-npm-2.1.2-4e87e40195-43bdf08a5d.zip +0 -0
  118. package/.yarn/cache/bs58check-npm-3.0.1-be32851e5e-dbbecc7a09.zip +0 -0
  119. package/.yarn/cache/camelcase-keys-npm-6.2.2-d13777ec12-43c9af1adf.zip +0 -0
  120. package/.yarn/cache/camelcase-npm-5.3.1-5db8af62c5-e6effce26b.zip +0 -0
  121. package/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip +0 -0
  122. package/.yarn/cache/chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip +0 -0
  123. package/.yarn/cache/cipher-base-npm-1.0.4-2e98b97140-47d3568dbc.zip +0 -0
  124. package/.yarn/cache/cliui-npm-8.0.1-3b029092cf-79648b3b00.zip +0 -0
  125. package/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip +0 -0
  126. package/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip +0 -0
  127. package/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip +0 -0
  128. package/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip +0 -0
  129. package/.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip +0 -0
  130. package/.yarn/cache/create-hash-npm-1.2.0-afd048e1ce-02a6ae3bb9.zip +0 -0
  131. package/.yarn/cache/decamelize-keys-npm-1.1.1-4cfa36ed4b-fc645fe20b.zip +0 -0
  132. package/.yarn/cache/decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip +0 -0
  133. package/.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip +0 -0
  134. package/.yarn/cache/diff-sequences-npm-29.6.3-18ab2c9949-f4914158e1.zip +0 -0
  135. package/.yarn/cache/dir-glob-npm-3.0.1-1aea628b1b-fa05e18324.zip +0 -0
  136. package/.yarn/cache/ecpair-npm-2.1.0-d034fc21e2-924a776808.zip +0 -0
  137. package/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip +0 -0
  138. package/.yarn/cache/error-ex-npm-1.3.2-5654f80c0f-c1c2b8b65f.zip +0 -0
  139. package/.yarn/cache/escalade-npm-3.2.0-19b50dd48f-47b029c83d.zip +0 -0
  140. package/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip +0 -0
  141. package/.yarn/cache/eslint-formatter-pretty-npm-4.1.0-30790f28b4-e8e0cd3843.zip +0 -0
  142. package/.yarn/cache/eslint-rule-docs-npm-1.1.235-64d33df34f-b163596f9a.zip +0 -0
  143. package/.yarn/cache/fast-glob-npm-3.3.2-0a8cb4f2ca-900e4979f4.zip +0 -0
  144. package/.yarn/cache/fastq-npm-1.17.1-56d4554993-a8c5b26788.zip +0 -0
  145. package/.yarn/cache/fill-range-npm-7.1.1-bf491486db-b4abfbca38.zip +0 -0
  146. package/.yarn/cache/find-up-npm-4.1.0-c3ccf8d855-4c172680e8.zip +0 -0
  147. package/.yarn/cache/form-data-npm-2.5.2-f40bcd738c-89ed3d9623.zip +0 -0
  148. package/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip +0 -0
  149. package/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-b9769a836d.zip +0 -0
  150. package/.yarn/cache/glob-parent-npm-5.1.2-021ab32634-f4f2bfe242.zip +0 -0
  151. package/.yarn/cache/globby-npm-11.1.0-bdcdf20c71-b4be8885e0.zip +0 -0
  152. package/.yarn/cache/hard-rejection-npm-2.1.0-a80f2a977d-7baaf80a0c.zip +0 -0
  153. package/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip +0 -0
  154. package/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip +0 -0
  155. package/.yarn/cache/hash-base-npm-3.1.0-26fc5711dd-26b7e97ac3.zip +0 -0
  156. package/.yarn/cache/hasown-npm-2.0.2-80fe6c9901-e8516f776a.zip +0 -0
  157. package/.yarn/cache/hosted-git-info-npm-2.8.9-62c44fa93f-c955394bda.zip +0 -0
  158. package/.yarn/cache/hosted-git-info-npm-4.1.0-4efcdf8fd3-c3f87b3c2f.zip +0 -0
  159. package/.yarn/cache/ignore-npm-5.3.2-346d3ba017-2acfd32a57.zip +0 -0
  160. package/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip +0 -0
  161. package/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip +0 -0
  162. package/.yarn/cache/invoices-npm-3.0.0-123907e565-27119b1449.zip +0 -0
  163. package/.yarn/cache/irregular-plurals-npm-3.5.0-2415613615-5b663091dc.zip +0 -0
  164. package/.yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-eef4417e3c.zip +0 -0
  165. package/.yarn/cache/is-core-module-npm-2.15.1-34c73a6cbd-df134c1681.zip +0 -0
  166. package/.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-df033653d0.zip +0 -0
  167. package/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip +0 -0
  168. package/.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-d381c1319f.zip +0 -0
  169. package/.yarn/cache/is-number-npm-7.0.0-060086935c-456ac6f8e0.zip +0 -0
  170. package/.yarn/cache/is-plain-obj-npm-1.1.0-1046f64c0b-0ee0480779.zip +0 -0
  171. package/.yarn/cache/is-unicode-supported-npm-0.1.0-0833e1bbfb-a2aab86ee7.zip +0 -0
  172. package/.yarn/cache/jest-diff-npm-29.7.0-0149e01930-08e24a9dd4.zip +0 -0
  173. package/.yarn/cache/jest-get-type-npm-29.6.3-500477292e-88ac9102d4.zip +0 -0
  174. package/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip +0 -0
  175. package/.yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-798ed4cf33.zip +0 -0
  176. package/.yarn/cache/kind-of-npm-6.0.3-ab15f36220-3ab01e7b1d.zip +0 -0
  177. package/.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-0c37f9f7fa.zip +0 -0
  178. package/.yarn/cache/locate-path-npm-5.0.0-46580c43e4-83e51725e6.zip +0 -0
  179. package/.yarn/cache/lodash.camelcase-npm-4.3.0-bf268e3bf0-cb9227612f.zip +0 -0
  180. package/.yarn/cache/log-symbols-npm-4.1.0-0a13492d8b-fce1497b31.zip +0 -0
  181. package/.yarn/cache/long-npm-5.2.3-61dddb7586-885ede7c3d.zip +0 -0
  182. package/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip +0 -0
  183. package/.yarn/cache/map-obj-npm-1.0.1-fa55100fac-9949e7baec.zip +0 -0
  184. package/.yarn/cache/map-obj-npm-4.3.0-d53e32935d-fbc554934d.zip +0 -0
  185. package/.yarn/cache/md5.js-npm-1.3.5-130901125a-098494d885.zip +0 -0
  186. package/.yarn/cache/meow-npm-9.0.0-8b2707248e-99799c4724.zip +0 -0
  187. package/.yarn/cache/merge2-npm-1.4.1-a2507bd06c-7268db63ed.zip +0 -0
  188. package/.yarn/cache/micromatch-npm-4.0.8-c9570e4aca-79920eb634.zip +0 -0
  189. package/.yarn/cache/mime-db-npm-1.52.0-b5371d6fd2-0d99a03585.zip +0 -0
  190. package/.yarn/cache/mime-types-npm-2.1.35-dd9ea9f3e2-89a5b7f1de.zip +0 -0
  191. package/.yarn/cache/min-indent-npm-1.0.1-77031f50e1-bfc6dd03c5.zip +0 -0
  192. package/.yarn/cache/minimist-options-npm-4.1.0-64ca250fc1-8c040b3068.zip +0 -0
  193. package/.yarn/cache/normalize-package-data-npm-2.5.0-af0345deed-7999112efc.zip +0 -0
  194. package/.yarn/cache/normalize-package-data-npm-3.0.3-1a49056685-bbcee00339.zip +0 -0
  195. package/.yarn/cache/p-limit-npm-2.3.0-94a0310039-84ff17f1a3.zip +0 -0
  196. package/.yarn/cache/p-locate-npm-4.1.0-eec6872537-513bd14a45.zip +0 -0
  197. package/.yarn/cache/p-try-npm-2.2.0-e0390dbaf8-f8a8e9a769.zip +0 -0
  198. package/.yarn/cache/parse-json-npm-5.2.0-00a63b1199-62085b17d6.zip +0 -0
  199. package/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip +0 -0
  200. package/.yarn/cache/path-parse-npm-1.0.7-09564527b7-49abf3d811.zip +0 -0
  201. package/.yarn/cache/path-type-npm-4.0.0-10d47fc86a-5b1e2daa24.zip +0 -0
  202. package/.yarn/cache/picocolors-npm-1.1.1-4fede47cf1-e1cf46bf84.zip +0 -0
  203. package/.yarn/cache/picomatch-npm-2.3.1-c782cfd986-050c865ce8.zip +0 -0
  204. package/.yarn/cache/plur-npm-4.0.0-96f2a49c24-fea2e903ef.zip +0 -0
  205. package/.yarn/cache/pretty-format-npm-29.7.0-7d330b2ea2-032c160238.zip +0 -0
  206. package/.yarn/cache/protobufjs-npm-7.4.0-12c56a3adc-ba0e6b6054.zip +0 -0
  207. package/.yarn/cache/psbt-npm-3.0.0-7f3e8059ba-1dddca470a.zip +0 -0
  208. package/.yarn/cache/pushdata-bitcoin-npm-1.0.1-959a90bb14-8452106d4b.zip +0 -0
  209. package/.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip +0 -0
  210. package/.yarn/cache/quick-lru-npm-4.0.1-ef8aa17c9c-bea46e1abf.zip +0 -0
  211. package/.yarn/cache/randombytes-npm-2.1.0-e3da76bccf-d779499376.zip +0 -0
  212. package/.yarn/cache/react-is-npm-18.3.1-370a81e1e9-e20fe84c86.zip +0 -0
  213. package/.yarn/cache/read-pkg-npm-5.2.0-50426bd8dc-eb696e6052.zip +0 -0
  214. package/.yarn/cache/read-pkg-up-npm-7.0.1-11895bed9a-e4e93ce70e.zip +0 -0
  215. package/.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-bdcbe6c22e.zip +0 -0
  216. package/.yarn/cache/redent-npm-3.0.0-31892f4906-fa1ef20404.zip +0 -0
  217. package/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-fb47e70bf0.zip +0 -0
  218. package/.yarn/cache/resolve-npm-1.22.8-098f379dfe-f8a26958aa.zip +0 -0
  219. package/.yarn/cache/resolve-patch-f6b5304cab-5479b7d431.zip +0 -0
  220. package/.yarn/cache/reusify-npm-1.0.4-95ac4aec11-c3076ebcc2.zip +0 -0
  221. package/.yarn/cache/ripemd160-npm-2.0.2-7b1fb8dc76-006accc405.zip +0 -0
  222. package/.yarn/cache/run-parallel-npm-1.2.0-3f47ff2034-cb4f97ad25.zip +0 -0
  223. package/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip +0 -0
  224. package/.yarn/cache/semver-npm-5.7.2-938ee91eaa-fb4ab5e0dd.zip +0 -0
  225. package/.yarn/cache/semver-npm-7.6.3-57e82c14d5-4110ec5d01.zip +0 -0
  226. package/.yarn/cache/sha.js-npm-2.4.11-14868df4ca-ebd3f59d4b.zip +0 -0
  227. package/.yarn/cache/slash-npm-3.0.0-b87de2279a-94a93fff61.zip +0 -0
  228. package/.yarn/cache/spdx-correct-npm-3.2.0-ffae008484-e9ae98d22f.zip +0 -0
  229. package/.yarn/cache/spdx-exceptions-npm-2.5.0-718ed4b7d6-bb127d6e25.zip +0 -0
  230. package/.yarn/cache/spdx-expression-parse-npm-3.0.1-b718cbb35a-a1c6e104a2.zip +0 -0
  231. package/.yarn/cache/spdx-license-ids-npm-3.0.20-f08e1eabc0-0c57750bed.zip +0 -0
  232. package/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip +0 -0
  233. package/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip +0 -0
  234. package/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip +0 -0
  235. package/.yarn/cache/strip-indent-npm-3.0.0-519e75a28d-18f045d57d.zip +0 -0
  236. package/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip +0 -0
  237. package/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip +0 -0
  238. package/.yarn/cache/supports-hyperlinks-npm-2.3.0-d19176eba2-9ee0de3c8c.zip +0 -0
  239. package/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-53b1e247e6.zip +0 -0
  240. package/.yarn/cache/tiny-secp256k1-npm-2.2.2-54168b74b6-2b38491186.zip +0 -0
  241. package/.yarn/cache/tiny-secp256k1-npm-2.2.3-8c5163b5d1-f7a74a1fce.zip +0 -0
  242. package/.yarn/cache/to-regex-range-npm-5.0.1-f1e8263b00-f76fa01b3d.zip +0 -0
  243. package/.yarn/cache/trim-newlines-npm-3.0.1-22f1f216de-b530f3fadf.zip +0 -0
  244. package/.yarn/cache/tsd-npm-0.31.2-07f84c93d0-23bb84f8ba.zip +0 -0
  245. package/.yarn/cache/type-fest-npm-0.18.1-47b079775d-e96dcee18a.zip +0 -0
  246. package/.yarn/cache/type-fest-npm-0.21.3-5ff2a9c6fd-e6b32a3b38.zip +0 -0
  247. package/.yarn/cache/type-fest-npm-0.6.0-76b229965b-b2188e6e4b.zip +0 -0
  248. package/.yarn/cache/type-fest-npm-0.8.1-351ad028fe-d61c4b2eba.zip +0 -0
  249. package/.yarn/cache/type-fest-npm-4.26.1-274c31182d-7188db3bca.zip +0 -0
  250. package/.yarn/cache/typeforce-npm-1.18.0-372e34e2a2-e3b21e27e7.zip +0 -0
  251. package/.yarn/cache/typescript-npm-5.6.3-cc9b3687b0-ba302f8822.zip +0 -0
  252. package/.yarn/cache/typescript-patch-be88537122-ade87bce23.zip +0 -0
  253. package/.yarn/cache/uint8array-tools-npm-0.0.7-96ca58a124-6ffc45c7d2.zip +0 -0
  254. package/.yarn/cache/undici-types-npm-6.19.8-9f12285b7a-de51f1b447.zip +0 -0
  255. package/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip +0 -0
  256. package/.yarn/cache/validate-npm-package-license-npm-3.0.4-7af8adc7a8-35703ac889.zip +0 -0
  257. package/.yarn/cache/varuint-bitcoin-npm-1.1.2-83f928c112-1c900bf08f.zip +0 -0
  258. package/.yarn/cache/wif-npm-2.0.6-f351bf025a-8c3147ef98.zip +0 -0
  259. package/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip +0 -0
  260. package/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-54f0fb9562.zip +0 -0
  261. package/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip +0 -0
  262. package/.yarn/cache/yargs-npm-17.7.2-80b62638e1-73b572e863.zip +0 -0
  263. package/.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip +0 -0
  264. package/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-ed2d96a616.zip +0 -0
  265. package/.yarn/install-state.gz +0 -0
@@ -47,6 +47,8 @@ export type ForceCloseChannelArgs = AuthenticatedLightningArgs<
47
47
  export type CoopCloseChannelArgs = AuthenticatedLightningArgs<
48
48
  ExpectedIdOfChannelToClose & {
49
49
  is_force_close?: false;
50
+ /** Is Waiting For Pending Payments to Coop Close Bool */
51
+ is_graceful_close?: boolean;
50
52
  /** Request Sending Local Channel Funds To Address String */
51
53
  address?: string;
52
54
  /** Fail Cooperative Close Above Fee Rate */
@@ -79,6 +81,8 @@ export type CloseChannelResult = {
79
81
  * Requires `info:read`, `offchain:write`, `onchain:write`, `peers:write` permissions
80
82
  *
81
83
  * `max_tokens_per_vbyte` is not supported in LND 0.15.0 and below
84
+ *
85
+ * `is_graceful_close` is not supported in LND 0.17.5 and below
82
86
  */
83
87
  export const closeChannel: AuthenticatedLightningMethod<
84
88
  CloseChannelArgs,
@@ -23,10 +23,13 @@ const type = 'default';
23
23
 
24
24
  `max_tokens_per_vbyte` is not supported in LND 0.15.0 and below
25
25
 
26
+ `is_graceful_close` is not supported in LND 0.17.5 and below
27
+
26
28
  {
27
29
  [address]: <Request Sending Local Channel Funds To Address String>
28
30
  [id]: <Standard Format Channel Id String>
29
31
  [is_force_close]: <Is Force Close Bool>
32
+ [is_graceful_close]: <Is Waiting For Pending Payments to Coop Close Bool>
30
33
  lnd: <Authenticated LND API Object>
31
34
  [max_tokens_per_vbyte]: <Fail Cooperative Close Above Fee Rate Number>
32
35
  [public_key]: <Peer Public Key String>
@@ -143,6 +146,7 @@ module.exports = (args, cbk) => {
143
146
  delivery_address: args.address || undefined,
144
147
  force: !!args.is_force_close,
145
148
  max_fee_per_vbyte: args.max_tokens_per_vbyte || undefined,
149
+ no_wait: args.is_graceful_close || undefined,
146
150
  sat_per_vbyte: !!tokensPerVByte ? tokensPerVByte : undefined,
147
151
  target_conf: targetConf,
148
152
  });
@@ -11,6 +11,7 @@ export type MultipleChannelOpenOptions = Pick<
11
11
  | 'description'
12
12
  | 'fee_rate'
13
13
  | 'give_tokens'
14
+ | 'is_allowing_minimal_reserve'
14
15
  | 'is_private'
15
16
  | 'min_htlc_mtokens'
16
17
  | 'partner_public_key'
@@ -17,7 +17,7 @@ const {isArray} = Array;
17
17
  const isPublicKey = n => /^[0-9A-F]{66}$/i.test(n);
18
18
  const makeId = () => randomBytes(32);
19
19
  const method = 'openChannel';
20
- const notEnoughOutputs = 'not enough witness outputs to create funding';
20
+ const reserve = isDust => isDust ? 354 : undefined;
21
21
  const taproot = 'SIMPLE_TAPROOT';
22
22
  const type = 'default';
23
23
 
@@ -38,6 +38,8 @@ const type = 'default';
38
38
  `--protocol.option-scid-alias` and `--protocol.zero-conf` set on both sides
39
39
  as well as a channel open request listener to accept the trusted funding.
40
40
 
41
+ `is_allowing_minimal_reserve` is not supported on LND 0.15.0 and below
42
+
41
43
  `base_fee_mtokens` is not supported on LND 0.15.5 and below
42
44
  `fee_rate` is not supported on LND 0.15.5 and below
43
45
 
@@ -54,6 +56,7 @@ const type = 'default';
54
56
  [description]: <Immutable Channel Description String>
55
57
  [fee_rate]: <Routing Fee Rate In Millitokens Per Million Number>
56
58
  [give_tokens]: <Tokens to Gift To Partner Number> // Defaults to zero
59
+ [is_allowing_minimal_reserve]: <Allow Peer to Have Minimal Reserve Bool>
57
60
  [is_private]: <Channel is Private Bool> // Defaults to false
58
61
  [is_simplified_taproot]: <Channel is Simplified Taproot Type Bool>
59
62
  [is_trusted_funding]: <Peer Should Avoid Waiting For Confirmation Bool>
@@ -112,6 +115,7 @@ module.exports = (args, cbk) => {
112
115
  id: makeId(),
113
116
  cooperative_close_address: channel.cooperative_close_address,
114
117
  give_tokens: channel.give_tokens,
118
+ is_allowing_minimal_reserve: channel.is_allowing_minimal_reserve,
115
119
  is_private: channel.is_private,
116
120
  is_simplified_taproot: channel.is_simplified_taproot,
117
121
  is_trusted_funding: channel.is_trusted_funding,
@@ -129,6 +133,7 @@ module.exports = (args, cbk) => {
129
133
  const baseType = !!channel.is_trusted_funding ? anchors : undefined;
130
134
  let isDone = false;
131
135
  const isSelfPublish = !!args.is_avoiding_broadcast;
136
+ const remoteReserve = reserve(!!channel.is_allowing_minimal_reserve);
132
137
 
133
138
  const commit = !!channel.is_simplified_taproot ? taproot : baseType;
134
139
 
@@ -149,6 +154,7 @@ module.exports = (args, cbk) => {
149
154
  node_pubkey: bufferFromHex(channel.partner_public_key),
150
155
  private: !!channel.is_private,
151
156
  push_sat: channel.give_tokens || undefined,
157
+ remote_chan_reserve_sat: remoteReserve,
152
158
  remote_csv_delay: channel.partner_csv_delay || undefined,
153
159
  scid_alias: channel.is_trusted_funding && channel.is_private,
154
160
  use_base_fee: channel.base_fee_mtokens !== undefined,
@@ -7,6 +7,7 @@ const defaultConfirmations = 6;
7
7
  const isHash = n => /^[0-9A-F]{64}$/i.test(n);
8
8
  const isNumber = n => !isNaN(n);
9
9
  const messageExternalUtxo = 'the passed output does not belong to the wallet';
10
+ const messageInvalidOutputIndex = /^invalid.output.index/;
10
11
  const method = 'bumpFee';
11
12
  const type = 'wallet';
12
13
 
@@ -81,6 +82,10 @@ module.exports = (args, cbk) => {
81
82
  return cbk([404, 'SpecifiedOutpointNotFoundInWalletUtxos']);
82
83
  }
83
84
 
85
+ if (!!err && messageInvalidOutputIndex.test(err.details)) {
86
+ return cbk([404, 'SpecifiedOutpointNotFoundInWalletUtxos']);
87
+ }
88
+
84
89
  if (!!err) {
85
90
  return cbk([500, 'UnexpectedErrorRequestingChainFeeBump', {err}]);
86
91
  }
@@ -82,7 +82,7 @@ module.exports = ({lnd}) => {
82
82
  return emitError([503, 'UnexpectedBlockEventHashLength']);
83
83
  }
84
84
 
85
- if (!data.height) {
85
+ if (data.height === undefined) {
86
86
  return emitError([503, 'ExpectedHeightInBlockEvent']);
87
87
  }
88
88
 
@@ -1,17 +1,17 @@
1
- const { createHash } = require("crypto");
1
+ const {createHash} = require('crypto');
2
2
 
3
- const { chanFormat } = require("bolt07");
3
+ const {chanFormat} = require('bolt07');
4
4
 
5
- const { attemptStates } = require("./constants");
6
- const { safeTokens } = require("../bolt00");
5
+ const {attemptStates} = require('./constants');
6
+ const {safeTokens} = require('./../bolt00');
7
7
 
8
- const { confirmed } = attemptStates;
9
- const hexFromBuffer = (buffer) => buffer.toString("hex");
10
- const { isArray } = Array;
11
- const { isBuffer } = Buffer;
12
- const { max } = Math;
13
- const sha256 = (preimage) => createHash("sha256").update(preimage).digest();
14
- const sum = (arr) => arr.reduce((sum, n) => sum + BigInt(n), BigInt(Number()));
8
+ const {confirmed} = attemptStates;
9
+ const hexFromBuffer = buffer => buffer.toString('hex');
10
+ const {isArray} = Array;
11
+ const {isBuffer} = Buffer;
12
+ const {max} = Math;
13
+ const sha256 = preimage => createHash('sha256').update(preimage).digest();
14
+ const sum = arr => arr.reduce((sum, n) => sum + BigInt(n), BigInt(Number()));
15
15
 
16
16
  /** Calculate total payment details from RPC payment HTLC elements
17
17
 
@@ -110,67 +110,65 @@ const sum = (arr) => arr.reduce((sum, n) => sum + BigInt(n), BigInt(Number()));
110
110
  tokens: <Total Tokens Paid Rounded Down Number>
111
111
  }
112
112
  */
113
- module.exports = ({ htlcs, preimage, route }) => {
113
+ module.exports = ({htlcs, preimage, route}) => {
114
114
  if (!isArray(htlcs)) {
115
- throw new Error("ExpectedArrayOfHtlcsToDeriveConfirmedFromPaymentStatus");
115
+ throw new Error('ExpectedArrayOfHtlcsToDeriveConfirmedFromPaymentStatus');
116
116
  }
117
117
 
118
118
  if (!isBuffer(preimage)) {
119
- throw new Error("ExpectedPreimageBufferToDeriveConfirmFromPaymentStatus");
119
+ throw new Error('ExpectedPreimageBufferToDeriveConfirmFromPaymentStatus');
120
120
  }
121
121
 
122
122
  if (!route && !htlcs.length) {
123
- throw new Error("ExpectedEitherRouteOrAttemptHtlcs");
123
+ throw new Error('ExpectedEitherRouteOrAttemptHtlcs');
124
124
  }
125
125
 
126
- if (!!htlcs.length && !htlcs.filter((n) => n.status === confirmed).length) {
127
- throw new Error("ExpectedSuccessfulHtlcAttemptForConfirmedStatus");
126
+ if (!!htlcs.length && !htlcs.filter(n => n.status === confirmed).length) {
127
+ throw new Error('ExpectedSuccessfulHtlcAttemptForConfirmedStatus');
128
128
  }
129
129
 
130
130
  const hasHtlcs = !!htlcs.length;
131
- const id = sha256(preimage).toString("hex");
132
- const secret = preimage.toString("hex");
133
- const successHtlcs = htlcs.filter(
134
- (n) => n.status === attemptStates.confirmed
135
- );
131
+ const id = sha256(preimage).toString('hex');
132
+ const secret = preimage.toString('hex');
133
+ const successHtlcs = htlcs.filter(n => n.status === attemptStates.confirmed);
136
134
 
137
- const payments = hasHtlcs ? successHtlcs.map(({ route }) => route) : [route];
135
+ const payments = hasHtlcs ? successHtlcs.map(({route}) => route) : [route];
138
136
 
139
- const paths = payments.map((route) => ({
140
- fee: safeTokens({ mtokens: route.total_fees_msat }).tokens,
137
+ const paths = payments.map(route => ({
138
+ fee: safeTokens({mtokens: route.total_fees_msat}).tokens,
141
139
  fee_mtokens: route.total_fees_msat,
142
- hops: route.hops.map((hop) => ({
143
- channel: chanFormat({ number: hop.chan_id }).channel,
140
+ hops: route.hops.map(hop => ({
141
+ channel: chanFormat({number: hop.chan_id}).channel,
144
142
  channel_capacity: Number(hop.chan_capacity),
145
- fee: safeTokens({ mtokens: hop.fee_msat }).tokens,
143
+ fee: safeTokens({mtokens: hop.fee_msat}).tokens,
146
144
  fee_mtokens: hop.fee_msat,
147
- forward: safeTokens({ mtokens: hop.amt_to_forward_msat }).tokens,
145
+ forward: safeTokens({mtokens: hop.amt_to_forward_msat}).tokens,
148
146
  forward_mtokens: hop.amt_to_forward_msat,
149
147
  public_key: hexFromBuffer(hop.pub_key),
150
148
  timeout: hop.expiry,
151
149
  })),
152
150
  mtokens: route.total_amt_msat,
153
- safe_fee: safeTokens({ mtokens: route.total_fees_msat }).safe,
154
- safe_tokens: safeTokens({ mtokens: route.total_amt_msat }).safe,
151
+ safe_fee: safeTokens({mtokens: route.total_fees_msat}).safe,
152
+ safe_tokens: safeTokens({mtokens: route.total_amt_msat}).safe,
155
153
  timeout: route.total_time_lock,
156
- tokens: safeTokens({ mtokens: route.total_amt_msat }).tokens,
154
+ tokens: safeTokens({mtokens: route.total_amt_msat}).tokens,
157
155
  }));
158
156
 
159
- const feeMtokens = sum(paths.map((n) => n.fee_mtokens));
160
- const [{ hops }] = paths;
161
- const mtokens = sum(paths.map(({ mtokens }) => mtokens));
157
+ const feeMtokens = sum(paths.map(n => n.fee_mtokens));
158
+ const [{hops}] = paths;
159
+ const mtokens = sum(paths.map(({mtokens}) => mtokens));
162
160
 
163
161
  return {
164
162
  hops,
165
163
  id,
166
164
  paths,
167
165
  secret,
168
- fee: safeTokens({ mtokens: feeMtokens.toString() }).tokens,
166
+ fee: safeTokens({mtokens: feeMtokens.toString()}).tokens,
169
167
  fee_mtokens: feeMtokens.toString(),
170
168
  mtokens: mtokens.toString(),
171
- safe_fee: safeTokens({ mtokens: feeMtokens.toString() }).safe,
172
- safe_tokens: safeTokens({ mtokens: mtokens.toString() }).safe,
173
- timeout: max(...paths.map(({ timeout }) => timeout)),
174
- tokens: safeTokens({ mtokens: mtokens.toString() }).tokens,
169
+ safe_fee: safeTokens({mtokens: feeMtokens.toString()}).safe,
170
+ safe_tokens: safeTokens({mtokens: mtokens.toString()}).safe,
171
+ timeout: max(...paths.map(({timeout}) => timeout)),
172
+ tokens: safeTokens({mtokens: mtokens.toString()}).tokens,
175
173
  };
176
174
  };
@@ -25,6 +25,7 @@
25
25
  "commitmentTypes": {
26
26
  "anchor": "ANCHORS",
27
27
  "simplified_taproot": "SIMPLE_TAPROOT",
28
+ "simple_taproot_overlay": "SIMPLE_TAPROOT_OVERLAY",
28
29
  "static_remote_key": "STATIC_REMOTE_KEY",
29
30
  "variable_remote_key": "LEGACY"
30
31
  },
@@ -1,9 +1,9 @@
1
- const { chanFormat } = require("bolt07");
1
+ const {chanFormat} = require('bolt07');
2
2
 
3
- const { htlcTypes } = require("./constants");
4
- const { safeTokens } = require("../bolt00");
3
+ const {htlcTypes} = require('./constants');
4
+ const {safeTokens} = require('./../bolt00');
5
5
 
6
- const bufferAsHex = (buffer) => buffer.toString("hex");
6
+ const bufferAsHex = buffer => buffer.toString('hex');
7
7
  const nsPerMs = BigInt(1e6);
8
8
 
9
9
  /** Get RPC HTLC Event as a forward event
@@ -65,97 +65,97 @@ const nsPerMs = BigInt(1e6);
65
65
  [tokens]: <Sending Tokens Number>
66
66
  }
67
67
  */
68
- module.exports = (htlc) => {
68
+ module.exports = htlc => {
69
69
  if (!htlc.event_type) {
70
- throw new Error("ExpectedHtlcEventTypeToDeriveForwardFromHtlcEvent");
70
+ throw new Error('ExpectedHtlcEventTypeToDeriveForwardFromHtlcEvent');
71
71
  }
72
72
 
73
73
  if (!!htlc.forward_event) {
74
74
  if (!htlc.forward_event.info) {
75
- throw new Error("ExpectedHtlcInfoInForwardEvent");
75
+ throw new Error('ExpectedHtlcInfoInForwardEvent');
76
76
  }
77
77
 
78
78
  if (!htlc.forward_event.info.incoming_amt_msat) {
79
- throw new Error("ExpectedForwardEventIncomingAmountMsatToDeriveForward");
79
+ throw new Error('ExpectedForwardEventIncomingAmountMsatToDeriveForward');
80
80
  }
81
81
 
82
82
  if (htlc.forward_event.info.incoming_timelock === undefined) {
83
- throw new Error("ExpectedForwardEventIncomingTimelockToDeriveForward");
83
+ throw new Error('ExpectedForwardEventIncomingTimelockToDeriveForward');
84
84
  }
85
85
 
86
86
  if (!htlc.forward_event.info.outgoing_amt_msat) {
87
- throw new Error("ExpectedForwardEventOutgoingAmountMsatToDeriveForward");
87
+ throw new Error('ExpectedForwardEventOutgoingAmountMsatToDeriveForward');
88
88
  }
89
89
 
90
90
  if (htlc.forward_event.info.outgoing_timelock === undefined) {
91
- throw new Error("ExpectedForwardEventOutgoingTimelockToDeriveForward");
91
+ throw new Error('ExpectedForwardEventOutgoingTimelockToDeriveForward');
92
92
  }
93
93
  }
94
94
 
95
95
  if (!htlc.incoming_channel_id) {
96
- throw new Error("ExpectedIncomingChannelIdToDeriveForward");
96
+ throw new Error('ExpectedIncomingChannelIdToDeriveForward');
97
97
  }
98
98
 
99
99
  if (!htlc.incoming_htlc_id) {
100
- throw new Error("ExpectedIncomingHtlcIdToDeriveForward");
100
+ throw new Error('ExpectedIncomingHtlcIdToDeriveForward');
101
101
  }
102
102
 
103
103
  if (!!htlc.link_fail_event) {
104
104
  if (!htlc.link_fail_event.failure_detail) {
105
- throw new Error("ExpectedLinkFailureDetailInLinkFailureEvent");
105
+ throw new Error('ExpectedLinkFailureDetailInLinkFailureEvent');
106
106
  }
107
107
 
108
108
  if (!htlc.link_fail_event.failure_string) {
109
- throw new Error("ExpectedLinkFailureStringInLinkFailureEvent");
109
+ throw new Error('ExpectedLinkFailureStringInLinkFailureEvent');
110
110
  }
111
111
 
112
112
  if (!htlc.link_fail_event.info) {
113
- throw new Error("ExpectedHtlcInfoInLinkFailEvent");
113
+ throw new Error('ExpectedHtlcInfoInLinkFailEvent');
114
114
  }
115
115
 
116
116
  if (!htlc.link_fail_event.info.incoming_amt_msat) {
117
- throw new Error("ExpectedLinkFailEventIncomingMsatToDeriveForward");
117
+ throw new Error('ExpectedLinkFailEventIncomingMsatToDeriveForward');
118
118
  }
119
119
 
120
120
  if (htlc.link_fail_event.info.incoming_timelock === undefined) {
121
- throw new Error("ExpectedLinkFailEventIncomingTimelockToDeriveForward");
121
+ throw new Error('ExpectedLinkFailEventIncomingTimelockToDeriveForward');
122
122
  }
123
123
 
124
124
  if (!htlc.link_fail_event.info.outgoing_amt_msat) {
125
- throw new Error("ExpectedLinkFailEventOutgoingMsatToDeriveForward");
125
+ throw new Error('ExpectedLinkFailEventOutgoingMsatToDeriveForward');
126
126
  }
127
127
 
128
128
  if (htlc.link_fail_event.info.outgoing_timelock === undefined) {
129
- throw new Error("ExpectedForwardEventOutgoingTimelockToDeriveForward");
129
+ throw new Error('ExpectedForwardEventOutgoingTimelockToDeriveForward');
130
130
  }
131
131
  }
132
132
 
133
133
  if (!htlc.outgoing_channel_id) {
134
- throw new Error("ExpectedOutgoingChannelIdToDeriveForward");
134
+ throw new Error('ExpectedOutgoingChannelIdToDeriveForward');
135
135
  }
136
136
 
137
137
  if (!htlc.outgoing_htlc_id) {
138
- throw new Error("ExpectedOutgoingHtlcIdToDeriveForward");
138
+ throw new Error('ExpectedOutgoingHtlcIdToDeriveForward');
139
139
  }
140
140
 
141
141
  if (!!htlc.settle_event && !Buffer.isBuffer(htlc.settle_event.preimage)) {
142
- throw new Error("ExpectedHtlcPreimageInForwardedSettleEvent");
142
+ throw new Error('ExpectedHtlcPreimageInForwardedSettleEvent');
143
143
  }
144
144
 
145
145
  if (!htlc.timestamp_ns) {
146
- throw new Error("ExpectedHtlcTimestampToDeriveForward");
146
+ throw new Error('ExpectedHtlcTimestampToDeriveForward');
147
147
  }
148
148
 
149
149
  const createdAt = new Date(Number(BigInt(htlc.timestamp_ns) / nsPerMs));
150
- const incoming = chanFormat({ number: htlc.incoming_channel_id });
150
+ const incoming = chanFormat({number: htlc.incoming_channel_id});
151
151
  const incomingId = Number(htlc.incoming_htlc_id);
152
152
  const isFailure = !!htlc.forward_fail_event || !!htlc.link_fail_event;
153
153
  const isForward = htlc.event_type === htlcTypes.forward;
154
154
  const isReceive = htlc.event_type === htlcTypes.receive;
155
155
  const isSend = htlc.event_type === htlcTypes.send;
156
- const outgoing = chanFormat({ number: htlc.outgoing_channel_id });
156
+ const outgoing = chanFormat({number: htlc.outgoing_channel_id});
157
157
  const outgoingId = Number(htlc.outgoing_htlc_id);
158
- const settleEvent = htlc.settle_event || { preimage: Buffer.alloc(Number()) };
158
+ const settleEvent = htlc.settle_event || {preimage: Buffer.alloc(Number())};
159
159
 
160
160
  // Exit early when there is no extended info, for failed forwards and settles
161
161
  if (!!htlc.forward_fail_event || !!htlc.settle_event) {
@@ -182,10 +182,10 @@ module.exports = (htlc) => {
182
182
  }
183
183
 
184
184
  if (!htlc.forward_event && !htlc.link_fail_event) {
185
- throw new Error("ExpectedForwardEventOrLinkFailEventInHtlcEvent");
185
+ throw new Error('ExpectedForwardEventOrLinkFailEventInHtlcEvent');
186
186
  }
187
187
 
188
- const { info } = htlc.forward_event || htlc.link_fail_event;
188
+ const {info} = htlc.forward_event || htlc.link_fail_event;
189
189
 
190
190
  const outgoingAmount = BigInt(info.outgoing_amt_msat);
191
191
  const outgoingCltvHeight = Number(info.outgoing_timelock);
@@ -193,13 +193,13 @@ module.exports = (htlc) => {
193
193
  const cltvDelta = Number(info.incoming_timelock) - outgoingCltvHeight;
194
194
  const feeMtok = (BigInt(info.incoming_amt_msat) - outgoingAmount).toString();
195
195
 
196
- const { tokens } = safeTokens({ mtokens: info.outgoing_amt_msat });
196
+ const {tokens} = safeTokens({mtokens: info.outgoing_amt_msat});
197
197
 
198
198
  return {
199
199
  at: createdAt.toISOString(),
200
200
  cltv_delta: !isForward ? undefined : cltvDelta,
201
201
  external_failure: (htlc.link_fail_event || {}).wire_failure,
202
- fee: !isForward ? undefined : safeTokens({ mtokens: feeMtok }).tokens,
202
+ fee: !isForward ? undefined : safeTokens({mtokens: feeMtok}).tokens,
203
203
  fee_mtokens: !isForward ? undefined : feeMtok,
204
204
  in_channel: !!isSend ? undefined : incoming.channel,
205
205
  in_payment: !!isSend ? undefined : incomingId,
@@ -1,12 +1,12 @@
1
- const { chainId } = require("../bolt02");
2
- const { featureFlagDetails } = require("bolt09");
1
+ const {chainId} = require('./../bolt02');
2
+ const {featureFlagDetails} = require('bolt09');
3
3
 
4
- const dateFromEpoch = (epoch) => new Date(epoch * 1e3);
5
- const { isArray } = Array;
6
- const isBoolean = (n) => n === false || n === true;
7
- const isNumber = (n) => !isNaN(n);
8
- const isString = (n) => typeof n === "string";
9
- const { keys } = Object;
4
+ const dateFromEpoch = epoch => new Date(epoch * 1e3);
5
+ const {isArray} = Array;
6
+ const isBoolean = n => n === false || n === true;
7
+ const isNumber = n => !isNaN(n);
8
+ const isString = n => typeof n === 'string';
9
+ const {keys} = Object;
10
10
 
11
11
  /** Interpret info as wallet info
12
12
 
@@ -29,81 +29,81 @@ const { keys } = Object;
29
29
  version: <Node Version String>
30
30
  }
31
31
  */
32
- module.exports = (args) => {
32
+ module.exports = args => {
33
33
  if (!args) {
34
- throw new Error("ExpectedWalletResponse");
34
+ throw new Error('ExpectedWalletResponse');
35
35
  }
36
36
 
37
37
  if (!isString(args.alias)) {
38
- throw new Error("ExpectedWalletAlias");
38
+ throw new Error('ExpectedWalletAlias');
39
39
  }
40
40
 
41
41
  if (!args.best_header_timestamp) {
42
- throw new Error("ExpectedBestHeaderTimestampInInfoResponse");
42
+ throw new Error('ExpectedBestHeaderTimestampInInfoResponse');
43
43
  }
44
44
 
45
45
  if (!isString(args.block_hash)) {
46
- throw new Error("ExpectedCurrentBlockHash");
46
+ throw new Error('ExpectedCurrentBlockHash');
47
47
  }
48
48
 
49
49
  if (!isNumber(args.block_height)) {
50
- throw new Error("ExpectedBlockHeight");
50
+ throw new Error('ExpectedBlockHeight');
51
51
  }
52
52
 
53
53
  if (!isArray(args.chains)) {
54
- throw new Error("ExpectedChainsAssociatedWithWallet");
54
+ throw new Error('ExpectedChainsAssociatedWithWallet');
55
55
  }
56
56
 
57
57
  if (!args.color) {
58
- throw new Error("ExpectedWalletColorInWalletInfoResponse");
58
+ throw new Error('ExpectedWalletColorInWalletInfoResponse');
59
59
  }
60
60
 
61
61
  if (!args.features) {
62
- throw new Error("ExpectedFeaturesMapInWalletInfoResponse");
62
+ throw new Error('ExpectedFeaturesMapInWalletInfoResponse');
63
63
  }
64
64
 
65
65
  if (!args.identity_pubkey) {
66
- throw new Error("ExpectedIdentityPubkey");
66
+ throw new Error('ExpectedIdentityPubkey');
67
67
  }
68
68
 
69
69
  if (!isNumber(args.num_active_channels)) {
70
- throw new Error("ExpectedNumActiveChannels");
70
+ throw new Error('ExpectedNumActiveChannels');
71
71
  }
72
72
 
73
73
  if (!isNumber(args.num_peers)) {
74
- throw new Error("ExpectedNumPeers");
74
+ throw new Error('ExpectedNumPeers');
75
75
  }
76
76
 
77
77
  if (!isNumber(args.num_pending_channels)) {
78
- throw new Error("ExpectedNumPendingChannels");
78
+ throw new Error('ExpectedNumPendingChannels');
79
79
  }
80
80
 
81
81
  if (!isBoolean(args.synced_to_chain)) {
82
- throw new Error("ExpectedSyncedToChainStatus");
82
+ throw new Error('ExpectedSyncedToChainStatus');
83
83
  }
84
84
 
85
85
  if (!isArray(args.uris)) {
86
- throw new Error("ExpectedArrayOfUrisInWalletInfoResponse");
86
+ throw new Error('ExpectedArrayOfUrisInWalletInfoResponse');
87
87
  }
88
88
 
89
89
  if (!isString(args.version)) {
90
- throw new Error("ExpectedWalletLndVersion");
90
+ throw new Error('ExpectedWalletLndVersion');
91
91
  }
92
92
 
93
93
  return {
94
94
  chains: args.chains
95
- .map(({ chain, network }) => chainId({ chain, network }).chain)
96
- .filter((n) => !!n),
95
+ .map(({chain, network}) => chainId({chain, network}).chain)
96
+ .filter(n => !!n),
97
97
  color: args.color,
98
98
  active_channels_count: args.num_active_channels,
99
99
  alias: args.alias,
100
100
  current_block_hash: args.block_hash,
101
101
  current_block_height: args.block_height,
102
- features: keys(args.features).map((bit) => ({
102
+ features: keys(args.features).map(bit => ({
103
103
  bit: Number(bit),
104
104
  is_known: args.features[bit].is_known,
105
105
  is_required: args.features[bit].is_required,
106
- type: featureFlagDetails({ bit: Number(bit) }).type,
106
+ type: featureFlagDetails({bit: Number(bit)}).type,
107
107
  })),
108
108
  is_synced_to_chain: args.synced_to_chain,
109
109
  is_synced_to_graph: !args.synced_to_graph ? undefined : true,
@@ -1,16 +1,16 @@
1
- const { featureFlagDetails } = require("bolt09");
1
+ const {featureFlagDetails} = require('bolt09');
2
2
 
3
- const routeFromRouteHint = require("./route_from_route_hint");
4
- const { safeTokens } = require("../bolt00");
3
+ const routeFromRouteHint = require('./route_from_route_hint');
4
+ const {safeTokens} = require('./../bolt00');
5
5
 
6
- const bufToHex = (n) => (!n.length ? undefined : n.toString("hex"));
6
+ const bufToHex = n => !n.length ? undefined : n.toString('hex');
7
7
  const defaultExpireMs = 1000 * 60 * 60;
8
- const { isArray } = Array;
9
- const { isBuffer } = Buffer;
10
- const isHash = (n) => !!n && /^[0-9A-F]{64}$/i.test(n);
11
- const { keys } = Object;
8
+ const {isArray} = Array;
9
+ const {isBuffer} = Buffer;
10
+ const isHash = n => !!n && /^[0-9A-F]{64}$/i.test(n);
11
+ const {keys} = Object;
12
12
  const msPerSec = 1e3;
13
- const { now } = Date;
13
+ const {now} = Date;
14
14
 
15
15
  /** Map payment request details to request details
16
16
 
@@ -76,40 +76,38 @@ const { now } = Date;
76
76
  tokens: <Requested Tokens Rounded Down Number>
77
77
  }
78
78
  */
79
- module.exports = (args) => {
79
+ module.exports = args => {
80
80
  if (!args.destination) {
81
- throw new Error("ExpectedDestinationInDecodedPaymentRequest");
81
+ throw new Error('ExpectedDestinationInDecodedPaymentRequest');
82
82
  }
83
83
 
84
84
  if (!args.expiry) {
85
- throw new Error("ExpectedPaymentReqExpirationInDecodedPayReq");
85
+ throw new Error('ExpectedPaymentReqExpirationInDecodedPayReq');
86
86
  }
87
87
 
88
88
  if (!isBuffer(args.payment_addr)) {
89
- throw new Error("ExpectedPaymentAddrBufferInDecodePayReqResponse");
89
+ throw new Error('ExpectedPaymentAddrBufferInDecodePayReqResponse');
90
90
  }
91
91
 
92
92
  if (!isHash(args.payment_hash)) {
93
- throw new Error("ExpectedPaymentHashFromDecodePayReqResponse");
93
+ throw new Error('ExpectedPaymentHashFromDecodePayReqResponse');
94
94
  }
95
95
 
96
96
  if (!args.num_satoshis) {
97
- throw new Error("ExpectedNumSatoshis");
97
+ throw new Error('ExpectedNumSatoshis');
98
98
  }
99
99
 
100
100
  if (!isArray(args.route_hints)) {
101
- throw new Error("ExpectedRouteHintsArray");
101
+ throw new Error('ExpectedRouteHintsArray');
102
102
  }
103
103
 
104
- const routes = args.route_hints.forEach((route) =>
105
- routeFromRouteHint({
106
- destination: args.destination,
107
- hop_hints: route.hop_hints,
108
- })
109
- );
104
+ const routes = args.route_hints.forEach(route => routeFromRouteHint({
105
+ destination: args.destination,
106
+ hop_hints: route.hop_hints,
107
+ }));
110
108
 
111
109
  if (!args.timestamp) {
112
- throw new Error("ExpectedPaymentRequestTimestamp");
110
+ throw new Error('ExpectedPaymentRequestTimestamp');
113
111
  }
114
112
 
115
113
  const createdAtMs = Number(args.timestamp) * msPerSec;
@@ -125,23 +123,21 @@ module.exports = (args) => {
125
123
  description_hash: args.description_hash || undefined,
126
124
  destination: args.destination,
127
125
  expires_at: new Date(expiryDateMs).toISOString(),
128
- features: keys(args.features).map((bit) => ({
126
+ features: keys(args.features).map(bit => ({
129
127
  bit: Number(bit),
130
128
  is_known: args.features[bit].is_known,
131
129
  is_required: args.features[bit].is_required,
132
- type: featureFlagDetails({ bit }).type,
130
+ type: featureFlagDetails({bit}).type,
133
131
  })),
134
132
  id: args.payment_hash,
135
133
  is_expired: now() > expiryDateMs,
136
134
  mtokens: args.num_msat,
137
135
  payment: bufToHex(args.payment_addr) || undefined,
138
- routes: args.route_hints.map((route) =>
139
- routeFromRouteHint({
140
- destination: args.destination,
141
- hop_hints: route.hop_hints,
142
- })
143
- ),
144
- safe_tokens: safeTokens({ mtokens: args.num_msat }).safe,
136
+ routes: args.route_hints.map(route => routeFromRouteHint({
137
+ destination: args.destination,
138
+ hop_hints: route.hop_hints,
139
+ })),
140
+ safe_tokens: safeTokens({mtokens: args.num_msat}).safe,
145
141
  tokens: Number(args.num_satoshis),
146
142
  };
147
143
  };