@kaleidorg/wallet-engine 1.0.0-beta.4 → 1.0.0-beta.41

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 (242) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -10
  3. package/dist/adapters/ArkadeAdapter.d.ts +78 -14
  4. package/dist/adapters/ArkadeAdapter.d.ts.map +1 -1
  5. package/dist/adapters/ArkadeAdapter.js +653 -161
  6. package/dist/adapters/ArkadeAdapter.js.map +1 -1
  7. package/dist/adapters/IProtocolAdapter.d.ts +195 -18
  8. package/dist/adapters/IProtocolAdapter.d.ts.map +1 -1
  9. package/dist/adapters/IProtocolAdapter.js +6 -2
  10. package/dist/adapters/IProtocolAdapter.js.map +1 -1
  11. package/dist/adapters/RgbAdapter.d.ts +70 -27
  12. package/dist/adapters/RgbAdapter.d.ts.map +1 -1
  13. package/dist/adapters/RgbAdapter.js +464 -370
  14. package/dist/adapters/RgbAdapter.js.map +1 -1
  15. package/dist/adapters/SparkAdapter.d.ts +93 -15
  16. package/dist/adapters/SparkAdapter.d.ts.map +1 -1
  17. package/dist/adapters/SparkAdapter.js +833 -168
  18. package/dist/adapters/SparkAdapter.js.map +1 -1
  19. package/dist/adapters/arkade.d.ts +15 -0
  20. package/dist/adapters/arkade.d.ts.map +1 -0
  21. package/dist/adapters/arkade.js +15 -0
  22. package/dist/adapters/arkade.js.map +1 -0
  23. package/dist/adapters/flashnet.d.ts +15 -0
  24. package/dist/adapters/flashnet.d.ts.map +1 -0
  25. package/dist/adapters/flashnet.js +17 -0
  26. package/dist/adapters/flashnet.js.map +1 -0
  27. package/dist/adapters/native.d.ts +17 -0
  28. package/dist/adapters/native.d.ts.map +1 -0
  29. package/dist/adapters/native.js +17 -0
  30. package/dist/adapters/native.js.map +1 -0
  31. package/dist/adapters/rgb.d.ts +11 -0
  32. package/dist/adapters/rgb.d.ts.map +1 -0
  33. package/dist/adapters/rgb.js +11 -0
  34. package/dist/adapters/rgb.js.map +1 -0
  35. package/dist/adapters/spark.d.ts +12 -0
  36. package/dist/adapters/spark.d.ts.map +1 -0
  37. package/dist/adapters/spark.js +14 -0
  38. package/dist/adapters/spark.js.map +1 -0
  39. package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts +53 -19
  40. package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts.map +1 -1
  41. package/dist/adapters/wdk/ArkadeWdkAdapter.js +366 -90
  42. package/dist/adapters/wdk/ArkadeWdkAdapter.js.map +1 -1
  43. package/dist/adapters/wdk/BaseWdkAdapter.d.ts +40 -0
  44. package/dist/adapters/wdk/BaseWdkAdapter.d.ts.map +1 -0
  45. package/dist/adapters/wdk/BaseWdkAdapter.js +71 -0
  46. package/dist/adapters/wdk/BaseWdkAdapter.js.map +1 -0
  47. package/dist/adapters/wdk/LiquidWdkAdapter.d.ts +6 -13
  48. package/dist/adapters/wdk/LiquidWdkAdapter.d.ts.map +1 -1
  49. package/dist/adapters/wdk/LiquidWdkAdapter.js +14 -32
  50. package/dist/adapters/wdk/LiquidWdkAdapter.js.map +1 -1
  51. package/dist/adapters/wdk/RgbCore.d.ts +64 -0
  52. package/dist/adapters/wdk/RgbCore.d.ts.map +1 -0
  53. package/dist/adapters/wdk/RgbCore.js +111 -0
  54. package/dist/adapters/wdk/RgbCore.js.map +1 -0
  55. package/dist/adapters/wdk/RgbLibWasmAdapter.d.ts +277 -0
  56. package/dist/adapters/wdk/RgbLibWasmAdapter.d.ts.map +1 -0
  57. package/dist/adapters/wdk/RgbLibWasmAdapter.js +728 -0
  58. package/dist/adapters/wdk/RgbLibWasmAdapter.js.map +1 -0
  59. package/dist/adapters/wdk/RgbLibWdkAdapter.d.ts +104 -0
  60. package/dist/adapters/wdk/RgbLibWdkAdapter.d.ts.map +1 -0
  61. package/dist/adapters/wdk/RgbLibWdkAdapter.js +249 -0
  62. package/dist/adapters/wdk/RgbLibWdkAdapter.js.map +1 -0
  63. package/dist/adapters/wdk/RlnWdkAdapter.d.ts +27 -14
  64. package/dist/adapters/wdk/RlnWdkAdapter.d.ts.map +1 -1
  65. package/dist/adapters/wdk/RlnWdkAdapter.js +111 -87
  66. package/dist/adapters/wdk/RlnWdkAdapter.js.map +1 -1
  67. package/dist/adapters/wdk/SparkWdkAdapter.d.ts +74 -41
  68. package/dist/adapters/wdk/SparkWdkAdapter.d.ts.map +1 -1
  69. package/dist/adapters/wdk/SparkWdkAdapter.js +706 -249
  70. package/dist/adapters/wdk/SparkWdkAdapter.js.map +1 -1
  71. package/dist/adapters/wdk/index.d.ts +17 -0
  72. package/dist/adapters/wdk/index.d.ts.map +1 -0
  73. package/dist/adapters/wdk/index.js +17 -0
  74. package/dist/adapters/wdk/index.js.map +1 -0
  75. package/dist/adapters/wdk/wasm-rgb.d.ts +15 -0
  76. package/dist/adapters/wdk/wasm-rgb.d.ts.map +1 -0
  77. package/dist/adapters/wdk/wasm-rgb.js +15 -0
  78. package/dist/adapters/wdk/wasm-rgb.js.map +1 -0
  79. package/dist/capabilities/index.d.ts +1 -1
  80. package/dist/capabilities/index.d.ts.map +1 -1
  81. package/dist/capabilities/index.js +17 -2
  82. package/dist/capabilities/index.js.map +1 -1
  83. package/dist/capabilities/operations.d.ts +22 -0
  84. package/dist/capabilities/operations.d.ts.map +1 -0
  85. package/dist/capabilities/operations.js +62 -0
  86. package/dist/capabilities/operations.js.map +1 -0
  87. package/dist/constants.d.ts +8 -0
  88. package/dist/constants.d.ts.map +1 -0
  89. package/dist/constants.js +8 -0
  90. package/dist/constants.js.map +1 -0
  91. package/dist/disclosure/index.d.ts +1 -1
  92. package/dist/disclosure/index.js +1 -1
  93. package/dist/disclosure/index.js.map +1 -1
  94. package/dist/format.d.ts +11 -0
  95. package/dist/format.d.ts.map +1 -0
  96. package/dist/format.js +10 -0
  97. package/dist/format.js.map +1 -0
  98. package/dist/index.d.ts +21 -31
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +32 -32
  101. package/dist/index.js.map +1 -1
  102. package/dist/lib/arkade-client-manager.d.ts +64 -24
  103. package/dist/lib/arkade-client-manager.d.ts.map +1 -1
  104. package/dist/lib/arkade-client-manager.js +240 -65
  105. package/dist/lib/arkade-client-manager.js.map +1 -1
  106. package/dist/lib/arkade-converters.d.ts +39 -0
  107. package/dist/lib/arkade-converters.d.ts.map +1 -0
  108. package/dist/lib/arkade-converters.js +148 -0
  109. package/dist/lib/arkade-converters.js.map +1 -0
  110. package/dist/lib/arkade-helpers.d.ts +110 -0
  111. package/dist/lib/arkade-helpers.d.ts.map +1 -0
  112. package/dist/lib/arkade-helpers.js +227 -0
  113. package/dist/lib/arkade-helpers.js.map +1 -0
  114. package/dist/lib/arkade-swaps-client-manager.d.ts +55 -0
  115. package/dist/lib/arkade-swaps-client-manager.d.ts.map +1 -0
  116. package/dist/lib/arkade-swaps-client-manager.js +127 -0
  117. package/dist/lib/arkade-swaps-client-manager.js.map +1 -0
  118. package/dist/lib/arkade-vtxo-lifecycle.d.ts +116 -0
  119. package/dist/lib/arkade-vtxo-lifecycle.d.ts.map +1 -0
  120. package/dist/lib/arkade-vtxo-lifecycle.js +184 -0
  121. package/dist/lib/arkade-vtxo-lifecycle.js.map +1 -0
  122. package/dist/lib/flashnet-client-manager.d.ts +26 -9
  123. package/dist/lib/flashnet-client-manager.d.ts.map +1 -1
  124. package/dist/lib/flashnet-client-manager.js +97 -13
  125. package/dist/lib/flashnet-client-manager.js.map +1 -1
  126. package/dist/lib/kaleido-client-manager.d.ts +38 -3
  127. package/dist/lib/kaleido-client-manager.d.ts.map +1 -1
  128. package/dist/lib/kaleido-client-manager.js +79 -10
  129. package/dist/lib/kaleido-client-manager.js.map +1 -1
  130. package/dist/lib/ln-message-sign.d.ts +20 -0
  131. package/dist/lib/ln-message-sign.d.ts.map +1 -0
  132. package/dist/lib/ln-message-sign.js +90 -0
  133. package/dist/lib/ln-message-sign.js.map +1 -0
  134. package/dist/lib/log.d.ts +15 -0
  135. package/dist/lib/log.d.ts.map +1 -0
  136. package/dist/lib/log.js +16 -0
  137. package/dist/lib/log.js.map +1 -0
  138. package/dist/lib/orchestra-client.d.ts +149 -0
  139. package/dist/lib/orchestra-client.d.ts.map +1 -0
  140. package/dist/lib/orchestra-client.js +178 -0
  141. package/dist/lib/orchestra-client.js.map +1 -0
  142. package/dist/lib/psbt-signer.d.ts +60 -0
  143. package/dist/lib/psbt-signer.d.ts.map +1 -0
  144. package/dist/lib/psbt-signer.js +161 -0
  145. package/dist/lib/psbt-signer.js.map +1 -0
  146. package/dist/lib/rgb-converters.d.ts +62 -0
  147. package/dist/lib/rgb-converters.d.ts.map +1 -0
  148. package/dist/lib/rgb-converters.js +179 -0
  149. package/dist/lib/rgb-converters.js.map +1 -0
  150. package/dist/lib/rgb-fee-policy.d.ts +41 -0
  151. package/dist/lib/rgb-fee-policy.d.ts.map +1 -0
  152. package/dist/lib/rgb-fee-policy.js +52 -0
  153. package/dist/lib/rgb-fee-policy.js.map +1 -0
  154. package/dist/lib/rgb-helpers.d.ts +54 -0
  155. package/dist/lib/rgb-helpers.d.ts.map +1 -0
  156. package/dist/lib/rgb-helpers.js +89 -0
  157. package/dist/lib/rgb-helpers.js.map +1 -0
  158. package/dist/lib/spark-activity.d.ts +5 -0
  159. package/dist/lib/spark-activity.d.ts.map +1 -0
  160. package/dist/lib/spark-activity.js +11 -0
  161. package/dist/lib/spark-activity.js.map +1 -0
  162. package/dist/lib/spark-balance-cache.d.ts +58 -0
  163. package/dist/lib/spark-balance-cache.d.ts.map +1 -0
  164. package/dist/lib/spark-balance-cache.js +86 -0
  165. package/dist/lib/spark-balance-cache.js.map +1 -0
  166. package/dist/lib/spark-client-manager.d.ts +64 -10
  167. package/dist/lib/spark-client-manager.d.ts.map +1 -1
  168. package/dist/lib/spark-client-manager.js +191 -35
  169. package/dist/lib/spark-client-manager.js.map +1 -1
  170. package/dist/lib/spark-converters.d.ts +64 -0
  171. package/dist/lib/spark-converters.d.ts.map +1 -0
  172. package/dist/lib/spark-converters.js +242 -0
  173. package/dist/lib/spark-converters.js.map +1 -0
  174. package/dist/lib/spark-helpers.d.ts +72 -0
  175. package/dist/lib/spark-helpers.d.ts.map +1 -0
  176. package/dist/lib/spark-helpers.js +151 -0
  177. package/dist/lib/spark-helpers.js.map +1 -0
  178. package/dist/lib/spark-sent-token-records.d.ts +43 -0
  179. package/dist/lib/spark-sent-token-records.d.ts.map +1 -0
  180. package/dist/lib/spark-sent-token-records.js +105 -0
  181. package/dist/lib/spark-sent-token-records.js.map +1 -0
  182. package/dist/lib/wallet-seed.d.ts +31 -0
  183. package/dist/lib/wallet-seed.d.ts.map +1 -0
  184. package/dist/lib/wallet-seed.js +58 -0
  185. package/dist/lib/wallet-seed.js.map +1 -0
  186. package/dist/lib/zbase32.d.ts +3 -0
  187. package/dist/lib/zbase32.d.ts.map +1 -0
  188. package/dist/lib/zbase32.js +64 -0
  189. package/dist/lib/zbase32.js.map +1 -0
  190. package/dist/manager/ProtocolManager.d.ts +54 -3
  191. package/dist/manager/ProtocolManager.d.ts.map +1 -1
  192. package/dist/manager/ProtocolManager.js +118 -41
  193. package/dist/manager/ProtocolManager.js.map +1 -1
  194. package/dist/ports/index.d.ts +20 -0
  195. package/dist/ports/index.d.ts.map +1 -1
  196. package/dist/ports/index.js +23 -1
  197. package/dist/ports/index.js.map +1 -1
  198. package/dist/receive/unifiedReceive.d.ts +12 -0
  199. package/dist/receive/unifiedReceive.d.ts.map +1 -1
  200. package/dist/receive/unifiedReceive.js +35 -4
  201. package/dist/receive/unifiedReceive.js.map +1 -1
  202. package/dist/registry/createWdkRegistry.d.ts +10 -2
  203. package/dist/registry/createWdkRegistry.d.ts.map +1 -1
  204. package/dist/registry/createWdkRegistry.js +14 -7
  205. package/dist/registry/createWdkRegistry.js.map +1 -1
  206. package/dist/router/destination.d.ts +2 -2
  207. package/dist/router/destination.d.ts.map +1 -1
  208. package/dist/router/destination.js +34 -11
  209. package/dist/router/destination.js.map +1 -1
  210. package/dist/router/index.d.ts +39 -3
  211. package/dist/router/index.d.ts.map +1 -1
  212. package/dist/router/index.js +113 -4
  213. package/dist/router/index.js.map +1 -1
  214. package/dist/router/preference.d.ts +53 -0
  215. package/dist/router/preference.d.ts.map +1 -0
  216. package/dist/router/preference.js +81 -0
  217. package/dist/router/preference.js.map +1 -0
  218. package/dist/swap/KaleidoswapSwap.d.ts +1 -1
  219. package/dist/swap/KaleidoswapSwap.d.ts.map +1 -1
  220. package/dist/swap/KaleidoswapSwap.js +37 -20
  221. package/dist/swap/KaleidoswapSwap.js.map +1 -1
  222. package/dist/swap/index.d.ts +8 -0
  223. package/dist/swap/index.d.ts.map +1 -0
  224. package/dist/swap/index.js +8 -0
  225. package/dist/swap/index.js.map +1 -0
  226. package/dist/types/arkade.d.ts +1 -1
  227. package/dist/types/base.d.ts +35 -25
  228. package/dist/types/base.d.ts.map +1 -1
  229. package/dist/types/base.js +28 -2
  230. package/dist/types/base.js.map +1 -1
  231. package/dist/types/cross-l2.d.ts +1 -1
  232. package/dist/types/flashnet.d.ts +20 -0
  233. package/dist/types/flashnet.d.ts.map +1 -1
  234. package/dist/types/flashnet.js +34 -6
  235. package/dist/types/flashnet.js.map +1 -1
  236. package/dist/types/rgb.d.ts +18 -4
  237. package/dist/types/rgb.d.ts.map +1 -1
  238. package/dist/types/spark.d.ts +1 -1
  239. package/dist/utils.d.ts +1 -1
  240. package/dist/utils.js +2 -2
  241. package/dist/utils.js.map +1 -1
  242. package/package.json +68 -14
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAIhC,cAAc,kBAAkB,CAAA;AAEhC,oBAAoB;AACpB,OAAO,EAAgF,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAEnJ,qDAAqD;AACrD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAA6B,MAAM,gBAAgB,CAAA;AAKrH,8CAA8C;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,wBAAwB;AACxB,OAAO,EAAE,eAAe,EAA2B,MAAM,gCAAgC,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAA4B,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAClH,OAAO,EAAE,aAAa,EAAyB,MAAM,8BAA8B,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAA4B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAA2B,MAAM,8BAA8B,CAAA;AAEzF,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAwB,MAAM,6BAA6B,CAAA;AAEnG,oDAAoD;AACpD,OAAO,EACL,mBAAmB,GAIpB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,mBAAmB,GAGpB,MAAM,sBAAsB,CAAA;AAE7B,+BAA+B;AAC/B,OAAO,EACL,eAAe,GAIhB,MAAM,wBAAwB,CAAA;AAE/B,0EAA0E;AAC1E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAEvB,MAAM,0BAA0B,CAAA;AAEjC,iCAAiC;AACjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,QAAQ,GAKT,MAAM,cAAc,CAAA;AAErB,UAAU;AACV,OAAO,EAAE,eAAe,EAA8B,MAAM,2BAA2B,CAAA;AAEvF,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAgC,MAAM,6BAA6B,CAAA;AAC/F,OAAO,EAAE,oBAAoB,EAA4B,MAAM,8BAA8B,CAAA;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAIhC,cAAc,kBAAkB,CAAA;AAEhC,oBAAoB;AACpB,OAAO,EAAqG,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAExK,qDAAqD;AACrD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAA6B,MAAM,gBAAgB,CAAA;AAErH,yEAAyE;AACzE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,yBAAyB,EAA2B,MAAM,2BAA2B,CAAA;AAI1I,8EAA8E;AAC9E,sFAAsF;AACtF,gGAAgG;AAChG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5E,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,4EAA4E;AAC5E,gFAAgF;AAChF,4BAA4B;AAC5B,6EAA6E;AAC7E,+EAA+E;AAC/E,wEAAwE;AAExE,oDAAoD;AACpD,OAAO,EACL,mBAAmB,GAMpB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,mBAAmB,GAGpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,GAGX,MAAM,qBAAqB,CAAA;AAE5B,0EAA0E;AAC1E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,GAEjB,MAAM,0BAA0B,CAAA;AAEjC,iCAAiC;AACjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,QAAQ,GAKT,MAAM,cAAc,CAAA;AAErB,yEAAyE;AACzE,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAC7E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,EAC9B,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,GAS/B,MAAM,6BAA6B,CAAA;AAEpC,UAAU;AACV,OAAO,EAAE,eAAe,EAA8B,MAAM,2BAA2B,CAAA;AAEvF,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA"}
@@ -1,46 +1,86 @@
1
1
  /**
2
2
  * Arkade Client Manager
3
- * Manages the lifecycle of an Arkade wallet (@arkade-os/sdk).
4
- * Platform-agnostic: storage/providers are injected by consumers.
5
- * BIP86 key derivation via @scure/bip39 + @scure/bip32.
3
+ *
4
+ * Manages the lifecycle of an Arkade wallet (`@arkade-os/sdk` v0.4.x).
5
+ * The SDK is pure TypeScript no WASM, no dynamic import() restrictions —
6
+ * so it runs directly inside an MV3 service worker.
7
+ *
8
+ * Platform-agnostic: storage repositories and network providers are injected
9
+ * by consumers via `setPlatformProviders()`. The extension supplies the SDK's
10
+ * IndexedDB repositories (the default when a browser host provides none);
11
+ * React Native injects AsyncStorage-backed repositories. No `chrome.*` /
12
+ * platform globals are referenced here.
13
+ *
14
+ * Wallet-secret handling: new wallets use an nsec root secret. A 64-char hex
15
+ * private key and BIP39 mnemonics (BIP86 Taproot derivation) are also accepted
16
+ * so developer/test imports behave predictably. Deriving nsec-rooted keys
17
+ * directly (rather than via BIP39 `mnemonicToSeedSync`) avoids the
18
+ * "Invalid mnemonic" failure mode nsec-rooted wallets otherwise hit.
6
19
  */
7
- import type { ArkadeConfig } from '../types/arkade';
8
- type ArkadeWallet = any;
20
+ import type { ArkadeConfig } from "../types/arkade.js";
21
+ import { Wallet, VtxoManager } from "@arkade-os/sdk";
22
+ import type { IncomingFunds } from "@arkade-os/sdk";
9
23
  /**
10
- * Platform-specific providers injected by consumers.
24
+ * Platform-specific providers injected by consumers. When a factory is absent
25
+ * the manager falls back to the SDK's browser-native implementation
26
+ * (IndexedDB repositories, `RestDelegatorProvider`), which is correct for the
27
+ * extension. Non-browser hosts (React Native) must inject every provider they
28
+ * rely on.
11
29
  */
12
30
  export interface ArkadePlatformProviders {
13
- createArkProvider?: () => any;
14
- createIndexerProvider?: () => any;
15
- createWalletRepository?: () => any;
16
- createContractRepository?: () => any;
17
- }
18
- /**
19
- * SDK factory injected by consumers.
20
- * Consumers must call `setArkadeSdkFactory()` before `initialize()`.
21
- */
22
- export interface ArkadeSdkFactory {
23
- createWallet: (config: any) => Promise<any>;
24
- createIdentity: (privateKeyHex: string) => any;
31
+ createWalletRepository?: (dbName: string) => unknown;
32
+ createContractRepository?: (dbName: string) => unknown;
33
+ createDelegatorProvider?: (url: string) => unknown;
34
+ createArkProvider?: () => unknown;
35
+ createIndexerProvider?: () => unknown;
25
36
  }
26
37
  declare class ArkadeClientManager {
27
38
  private wallet;
39
+ private _vtxoManager;
28
40
  private config;
41
+ /** Serializes concurrent initialize() calls */
29
42
  private _initPromise;
43
+ /** Config for the in-flight _initPromise (used for concurrent-init guard) */
44
+ private _pendingConfig;
45
+ /** Cleanup function returned by wallet.notifyIncomingFunds() */
46
+ private _stopIncomingFunds;
47
+ /** Guards against duplicate startIncomingFundsListener() calls */
48
+ private _listenerStarted;
49
+ /** Platform-injected providers (repositories, delegator, network) */
30
50
  private platformProviders;
31
- private sdkFactory;
51
+ /** Inject platform-specific providers before calling initialize(). */
32
52
  setPlatformProviders(providers: ArkadePlatformProviders): void;
33
53
  /**
34
- * Set the SDK factory before calling initialize().
35
- * This avoids dynamic import() which breaks in some bundlers.
54
+ * Initialize the Arkade wallet.
55
+ * Concurrent calls share the same in-flight promise to prevent races.
56
+ * Throws if called while already initializing with a different identity or
57
+ * network — the caller must call dispose() first.
36
58
  */
37
- setSdkFactory(factory: ArkadeSdkFactory): void;
38
59
  initialize(config: ArkadeConfig): Promise<void>;
39
60
  private _doInitialize;
40
- disconnect(): Promise<void>;
61
+ private buildDbName;
62
+ refreshVtxoState(): Promise<void>;
63
+ /**
64
+ * Return the active wallet instance.
65
+ * Throws if not initialized.
66
+ */
67
+ getWallet(): Wallet;
68
+ /**
69
+ * Return the VtxoManager for VTXO lifecycle operations.
70
+ * Throws if not initialized.
71
+ */
72
+ getVtxoManager(): VtxoManager;
41
73
  isInitialized(): boolean;
42
- getWallet(): ArkadeWallet;
43
74
  getConfig(): ArkadeConfig | null;
75
+ disconnect(): Promise<void>;
76
+ reset(): void;
77
+ /**
78
+ * Start listening for incoming VTXOs and boarding UTXOs.
79
+ * @param onIncoming Callback fired per notification; receives the raw SDK payload.
80
+ * @returns Stop function (also called automatically on disconnect/reset)
81
+ */
82
+ startIncomingFundsListener(onIncoming: (notification: IncomingFunds) => void): void;
83
+ stopIncomingFundsListener(): void;
44
84
  }
45
85
  export declare const arkadeClientManager: ArkadeClientManager;
46
86
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"arkade-client-manager.d.ts","sourceRoot":"","sources":["../../src/lib/arkade-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAInD,KAAK,YAAY,GAAG,GAAG,CAAA;AAEvB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,CAAA;IACjC,sBAAsB,CAAC,EAAE,MAAM,GAAG,CAAA;IAClC,wBAAwB,CAAC,EAAE,MAAM,GAAG,CAAA;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3C,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,GAAG,CAAA;CAC/C;AAgBD,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,UAAU,CAAgC;IAElD,oBAAoB,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IAI9D;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI9C,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YASjC,aAAa;IAkErB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,aAAa,IAAI,OAAO;IAIxB,SAAS,IAAI,YAAY;IAOzB,SAAS,IAAI,YAAY,GAAG,IAAI;CAGjC;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAA"}
1
+ {"version":3,"file":"arkade-client-manager.d.ts","sourceRoot":"","sources":["../../src/lib/arkade-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD,OAAO,EACL,MAAM,EAIN,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAMlE;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;CACvC;AAoDD,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,MAAM,CAA6B;IAC3C,+CAA+C;IAC/C,OAAO,CAAC,YAAY,CAA8B;IAClD,6EAA6E;IAC7E,OAAO,CAAC,cAAc,CAA6B;IACnD,gEAAgE;IAChE,OAAO,CAAC,kBAAkB,CAA6B;IACvD,kEAAkE;IAClE,OAAO,CAAC,gBAAgB,CAAS;IACjC,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAA+B;IAExD,sEAAsE;IACtE,oBAAoB,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IAI9D;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YA0BjC,aAAa;YAsEb,WAAW;IASnB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAavC;;;OAGG;IACH,SAAS,IAAI,MAAM;IAOnB;;;OAGG;IACH,cAAc,IAAI,WAAW;IAO7B,aAAa,IAAI,OAAO;IAIxB,SAAS,IAAI,YAAY,GAAG,IAAI;IAI1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC,KAAK,IAAI,IAAI;IAiBb;;;;OAIG;IACH,0BAA0B,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAgCnF,yBAAyB,IAAI,IAAI;CAYlC;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
@@ -1,121 +1,296 @@
1
1
  /**
2
2
  * Arkade Client Manager
3
- * Manages the lifecycle of an Arkade wallet (@arkade-os/sdk).
4
- * Platform-agnostic: storage/providers are injected by consumers.
5
- * BIP86 key derivation via @scure/bip39 + @scure/bip32.
3
+ *
4
+ * Manages the lifecycle of an Arkade wallet (`@arkade-os/sdk` v0.4.x).
5
+ * The SDK is pure TypeScript no WASM, no dynamic import() restrictions —
6
+ * so it runs directly inside an MV3 service worker.
7
+ *
8
+ * Platform-agnostic: storage repositories and network providers are injected
9
+ * by consumers via `setPlatformProviders()`. The extension supplies the SDK's
10
+ * IndexedDB repositories (the default when a browser host provides none);
11
+ * React Native injects AsyncStorage-backed repositories. No `chrome.*` /
12
+ * platform globals are referenced here.
13
+ *
14
+ * Wallet-secret handling: new wallets use an nsec root secret. A 64-char hex
15
+ * private key and BIP39 mnemonics (BIP86 Taproot derivation) are also accepted
16
+ * so developer/test imports behave predictably. Deriving nsec-rooted keys
17
+ * directly (rather than via BIP39 `mnemonicToSeedSync`) avoids the
18
+ * "Invalid mnemonic" failure mode nsec-rooted wallets otherwise hit.
6
19
  */
7
- import { mnemonicToSeedSync } from '@scure/bip39';
8
- import { HDKey } from '@scure/bip32';
9
- function derivePrivateKeyFromMnemonic(mnemonic, isMainnet) {
10
- const seed = mnemonicToSeedSync(mnemonic);
20
+ import { DEFAULT_VTXO_THRESHOLD_SECONDS } from "./arkade-vtxo-lifecycle.js";
21
+ import { log } from "./log.js";
22
+ import { mnemonicToSeedSync } from "@scure/bip39";
23
+ import { HDKey } from "@scure/bip32";
24
+ import { bech32 } from "@scure/base";
25
+ import { bytesToHex } from "@noble/hashes/utils.js";
26
+ import { Wallet, SingleKey, IndexedDBWalletRepository, IndexedDBContractRepository, RestDelegatorProvider, } from "@arkade-os/sdk";
27
+ // ---------------------------------------------------------------------------
28
+ // Wallet-secret helpers
29
+ // ---------------------------------------------------------------------------
30
+ /** Decode an `nsec1…` bech32 secret into a 32-byte private key hex, or null. */
31
+ function nsecToPrivateKeyHex(input) {
32
+ try {
33
+ // nsec is plain bech32 (not bech32m) over the 32-byte secret. Use a
34
+ // generous length limit — the default 90 is enough but we future-proof.
35
+ const decoded = bech32.decode(input, 1023);
36
+ if (decoded.prefix !== "nsec")
37
+ return null;
38
+ const data = bech32.fromWords(decoded.words);
39
+ if (data.length !== 32)
40
+ return null;
41
+ return bytesToHex(Uint8Array.from(data));
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ /**
48
+ * Resolve a wallet secret to the 32-byte private key hex the Arkade identity
49
+ * needs. Accepts (in order): an `nsec1…` root secret, a 64-char hex private
50
+ * key, or a BIP39 mnemonic (BIP86 Taproot `m/86'/{coinType}'/0'/0/0`).
51
+ */
52
+ function resolveArkadePrivateKeyHex(walletSecret, isMainnet) {
53
+ const trimmed = walletSecret.trim();
54
+ if (trimmed.startsWith("nsec1")) {
55
+ const hex = nsecToPrivateKeyHex(trimmed);
56
+ if (hex)
57
+ return hex;
58
+ }
59
+ if (/^[0-9a-f]{64}$/i.test(trimmed)) {
60
+ return trimmed.toLowerCase();
61
+ }
62
+ const seed = mnemonicToSeedSync(trimmed);
11
63
  const root = HDKey.fromMasterSeed(seed);
12
64
  const coinType = isMainnet ? 0 : 1;
13
65
  const child = root.derive(`m/86'/${coinType}'/0'/0/0`);
14
66
  if (!child.privateKey) {
15
- throw new Error('Failed to derive private key from mnemonic');
67
+ throw new Error("Failed to derive private key from wallet secret");
16
68
  }
17
- return Array.from(child.privateKey).map(b => b.toString(16).padStart(2, '0')).join('');
69
+ return bytesToHex(child.privateKey);
18
70
  }
71
+ // ---------------------------------------------------------------------------
72
+ // ArkadeClientManager
73
+ // ---------------------------------------------------------------------------
19
74
  class ArkadeClientManager {
20
75
  constructor() {
21
76
  this.wallet = null;
77
+ this._vtxoManager = null;
22
78
  this.config = null;
79
+ /** Serializes concurrent initialize() calls */
23
80
  this._initPromise = null;
81
+ /** Config for the in-flight _initPromise (used for concurrent-init guard) */
82
+ this._pendingConfig = null;
83
+ /** Cleanup function returned by wallet.notifyIncomingFunds() */
84
+ this._stopIncomingFunds = null;
85
+ /** Guards against duplicate startIncomingFundsListener() calls */
86
+ this._listenerStarted = false;
87
+ /** Platform-injected providers (repositories, delegator, network) */
24
88
  this.platformProviders = {};
25
- this.sdkFactory = null;
26
89
  }
90
+ /** Inject platform-specific providers before calling initialize(). */
27
91
  setPlatformProviders(providers) {
28
92
  this.platformProviders = providers;
29
93
  }
30
94
  /**
31
- * Set the SDK factory before calling initialize().
32
- * This avoids dynamic import() which breaks in some bundlers.
95
+ * Initialize the Arkade wallet.
96
+ * Concurrent calls share the same in-flight promise to prevent races.
97
+ * Throws if called while already initializing with a different identity or
98
+ * network — the caller must call dispose() first.
33
99
  */
34
- setSdkFactory(factory) {
35
- this.sdkFactory = factory;
36
- }
37
100
  initialize(config) {
38
- if (this._initPromise)
101
+ if (this._initPromise) {
102
+ if (this._pendingConfig?.network !== config.network ||
103
+ this._pendingConfig?.mnemonic !== config.mnemonic ||
104
+ this._pendingConfig?.arkServerUrl !== config.arkServerUrl ||
105
+ this._pendingConfig?.delegatorUrl !== config.delegatorUrl ||
106
+ this._pendingConfig?.delegationEnabled !== config.delegationEnabled ||
107
+ this._pendingConfig?.vtxoThresholdSeconds !== config.vtxoThresholdSeconds) {
108
+ return Promise.reject(new Error("Arkade client is already initializing with a different config. Call dispose() first."));
109
+ }
39
110
  return this._initPromise;
111
+ }
112
+ this._pendingConfig = config;
40
113
  this._initPromise = this._doInitialize(config).finally(() => {
41
114
  this._initPromise = null;
115
+ this._pendingConfig = null;
42
116
  });
43
117
  return this._initPromise;
44
118
  }
45
119
  async _doInitialize(config) {
46
120
  if (this.wallet) {
47
- console.warn('[ArkadeClientManager] Wallet already initialized, re-initializing...');
121
+ log.warn("[ArkadeClientManager] Wallet already initialized, re-initializing...");
48
122
  await this.disconnect();
49
123
  }
124
+ this.config = config;
50
125
  try {
51
- const isMainnet = config.network === 'mainnet';
52
- const privateKeyHex = derivePrivateKeyFromMnemonic(config.mnemonic, isMainnet);
53
- const arkServerUrl = config.arkServerUrl;
54
- const walletConfig = {
55
- arkServerUrl,
56
- };
57
- // Only pass esploraUrl if explicitly configured (SDK defaults to mempool.space)
58
- if (config.esploraUrl) {
59
- walletConfig.esploraUrl = config.esploraUrl;
60
- }
61
- // Storage repositories (IndexedDB for extension, AsyncStorage for RN)
62
- const storage = {};
63
- if (this.platformProviders.createWalletRepository) {
64
- storage.walletRepository = this.platformProviders.createWalletRepository();
65
- }
66
- if (this.platformProviders.createContractRepository) {
67
- storage.contractRepository = this.platformProviders.createContractRepository();
68
- }
69
- if (Object.keys(storage).length > 0) {
70
- walletConfig.storage = storage;
71
- }
72
- // Settlement config (VTXO lifecycle)
73
- walletConfig.settlementConfig = {
74
- vtxoThreshold: config.vtxoThresholdSeconds ?? 259200, // 3 days default
126
+ const isMainnet = config.network === "mainnet";
127
+ const privKeyHex = resolveArkadePrivateKeyHex(config.mnemonic, isMainnet);
128
+ const identity = SingleKey.fromHex(privKeyHex);
129
+ const dbName = await this.buildDbName(config, identity);
130
+ const vtxoThreshold = config.vtxoThresholdSeconds ?? DEFAULT_VTXO_THRESHOLD_SECONDS;
131
+ const settlementConfig = {
132
+ vtxoThreshold,
75
133
  boardingUtxoSweep: true,
76
134
  pollIntervalMs: 60000,
77
135
  };
78
- // Platform-specific providers
79
- if (this.platformProviders.createArkProvider) {
80
- walletConfig.arkProvider = this.platformProviders.createArkProvider();
81
- }
82
- if (this.platformProviders.createIndexerProvider) {
83
- walletConfig.indexerProvider = this.platformProviders.createIndexerProvider();
84
- }
85
- if (this.sdkFactory) {
86
- walletConfig.identity = this.sdkFactory.createIdentity(privateKeyHex);
87
- this.wallet = await this.sdkFactory.createWallet(walletConfig);
88
- }
89
- else {
90
- const { Wallet, SingleKey } = await import('@arkade-os/sdk');
91
- walletConfig.identity = SingleKey.fromHex(privateKeyHex);
92
- this.wallet = await Wallet.create(walletConfig);
136
+ const walletConfig = {
137
+ identity,
138
+ arkServerUrl: config.arkServerUrl,
139
+ esploraUrl: config.esploraUrl,
140
+ storage: {
141
+ walletRepository: (this.platformProviders.createWalletRepository?.(dbName) ??
142
+ new IndexedDBWalletRepository(dbName)),
143
+ contractRepository: (this.platformProviders.createContractRepository?.(dbName) ??
144
+ new IndexedDBContractRepository(dbName)),
145
+ },
146
+ settlementConfig,
147
+ };
148
+ // Wire delegation provider if configured.
149
+ if (config.delegatorUrl && config.delegationEnabled) {
150
+ walletConfig.delegatorProvider = (this.platformProviders.createDelegatorProvider?.(config.delegatorUrl) ?? new RestDelegatorProvider(config.delegatorUrl));
151
+ log.info("[ArkadeClientManager] Delegation provider configured:", config.delegatorUrl);
93
152
  }
94
- this.config = config;
95
- console.log('[ArkadeClientManager] Arkade wallet initialized, network:', config.network || 'signet');
153
+ this.wallet = await Wallet.create(walletConfig);
154
+ // Reuse the wallet's own VtxoManager rather than creating a second one.
155
+ // Wallet.create() already initialises an internal VtxoManager with the
156
+ // same settlementConfig; constructing another would register a duplicate
157
+ // contract-event subscription and a second boarding-UTXO poll loop.
158
+ this._vtxoManager = await this.wallet.getVtxoManager();
159
+ await this.refreshVtxoState();
160
+ log.info("[ArkadeClientManager] Arkade wallet initialized successfully (vtxoThreshold=%ds)", vtxoThreshold);
96
161
  }
97
162
  catch (error) {
98
163
  this.wallet = null;
164
+ this._vtxoManager = null;
99
165
  const msg = error instanceof Error ? error.message : String(error);
100
- throw new Error(`Failed to initialize Arkade wallet: ${msg}`);
166
+ throw Object.assign(new Error(`Failed to initialize Arkade wallet: ${msg}`), {
167
+ cause: error,
168
+ });
101
169
  }
102
170
  }
103
- async disconnect() {
104
- this.wallet = null;
105
- this.config = null;
171
+ async buildDbName(config, identity) {
172
+ const pubKey = await identity.xOnlyPublicKey();
173
+ const pubKeyHex = bytesToHex(pubKey);
174
+ return `arkade-wallet-${config.network}-${pubKeyHex.slice(0, 16)}`;
106
175
  }
107
- isInitialized() {
108
- return this.wallet !== null;
176
+ async refreshVtxoState() {
177
+ if (!this.wallet) {
178
+ return;
179
+ }
180
+ try {
181
+ const contractManager = await this.wallet.getContractManager();
182
+ await contractManager.refreshVtxos();
183
+ }
184
+ catch (error) {
185
+ log.warn("[ArkadeClientManager] Failed to refresh VTXO state:", error);
186
+ }
109
187
  }
188
+ /**
189
+ * Return the active wallet instance.
190
+ * Throws if not initialized.
191
+ */
110
192
  getWallet() {
111
193
  if (!this.wallet) {
112
- throw new Error('[ArkadeClientManager] Wallet not initialized');
194
+ throw new Error("Arkade wallet not initialized. Call initialize() first.");
113
195
  }
114
196
  return this.wallet;
115
197
  }
198
+ /**
199
+ * Return the VtxoManager for VTXO lifecycle operations.
200
+ * Throws if not initialized.
201
+ */
202
+ getVtxoManager() {
203
+ if (!this._vtxoManager) {
204
+ throw new Error("VtxoManager not initialized. Call initialize() first.");
205
+ }
206
+ return this._vtxoManager;
207
+ }
208
+ isInitialized() {
209
+ return this.wallet !== null;
210
+ }
116
211
  getConfig() {
117
212
  return this.config;
118
213
  }
214
+ async disconnect() {
215
+ this.stopIncomingFundsListener();
216
+ this._listenerStarted = false;
217
+ if (this._vtxoManager) {
218
+ try {
219
+ await this._vtxoManager.dispose();
220
+ }
221
+ catch {
222
+ /* ignore */
223
+ }
224
+ this._vtxoManager = null;
225
+ }
226
+ this.wallet = null;
227
+ this.config = null;
228
+ log.info("[ArkadeClientManager] Wallet disconnected");
229
+ }
230
+ reset() {
231
+ this.stopIncomingFundsListener();
232
+ this._listenerStarted = false;
233
+ if (this._vtxoManager) {
234
+ try {
235
+ this._vtxoManager.dispose();
236
+ }
237
+ catch {
238
+ /* ignore */
239
+ }
240
+ this._vtxoManager = null;
241
+ }
242
+ this.wallet = null;
243
+ this.config = null;
244
+ this._initPromise = null;
245
+ log.info("[ArkadeClientManager] Complete reset performed");
246
+ }
247
+ /**
248
+ * Start listening for incoming VTXOs and boarding UTXOs.
249
+ * @param onIncoming Callback fired per notification; receives the raw SDK payload.
250
+ * @returns Stop function (also called automatically on disconnect/reset)
251
+ */
252
+ startIncomingFundsListener(onIncoming) {
253
+ if (this._listenerStarted) {
254
+ log.warn("[ArkadeClientManager] Incoming funds listener already started — ignoring duplicate call");
255
+ return;
256
+ }
257
+ if (!this.wallet) {
258
+ log.warn("[ArkadeClientManager] Cannot start listener — wallet not initialized");
259
+ return;
260
+ }
261
+ // Stop any existing subscription first
262
+ this.stopIncomingFundsListener();
263
+ this.wallet
264
+ .notifyIncomingFunds((notification) => {
265
+ try {
266
+ onIncoming(notification);
267
+ }
268
+ catch (err) {
269
+ log.error("[ArkadeClientManager] Error in incoming funds callback:", err);
270
+ }
271
+ })
272
+ .then((stop) => {
273
+ this._stopIncomingFunds = stop;
274
+ this._listenerStarted = true;
275
+ log.info("[ArkadeClientManager] Incoming funds listener started");
276
+ })
277
+ .catch((err) => {
278
+ log.error("[ArkadeClientManager] Failed to start incoming funds listener:", err);
279
+ });
280
+ }
281
+ stopIncomingFundsListener() {
282
+ if (this._stopIncomingFunds) {
283
+ try {
284
+ this._stopIncomingFunds();
285
+ }
286
+ catch {
287
+ /* ignore */
288
+ }
289
+ this._stopIncomingFunds = null;
290
+ this._listenerStarted = false;
291
+ log.info("[ArkadeClientManager] Incoming funds listener stopped");
292
+ }
293
+ }
119
294
  }
120
295
  export const arkadeClientManager = new ArkadeClientManager();
121
296
  //# sourceMappingURL=arkade-client-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arkade-client-manager.js","sourceRoot":"","sources":["../../src/lib/arkade-client-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arkade-client-manager.js","sourceRoot":"","sources":["../../src/lib/arkade-client-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * SDK ↔ unified-shape converter for the Arkade adapter.
3
+ *
4
+ * The single converter here covers Arkade transaction history:
5
+ * - `convertArkTxToUnifiedAll` — expand one ArkTransaction into one
6
+ * UnifiedTransaction per asset moved (or a single BTC entry for
7
+ * pure-BTC transfers).
8
+ *
9
+ * `getAssetDetails` is injected as a callback so this module stays pure —
10
+ * the adapter wraps its `getCachedAssetDetails(wallet, …)` to pre-bind the
11
+ * wallet + cache. That keeps the unit tests free of the @arkade-os/sdk
12
+ * Wallet shape.
13
+ */
14
+ import type { ArkTransaction } from "@arkade-os/sdk";
15
+ import type { UnifiedTransaction } from "../types/base.js";
16
+ /**
17
+ * Resolve metadata for an Arkade asset id. The adapter passes a
18
+ * cache-backed implementation that calls `wallet.assetManager.getAssetDetails`.
19
+ * Returning `null` on failure is fine — the converter falls back to the
20
+ * helper-derived ticker / name / precision.
21
+ */
22
+ export type AssetDetailsResolver = (assetId: string) => Promise<Record<string, unknown> | null>;
23
+ /**
24
+ * Expand an ArkTransaction into one UnifiedTransaction per asset moved.
25
+ * Asset-bearing transfers carry only dust BTC for the carrier output, so we
26
+ * emit one entry per `tx.assets[]` entry; pure-BTC transfers emit a single
27
+ * BTC entry. `type` is the SDK's TxType enum: "SENT" or "RECEIVED".
28
+ *
29
+ * SDK semantics (transactionHistory.js): asset amounts on RECEIVED txs come
30
+ * from `collectAssets` (positive sums). Asset amounts on SENT txs come from
31
+ * `subtractAssets(spent, change)` — i.e. `change - spent`, which is negative.
32
+ * We surface absolute amounts and rely on `direction` for the sign.
33
+ *
34
+ * On any error the converter swallows and returns `[]` — `listTransactions`
35
+ * uses Promise.all over a flat-map, so a single malformed history entry
36
+ * must not poison the whole batch.
37
+ */
38
+ export declare function convertArkTxToUnifiedAll(tx: ArkTransaction, resolveDetails: AssetDetailsResolver): Promise<UnifiedTransaction[]>;
39
+ //# sourceMappingURL=arkade-converters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arkade-converters.d.ts","sourceRoot":"","sources":["../../src/lib/arkade-converters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAYtE;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAEhG;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,cAAc,EAClB,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAkI/B"}