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
package/package.json CHANGED
@@ -1,32 +1,33 @@
1
1
  {
2
2
  "author": {
3
- "name": "Jim"
3
+ "name": "Alex Bosworth",
4
+ "url": "https://twitter.com/alexbosworth"
4
5
  },
5
6
  "bugs": {
6
7
  "url": "https://github.com/alexbosworth/lightning/issues"
7
8
  },
8
9
  "dependencies": {
9
- "@grpc/grpc-js": "1.12.2",
10
- "@grpc/proto-loader": "0.7.13",
11
- "@types/node": "22.7.5",
12
- "@types/request": "2.48.12",
13
- "@types/ws": "8.5.12",
10
+ "@grpc/grpc-js": "1.14.1",
11
+ "@grpc/proto-loader": "0.8.0",
12
+ "@types/node": "24.10.1",
13
+ "@types/request": "2.48.13",
14
+ "@types/ws": "8.18.1",
14
15
  "async": "3.2.6",
15
16
  "asyncjs-util": "1.2.12",
16
- "bitcoinjs-lib": "6.1.6",
17
- "bn.js": "5.2.1",
17
+ "bitcoinjs-lib": "6.1.7",
18
+ "bn.js": "5.2.2",
18
19
  "bolt07": "1.9.4",
19
- "bolt09": "2.1.0",
20
- "ecpair": "2.1.0",
21
- "invoices": "3.0.0",
22
- "psbt": "3.0.0",
23
- "tiny-secp256k1": "2.2.3",
24
- "type-fest": "4.26.1"
20
+ "bolt09": "2.2.0",
21
+ "ecpair": "3.0.0",
22
+ "invoices": "4.0.0",
23
+ "psbt": "4.0.0",
24
+ "tiny-secp256k1": "2.2.4",
25
+ "type-fest": "5.2.0"
25
26
  },
26
27
  "description": "Lightning Network client library",
27
28
  "devDependencies": {
28
- "tsd": "0.31.2",
29
- "typescript": "5.6.3"
29
+ "tsd": "0.33.0",
30
+ "typescript": "5.9.3"
30
31
  },
31
32
  "engines": {
32
33
  "node": ">=18"
@@ -34,14 +35,17 @@
34
35
  "keywords": [
35
36
  "grpc",
36
37
  "lightning-network",
37
- "lnd",
38
- "taproot-assets"
38
+ "lnd"
39
39
  ],
40
40
  "license": "MIT",
41
41
  "main": "index.js",
42
42
  "name": "astra-lightning",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/alexbosworth/lightning.git"
46
+ },
43
47
  "scripts": {
44
- "test": "npx nyc@17.0.0 node --experimental-test-coverage --test && npm run test:types",
48
+ "test": "npx nyc@17.1.0 node --experimental-test-coverage --test && npm run test:types",
45
49
  "test:types": "tsd",
46
50
  "unit-tests": "node --test && npm run test:types"
47
51
  },
@@ -49,5 +53,5 @@
49
53
  "directory": "test/typescript"
50
54
  },
51
55
  "types": "index.d.ts",
52
- "version": "1.1.2"
56
+ "version": "1.1.4"
53
57
  }
@@ -0,0 +1,82 @@
1
+ const {rejects, deepStrictEqual} = require('node:assert').strict;
2
+ const test = require('node:test');
3
+ const {getRoutingFeeEstimate} = require('../../../');
4
+
5
+ const makeLnd = ({err, res}) => {
6
+ const r = {
7
+ routing_fee_msat: '1',
8
+ time_lock_delay: '1',
9
+ failure_reason: 'FAILURE_REASON_NONE',
10
+ };
11
+
12
+ return {
13
+ router: {
14
+ estimateRouteFee: ({}, cbk) => cbk(err, res !== undefined ? res : r),
15
+ },
16
+ };
17
+ };
18
+
19
+ const makeArgs = override => {
20
+ const args = {lnd: makeLnd({}), request: 'request'};
21
+
22
+ Object.keys(override || {}).forEach(key => args[key] = override[key]);
23
+
24
+ return args;
25
+ };
26
+
27
+ const tests = [
28
+ {
29
+ args: makeArgs({lnd: undefined}),
30
+ description: 'LND is required',
31
+ error: [400, 'ExpectedAuthenticatedLndToGetRoutingFeeEstimate'],
32
+ },
33
+ {
34
+ args: makeArgs({request: undefined}),
35
+ description: 'Request is required',
36
+ error: [400, 'ExpectedPaymentRequestToGetRoutingFeeEstimate'],
37
+ },
38
+ {
39
+ args: makeArgs({}),
40
+ description: 'A route fee estimate is returned',
41
+ expected: {fee_mtokens: '1', timeout: 1},
42
+ },
43
+ {
44
+ args: makeArgs({lnd: makeLnd({err: 'err'})}),
45
+ description: 'An error is not expected',
46
+ error: [503, 'UnexpectedGetRoutingFeeEstimateError', {err: 'err'}],
47
+ },
48
+ {
49
+ args: makeArgs({lnd: makeLnd({res: null})}),
50
+ description: 'A result is expected',
51
+ error: [503, 'ExpectedGetRoutingFeeEstimateResponse'],
52
+ },
53
+ {
54
+ args: makeArgs({lnd: makeLnd({res: {}})}),
55
+ description: 'A result fee is expected',
56
+ error: [503, 'ExpectedFeeInGetRoutingFeeEstimateResponse'],
57
+ },
58
+ {
59
+ args: makeArgs({lnd: makeLnd({res: {routing_fee_msat: '1'}})}),
60
+ description: 'A result timeout is expected',
61
+ error: [503, 'ExpectedTimeoutInGetRouteFeeEstimateResponse'],
62
+ },
63
+ {
64
+ args: makeArgs({
65
+ lnd: makeLnd({res: {routing_fee_msat: '1', time_lock_delay: '1'}}),
66
+ }),
67
+ description: 'A result non failure code is expected',
68
+ error: [404, 'RouteToDestinationNotFound', {failure: undefined}],
69
+ },
70
+ ];
71
+
72
+ tests.forEach(({args, description, error, expected}) => {
73
+ return test(description, async () => {
74
+ if (!!error) {
75
+ await rejects(getRoutingFeeEstimate(args), error, 'Got expected error');
76
+ } else {
77
+ deepStrictEqual(await getRoutingFeeEstimate(args), expected, 'Got res');
78
+ }
79
+
80
+ return;
81
+ });
82
+ });
@@ -197,6 +197,11 @@ const tests = [
197
197
  description: 'A channel is closed with a tx fee',
198
198
  expected: {transaction_id: '04030201', transaction_vout: 0},
199
199
  },
200
+ {
201
+ args: makeArgs({is_graceful_close: true}),
202
+ description: 'A channel is closed with a graceful exit',
203
+ expected: {transaction_id: '04030201', transaction_vout: 0},
204
+ },
200
205
  ];
201
206
 
202
207
  tests.forEach(({args, description, error, expected}) => {
@@ -135,7 +135,11 @@ const tests = [
135
135
  args: {
136
136
  channels: [
137
137
  {capacity: 1, partner_public_key: nodeKey1},
138
- {capacity: 2, partner_public_key: nodeKey2},
138
+ {
139
+ capacity: 2,
140
+ is_allowing_minimal_reserve: true,
141
+ partner_public_key: nodeKey2,
142
+ },
139
143
  ],
140
144
  lnd: {
141
145
  default: {
@@ -44,6 +44,19 @@ const tests = [
44
44
  description: 'A tx output index is required',
45
45
  error: [400, 'ExpectedTransactionOutputIndexToRequestFeeBump'],
46
46
  },
47
+ {
48
+ args: makeArgs({
49
+ lnd: {
50
+ wallet: {
51
+ bumpFee: ({}, cbk) => cbk({
52
+ details: 'invalid output index 999 for transaction with 3 outputs',
53
+ }),
54
+ },
55
+ },
56
+ }),
57
+ description: 'Unknown UTXO error is passed back',
58
+ error: [404, 'SpecifiedOutpointNotFoundInWalletUtxos'],
59
+ },
47
60
  {
48
61
  args: makeArgs({
49
62
  lnd: {
@@ -57,7 +57,8 @@ const makePendingForceClosingChannel = overrides => {
57
57
  const makePendingOpenChannel = overrides => {
58
58
  const res = {
59
59
  channel: makeChannel({}),
60
- confirmation_height: 1,
60
+ confirmation_height: 0,
61
+ confirmations_until_active: 0,
61
62
  commit_fee: '1',
62
63
  commit_weight: '1',
63
64
  fee_per_kw: '1',
@@ -114,6 +115,8 @@ const makeExpectedPending = overrides => {
114
115
  is_timelocked: true,
115
116
  local_balance: 1,
116
117
  local_reserve: 1,
118
+ opening_funding_height: undefined,
119
+ opening_waiting_blocks: undefined,
117
120
  partner_public_key: Buffer.alloc(33).toString('hex'),
118
121
  pending_balance: 1,
119
122
  pending_payments: [{
@@ -438,6 +441,36 @@ const tests = [
438
441
  ],
439
442
  }),
440
443
  },
444
+ {
445
+ args: makeArgs({
446
+ pending_force_closing_channels: [],
447
+ pending_open_channels: [
448
+ makePendingOpenChannel({
449
+ confirmation_height: 1,
450
+ confirmations_until_active: 3,
451
+ }),
452
+ ],
453
+ waiting_close_channels: [],
454
+ }),
455
+ description: 'Pending open channels are mapped',
456
+ expected: makeExpected({
457
+ pending_channels: [
458
+ makeExpectedPending({
459
+ close_transaction_id: undefined,
460
+ is_closing: false,
461
+ is_opening: true,
462
+ is_timelocked: false,
463
+ opening_funding_height: 1,
464
+ opening_waiting_blocks: 3,
465
+ pending_balance: undefined,
466
+ pending_payments: undefined,
467
+ recovered_tokens: undefined,
468
+ timelock_blocks: undefined,
469
+ timelock_expiration: undefined,
470
+ }),
471
+ ],
472
+ }),
473
+ },
441
474
  ];
442
475
 
443
476
  tests.forEach(({args, description, error, expected}) => {
package/test.js CHANGED
@@ -3,7 +3,8 @@ const {
3
3
  getChannels,
4
4
  payTaprootInvoice,
5
5
  decodePaymentRequest,
6
- decodeAssetPayReq
6
+ decodeAssetPayReq,
7
+ createInvoice,
7
8
  } = require("./index.js");
8
9
  const fs = require("fs");
9
10
  // const dayjs = require("dayjs");
@@ -21,13 +22,17 @@ const LND_SOCKET = "54.92.19.81:10109"; */
21
22
  // const invoice =
22
23
  // "lnbcrt10u1p5q3r0zpp50v0asn72aav354e27cals6l7j76sln0pzzvxktgur2wmlkf44mfqdy0f3hxv6fmv9ehxet5f9zr5dtzvscnywtyx56rjcnyxcuxxctyxc6xvvnrxfjxyvf5xymnxvnpx5erxef5x56rvcf58ymrvvnrxvunqefcvvcngv3ex3skzdm98q6rkctdda6kuap6xycrqwscqzzsxqrrssrzjqg3zz9zaagxqxan9fqzr6k7yvf900uf26m0z7c2g0rf55raupqclpakyc0a4gzq2v5qqqqlgqqqqqqgq2qsp58qmfwjwdrvr9dzjs2esms3cpvvgff3g4hsunszne3v7wszwcq62s9qxpqysgqscq2e3sqa0pfe5yzjdnp8q4temjazdw6y77c49tpvnhz0d4kjux92tw3gy9vvrh68qqef594frdp2uqhvwjy0sd7ezdcanvlln2rusgpg5w96t";
23
24
 
24
- const LND_SOCKET = "127.0.0.1:8445"
25
- const LND_MACAROON="0201036c6e6402f801030a10ce3f5e2dcbdd316f7d747797c37d2e6f1201301a160a0761646472657373120472656164120577726974651a130a04696e666f120472656164120577726974651a170a08696e766f69636573120472656164120577726974651a210a086d616361726f6f6e120867656e6572617465120472656164120577726974651a160a076d657373616765120472656164120577726974651a170a086f6666636861696e120472656164120577726974651a160a076f6e636861696e120472656164120577726974651a140a057065657273120472656164120577726974651a180a067369676e6572120867656e6572617465120472656164000006201405ad3da48e9500d8df7af8a0f69d788a1245796fd7fa5005205d81fbb1e0bf"
26
- const LND_TPROOT_ASSET_MACAROON="0201047461706402d001030a10d63f5e2dcbdd316f7d747797c37d2e6f1201301a180a09616464726573736573120472656164120577726974651a150a06617373657473120472656164120577726974651a170a086368616e6e656c73120472656164120577726974651a150a066461656d6f6e120472656164120577726974651a130a046d696e74120472656164120577726974651a150a0670726f6f6673120472656164120577726974651a120a03726671120472656164120577726974651a170a08756e69766572736512047265616412057772697465000006206522977ce9ea4dcbd9bc740f98c7949b5c5305e7f0bf77cb1d138855a2ca1961"
27
- const base64Cert="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNEVENDQWJLZ0F3SUJBZ0lSQU16eVFvTnVBZ01HdUFDTGxtNlNqVWt3Q2dZSUtvWkl6ajBFQXdJd01ERWcKTUI0R0ExVUVDaE1YYkdsMFpDQmhkWFJ2WjJWdVpYSmhkR1ZrSUdObGNuUXhEREFLQmdOVkJBTVRBMkp2WWpBZQpGdzB5TlRBeU1UWXdPVEU0TXpWYUZ3MHlOakEwTVRNd09URTRNelZhTURBeElEQWVCZ05WQkFvVEYyeHBkR1FnCllYVjBiMmRsYm1WeVlYUmxaQ0JqWlhKME1Rd3dDZ1lEVlFRREV3TmliMkl3V1RBVEJnY3Foa2pPUFFJQkJnZ3EKaGtqT1BRTUJCd05DQUFUR05qTGhicGY5eExQbGlqelZLM3BncU5POWZGMVpPaGtOanVrbTdTcVdJa0dNRmF5OAp4SERMaUhmQi85enAwZnJXQkdwc1VGazhVUW5HbzZXaFZIL3ZvNEdzTUlHcE1BNEdBMVVkRHdFQi93UUVBd0lDCnBEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVcKQkJUQ3lLdmc4Vk5sMlZOVFoybnpEbE9ydzZTQXdEQlNCZ05WSFJFRVN6QkpnZ05pYjJLQ0NXeHZZMkZzYUc5egpkSUlFZFc1cGVJSUtkVzVwZUhCaFkydGxkSUlIWW5WbVkyOXVib2NFZndBQUFZY1FBQUFBQUFBQUFBQUFBQUFBCkFBQUFBWWNFckJNQUJEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1aWxIVGgydUVGYXA1MGpaMzJPMWtQWTcKd3R6Qkc1T3B4a1pBczBYZHVLTUNJUURaSWlPaXRnZGtEQlFVQ1NyV1JNNWlDRnNObnR4Y3JxQTV2VkVER0E4awpadz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
28
- const assetId = "013eb3bad46547e67e78f67fa68349828303dda9689d4cebe6697756def223fb"
29
- const invoice = "lnbcrt100u1p5q39x9pp5ujuvnrn342l798x6tpn6qahe8x798m7ewx97ymefshnstvwyatysdqqcqzzsxqrrssrzjq2t93du9nlmhyt3u0juc2a76tlcy602hzdcyay969dhcnlxxu6rutah4ntgudu02k5qqqqlgqqqqqqgq2qsp5mtqkapc04gksgmdjt42m4swkux48vjmqlu6jy6edz8fvec8kevrq9qxpqysgq02asgefvgvqq32x7qju4g6p66kdxgz0yxcxzedysmurfp62fvmkzv3tutd8lz354qy08h8k8aaqfp3khgq8vp5zpjn8z9uc69cvluhsqysdypv"
30
-
25
+ const LND_SOCKET = "127.0.0.1:8444";
26
+ const LND_MACAROON =
27
+ "0201036c6e6402f801030a10cd485d60d65e48a8f253aeca1f20d5e51201301a160a0761646472657373120472656164120577726974651a130a04696e666f120472656164120577726974651a170a08696e766f69636573120472656164120577726974651a210a086d616361726f6f6e120867656e6572617465120472656164120577726974651a160a076d657373616765120472656164120577726974651a170a086f6666636861696e120472656164120577726974651a160a076f6e636861696e120472656164120577726974651a140a057065657273120472656164120577726974651a180a067369676e6572120867656e657261746512047265616400000620d0b51747c52a6444a78c9e08947671f20362dfffc89404c10afb68d09e72a6e2";
28
+ const LND_TPROOT_ASSET_MACAROON =
29
+ "0201047461706402d001030a10d5485d60d65e48a8f253aeca1f20d5e51201301a180a09616464726573736573120472656164120577726974651a150a06617373657473120472656164120577726974651a170a086368616e6e656c73120472656164120577726974651a150a066461656d6f6e120472656164120577726974651a130a046d696e74120472656164120577726974651a150a0670726f6f6673120472656164120577726974651a120a03726671120472656164120577726974651a170a08756e6976657273651204726561641205777269746500000620501385af6ee7b06d073829f55af1a69d6a3ecc4cfb59129c88c379a429f44440";
30
+ const base64Cert =
31
+ "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNERENDQWJLZ0F3SUJBZ0lSQUo3Rys0QzdYWldMN3hzMzk3bjMyUGd3Q2dZSUtvWkl6ajBFQXdJd01ERWcKTUI0R0ExVUVDaE1YYkdsMFpDQmhkWFJ2WjJWdVpYSmhkR1ZrSUdObGNuUXhEREFLQmdOVkJBTVRBMkp2WWpBZQpGdzB5TlRFeU1ESXdNakEzTURoYUZ3MHlOekF4TWpjd01qQTNNRGhhTURBeElEQWVCZ05WQkFvVEYyeHBkR1FnCllYVjBiMmRsYm1WeVlYUmxaQ0JqWlhKME1Rd3dDZ1lEVlFRREV3TmliMkl3V1RBVEJnY3Foa2pPUFFJQkJnZ3EKaGtqT1BRTUJCd05DQUFTU3BKdmh6M1lXVG5jTFVNR3Rvb1poUHNTVmlwR09RTWszbHkyMGRqUUk2OXd1M2gyRAphdG5TVGRSOTBCT2FhWUlrZ1lXRWpWV3Era1VDSWxXdjliMmJvNEdzTUlHcE1BNEdBMVVkRHdFQi93UUVBd0lDCnBEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVcKQkJTaE9PZDArRmxSL0xzZ0t0MWROQktKQXBwSkREQlNCZ05WSFJFRVN6QkpnZ05pYjJLQ0NXeHZZMkZzYUc5egpkSUlFZFc1cGVJSUtkVzVwZUhCaFkydGxkSUlIWW5WbVkyOXVib2NFZndBQUFZY1FBQUFBQUFBQUFBQUFBQUFBCkFBQUFBWWNFckJNQUF6QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUExRm8xakg3Z0IzY2pBblNSaUNKbDF3a1kKZGYxYnZVd1JSSzl0V1NIclFlc0NJR2tKQWkxWk5hNm9DeXFpemNObXZORmpUWXJHY1BmRUxxTCtiSjAyZUIvbAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==";
32
+ const assetId =
33
+ "b787a089e60451305c090b7b3604b7a107e13d0a955c8ed1043d874a448aa465";
34
+ const invoice =
35
+ "";
31
36
 
32
37
  const { lnd } = authenticatedLndGrpc({
33
38
  cert: base64Cert,
@@ -40,7 +45,6 @@ const { lnd: tpr } = authenticatedLndGrpc({
40
45
  socket: LND_SOCKET,
41
46
  });
42
47
 
43
-
44
48
  const payWithTpr = async (invoice, assetId) => {
45
49
  // const provider = new ethers.JsonRpcProvider('https://eth-sepolia.g.alchemy.com/v2/ClvXGqSMvZ6nEb_G5ekJGsZwNdsp72oz');
46
50
  // const lspSigner = new ethers.Wallet('dd5862c69e641fb052092d34724ce62764186abf87474656f2b2149684dca754', provider);
@@ -159,8 +163,6 @@ const payWithTpr = async (invoice, assetId) => {
159
163
  // const hash = sha256.hex(Buffer.from("9060effcf05155835f7baf0089a2fc086eb6d9f4dbb680c1744261b562a51519", "hex"));
160
164
  // console.log("🚀 ~ hash:", hash)
161
165
 
162
-
163
-
164
166
  //getPayemntById();
165
167
  //getGasFee();
166
168
 
@@ -173,22 +175,192 @@ const payWithTpr = async (invoice, assetId) => {
173
175
  // }
174
176
  // queryBalance();
175
177
 
176
- const test = async () => {
177
- /* const {methods} = await getMethods({ lnd }).catch((error) => console.log(error.message));
178
- console.log("🚀 ~ test ~ methods:",methods, methods.find(item=>item.endpoint.includes('DecodeAssetPayReq'))); */
178
+ const addTapdInvoice = async () => {
179
+ const ret = await createInvoice({
180
+ lnd,
181
+ tpr,
182
+ mtokens: 1000,
183
+ asset_id: assetId,
184
+ }).catch((e) => {
185
+ console.error("Failed to create invoice:", e.message);
186
+ });
187
+ console.log("🚀 ~ addTapdInvoice ~ ret:", ret);
188
+ };
179
189
 
180
- const ret = await decodeAssetPayReq({
190
+ const decodeTapdInvoice = async()=>{
191
+ const invoice ='lnbcrt1200u1p5ja2pgpp58ahjcpwgt9zcvda6cchnrl5wyr4r9vjg487qrxvlh7vd88rxnhssdqqcqzzsxqr23srzjqw7ng5fg7qnyr49nm9qtt6nvnwxfefpygrctxdmfx9uf8l0awcaura2jdhvguyylxuqqqqlgqqqqqqgq2qsp5g54dp5lug8dqne4pglj0j0tglv3rtawk76rlqmqcppavfy8dzr4q9qxpqysgqt9jde9vcwpc27ayzpv7q3j63nej52xfjeuhew65y22zvd0vjans9hz206sxf67n8zz6mr803d7skpcz762vqaj6mrf0uwlxtdtv6u9qpahal9g'
192
+ const ret = await decodeAssetPayReq({
181
193
  asset_id: assetId,
182
194
  pay_req_string: invoice,
183
195
  tpr: tpr,
184
196
  }).catch((error) => console.log(error.message));
185
197
  console.log("🚀 ~ ret:", ret);
186
- /* ret {
187
- asset_amount: '100',
188
- decimal_display: { decimal_display: 2 },
189
- }
190
- */
191
- /* const ret = await getChannels({ lnd }).catch((error) => console.log(error));
192
- console.log("🚀 ~ test ~ ret:", ret); */
198
+ }
199
+
200
+ const listChannels = async()=>{
201
+ const ret = await getChannels({ lnd }).catch((error) => console.log(error));
202
+ console.log("🚀 ~ test ~ ret:", ret);
203
+ }
204
+
205
+ const getBestLndChannel = async (asset) => {
206
+ const assetId = asset.assetId;
207
+ const isBTC = asset.isBTC;
208
+ // const lnd = await getLnd();
209
+ const ret = await getChannels({ lnd }).catch(() => {
210
+ return {channels: []};
211
+ });
212
+
213
+ console.log("🚀 ~ getBestLndChannel ~ ret:", ret);
214
+
215
+ let filterChannels = [];
216
+ let sortTprChannels = [];
217
+ let capacity = BigInt(0);
218
+ let local_balance = BigInt(0);
219
+ let remote_balance = BigInt(0);
220
+
221
+ if (isBTC) {
222
+ filterChannels = ret.channels.filter(channel =>
223
+ channel.type === "anchor" || channel.commitment_type === "ANCHORS"
224
+ );
225
+
226
+ sortTprChannels = filterChannels.sort((a, b) => {
227
+ return b.local_balance - a.local_balance;
228
+ });
229
+ } else {
230
+ filterChannels = ret.channels.filter(channel => {
231
+ if (!channel.commitment_type.includes("SIMPLE_TAPROOT")) {
232
+ return false;
233
+ }
234
+
235
+ if (!channel.is_active) {
236
+ return false;
237
+ }
238
+
239
+ if (!channel.custom_channel_data) {
240
+ return false;
241
+ }
242
+
243
+ let data;
244
+
245
+ try {
246
+ data = JSON.parse(channel.custom_channel_data);
247
+ } catch (_) {
248
+ return false;
249
+ }
250
+
251
+ const hasLocal = (data.local_assets || []).some(a => a.asset_id === assetId);
252
+ const hasFunding = (data.funding_assets || []).some(a =>
253
+ a.asset_genesis && a.asset_genesis.asset_id === assetId
254
+ );
255
+ const hasRemote = (data.remote_assets || []).some(a => a.asset_id === assetId);
256
+
257
+ return hasLocal || hasFunding || hasRemote;
258
+ });
259
+
260
+
261
+ sortTprChannels = filterChannels.sort((a, b) => {
262
+ let aData;
263
+ let bData;
264
+
265
+ try {
266
+ aData = JSON.parse(a.custom_channel_data);
267
+ } catch (_) {
268
+ aData = {};
269
+ }
270
+
271
+ try {
272
+ bData = JSON.parse(b.custom_channel_data);
273
+ } catch (_) {
274
+ bData = {};
275
+ }
276
+
277
+ const aLocal = (aData.local_assets || []).find(x => x.asset_id === assetId);
278
+ const bLocal = (bData.local_assets || []).find(x => x.asset_id === assetId);
279
+
280
+ const aAmt = aLocal ? aLocal.amount || 0 : 0;
281
+ const bAmt = bLocal ? bLocal.amount || 0 : 0;
282
+
283
+ return bAmt - aAmt;
284
+ });
285
+ }
286
+
287
+ if (!filterChannels.length) {
288
+ throw new Error("no available channel");
289
+ }
290
+
291
+ const maxLocalBalanceChannel = sortTprChannels[0];
292
+
293
+ const effectiveSatsBalance =
294
+ BigInt(maxLocalBalanceChannel.local_balance) -
295
+ BigInt(maxLocalBalanceChannel.local_reserve);
296
+
297
+ const remoteSatsBalance =
298
+ BigInt(maxLocalBalanceChannel.remote_balance) -
299
+ BigInt(maxLocalBalanceChannel.remote_reserve);
300
+
301
+ if (isBTC) {
302
+ capacity = BigInt(maxLocalBalanceChannel.capacity);
303
+ local_balance = BigInt(maxLocalBalanceChannel.local_balance);
304
+ remote_balance = BigInt(maxLocalBalanceChannel.remote_balance);
305
+ } else {
306
+ const data = maxLocalBalanceChannel.custom_channel_data
307
+ ? JSON.parse(maxLocalBalanceChannel.custom_channel_data)
308
+ : {};
309
+
310
+ const fundingAsset = (data.funding_assets || []).find(a =>
311
+ a.asset_genesis && a.asset_genesis.asset_id === assetId
312
+ );
313
+
314
+ const localAsset = (data.local_assets || []).find(a => a.asset_id === assetId);
315
+ const remoteAsset = (data.remote_assets || []).find(a => a.asset_id === assetId);
316
+
317
+ const capStr = (data && data.capacity) || (fundingAsset && fundingAsset.amount) || '0';
318
+ const localStr = (localAsset && localAsset.amount) || '0';
319
+ const remoteStr = (remoteAsset && remoteAsset.amount) || '0';
320
+
321
+ capacity = BigInt(capStr);
322
+ local_balance = BigInt(localStr);
323
+ remote_balance = BigInt(remoteStr);
324
+ }
325
+
326
+ const retChannelInfo = {
327
+ maxLocalBalanceChannel,
328
+ effectiveSatsBalance: effectiveSatsBalance.toString(),
329
+ remoteSatsBalance: remoteSatsBalance.toString(),
330
+ satsCapacity: maxLocalBalanceChannel.capacity.toString(),
331
+ localAssetCapacity: capacity.toString(),
332
+ localAssetbalance: local_balance.toString(),
333
+ remoteAssetbalance: remote_balance.toString(),
334
+ };
335
+
336
+ return retChannelInfo;
337
+ };
338
+
339
+ const test = async () => {
340
+ await addTapdInvoice();
341
+ //await decodeTapdInvoice();
342
+ //await listChannels();
343
+ // const ret = await getBestLndChannel({
344
+ // assetId: assetId,
345
+ // isBTC: false,
346
+ // });
347
+ // const channel = ret.maxLocalBalanceChannel;
348
+ // const invoice = "lnbcrt1m1p5jlhxqpp5ggyqrhhd3z4vv9gc9ed5rwav2pkcp2a3hzs2jgqrcu2d9rvsuzdsdqqcqzzsxqrrssrzjqtf52q9rcl98spzl347ldn5j3akdyxpkgva2xf8wdkf6va4s752cpa68fzwydgre25qqqqlgqqqqqqgq2qsp53l74ektwr30wf2ttvgftrgg3v0c8vctzy7xtfjh3vh53wjhl2a7s9qxpqysgqlfta3xezgxptgxjg76wr77k8qj282q4e5mctdtzdew3euheru9skpyvmkh2rxjf95suy58ngjtphq6ca2zl7k7zrpf2k4p0dj3c099sqsas48e"
349
+ // const peerPubkey = channel.partner_public_key;
350
+ // const retPay = await payTaprootInvoice({
351
+ // tpr: tpr,
352
+ // asset_id: assetId,
353
+ // asset_amount: 10,
354
+ // peer_pubkey: peerPubkey,
355
+ // payment_request: {
356
+ // payment_request: invoice,
357
+ // fee_limit_sat: 100,
358
+ // allow_self_payment: true,
359
+ // timeout_seconds: 60 * 5,
360
+ // outgoing_chan_id: channel.channel_id,
361
+ // },
362
+ // });
363
+ // console.log("🚀 ~ test ~ retPay:", retPay)
364
+
193
365
  };
194
366
  test();