tapass 0.1.0 → 0.2.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 (502) hide show
  1. package/README.md +2792 -3
  2. package/dist/index.d.ts +21 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/tapd_methods/address/create_asset_address.d.ts +2 -26
  5. package/dist/tapd_methods/address/create_asset_address.d.ts.map +1 -1
  6. package/dist/tapd_methods/address/create_asset_address.js +5 -37
  7. package/dist/tapd_methods/address/create_asset_address.js.map +1 -1
  8. package/dist/tapd_methods/address/decode_asset_address.d.ts +38 -0
  9. package/dist/tapd_methods/address/decode_asset_address.d.ts.map +1 -0
  10. package/dist/tapd_methods/address/decode_asset_address.js +81 -0
  11. package/dist/tapd_methods/address/decode_asset_address.js.map +1 -0
  12. package/dist/tapd_methods/address/get_asset_addresses.d.ts +54 -0
  13. package/dist/tapd_methods/address/get_asset_addresses.d.ts.map +1 -0
  14. package/dist/tapd_methods/address/get_asset_addresses.js +153 -0
  15. package/dist/tapd_methods/address/get_asset_addresses.js.map +1 -0
  16. package/dist/tapd_methods/address/get_asset_receives.d.ts +72 -0
  17. package/dist/tapd_methods/address/get_asset_receives.d.ts.map +1 -0
  18. package/dist/tapd_methods/address/get_asset_receives.js +191 -0
  19. package/dist/tapd_methods/address/get_asset_receives.js.map +1 -0
  20. package/dist/tapd_methods/address/index.d.ts +11 -0
  21. package/dist/tapd_methods/address/index.d.ts.map +1 -1
  22. package/dist/tapd_methods/address/index.js +4 -0
  23. package/dist/tapd_methods/address/index.js.map +1 -1
  24. package/dist/tapd_methods/address/subscribe_to_asset_receives.d.ts +53 -0
  25. package/dist/tapd_methods/address/subscribe_to_asset_receives.d.ts.map +1 -0
  26. package/dist/tapd_methods/address/subscribe_to_asset_receives.js +93 -0
  27. package/dist/tapd_methods/address/subscribe_to_asset_receives.js.map +1 -0
  28. package/dist/tapd_methods/assets/get_asset_balances.d.ts +64 -0
  29. package/dist/tapd_methods/assets/get_asset_balances.d.ts.map +1 -0
  30. package/dist/tapd_methods/assets/get_asset_balances.js +177 -0
  31. package/dist/tapd_methods/assets/get_asset_balances.js.map +1 -0
  32. package/dist/tapd_methods/assets/get_asset_burns.d.ts +40 -0
  33. package/dist/tapd_methods/assets/get_asset_burns.d.ts.map +1 -0
  34. package/dist/tapd_methods/assets/get_asset_burns.js +92 -0
  35. package/dist/tapd_methods/assets/get_asset_burns.js.map +1 -0
  36. package/dist/tapd_methods/assets/get_asset_groups.d.ts +35 -0
  37. package/dist/tapd_methods/assets/get_asset_groups.d.ts.map +1 -0
  38. package/dist/tapd_methods/assets/get_asset_groups.js +78 -0
  39. package/dist/tapd_methods/assets/get_asset_groups.js.map +1 -0
  40. package/dist/tapd_methods/assets/get_asset_metadata.d.ts +40 -0
  41. package/dist/tapd_methods/assets/get_asset_metadata.d.ts.map +1 -0
  42. package/dist/tapd_methods/assets/get_asset_metadata.js +99 -0
  43. package/dist/tapd_methods/assets/get_asset_metadata.js.map +1 -0
  44. package/dist/tapd_methods/assets/get_asset_utxos.d.ts +83 -0
  45. package/dist/tapd_methods/assets/get_asset_utxos.d.ts.map +1 -0
  46. package/dist/tapd_methods/assets/get_asset_utxos.js +135 -0
  47. package/dist/tapd_methods/assets/get_asset_utxos.js.map +1 -0
  48. package/dist/tapd_methods/assets/get_assets.d.ts +113 -0
  49. package/dist/tapd_methods/assets/get_assets.d.ts.map +1 -0
  50. package/dist/tapd_methods/assets/get_assets.js +243 -0
  51. package/dist/tapd_methods/assets/get_assets.js.map +1 -0
  52. package/dist/tapd_methods/assets/index.d.ts +19 -0
  53. package/dist/tapd_methods/assets/index.d.ts.map +1 -0
  54. package/dist/tapd_methods/assets/index.js +7 -0
  55. package/dist/tapd_methods/assets/index.js.map +1 -0
  56. package/dist/tapd_methods/channels/asset_payment_args_error.d.ts +18 -0
  57. package/dist/tapd_methods/channels/asset_payment_args_error.d.ts.map +1 -0
  58. package/dist/tapd_methods/channels/asset_payment_args_error.js +59 -0
  59. package/dist/tapd_methods/channels/asset_payment_args_error.js.map +1 -0
  60. package/dist/tapd_methods/channels/asset_payment_request.d.ts +68 -0
  61. package/dist/tapd_methods/channels/asset_payment_request.d.ts.map +1 -0
  62. package/dist/tapd_methods/channels/asset_payment_request.js +54 -0
  63. package/dist/tapd_methods/channels/asset_payment_request.js.map +1 -0
  64. package/dist/tapd_methods/channels/create_asset_invoice.d.ts +134 -0
  65. package/dist/tapd_methods/channels/create_asset_invoice.d.ts.map +1 -0
  66. package/dist/tapd_methods/channels/create_asset_invoice.js +264 -0
  67. package/dist/tapd_methods/channels/create_asset_invoice.js.map +1 -0
  68. package/dist/tapd_methods/channels/decode_asset_payment_request.d.ts +72 -0
  69. package/dist/tapd_methods/channels/decode_asset_payment_request.d.ts.map +1 -0
  70. package/dist/tapd_methods/channels/decode_asset_payment_request.js +143 -0
  71. package/dist/tapd_methods/channels/decode_asset_payment_request.js.map +1 -0
  72. package/dist/tapd_methods/channels/emit_asset_payment.d.ts +30 -0
  73. package/dist/tapd_methods/channels/emit_asset_payment.d.ts.map +1 -0
  74. package/dist/tapd_methods/channels/emit_asset_payment.js +59 -0
  75. package/dist/tapd_methods/channels/emit_asset_payment.js.map +1 -0
  76. package/dist/tapd_methods/channels/encode_asset_custom_records.d.ts +51 -0
  77. package/dist/tapd_methods/channels/encode_asset_custom_records.d.ts.map +1 -0
  78. package/dist/tapd_methods/channels/encode_asset_custom_records.js +127 -0
  79. package/dist/tapd_methods/channels/encode_asset_custom_records.js.map +1 -0
  80. package/dist/tapd_methods/channels/get_asset_invoices.d.ts +84 -0
  81. package/dist/tapd_methods/channels/get_asset_invoices.d.ts.map +1 -0
  82. package/dist/tapd_methods/channels/get_asset_invoices.js +193 -0
  83. package/dist/tapd_methods/channels/get_asset_invoices.js.map +1 -0
  84. package/dist/tapd_methods/channels/get_asset_payments.d.ts +69 -0
  85. package/dist/tapd_methods/channels/get_asset_payments.d.ts.map +1 -0
  86. package/dist/tapd_methods/channels/get_asset_payments.js +180 -0
  87. package/dist/tapd_methods/channels/get_asset_payments.js.map +1 -0
  88. package/dist/tapd_methods/channels/index.d.ts +31 -0
  89. package/dist/tapd_methods/channels/index.d.ts.map +1 -0
  90. package/dist/tapd_methods/channels/index.js +12 -0
  91. package/dist/tapd_methods/channels/index.js.map +1 -0
  92. package/dist/tapd_methods/channels/open_asset_channel.d.ts +53 -0
  93. package/dist/tapd_methods/channels/open_asset_channel.d.ts.map +1 -0
  94. package/dist/tapd_methods/channels/open_asset_channel.js +128 -0
  95. package/dist/tapd_methods/channels/open_asset_channel.js.map +1 -0
  96. package/dist/tapd_methods/channels/pay_asset_invoice.d.ts +95 -0
  97. package/dist/tapd_methods/channels/pay_asset_invoice.d.ts.map +1 -0
  98. package/dist/tapd_methods/channels/pay_asset_invoice.js +132 -0
  99. package/dist/tapd_methods/channels/pay_asset_invoice.js.map +1 -0
  100. package/dist/tapd_methods/channels/send_asset_keysend.d.ts +84 -0
  101. package/dist/tapd_methods/channels/send_asset_keysend.d.ts.map +1 -0
  102. package/dist/tapd_methods/channels/send_asset_keysend.js +144 -0
  103. package/dist/tapd_methods/channels/send_asset_keysend.js.map +1 -0
  104. package/dist/tapd_methods/channels/send_asset_payment.d.ts +33 -0
  105. package/dist/tapd_methods/channels/send_asset_payment.d.ts.map +1 -0
  106. package/dist/tapd_methods/channels/send_asset_payment.js +114 -0
  107. package/dist/tapd_methods/channels/send_asset_payment.js.map +1 -0
  108. package/dist/tapd_methods/channels/subscribe_to_asset_invoices.d.ts +51 -0
  109. package/dist/tapd_methods/channels/subscribe_to_asset_invoices.d.ts.map +1 -0
  110. package/dist/tapd_methods/channels/subscribe_to_asset_invoices.js +104 -0
  111. package/dist/tapd_methods/channels/subscribe_to_asset_invoices.js.map +1 -0
  112. package/dist/tapd_methods/channels/subscribe_to_asset_payments.d.ts +59 -0
  113. package/dist/tapd_methods/channels/subscribe_to_asset_payments.d.ts.map +1 -0
  114. package/dist/tapd_methods/channels/subscribe_to_asset_payments.js +104 -0
  115. package/dist/tapd_methods/channels/subscribe_to_asset_payments.js.map +1 -0
  116. package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.d.ts +62 -0
  117. package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.d.ts.map +1 -0
  118. package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.js +106 -0
  119. package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.js.map +1 -0
  120. package/dist/tapd_methods/daemon/create_tapd_macaroon.d.ts +45 -0
  121. package/dist/tapd_methods/daemon/create_tapd_macaroon.d.ts.map +1 -0
  122. package/dist/tapd_methods/daemon/create_tapd_macaroon.js +99 -0
  123. package/dist/tapd_methods/daemon/create_tapd_macaroon.js.map +1 -0
  124. package/dist/tapd_methods/daemon/index.d.ts +8 -0
  125. package/dist/tapd_methods/daemon/index.d.ts.map +1 -0
  126. package/dist/tapd_methods/daemon/index.js +4 -0
  127. package/dist/tapd_methods/daemon/index.js.map +1 -0
  128. package/dist/tapd_methods/daemon/set_tapd_debug_level.d.ts +23 -0
  129. package/dist/tapd_methods/daemon/set_tapd_debug_level.d.ts.map +1 -0
  130. package/dist/tapd_methods/daemon/set_tapd_debug_level.js +60 -0
  131. package/dist/tapd_methods/daemon/set_tapd_debug_level.js.map +1 -0
  132. package/dist/tapd_methods/daemon/stop_tapd.d.ts +16 -0
  133. package/dist/tapd_methods/daemon/stop_tapd.d.ts.map +1 -0
  134. package/dist/tapd_methods/daemon/stop_tapd.js +50 -0
  135. package/dist/tapd_methods/daemon/stop_tapd.js.map +1 -0
  136. package/dist/tapd_methods/index.d.ts +8 -0
  137. package/dist/tapd_methods/index.d.ts.map +1 -1
  138. package/dist/tapd_methods/index.js +8 -0
  139. package/dist/tapd_methods/index.js.map +1 -1
  140. package/dist/tapd_methods/info/get_tapd_info.d.ts +44 -0
  141. package/dist/tapd_methods/info/get_tapd_info.d.ts.map +1 -0
  142. package/dist/tapd_methods/info/get_tapd_info.js +80 -0
  143. package/dist/tapd_methods/info/get_tapd_info.js.map +1 -0
  144. package/dist/tapd_methods/info/index.d.ts +4 -0
  145. package/dist/tapd_methods/info/index.d.ts.map +1 -0
  146. package/dist/tapd_methods/info/index.js +2 -0
  147. package/dist/tapd_methods/info/index.js.map +1 -0
  148. package/dist/tapd_methods/mint/add_asset_to_mint_batch.d.ts +124 -0
  149. package/dist/tapd_methods/mint/add_asset_to_mint_batch.d.ts.map +1 -0
  150. package/dist/tapd_methods/mint/add_asset_to_mint_batch.js +283 -0
  151. package/dist/tapd_methods/mint/add_asset_to_mint_batch.js.map +1 -0
  152. package/dist/tapd_methods/mint/cancel_mint_batch.d.ts +23 -0
  153. package/dist/tapd_methods/mint/cancel_mint_batch.d.ts.map +1 -0
  154. package/dist/tapd_methods/mint/cancel_mint_batch.js +62 -0
  155. package/dist/tapd_methods/mint/cancel_mint_batch.js.map +1 -0
  156. package/dist/tapd_methods/mint/finalize_mint_batch.d.ts +64 -0
  157. package/dist/tapd_methods/mint/finalize_mint_batch.d.ts.map +1 -0
  158. package/dist/tapd_methods/mint/finalize_mint_batch.js +130 -0
  159. package/dist/tapd_methods/mint/finalize_mint_batch.js.map +1 -0
  160. package/dist/tapd_methods/mint/fund_mint_batch.d.ts +82 -0
  161. package/dist/tapd_methods/mint/fund_mint_batch.d.ts.map +1 -0
  162. package/dist/tapd_methods/mint/fund_mint_batch.js +145 -0
  163. package/dist/tapd_methods/mint/fund_mint_batch.js.map +1 -0
  164. package/dist/tapd_methods/mint/get_mint_batches.d.ts +72 -0
  165. package/dist/tapd_methods/mint/get_mint_batches.d.ts.map +1 -0
  166. package/dist/tapd_methods/mint/get_mint_batches.js +123 -0
  167. package/dist/tapd_methods/mint/get_mint_batches.js.map +1 -0
  168. package/dist/tapd_methods/mint/index.d.ts +21 -0
  169. package/dist/tapd_methods/mint/index.d.ts.map +1 -0
  170. package/dist/tapd_methods/mint/index.js +8 -0
  171. package/dist/tapd_methods/mint/index.js.map +1 -0
  172. package/dist/tapd_methods/mint/seal_mint_batch.d.ts +64 -0
  173. package/dist/tapd_methods/mint/seal_mint_batch.d.ts.map +1 -0
  174. package/dist/tapd_methods/mint/seal_mint_batch.js +135 -0
  175. package/dist/tapd_methods/mint/seal_mint_batch.js.map +1 -0
  176. package/dist/tapd_methods/mint/subscribe_to_mint_events.d.ts +52 -0
  177. package/dist/tapd_methods/mint/subscribe_to_mint_events.d.ts.map +1 -0
  178. package/dist/tapd_methods/mint/subscribe_to_mint_events.js +91 -0
  179. package/dist/tapd_methods/mint/subscribe_to_mint_events.js.map +1 -0
  180. package/dist/tapd_methods/proofs/decode_asset_proof.d.ts +61 -0
  181. package/dist/tapd_methods/proofs/decode_asset_proof.d.ts.map +1 -0
  182. package/dist/tapd_methods/proofs/decode_asset_proof.js +129 -0
  183. package/dist/tapd_methods/proofs/decode_asset_proof.js.map +1 -0
  184. package/dist/tapd_methods/proofs/export_asset_proof.d.ts +39 -0
  185. package/dist/tapd_methods/proofs/export_asset_proof.d.ts.map +1 -0
  186. package/dist/tapd_methods/proofs/export_asset_proof.js +113 -0
  187. package/dist/tapd_methods/proofs/export_asset_proof.js.map +1 -0
  188. package/dist/tapd_methods/proofs/index.d.ts +13 -0
  189. package/dist/tapd_methods/proofs/index.d.ts.map +1 -0
  190. package/dist/tapd_methods/proofs/index.js +5 -0
  191. package/dist/tapd_methods/proofs/index.js.map +1 -0
  192. package/dist/tapd_methods/proofs/unpack_asset_proof_file.d.ts +29 -0
  193. package/dist/tapd_methods/proofs/unpack_asset_proof_file.d.ts.map +1 -0
  194. package/dist/tapd_methods/proofs/unpack_asset_proof_file.js +85 -0
  195. package/dist/tapd_methods/proofs/unpack_asset_proof_file.js.map +1 -0
  196. package/dist/tapd_methods/proofs/verify_asset_proof.d.ts +58 -0
  197. package/dist/tapd_methods/proofs/verify_asset_proof.d.ts.map +1 -0
  198. package/dist/tapd_methods/proofs/verify_asset_proof.js +110 -0
  199. package/dist/tapd_methods/proofs/verify_asset_proof.js.map +1 -0
  200. package/dist/tapd_methods/rfq/add_asset_buy_offer.d.ts +31 -0
  201. package/dist/tapd_methods/rfq/add_asset_buy_offer.d.ts.map +1 -0
  202. package/dist/tapd_methods/rfq/add_asset_buy_offer.js +88 -0
  203. package/dist/tapd_methods/rfq/add_asset_buy_offer.js.map +1 -0
  204. package/dist/tapd_methods/rfq/add_asset_buy_order.d.ts +79 -0
  205. package/dist/tapd_methods/rfq/add_asset_buy_order.d.ts.map +1 -0
  206. package/dist/tapd_methods/rfq/add_asset_buy_order.js +200 -0
  207. package/dist/tapd_methods/rfq/add_asset_buy_order.js.map +1 -0
  208. package/dist/tapd_methods/rfq/add_asset_sell_offer.d.ts +30 -0
  209. package/dist/tapd_methods/rfq/add_asset_sell_offer.d.ts.map +1 -0
  210. package/dist/tapd_methods/rfq/add_asset_sell_offer.js +87 -0
  211. package/dist/tapd_methods/rfq/add_asset_sell_offer.js.map +1 -0
  212. package/dist/tapd_methods/rfq/add_asset_sell_order.d.ts +79 -0
  213. package/dist/tapd_methods/rfq/add_asset_sell_order.d.ts.map +1 -0
  214. package/dist/tapd_methods/rfq/add_asset_sell_order.js +200 -0
  215. package/dist/tapd_methods/rfq/add_asset_sell_order.js.map +1 -0
  216. package/dist/tapd_methods/rfq/get_accepted_quotes.d.ts +52 -0
  217. package/dist/tapd_methods/rfq/get_accepted_quotes.d.ts.map +1 -0
  218. package/dist/tapd_methods/rfq/get_accepted_quotes.js +100 -0
  219. package/dist/tapd_methods/rfq/get_accepted_quotes.js.map +1 -0
  220. package/dist/tapd_methods/rfq/get_asset_forwards.d.ts +70 -0
  221. package/dist/tapd_methods/rfq/get_asset_forwards.d.ts.map +1 -0
  222. package/dist/tapd_methods/rfq/get_asset_forwards.js +185 -0
  223. package/dist/tapd_methods/rfq/get_asset_forwards.js.map +1 -0
  224. package/dist/tapd_methods/rfq/index.d.ts +19 -0
  225. package/dist/tapd_methods/rfq/index.d.ts.map +1 -0
  226. package/dist/tapd_methods/rfq/index.js +8 -0
  227. package/dist/tapd_methods/rfq/index.js.map +1 -0
  228. package/dist/tapd_methods/rfq/subscribe_to_rfq_events.d.ts +68 -0
  229. package/dist/tapd_methods/rfq/subscribe_to_rfq_events.d.ts.map +1 -0
  230. package/dist/tapd_methods/rfq/subscribe_to_rfq_events.js +107 -0
  231. package/dist/tapd_methods/rfq/subscribe_to_rfq_events.js.map +1 -0
  232. package/dist/tapd_methods/send/burn_asset.d.ts +135 -0
  233. package/dist/tapd_methods/send/burn_asset.d.ts.map +1 -0
  234. package/dist/tapd_methods/send/burn_asset.js +220 -0
  235. package/dist/tapd_methods/send/burn_asset.js.map +1 -0
  236. package/dist/tapd_methods/send/get_asset_transfers.d.ts +73 -0
  237. package/dist/tapd_methods/send/get_asset_transfers.d.ts.map +1 -0
  238. package/dist/tapd_methods/send/get_asset_transfers.js +122 -0
  239. package/dist/tapd_methods/send/get_asset_transfers.js.map +1 -0
  240. package/dist/tapd_methods/send/index.d.ts +15 -0
  241. package/dist/tapd_methods/send/index.d.ts.map +1 -0
  242. package/dist/tapd_methods/send/index.js +6 -0
  243. package/dist/tapd_methods/send/index.js.map +1 -0
  244. package/dist/tapd_methods/send/register_asset_transfer.d.ts +77 -0
  245. package/dist/tapd_methods/send/register_asset_transfer.d.ts.map +1 -0
  246. package/dist/tapd_methods/send/register_asset_transfer.js +165 -0
  247. package/dist/tapd_methods/send/register_asset_transfer.js.map +1 -0
  248. package/dist/tapd_methods/send/send_asset.d.ts +94 -0
  249. package/dist/tapd_methods/send/send_asset.d.ts.map +1 -0
  250. package/dist/tapd_methods/send/send_asset.js +169 -0
  251. package/dist/tapd_methods/send/send_asset.js.map +1 -0
  252. package/dist/tapd_methods/send/subscribe_to_asset_sends.d.ts +117 -0
  253. package/dist/tapd_methods/send/subscribe_to_asset_sends.d.ts.map +1 -0
  254. package/dist/tapd_methods/send/subscribe_to_asset_sends.js +159 -0
  255. package/dist/tapd_methods/send/subscribe_to_asset_sends.js.map +1 -0
  256. package/dist/tapd_requests/decimal_as_fixed_point.d.ts +23 -0
  257. package/dist/tapd_requests/decimal_as_fixed_point.d.ts.map +1 -0
  258. package/dist/tapd_requests/decimal_as_fixed_point.js +31 -0
  259. package/dist/tapd_requests/decimal_as_fixed_point.js.map +1 -0
  260. package/dist/tapd_requests/fee_rate_as_tokens_per_kw.d.ts +13 -0
  261. package/dist/tapd_requests/fee_rate_as_tokens_per_kw.d.ts.map +1 -0
  262. package/dist/tapd_requests/fee_rate_as_tokens_per_kw.js +21 -0
  263. package/dist/tapd_requests/fee_rate_as_tokens_per_kw.js.map +1 -0
  264. package/dist/tapd_requests/index.d.ts +5 -0
  265. package/dist/tapd_requests/index.d.ts.map +1 -1
  266. package/dist/tapd_requests/index.js +5 -0
  267. package/dist/tapd_requests/index.js.map +1 -1
  268. package/dist/tapd_requests/is_method_unsupported.d.ts +24 -0
  269. package/dist/tapd_requests/is_method_unsupported.d.ts.map +1 -0
  270. package/dist/tapd_requests/is_method_unsupported.js +27 -0
  271. package/dist/tapd_requests/is_method_unsupported.js.map +1 -0
  272. package/dist/tapd_requests/mint_funding_request.d.ts +53 -0
  273. package/dist/tapd_requests/mint_funding_request.d.ts.map +1 -0
  274. package/dist/tapd_requests/mint_funding_request.js +48 -0
  275. package/dist/tapd_requests/mint_funding_request.js.map +1 -0
  276. package/dist/tapd_requests/script_key_type_query.d.ts +26 -0
  277. package/dist/tapd_requests/script_key_type_query.d.ts.map +1 -0
  278. package/dist/tapd_requests/script_key_type_query.js +41 -0
  279. package/dist/tapd_requests/script_key_type_query.js.map +1 -0
  280. package/dist/tapd_responses/asset_channel_rpc_error.d.ts +19 -0
  281. package/dist/tapd_responses/asset_channel_rpc_error.d.ts.map +1 -0
  282. package/dist/tapd_responses/asset_channel_rpc_error.js +69 -0
  283. package/dist/tapd_responses/asset_channel_rpc_error.js.map +1 -0
  284. package/dist/tapd_responses/batch_states.d.ts +4 -0
  285. package/dist/tapd_responses/batch_states.d.ts.map +1 -0
  286. package/dist/tapd_responses/batch_states.js +13 -0
  287. package/dist/tapd_responses/batch_states.js.map +1 -0
  288. package/dist/tapd_responses/fixed_point_as_decimal.d.ts +25 -0
  289. package/dist/tapd_responses/fixed_point_as_decimal.d.ts.map +1 -0
  290. package/dist/tapd_responses/fixed_point_as_decimal.js +39 -0
  291. package/dist/tapd_responses/fixed_point_as_decimal.js.map +1 -0
  292. package/dist/tapd_responses/index.d.ts +76 -0
  293. package/dist/tapd_responses/index.d.ts.map +1 -0
  294. package/dist/tapd_responses/index.js +30 -0
  295. package/dist/tapd_responses/index.js.map +1 -0
  296. package/dist/tapd_responses/long_key_as_number.d.ts +16 -0
  297. package/dist/tapd_responses/long_key_as_number.d.ts.map +1 -0
  298. package/dist/tapd_responses/long_key_as_number.js +28 -0
  299. package/dist/tapd_responses/long_key_as_number.js.map +1 -0
  300. package/dist/tapd_responses/mint_rpc_error.d.ts +19 -0
  301. package/dist/tapd_responses/mint_rpc_error.d.ts.map +1 -0
  302. package/dist/tapd_responses/mint_rpc_error.js +35 -0
  303. package/dist/tapd_responses/mint_rpc_error.js.map +1 -0
  304. package/dist/tapd_responses/outpoint_as_transaction.d.ts +19 -0
  305. package/dist/tapd_responses/outpoint_as_transaction.d.ts.map +1 -0
  306. package/dist/tapd_responses/outpoint_as_transaction.js +23 -0
  307. package/dist/tapd_responses/outpoint_as_transaction.js.map +1 -0
  308. package/dist/tapd_responses/receive_statuses.d.ts +4 -0
  309. package/dist/tapd_responses/receive_statuses.d.ts.map +1 -0
  310. package/dist/tapd_responses/receive_statuses.js +9 -0
  311. package/dist/tapd_responses/receive_statuses.js.map +1 -0
  312. package/dist/tapd_responses/rpc_addr_as_address.d.ts +79 -0
  313. package/dist/tapd_responses/rpc_addr_as_address.d.ts.map +1 -0
  314. package/dist/tapd_responses/rpc_addr_as_address.js +87 -0
  315. package/dist/tapd_responses/rpc_addr_as_address.js.map +1 -0
  316. package/dist/tapd_responses/rpc_addr_event_as_receive.d.ts +63 -0
  317. package/dist/tapd_responses/rpc_addr_event_as_receive.d.ts.map +1 -0
  318. package/dist/tapd_responses/rpc_addr_event_as_receive.js +64 -0
  319. package/dist/tapd_responses/rpc_addr_event_as_receive.js.map +1 -0
  320. package/dist/tapd_responses/rpc_asset_amount_as_amount.d.ts +34 -0
  321. package/dist/tapd_responses/rpc_asset_amount_as_amount.d.ts.map +1 -0
  322. package/dist/tapd_responses/rpc_asset_amount_as_amount.js +38 -0
  323. package/dist/tapd_responses/rpc_asset_amount_as_amount.js.map +1 -0
  324. package/dist/tapd_responses/rpc_asset_as_asset.d.ts +204 -0
  325. package/dist/tapd_responses/rpc_asset_as_asset.d.ts.map +1 -0
  326. package/dist/tapd_responses/rpc_asset_as_asset.js +174 -0
  327. package/dist/tapd_responses/rpc_asset_as_asset.js.map +1 -0
  328. package/dist/tapd_responses/rpc_asset_balance_as_balance.d.ts +53 -0
  329. package/dist/tapd_responses/rpc_asset_balance_as_balance.d.ts.map +1 -0
  330. package/dist/tapd_responses/rpc_asset_balance_as_balance.js +53 -0
  331. package/dist/tapd_responses/rpc_asset_balance_as_balance.js.map +1 -0
  332. package/dist/tapd_responses/rpc_asset_burn_as_burn.d.ts +51 -0
  333. package/dist/tapd_responses/rpc_asset_burn_as_burn.d.ts.map +1 -0
  334. package/dist/tapd_responses/rpc_asset_burn_as_burn.js +54 -0
  335. package/dist/tapd_responses/rpc_asset_burn_as_burn.js.map +1 -0
  336. package/dist/tapd_responses/rpc_asset_invoice_as_invoice.d.ts +39 -0
  337. package/dist/tapd_responses/rpc_asset_invoice_as_invoice.d.ts.map +1 -0
  338. package/dist/tapd_responses/rpc_asset_invoice_as_invoice.js +45 -0
  339. package/dist/tapd_responses/rpc_asset_invoice_as_invoice.js.map +1 -0
  340. package/dist/tapd_responses/rpc_asset_meta_as_metadata.d.ts +68 -0
  341. package/dist/tapd_responses/rpc_asset_meta_as_metadata.d.ts.map +1 -0
  342. package/dist/tapd_responses/rpc_asset_meta_as_metadata.js +70 -0
  343. package/dist/tapd_responses/rpc_asset_meta_as_metadata.js.map +1 -0
  344. package/dist/tapd_responses/rpc_asset_pay_req_as_request.d.ts +76 -0
  345. package/dist/tapd_responses/rpc_asset_pay_req_as_request.d.ts.map +1 -0
  346. package/dist/tapd_responses/rpc_asset_pay_req_as_request.js +73 -0
  347. package/dist/tapd_responses/rpc_asset_pay_req_as_request.js.map +1 -0
  348. package/dist/tapd_responses/rpc_asset_payment_as_payment.d.ts +39 -0
  349. package/dist/tapd_responses/rpc_asset_payment_as_payment.d.ts.map +1 -0
  350. package/dist/tapd_responses/rpc_asset_payment_as_payment.js +45 -0
  351. package/dist/tapd_responses/rpc_asset_payment_as_payment.js.map +1 -0
  352. package/dist/tapd_responses/rpc_batch_as_batch.d.ts +158 -0
  353. package/dist/tapd_responses/rpc_batch_as_batch.d.ts.map +1 -0
  354. package/dist/tapd_responses/rpc_batch_as_batch.js +181 -0
  355. package/dist/tapd_responses/rpc_batch_as_batch.js.map +1 -0
  356. package/dist/tapd_responses/rpc_buy_quote_as_quote.d.ts +83 -0
  357. package/dist/tapd_responses/rpc_buy_quote_as_quote.d.ts.map +1 -0
  358. package/dist/tapd_responses/rpc_buy_quote_as_quote.js +85 -0
  359. package/dist/tapd_responses/rpc_buy_quote_as_quote.js.map +1 -0
  360. package/dist/tapd_responses/rpc_decoded_proof_as_proof.d.ts +161 -0
  361. package/dist/tapd_responses/rpc_decoded_proof_as_proof.d.ts.map +1 -0
  362. package/dist/tapd_responses/rpc_decoded_proof_as_proof.js +138 -0
  363. package/dist/tapd_responses/rpc_decoded_proof_as_proof.js.map +1 -0
  364. package/dist/tapd_responses/rpc_forward_as_asset_forward.d.ts +100 -0
  365. package/dist/tapd_responses/rpc_forward_as_asset_forward.d.ts.map +1 -0
  366. package/dist/tapd_responses/rpc_forward_as_asset_forward.js +101 -0
  367. package/dist/tapd_responses/rpc_forward_as_asset_forward.js.map +1 -0
  368. package/dist/tapd_responses/rpc_grouped_assets_as_group.d.ts +76 -0
  369. package/dist/tapd_responses/rpc_grouped_assets_as_group.d.ts.map +1 -0
  370. package/dist/tapd_responses/rpc_grouped_assets_as_group.js +71 -0
  371. package/dist/tapd_responses/rpc_grouped_assets_as_group.js.map +1 -0
  372. package/dist/tapd_responses/rpc_managed_utxo_as_utxo.d.ts +63 -0
  373. package/dist/tapd_responses/rpc_managed_utxo_as_utxo.d.ts.map +1 -0
  374. package/dist/tapd_responses/rpc_managed_utxo_as_utxo.js +65 -0
  375. package/dist/tapd_responses/rpc_managed_utxo_as_utxo.js.map +1 -0
  376. package/dist/tapd_responses/rpc_receive_event_as_receive_update.d.ts +53 -0
  377. package/dist/tapd_responses/rpc_receive_event_as_receive_update.d.ts.map +1 -0
  378. package/dist/tapd_responses/rpc_receive_event_as_receive_update.js +52 -0
  379. package/dist/tapd_responses/rpc_receive_event_as_receive_update.js.map +1 -0
  380. package/dist/tapd_responses/rpc_rfq_event_as_event.d.ts +70 -0
  381. package/dist/tapd_responses/rpc_rfq_event_as_event.d.ts.map +1 -0
  382. package/dist/tapd_responses/rpc_rfq_event_as_event.js +89 -0
  383. package/dist/tapd_responses/rpc_rfq_event_as_event.js.map +1 -0
  384. package/dist/tapd_responses/rpc_sell_quote_as_quote.d.ts +80 -0
  385. package/dist/tapd_responses/rpc_sell_quote_as_quote.d.ts.map +1 -0
  386. package/dist/tapd_responses/rpc_sell_quote_as_quote.js +85 -0
  387. package/dist/tapd_responses/rpc_sell_quote_as_quote.js.map +1 -0
  388. package/dist/tapd_responses/rpc_send_event_as_send_event.d.ts +124 -0
  389. package/dist/tapd_responses/rpc_send_event_as_send_event.d.ts.map +1 -0
  390. package/dist/tapd_responses/rpc_send_event_as_send_event.js +161 -0
  391. package/dist/tapd_responses/rpc_send_event_as_send_event.js.map +1 -0
  392. package/dist/tapd_responses/rpc_transfer_as_transfer.d.ts +241 -0
  393. package/dist/tapd_responses/rpc_transfer_as_transfer.d.ts.map +1 -0
  394. package/dist/tapd_responses/rpc_transfer_as_transfer.js +212 -0
  395. package/dist/tapd_responses/rpc_transfer_as_transfer.js.map +1 -0
  396. package/dist/tapd_responses/short_channel_id_as_channel.d.ts +13 -0
  397. package/dist/tapd_responses/short_channel_id_as_channel.d.ts.map +1 -0
  398. package/dist/tapd_responses/short_channel_id_as_channel.js +26 -0
  399. package/dist/tapd_responses/short_channel_id_as_channel.js.map +1 -0
  400. package/package.json +7 -2
  401. package/src/index.ts +21 -0
  402. package/src/tapd_methods/address/create_asset_address.ts +7 -72
  403. package/src/tapd_methods/address/decode_asset_address.ts +117 -0
  404. package/src/tapd_methods/address/get_asset_addresses.ts +212 -0
  405. package/src/tapd_methods/address/get_asset_receives.ts +265 -0
  406. package/src/tapd_methods/address/index.ts +11 -0
  407. package/src/tapd_methods/address/subscribe_to_asset_receives.ts +114 -0
  408. package/src/tapd_methods/assets/get_asset_balances.ts +249 -0
  409. package/src/tapd_methods/assets/get_asset_burns.ts +133 -0
  410. package/src/tapd_methods/assets/get_asset_groups.ts +109 -0
  411. package/src/tapd_methods/assets/get_asset_metadata.ts +141 -0
  412. package/src/tapd_methods/assets/get_asset_utxos.ts +175 -0
  413. package/src/tapd_methods/assets/get_assets.ts +327 -0
  414. package/src/tapd_methods/assets/index.ts +18 -0
  415. package/src/tapd_methods/channels/asset_payment_args_error.ts +83 -0
  416. package/src/tapd_methods/channels/asset_payment_request.ts +76 -0
  417. package/src/tapd_methods/channels/create_asset_invoice.ts +387 -0
  418. package/src/tapd_methods/channels/decode_asset_payment_request.ts +192 -0
  419. package/src/tapd_methods/channels/emit_asset_payment.ts +78 -0
  420. package/src/tapd_methods/channels/encode_asset_custom_records.ts +187 -0
  421. package/src/tapd_methods/channels/get_asset_invoices.ts +258 -0
  422. package/src/tapd_methods/channels/get_asset_payments.ts +243 -0
  423. package/src/tapd_methods/channels/index.ts +30 -0
  424. package/src/tapd_methods/channels/open_asset_channel.ts +193 -0
  425. package/src/tapd_methods/channels/pay_asset_invoice.ts +171 -0
  426. package/src/tapd_methods/channels/send_asset_keysend.ts +196 -0
  427. package/src/tapd_methods/channels/send_asset_payment.ts +158 -0
  428. package/src/tapd_methods/channels/subscribe_to_asset_invoices.ts +134 -0
  429. package/src/tapd_methods/channels/subscribe_to_asset_payments.ts +126 -0
  430. package/src/tapd_methods/channels/subscribe_to_past_asset_payment.ts +132 -0
  431. package/src/tapd_methods/daemon/create_tapd_macaroon.ts +153 -0
  432. package/src/tapd_methods/daemon/index.ts +7 -0
  433. package/src/tapd_methods/daemon/set_tapd_debug_level.ts +90 -0
  434. package/src/tapd_methods/daemon/stop_tapd.ts +75 -0
  435. package/src/tapd_methods/index.ts +8 -0
  436. package/src/tapd_methods/info/get_tapd_info.ts +129 -0
  437. package/src/tapd_methods/info/index.ts +3 -0
  438. package/src/tapd_methods/mint/add_asset_to_mint_batch.ts +396 -0
  439. package/src/tapd_methods/mint/cancel_mint_batch.ts +95 -0
  440. package/src/tapd_methods/mint/finalize_mint_batch.ts +181 -0
  441. package/src/tapd_methods/mint/fund_mint_batch.ts +193 -0
  442. package/src/tapd_methods/mint/get_mint_batches.ts +162 -0
  443. package/src/tapd_methods/mint/index.ts +20 -0
  444. package/src/tapd_methods/mint/seal_mint_batch.ts +184 -0
  445. package/src/tapd_methods/mint/subscribe_to_mint_events.ts +104 -0
  446. package/src/tapd_methods/proofs/decode_asset_proof.ts +175 -0
  447. package/src/tapd_methods/proofs/export_asset_proof.ts +169 -0
  448. package/src/tapd_methods/proofs/index.ts +12 -0
  449. package/src/tapd_methods/proofs/unpack_asset_proof_file.ts +126 -0
  450. package/src/tapd_methods/proofs/verify_asset_proof.ts +156 -0
  451. package/src/tapd_methods/rfq/add_asset_buy_offer.ts +127 -0
  452. package/src/tapd_methods/rfq/add_asset_buy_order.ts +279 -0
  453. package/src/tapd_methods/rfq/add_asset_sell_offer.ts +126 -0
  454. package/src/tapd_methods/rfq/add_asset_sell_order.ts +279 -0
  455. package/src/tapd_methods/rfq/get_accepted_quotes.ts +137 -0
  456. package/src/tapd_methods/rfq/get_asset_forwards.ts +259 -0
  457. package/src/tapd_methods/rfq/index.ts +18 -0
  458. package/src/tapd_methods/rfq/subscribe_to_rfq_events.ts +130 -0
  459. package/src/tapd_methods/send/burn_asset.ts +280 -0
  460. package/src/tapd_methods/send/get_asset_transfers.ts +161 -0
  461. package/src/tapd_methods/send/index.ts +14 -0
  462. package/src/tapd_methods/send/register_asset_transfer.ts +219 -0
  463. package/src/tapd_methods/send/send_asset.ts +223 -0
  464. package/src/tapd_methods/send/subscribe_to_asset_sends.ts +181 -0
  465. package/src/tapd_requests/decimal_as_fixed_point.ts +36 -0
  466. package/src/tapd_requests/fee_rate_as_tokens_per_kw.ts +23 -0
  467. package/src/tapd_requests/index.ts +5 -0
  468. package/src/tapd_requests/is_method_unsupported.ts +33 -0
  469. package/src/tapd_requests/mint_funding_request.ts +57 -0
  470. package/src/tapd_requests/script_key_type_query.ts +44 -0
  471. package/src/tapd_responses/asset_channel_rpc_error.ts +73 -0
  472. package/src/tapd_responses/batch_states.ts +12 -0
  473. package/src/tapd_responses/fixed_point_as_decimal.ts +51 -0
  474. package/src/tapd_responses/index.ts +75 -0
  475. package/src/tapd_responses/long_key_as_number.ts +31 -0
  476. package/src/tapd_responses/mint_rpc_error.ts +39 -0
  477. package/src/tapd_responses/outpoint_as_transaction.ts +25 -0
  478. package/src/tapd_responses/receive_statuses.ts +8 -0
  479. package/src/tapd_responses/rpc_addr_as_address.ts +138 -0
  480. package/src/tapd_responses/rpc_addr_event_as_receive.ts +103 -0
  481. package/src/tapd_responses/rpc_asset_amount_as_amount.ts +57 -0
  482. package/src/tapd_responses/rpc_asset_as_asset.ts +299 -0
  483. package/src/tapd_responses/rpc_asset_balance_as_balance.ts +85 -0
  484. package/src/tapd_responses/rpc_asset_burn_as_burn.ts +85 -0
  485. package/src/tapd_responses/rpc_asset_invoice_as_invoice.ts +62 -0
  486. package/src/tapd_responses/rpc_asset_meta_as_metadata.ts +113 -0
  487. package/src/tapd_responses/rpc_asset_pay_req_as_request.ts +114 -0
  488. package/src/tapd_responses/rpc_asset_payment_as_payment.ts +62 -0
  489. package/src/tapd_responses/rpc_batch_as_batch.ts +281 -0
  490. package/src/tapd_responses/rpc_buy_quote_as_quote.ts +139 -0
  491. package/src/tapd_responses/rpc_decoded_proof_as_proof.ts +229 -0
  492. package/src/tapd_responses/rpc_forward_as_asset_forward.ts +164 -0
  493. package/src/tapd_responses/rpc_grouped_assets_as_group.ts +117 -0
  494. package/src/tapd_responses/rpc_managed_utxo_as_utxo.ts +105 -0
  495. package/src/tapd_responses/rpc_receive_event_as_receive_update.ts +84 -0
  496. package/src/tapd_responses/rpc_rfq_event_as_event.ts +123 -0
  497. package/src/tapd_responses/rpc_sell_quote_as_quote.ts +136 -0
  498. package/src/tapd_responses/rpc_send_event_as_send_event.ts +245 -0
  499. package/src/tapd_responses/rpc_transfer_as_transfer.ts +366 -0
  500. package/src/tapd_responses/short_channel_id_as_channel.ts +30 -0
  501. package/src/typescript/invoices.d.ts +30 -0
  502. package/src/typescript/lightning_lnd_responses.d.ts +44 -0
@@ -0,0 +1,158 @@
1
+ import type {SubscribeToPastPaymentConfirmedEvent} from 'lightning';
2
+ import {confirmedFromPayment} from 'lightning/lnd_responses/index.js';
3
+
4
+ import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
5
+ import {isConnectionFailure} from '../../tapd_requests/index.js';
6
+ import {isPermissionDenied} from '../../tapd_requests/index.js';
7
+ import {assetChannelRpcError} from '../../tapd_responses/index.js';
8
+ import {rpcSellQuoteAsQuote} from '../../tapd_responses/index.js';
9
+ import type {SellQuote} from '../../tapd_responses/index.js';
10
+ import type {TapdError} from '../../typescript/index.js';
11
+
12
+ const {isArray} = Array;
13
+ const failedText = /payment failed: (FAILURE_REASON_[A-Z_]+)/;
14
+ // The errors are the same as the payment errors of lightning
15
+ const failureErrors: Record<string, string> = {
16
+ FAILURE_REASON_CANCELED: 'PaymentExecutionCanceled',
17
+ FAILURE_REASON_INCORRECT_PAYMENT_DETAILS: 'PaymentRejectedByDestination',
18
+ FAILURE_REASON_INSUFFICIENT_BALANCE: 'InsufficientBalanceToAttemptPayment',
19
+ FAILURE_REASON_NO_ROUTE: 'PaymentPathfindingFailedToFindPossibleRoute',
20
+ FAILURE_REASON_TIMEOUT: 'PaymentAttemptsTimedOut',
21
+ };
22
+ const failedStatus = 'FAILED';
23
+ const genericFailure = 'FailedToFindPayableRouteToDestination';
24
+ const method = 'sendPayment';
25
+ const succeededStatus = 'SUCCEEDED';
26
+ const type = 'tapchannel';
27
+
28
+ type Args = {
29
+ /** Method Name For Error Messages */
30
+ name: string;
31
+ /** tapchannel SendPayment Request Object */
32
+ request: object;
33
+ /** Authenticated tapd API Object */
34
+ tapd: AuthenticatedTapd;
35
+ };
36
+
37
+ export type SendAssetPaymentResult = SubscribeToPastPaymentConfirmedEvent & {
38
+ quotes: SellQuote[];
39
+ };
40
+
41
+ /** Error for a failed payment
42
+
43
+ <Payment Failure Reason String>
44
+
45
+ @returns
46
+ <Error Array>
47
+ */
48
+ const failureError = (reason: string): TapdError => {
49
+ return [503, failureErrors[reason] || genericFailure];
50
+ };
51
+
52
+ /** Send a tapd asset payment and wait for the final payment state
53
+
54
+ {
55
+ name: <Method Name For Error Messages String>
56
+ request: <tapchannel SendPayment Request Object>
57
+ tapd: <Authenticated tapd API Object>
58
+ }
59
+
60
+ @returns via cbk
61
+ {
62
+ confirmed_at: <Payment Confirmed At ISO 8601 Date String>
63
+ ...<lightning Confirmed Payment Object>
64
+ quotes: [<Accepted Sell Quote Object>]
65
+ }
66
+ */
67
+ export default (
68
+ {name, request, tapd}: Args,
69
+ cbk: (err: TapdError | null, res?: SendAssetPaymentResult) => void,
70
+ ) => {
71
+ const quotes = new Map<string, SellQuote>();
72
+ let isFinished = false;
73
+
74
+ const finish = (err: TapdError | null, res?: SendAssetPaymentResult) => {
75
+ // Exit early when the payment already has a result
76
+ if (isFinished) {
77
+ return;
78
+ }
79
+
80
+ isFinished = true;
81
+
82
+ return cbk(err, res);
83
+ };
84
+
85
+ const addQuote = (quote: unknown) => {
86
+ const mapped = rpcSellQuoteAsQuote(quote as any);
87
+
88
+ quotes.set(mapped.id, mapped);
89
+ };
90
+
91
+ const sub = tapd[type][method](request);
92
+
93
+ sub.on('data', (data: any) => {
94
+ try {
95
+ // The older field has the first quote, the newer field has all quotes
96
+ if (!!data?.accepted_sell_order) {
97
+ addQuote(data.accepted_sell_order);
98
+ }
99
+
100
+ if (isArray(data?.accepted_sell_orders?.accepted_sell_orders)) {
101
+ data.accepted_sell_orders.accepted_sell_orders.forEach(addQuote);
102
+ }
103
+
104
+ const payment = data?.payment_result;
105
+
106
+ // Exit early when there is no payment result in this update
107
+ if (!payment) {
108
+ return;
109
+ }
110
+
111
+ if (payment.status === failedStatus) {
112
+ return finish(failureError(payment.failure_reason));
113
+ }
114
+
115
+ // Exit early when the payment is not final yet
116
+ if (payment.status !== succeededStatus) {
117
+ return;
118
+ }
119
+
120
+ return finish(null, {
121
+ ...confirmedFromPayment(payment),
122
+ quotes: [...quotes.values()],
123
+ });
124
+ } catch (err: any) {
125
+ return finish([503, err.message]);
126
+ }
127
+ });
128
+
129
+ sub.on('end', () => {
130
+ return finish([503, `UnexpectedEndOfPaymentUpdatesTo${name}`]);
131
+ });
132
+
133
+ sub.on('error', (err: any) => {
134
+ if (isConnectionFailure({err})) {
135
+ return finish([503, `FailedToConnectToTapdTo${name}`]);
136
+ }
137
+
138
+ if (isPermissionDenied({err})) {
139
+ return finish([403, `PermissionDeniedTo${name}`]);
140
+ }
141
+
142
+ const failed = String(err?.details).match(failedText);
143
+
144
+ if (!!failed) {
145
+ return finish(failureError(failed[1]));
146
+ }
147
+
148
+ const knownError = assetChannelRpcError({err});
149
+
150
+ if (!!knownError) {
151
+ return finish(knownError);
152
+ }
153
+
154
+ return finish([503, `UnexpectedErrorIn${name}`, {err}]);
155
+ });
156
+
157
+ return;
158
+ };
@@ -0,0 +1,134 @@
1
+ import {EventEmitter} from 'node:events';
2
+
3
+ import {emitSubscriptionError} from '../../grpc/index.js';
4
+ import {handleRemoveListener} from '../../grpc/index.js';
5
+ import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
6
+ import {isConnectionFailure} from '../../tapd_requests/index.js';
7
+ import {isMethodUnsupported} from '../../tapd_requests/index.js';
8
+ import {isPermissionDenied} from '../../tapd_requests/index.js';
9
+ import {isTapd} from '../../tapd_requests/index.js';
10
+ import {rpcAssetInvoiceAsInvoice} from '../../tapd_responses/index.js';
11
+
12
+ const cancelError = 'Cancelled on client';
13
+ const events = ['error', 'invoice_updated'];
14
+ const isIndex = (n: unknown) => Number.isSafeInteger(n) && (n as number) > 0;
15
+ const method = 'subscribeInvoices';
16
+ const type = 'tapchannel';
17
+
18
+ export type SubscribeToAssetInvoicesArgs = {
19
+ /** Invoice Add Index To Start After Number */
20
+ added_after?: number;
21
+ /** Invoice Confirmed Index To Start After Number */
22
+ confirmed_after?: number;
23
+ /** Authenticated tapd API Object */
24
+ tapd: AuthenticatedTapd;
25
+ };
26
+
27
+ /** Subscribe to invoices that receive an asset
28
+
29
+ tapd only sends updates of invoices that involve an asset
30
+
31
+ Use `added_after` and `confirmed_after` to get past updates after an index
32
+
33
+ Requires `channels:read` permission
34
+
35
+ This method needs tapd v0.8.1 or later
36
+
37
+ The invoice fields are the same as in lightning getInvoices
38
+
39
+ {
40
+ [added_after]: <Invoice Add Index To Start After Number>
41
+ [confirmed_after]: <Invoice Confirmed Index To Start After Number>
42
+ tapd: <Authenticated tapd API Object>
43
+ }
44
+
45
+ @throws
46
+ <Error>
47
+
48
+ @returns
49
+ <Subscription EventEmitter Object>
50
+
51
+ @event 'invoice_updated'
52
+ {
53
+ assets: [{
54
+ amount: <Asset Units Numeric String>
55
+ asset_id: <Asset Id Hex String>
56
+ [group_key]: <Asset Group Key Hex String>
57
+ }]
58
+ created_at: <ISO 8601 Date String>
59
+ id: <Payment Hash Hex String>
60
+ index: <Invoice Add Index Number>
61
+ is_confirmed: <Invoice is Confirmed Bool>
62
+ ...<lightning Invoice Object>
63
+ }
64
+ */
65
+ export default (args: SubscribeToAssetInvoicesArgs) => {
66
+ if (args.added_after !== undefined && !isIndex(args.added_after)) {
67
+ throw new Error('ExpectedAddIndexToSubscribeToAssetInvoices');
68
+ }
69
+
70
+ if (args.confirmed_after !== undefined && !isIndex(args.confirmed_after)) {
71
+ throw new Error('ExpectedConfirmedIndexToSubscribeToAssetInvoices');
72
+ }
73
+
74
+ if (!isTapd({method, tapd: args.tapd, type})) {
75
+ throw new Error('ExpectedAuthenticatedTapdToSubscribeToAssetInvoices');
76
+ }
77
+
78
+ const emitter = new EventEmitter();
79
+
80
+ const subscription = args.tapd[type][method]({
81
+ request: {
82
+ add_index: args.added_after || 0,
83
+ settle_index: args.confirmed_after || 0,
84
+ },
85
+ });
86
+
87
+ // The error helper only reads `details` to find a client cancel
88
+ const emitError = emitSubscriptionError({emitter, subscription}) as (
89
+ err: unknown,
90
+ ) => void;
91
+
92
+ // Cancel the subscription when all event listeners are removed
93
+ handleRemoveListener({emitter, events, subscription});
94
+
95
+ subscription.on('data', (data: unknown) => {
96
+ try {
97
+ return emitter.emit(
98
+ 'invoice_updated',
99
+ rpcAssetInvoiceAsInvoice(data as any),
100
+ );
101
+ } catch (err: any) {
102
+ return emitError([503, err.message]);
103
+ }
104
+ });
105
+
106
+ subscription.on('end', () => emitter.emit('end'));
107
+
108
+ subscription.on('error', (err: any) => {
109
+ // Exit early when the client cancelled the subscription
110
+ if (err?.details === cancelError) {
111
+ return subscription.removeAllListeners();
112
+ }
113
+
114
+ if (isConnectionFailure({err})) {
115
+ return emitError([503, 'FailedToConnectToTapdToSubscribeToInvoices']);
116
+ }
117
+
118
+ if (isPermissionDenied({err})) {
119
+ return emitError([403, 'PermissionDeniedToSubscribeToAssetInvoices']);
120
+ }
121
+
122
+ if (isMethodUnsupported({err})) {
123
+ return emitError([501, 'ExpectedNewerTapdToSubscribeToAssetInvoices']);
124
+ }
125
+
126
+ return emitError([
127
+ 503,
128
+ 'UnexpectedErrorInAssetInvoicesSubscription',
129
+ {err},
130
+ ]);
131
+ });
132
+
133
+ return emitter;
134
+ };
@@ -0,0 +1,126 @@
1
+ import {EventEmitter} from 'node:events';
2
+
3
+ import {emitSubscriptionError} from '../../grpc/index.js';
4
+ import {handleRemoveListener} from '../../grpc/index.js';
5
+ import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
6
+ import {isConnectionFailure} from '../../tapd_requests/index.js';
7
+ import {isMethodUnsupported} from '../../tapd_requests/index.js';
8
+ import {isPermissionDenied} from '../../tapd_requests/index.js';
9
+ import {isTapd} from '../../tapd_requests/index.js';
10
+ import emitAssetPayment from './emit_asset_payment.js';
11
+
12
+ const cancelError = 'Cancelled on client';
13
+ const events = ['confirmed', 'error', 'failed', 'paying'];
14
+ const method = 'subscribePayments';
15
+ const type = 'tapchannel';
16
+
17
+ export type SubscribeToAssetPaymentsArgs = {
18
+ /** Authenticated tapd API Object */
19
+ tapd: AuthenticatedTapd;
20
+ };
21
+
22
+ /** Subscribe to the status of current outgoing asset payments
23
+
24
+ The events are the same as in lightning subscribeToPayments, and each
25
+ event also has the asset amounts of the payment
26
+
27
+ tapd only sends updates of payments that involve an asset
28
+
29
+ Requires `channels:read` permission
30
+
31
+ This method needs tapd v0.8.1 or later
32
+
33
+ {
34
+ tapd: <Authenticated tapd API Object>
35
+ }
36
+
37
+ @throws
38
+ <Error>
39
+
40
+ @returns
41
+ <Subscription EventEmitter Object>
42
+
43
+ @event 'confirmed'
44
+ {
45
+ assets: [{
46
+ amount: <Asset Units Numeric String>
47
+ asset_id: <Asset Id Hex String>
48
+ [group_key]: <Asset Group Key Hex String>
49
+ }]
50
+ confirmed_at: <Payment Confirmed At ISO 8601 Date String>
51
+ ...<lightning Confirmed Payment Object>
52
+ }
53
+
54
+ @event 'failed'
55
+ {
56
+ assets: [<Asset Amount Object>]
57
+ id: <Payment Hash Hex String>
58
+ is_canceled: <Payment Canceled Bool>
59
+ is_insufficient_balance: <Failed Due To Lack of Balance Bool>
60
+ is_invalid_payment: <Failed Due to Payment Rejected At Destination Bool>
61
+ is_pathfinding_timeout: <Failed Due to Pathfinding Timeout Bool>
62
+ is_route_not_found: <Failed Due to Absence of Path Through Graph Bool>
63
+ }
64
+
65
+ @event 'paying'
66
+ {
67
+ assets: [<Asset Amount Object>]
68
+ created_at: <Payment Created At ISO 8601 Date String>
69
+ ...<lightning Pending Payment Object>
70
+ }
71
+ */
72
+ export default ({tapd}: SubscribeToAssetPaymentsArgs) => {
73
+ if (!isTapd({method, tapd, type})) {
74
+ throw new Error('ExpectedAuthenticatedTapdToSubscribeToAssetPayments');
75
+ }
76
+
77
+ const emitter = new EventEmitter();
78
+
79
+ const subscription = tapd[type][method]({
80
+ request: {no_inflight_updates: false},
81
+ });
82
+
83
+ // The error helper only reads `details` to find a client cancel
84
+ const emitError = emitSubscriptionError({emitter, subscription}) as (
85
+ err: unknown,
86
+ ) => void;
87
+
88
+ // Cancel the subscription when all event listeners are removed
89
+ handleRemoveListener({emitter, events, subscription});
90
+
91
+ subscription.on('data', (data: unknown) => {
92
+ return emitAssetPayment({data, emitError, emitter});
93
+ });
94
+
95
+ subscription.on('end', () => emitter.emit('end'));
96
+
97
+ subscription.on('error', (err: any) => {
98
+ // Exit early when the client cancelled the subscription
99
+ if (err?.details === cancelError) {
100
+ return subscription.removeAllListeners();
101
+ }
102
+
103
+ if (isConnectionFailure({err})) {
104
+ return emitError([
105
+ 503,
106
+ 'FailedToConnectToTapdToSubscribeToAssetPayments',
107
+ ]);
108
+ }
109
+
110
+ if (isPermissionDenied({err})) {
111
+ return emitError([403, 'PermissionDeniedToSubscribeToAssetPayments']);
112
+ }
113
+
114
+ if (isMethodUnsupported({err})) {
115
+ return emitError([501, 'ExpectedNewerTapdToSubscribeToAssetPayments']);
116
+ }
117
+
118
+ return emitError([
119
+ 503,
120
+ 'UnexpectedErrorInAssetPaymentsSubscription',
121
+ {err},
122
+ ]);
123
+ });
124
+
125
+ return emitter;
126
+ };
@@ -0,0 +1,132 @@
1
+ import {EventEmitter} from 'node:events';
2
+
3
+ import {emitSubscriptionError} from '../../grpc/index.js';
4
+ import {handleRemoveListener} from '../../grpc/index.js';
5
+ import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
6
+ import {isConnectionFailure} from '../../tapd_requests/index.js';
7
+ import {isMethodUnsupported} from '../../tapd_requests/index.js';
8
+ import {isPermissionDenied} from '../../tapd_requests/index.js';
9
+ import {isTapd} from '../../tapd_requests/index.js';
10
+ import emitAssetPayment from './emit_asset_payment.js';
11
+
12
+ const cancelError = 'Cancelled on client';
13
+ const events = ['confirmed', 'error', 'failed', 'paying'];
14
+ const isHash = (n: unknown) => /^[0-9A-F]{64}$/i.test(String(n));
15
+ const method = 'trackPayment';
16
+ const notInitiatedError = `payment isn't initiated`;
17
+ const type = 'tapchannel';
18
+
19
+ export type SubscribeToPastAssetPaymentArgs = {
20
+ /** Payment Hash Hex String */
21
+ id: string;
22
+ /** Authenticated tapd API Object */
23
+ tapd: AuthenticatedTapd;
24
+ };
25
+
26
+ /** Subscribe to the status of a past asset payment
27
+
28
+ The events are the same as in lightning subscribeToPastPayment, and each
29
+ event also has the asset amounts of the payment
30
+
31
+ tapd only sends updates of a payment that involves an asset
32
+
33
+ Requires `channels:read` permission
34
+
35
+ This method needs tapd v0.8.1 or later
36
+
37
+ {
38
+ id: <Payment Hash Hex String>
39
+ tapd: <Authenticated tapd API Object>
40
+ }
41
+
42
+ @throws
43
+ <Error>
44
+
45
+ @returns
46
+ <Subscription EventEmitter Object>
47
+
48
+ @event 'confirmed'
49
+ {
50
+ assets: [{
51
+ amount: <Asset Units Numeric String>
52
+ asset_id: <Asset Id Hex String>
53
+ [group_key]: <Asset Group Key Hex String>
54
+ }]
55
+ confirmed_at: <Payment Confirmed At ISO 8601 Date String>
56
+ ...<lightning Confirmed Payment Object>
57
+ }
58
+
59
+ @event 'failed'
60
+ {
61
+ assets: [<Asset Amount Object>]
62
+ id: <Payment Hash Hex String>
63
+ is_canceled: <Payment Canceled Bool>
64
+ is_insufficient_balance: <Failed Due To Lack of Balance Bool>
65
+ is_invalid_payment: <Failed Due to Payment Rejected At Destination Bool>
66
+ is_pathfinding_timeout: <Failed Due to Pathfinding Timeout Bool>
67
+ is_route_not_found: <Failed Due to Absence of Path Through Graph Bool>
68
+ }
69
+
70
+ @event 'paying'
71
+ {
72
+ assets: [<Asset Amount Object>]
73
+ created_at: <Payment Created At ISO 8601 Date String>
74
+ ...<lightning Pending Payment Object>
75
+ }
76
+ */
77
+ export default ({id, tapd}: SubscribeToPastAssetPaymentArgs) => {
78
+ if (!isHash(id)) {
79
+ throw new Error('ExpectedPaymentHashToSubscribeToPastAssetPayment');
80
+ }
81
+
82
+ if (!isTapd({method, tapd, type})) {
83
+ throw new Error('ExpectedAuthenticatedTapdToSubscribeToPastAssetPayment');
84
+ }
85
+
86
+ const emitter = new EventEmitter();
87
+
88
+ const subscription = tapd[type][method]({
89
+ request: {no_inflight_updates: false, payment_hash: Buffer.from(id, 'hex')},
90
+ });
91
+
92
+ // The error helper only reads `details` to find a client cancel
93
+ const emitError = emitSubscriptionError({emitter, subscription}) as (
94
+ err: unknown,
95
+ ) => void;
96
+
97
+ // Cancel the subscription when all event listeners are removed
98
+ handleRemoveListener({emitter, events, subscription});
99
+
100
+ subscription.on('data', (data: unknown) => {
101
+ return emitAssetPayment({data, emitError, emitter});
102
+ });
103
+
104
+ subscription.on('end', () => emitter.emit('end'));
105
+
106
+ subscription.on('error', (err: any) => {
107
+ // Exit early when the client cancelled the subscription
108
+ if (err?.details === cancelError) {
109
+ return subscription.removeAllListeners();
110
+ }
111
+
112
+ if (isConnectionFailure({err})) {
113
+ return emitError([503, 'FailedToConnectToTapdToTrackAssetPayment']);
114
+ }
115
+
116
+ if (isPermissionDenied({err})) {
117
+ return emitError([403, 'PermissionDeniedToTrackAssetPayment']);
118
+ }
119
+
120
+ if (isMethodUnsupported({err})) {
121
+ return emitError([501, 'ExpectedNewerTapdToTrackAssetPayment']);
122
+ }
123
+
124
+ if (String(err?.details).includes(notInitiatedError)) {
125
+ return emitError([404, 'SentAssetPaymentNotFound']);
126
+ }
127
+
128
+ return emitError([503, 'UnexpectedErrorTrackingAssetPayment', {err}]);
129
+ });
130
+
131
+ return emitter;
132
+ };
@@ -0,0 +1,153 @@
1
+ import {auto as asyncAuto} from 'async';
2
+ import {returnResult} from 'asyncjs-util';
3
+
4
+ import {isConnectionFailure} from '../../tapd_requests/index.js';
5
+ import {isPermissionDenied} from '../../tapd_requests/index.js';
6
+ import {isTapd} from '../../tapd_requests/index.js';
7
+ import type {AuthenticatedTapdArgs} from '../../typescript/index.js';
8
+ import type {TapdCallback} from '../../typescript/index.js';
9
+ import type {TapdError} from '../../typescript/index.js';
10
+ import type {TapdMethod} from '../../typescript/index.js';
11
+
12
+ const disabledError = 'macaroon authentication disabled';
13
+ const hexAsBase64 = (n: string) => Buffer.from(n, 'hex').toString('base64');
14
+ const {isArray} = Array;
15
+ const isHex = (n: unknown) =>
16
+ typeof n === 'string' && /^([0-9A-F]{2})+$/i.test(n);
17
+ const isPermission = (n: any) => !!n?.action && !!n?.entity;
18
+ const isRootKeyId = (n: unknown) => typeof n === 'string' && /^\d+$/.test(n);
19
+ const method = 'bakeMacaroon';
20
+ const permissionErrors = ['invalid permission', 'unsupported permission'];
21
+ const type = 'default';
22
+
23
+ export type CreateTapdMacaroonArgs = AuthenticatedTapdArgs<{
24
+ /** Allow Permissions That tapd Does Not Know */
25
+ is_external_allowed?: boolean;
26
+ permissions: {
27
+ /** Permission Action String */
28
+ action: string;
29
+ /** Permission Entity String */
30
+ entity: string;
31
+ }[];
32
+ /** Root Key Id Numeric String */
33
+ root_key_id?: string;
34
+ }>;
35
+
36
+ export type CreateTapdMacaroonResult = {
37
+ /** Macaroon Base64 */
38
+ macaroon: string;
39
+ };
40
+
41
+ type Tasks = {
42
+ create: CreateTapdMacaroonResult;
43
+ validate: undefined;
44
+ };
45
+
46
+ /** Create a tapd macaroon with specific permissions
47
+
48
+ tapd adds no caveats. Add caveats to the macaroon after you create it.
49
+
50
+ Use the entity `uri` and an RPC method URI as the action, to give access to
51
+ one RPC method
52
+
53
+ Requires `macaroon:write` permission
54
+
55
+ {
56
+ [is_external_allowed]: <Allow Permissions That tapd Does Not Know Bool>
57
+ permissions: [{
58
+ action: <Permission Action String>
59
+ entity: <Permission Entity String>
60
+ }]
61
+ [root_key_id]: <Root Key Id Numeric String>
62
+ tapd: <Authenticated tapd API Object>
63
+ }
64
+
65
+ @returns via cbk or Promise
66
+ {
67
+ macaroon: <Macaroon Base64 String>
68
+ }
69
+ */
70
+ const createTapdMacaroon: TapdMethod<
71
+ CreateTapdMacaroonArgs,
72
+ CreateTapdMacaroonResult
73
+ > = (
74
+ args: CreateTapdMacaroonArgs,
75
+ cbk?: TapdCallback<CreateTapdMacaroonResult>,
76
+ ) => {
77
+ return new Promise((resolve, reject) => {
78
+ return asyncAuto<Tasks, TapdError>(
79
+ {
80
+ // Check arguments
81
+ validate: cbk => {
82
+ if (!isArray(args.permissions) || !args.permissions.length) {
83
+ return cbk([400, 'ExpectedPermissionsToCreateTapdMacaroon']);
84
+ }
85
+
86
+ if (!args.permissions.every(isPermission)) {
87
+ return cbk([400, 'ExpectedActionAndEntityForTapdPermission']);
88
+ }
89
+
90
+ const rootKeyId = args.root_key_id;
91
+
92
+ if (rootKeyId !== undefined && !isRootKeyId(rootKeyId)) {
93
+ return cbk([400, 'ExpectedNumericRootKeyIdToCreateTapdMacaroon']);
94
+ }
95
+
96
+ if (!isTapd({method, type, tapd: args.tapd})) {
97
+ return cbk([400, 'ExpectedAuthenticatedTapdToCreateTapdMacaroon']);
98
+ }
99
+
100
+ return cbk();
101
+ },
102
+
103
+ // Create the macaroon
104
+ create: [
105
+ 'validate',
106
+ ({}, cbk) => {
107
+ const request = {
108
+ allow_external_permissions: !!args.is_external_allowed,
109
+ permissions: args.permissions.map(n => ({
110
+ action: n.action,
111
+ entity: n.entity,
112
+ })),
113
+ root_key_id: args.root_key_id || '0',
114
+ };
115
+
116
+ return args.tapd[type][method](request, (err: any, res: any) => {
117
+ if (isConnectionFailure({err})) {
118
+ return cbk([503, 'FailedToConnectToTapdToCreateTapdMacaroon']);
119
+ }
120
+
121
+ if (isPermissionDenied({err})) {
122
+ return cbk([403, 'PermissionDeniedToCreateTapdMacaroon']);
123
+ }
124
+
125
+ const details = String(err?.details);
126
+
127
+ if (!!err && permissionErrors.some(n => details.includes(n))) {
128
+ return cbk([400, 'ExpectedKnownPermissionsForTapdMacaroon']);
129
+ }
130
+
131
+ if (!!err && details.includes(disabledError)) {
132
+ return cbk([501, 'MacaroonsAreDisabledInTapd']);
133
+ }
134
+
135
+ if (!!err) {
136
+ return cbk([503, 'UnexpectedErrorCreatingTapdMacaroon', {err}]);
137
+ }
138
+
139
+ if (!res || !isHex(res.macaroon)) {
140
+ return cbk([503, 'ExpectedHexMacaroonInBakeMacaroonResponse']);
141
+ }
142
+
143
+ return cbk(null, {macaroon: hexAsBase64(res.macaroon)});
144
+ });
145
+ },
146
+ ],
147
+ },
148
+ returnResult({reject, resolve, of: 'create'}, cbk),
149
+ );
150
+ });
151
+ };
152
+
153
+ export default createTapdMacaroon;