@hashgraphonline/standards-sdk 0.1.143 → 0.1.144-feat-solana-register.canary.d5edcec.80

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 (475) hide show
  1. package/dist/cjs/hcs-10/base-client.d.ts.map +1 -1
  2. package/dist/cjs/hcs-10/sdk.d.ts +8 -0
  3. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  4. package/dist/cjs/hcs-11/client.d.ts +2 -2
  5. package/dist/cjs/hcs-11/client.d.ts.map +1 -1
  6. package/dist/cjs/hcs-11/person-builder.d.ts +1 -0
  7. package/dist/cjs/hcs-11/person-builder.d.ts.map +1 -1
  8. package/dist/cjs/hcs-11/types.d.ts +1 -0
  9. package/dist/cjs/hcs-11/types.d.ts.map +1 -1
  10. package/dist/cjs/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  11. package/dist/cjs/hcs-12/validation/schemas.d.ts +8 -8
  12. package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
  13. package/dist/cjs/hcs-15/browser.d.ts +2 -0
  14. package/dist/cjs/hcs-15/browser.d.ts.map +1 -1
  15. package/dist/cjs/hcs-15/sdk.d.ts +7 -1
  16. package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
  17. package/dist/cjs/hcs-15/tx.d.ts +4 -0
  18. package/dist/cjs/hcs-15/tx.d.ts.map +1 -1
  19. package/dist/cjs/hcs-15/types.d.ts +16 -1
  20. package/dist/cjs/hcs-15/types.d.ts.map +1 -1
  21. package/dist/cjs/hcs-16/browser.d.ts +11 -2
  22. package/dist/cjs/hcs-16/browser.d.ts.map +1 -1
  23. package/dist/cjs/hcs-16/sdk.d.ts +62 -1
  24. package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
  25. package/dist/cjs/hcs-16/tx.d.ts +21 -3
  26. package/dist/cjs/hcs-16/tx.d.ts.map +1 -1
  27. package/dist/cjs/hcs-17/base-client.d.ts +1 -0
  28. package/dist/cjs/hcs-17/base-client.d.ts.map +1 -1
  29. package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
  30. package/dist/cjs/hcs-17/tx.d.ts +2 -0
  31. package/dist/cjs/hcs-17/tx.d.ts.map +1 -1
  32. package/dist/cjs/hcs-17/types.d.ts +4 -0
  33. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  34. package/dist/cjs/hcs-21/types.d.ts +75 -75
  35. package/dist/cjs/index.d.ts.map +1 -1
  36. package/dist/cjs/services/registry-broker/client/adapters.d.ts +20 -0
  37. package/dist/cjs/services/registry-broker/client/adapters.d.ts.map +1 -0
  38. package/dist/cjs/services/registry-broker/client/agents.d.ts +16 -0
  39. package/dist/cjs/services/registry-broker/client/agents.d.ts.map +1 -0
  40. package/dist/cjs/services/registry-broker/client/base-client.d.ts +70 -0
  41. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -0
  42. package/dist/cjs/services/registry-broker/client/chat-history.d.ts +23 -0
  43. package/dist/cjs/services/registry-broker/client/chat-history.d.ts.map +1 -0
  44. package/dist/cjs/services/registry-broker/client/chat.d.ts +33 -0
  45. package/dist/cjs/services/registry-broker/client/chat.d.ts.map +1 -0
  46. package/dist/cjs/services/registry-broker/client/credits.d.ts +40 -0
  47. package/dist/cjs/services/registry-broker/client/credits.d.ts.map +1 -0
  48. package/dist/cjs/services/registry-broker/client/encrypted-chat-manager.d.ts +35 -0
  49. package/dist/cjs/services/registry-broker/client/encrypted-chat-manager.d.ts.map +1 -0
  50. package/dist/cjs/services/registry-broker/client/encryption.d.ts +33 -0
  51. package/dist/cjs/services/registry-broker/client/encryption.d.ts.map +1 -0
  52. package/dist/cjs/services/registry-broker/client/errors.d.ts +19 -0
  53. package/dist/cjs/services/registry-broker/client/errors.d.ts.map +1 -0
  54. package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
  55. package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
  56. package/dist/cjs/services/registry-broker/client/ledger-auth.d.ts +10 -0
  57. package/dist/cjs/services/registry-broker/client/ledger-auth.d.ts.map +1 -0
  58. package/dist/cjs/services/registry-broker/client/search.d.ts +19 -0
  59. package/dist/cjs/services/registry-broker/client/search.d.ts.map +1 -0
  60. package/dist/cjs/services/registry-broker/client/utils.d.ts +21 -0
  61. package/dist/cjs/services/registry-broker/client/utils.d.ts.map +1 -0
  62. package/dist/cjs/services/registry-broker/client.d.ts +2 -205
  63. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  64. package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
  65. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  66. package/dist/cjs/services/registry-broker/schemas.d.ts +2509 -816
  67. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  68. package/dist/cjs/services/registry-broker/types.d.ts +64 -2
  69. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  70. package/dist/cjs/standards-sdk.cjs +3 -3
  71. package/dist/cjs/standards-sdk.cjs.map +1 -1
  72. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  73. package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
  74. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  75. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  76. package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
  77. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  78. package/dist/es/hcs-10/sdk.d.ts +8 -0
  79. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  80. package/dist/es/hcs-11/client.d.ts +2 -2
  81. package/dist/es/hcs-11/client.d.ts.map +1 -1
  82. package/dist/es/hcs-11/person-builder.d.ts +1 -0
  83. package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
  84. package/dist/es/hcs-11/types.d.ts +1 -0
  85. package/dist/es/hcs-11/types.d.ts.map +1 -1
  86. package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  87. package/dist/es/hcs-12/validation/schemas.d.ts +8 -8
  88. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  89. package/dist/es/hcs-15/browser.d.ts +2 -0
  90. package/dist/es/hcs-15/browser.d.ts.map +1 -1
  91. package/dist/es/hcs-15/sdk.d.ts +7 -1
  92. package/dist/es/hcs-15/sdk.d.ts.map +1 -1
  93. package/dist/es/hcs-15/tx.d.ts +4 -0
  94. package/dist/es/hcs-15/tx.d.ts.map +1 -1
  95. package/dist/es/hcs-15/types.d.ts +16 -1
  96. package/dist/es/hcs-15/types.d.ts.map +1 -1
  97. package/dist/es/hcs-16/browser.d.ts +11 -2
  98. package/dist/es/hcs-16/browser.d.ts.map +1 -1
  99. package/dist/es/hcs-16/sdk.d.ts +62 -1
  100. package/dist/es/hcs-16/sdk.d.ts.map +1 -1
  101. package/dist/es/hcs-16/tx.d.ts +21 -3
  102. package/dist/es/hcs-16/tx.d.ts.map +1 -1
  103. package/dist/es/hcs-17/base-client.d.ts +1 -0
  104. package/dist/es/hcs-17/base-client.d.ts.map +1 -1
  105. package/dist/es/hcs-17/sdk.d.ts.map +1 -1
  106. package/dist/es/hcs-17/tx.d.ts +2 -0
  107. package/dist/es/hcs-17/tx.d.ts.map +1 -1
  108. package/dist/es/hcs-17/types.d.ts +4 -0
  109. package/dist/es/hcs-17/types.d.ts.map +1 -1
  110. package/dist/es/hcs-21/types.d.ts +75 -75
  111. package/dist/es/index.d.ts.map +1 -1
  112. package/dist/es/services/registry-broker/client/adapters.d.ts +20 -0
  113. package/dist/es/services/registry-broker/client/adapters.d.ts.map +1 -0
  114. package/dist/es/services/registry-broker/client/agents.d.ts +16 -0
  115. package/dist/es/services/registry-broker/client/agents.d.ts.map +1 -0
  116. package/dist/es/services/registry-broker/client/base-client.d.ts +70 -0
  117. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -0
  118. package/dist/es/services/registry-broker/client/chat-history.d.ts +23 -0
  119. package/dist/es/services/registry-broker/client/chat-history.d.ts.map +1 -0
  120. package/dist/es/services/registry-broker/client/chat.d.ts +33 -0
  121. package/dist/es/services/registry-broker/client/chat.d.ts.map +1 -0
  122. package/dist/es/services/registry-broker/client/credits.d.ts +40 -0
  123. package/dist/es/services/registry-broker/client/credits.d.ts.map +1 -0
  124. package/dist/es/services/registry-broker/client/encrypted-chat-manager.d.ts +35 -0
  125. package/dist/es/services/registry-broker/client/encrypted-chat-manager.d.ts.map +1 -0
  126. package/dist/es/services/registry-broker/client/encryption.d.ts +33 -0
  127. package/dist/es/services/registry-broker/client/encryption.d.ts.map +1 -0
  128. package/dist/es/services/registry-broker/client/errors.d.ts +19 -0
  129. package/dist/es/services/registry-broker/client/errors.d.ts.map +1 -0
  130. package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
  131. package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
  132. package/dist/es/services/registry-broker/client/ledger-auth.d.ts +10 -0
  133. package/dist/es/services/registry-broker/client/ledger-auth.d.ts.map +1 -0
  134. package/dist/es/services/registry-broker/client/search.d.ts +19 -0
  135. package/dist/es/services/registry-broker/client/search.d.ts.map +1 -0
  136. package/dist/es/services/registry-broker/client/utils.d.ts +21 -0
  137. package/dist/es/services/registry-broker/client/utils.d.ts.map +1 -0
  138. package/dist/es/services/registry-broker/client.d.ts +2 -205
  139. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  140. package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
  141. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  142. package/dist/es/services/registry-broker/schemas.d.ts +2509 -816
  143. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  144. package/dist/es/services/registry-broker/types.d.ts +64 -2
  145. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  146. package/dist/es/standards-sdk.es.js +148 -133
  147. package/dist/es/standards-sdk.es.js.map +1 -1
  148. package/dist/es/standards-sdk.es10.js +70 -90
  149. package/dist/es/standards-sdk.es10.js.map +1 -1
  150. package/dist/es/standards-sdk.es100.js +229 -26
  151. package/dist/es/standards-sdk.es100.js.map +1 -1
  152. package/dist/es/standards-sdk.es101.js +109 -228
  153. package/dist/es/standards-sdk.es101.js.map +1 -1
  154. package/dist/es/standards-sdk.es102.js +15 -94
  155. package/dist/es/standards-sdk.es102.js.map +1 -1
  156. package/dist/es/standards-sdk.es103.js +80 -30
  157. package/dist/es/standards-sdk.es103.js.map +1 -1
  158. package/dist/es/standards-sdk.es104.js +27 -80
  159. package/dist/es/standards-sdk.es104.js.map +1 -1
  160. package/dist/es/standards-sdk.es105.js +136 -25
  161. package/dist/es/standards-sdk.es105.js.map +1 -1
  162. package/dist/es/standards-sdk.es106.js +27 -140
  163. package/dist/es/standards-sdk.es106.js.map +1 -1
  164. package/dist/es/standards-sdk.es107.js +20 -27
  165. package/dist/es/standards-sdk.es107.js.map +1 -1
  166. package/dist/es/standards-sdk.es108.js +156 -18
  167. package/dist/es/standards-sdk.es108.js.map +1 -1
  168. package/dist/es/standards-sdk.es109.js +198 -148
  169. package/dist/es/standards-sdk.es109.js.map +1 -1
  170. package/dist/es/standards-sdk.es11.js +121 -45
  171. package/dist/es/standards-sdk.es11.js.map +1 -1
  172. package/dist/es/standards-sdk.es110.js +747 -160
  173. package/dist/es/standards-sdk.es110.js.map +1 -1
  174. package/dist/es/standards-sdk.es111.js +9 -786
  175. package/dist/es/standards-sdk.es111.js.map +1 -1
  176. package/dist/es/standards-sdk.es112.js +567 -13
  177. package/dist/es/standards-sdk.es112.js.map +1 -1
  178. package/dist/es/standards-sdk.es113.js +576 -541
  179. package/dist/es/standards-sdk.es113.js.map +1 -1
  180. package/dist/es/standards-sdk.es114.js +12 -601
  181. package/dist/es/standards-sdk.es114.js.map +1 -1
  182. package/dist/es/standards-sdk.es115.js +2 -13
  183. package/dist/es/standards-sdk.es115.js.map +1 -1
  184. package/dist/es/standards-sdk.es116.js +87 -2
  185. package/dist/es/standards-sdk.es116.js.map +1 -1
  186. package/dist/es/standards-sdk.es117.js +37 -80
  187. package/dist/es/standards-sdk.es117.js.map +1 -1
  188. package/dist/es/standards-sdk.es118.js +2 -39
  189. package/dist/es/standards-sdk.es118.js.map +1 -1
  190. package/dist/es/standards-sdk.es119.js +231 -2
  191. package/dist/es/standards-sdk.es119.js.map +1 -1
  192. package/dist/es/standards-sdk.es12.js +60 -159
  193. package/dist/es/standards-sdk.es12.js.map +1 -1
  194. package/dist/es/standards-sdk.es120.js +1110 -193
  195. package/dist/es/standards-sdk.es120.js.map +1 -1
  196. package/dist/es/standards-sdk.es121.js +225 -1059
  197. package/dist/es/standards-sdk.es121.js.map +1 -1
  198. package/dist/es/standards-sdk.es122.js +419 -303
  199. package/dist/es/standards-sdk.es122.js.map +1 -1
  200. package/dist/es/standards-sdk.es123.js +351 -418
  201. package/dist/es/standards-sdk.es123.js.map +1 -1
  202. package/dist/es/standards-sdk.es124.js +872 -347
  203. package/dist/es/standards-sdk.es124.js.map +1 -1
  204. package/dist/es/standards-sdk.es125.js +182 -854
  205. package/dist/es/standards-sdk.es125.js.map +1 -1
  206. package/dist/es/standards-sdk.es126.js +1512 -153
  207. package/dist/es/standards-sdk.es126.js.map +1 -1
  208. package/dist/es/standards-sdk.es127.js +157 -1547
  209. package/dist/es/standards-sdk.es127.js.map +1 -1
  210. package/dist/es/standards-sdk.es128.js +184 -2190
  211. package/dist/es/standards-sdk.es128.js.map +1 -1
  212. package/dist/es/standards-sdk.es129.js +100 -63
  213. package/dist/es/standards-sdk.es129.js.map +1 -1
  214. package/dist/es/standards-sdk.es13.js +200 -60
  215. package/dist/es/standards-sdk.es13.js.map +1 -1
  216. package/dist/es/standards-sdk.es130.js +112 -78
  217. package/dist/es/standards-sdk.es130.js.map +1 -1
  218. package/dist/es/standards-sdk.es131.js +232 -144
  219. package/dist/es/standards-sdk.es131.js.map +1 -1
  220. package/dist/es/standards-sdk.es132.js +181 -8
  221. package/dist/es/standards-sdk.es132.js.map +1 -1
  222. package/dist/es/standards-sdk.es133.js +118 -82
  223. package/dist/es/standards-sdk.es133.js.map +1 -1
  224. package/dist/es/standards-sdk.es134.js +322 -61
  225. package/dist/es/standards-sdk.es134.js.map +1 -1
  226. package/dist/es/standards-sdk.es135.js +464 -28
  227. package/dist/es/standards-sdk.es135.js.map +1 -1
  228. package/dist/es/standards-sdk.es136.js +14 -135
  229. package/dist/es/standards-sdk.es136.js.map +1 -1
  230. package/dist/es/standards-sdk.es137.js +78 -39
  231. package/dist/es/standards-sdk.es137.js.map +1 -1
  232. package/dist/es/standards-sdk.es138.js +85 -764
  233. package/dist/es/standards-sdk.es138.js.map +1 -1
  234. package/dist/es/standards-sdk.es139.js +135 -12250
  235. package/dist/es/standards-sdk.es139.js.map +1 -1
  236. package/dist/es/standards-sdk.es14.js +149 -178
  237. package/dist/es/standards-sdk.es14.js.map +1 -1
  238. package/dist/es/standards-sdk.es140.js +7 -56
  239. package/dist/es/standards-sdk.es140.js.map +1 -1
  240. package/dist/es/standards-sdk.es141.js +72 -68
  241. package/dist/es/standards-sdk.es141.js.map +1 -1
  242. package/dist/es/standards-sdk.es142.js +61 -13
  243. package/dist/es/standards-sdk.es142.js.map +1 -1
  244. package/dist/es/standards-sdk.es143.js +30 -172
  245. package/dist/es/standards-sdk.es143.js.map +1 -1
  246. package/dist/es/standards-sdk.es144.js +34 -322
  247. package/dist/es/standards-sdk.es144.js.map +1 -1
  248. package/dist/es/standards-sdk.es145.js +28 -346
  249. package/dist/es/standards-sdk.es145.js.map +1 -1
  250. package/dist/es/standards-sdk.es146.js +112 -427
  251. package/dist/es/standards-sdk.es146.js.map +1 -1
  252. package/dist/es/standards-sdk.es147.js +40 -329
  253. package/dist/es/standards-sdk.es147.js.map +1 -1
  254. package/dist/es/standards-sdk.es148.js +12279 -66
  255. package/dist/es/standards-sdk.es148.js.map +1 -1
  256. package/dist/es/standards-sdk.es149.js +961 -0
  257. package/dist/es/standards-sdk.es149.js.map +1 -0
  258. package/dist/es/standards-sdk.es15.js +152 -151
  259. package/dist/es/standards-sdk.es15.js.map +1 -1
  260. package/dist/es/standards-sdk.es150.js +20 -0
  261. package/dist/es/standards-sdk.es150.js.map +1 -0
  262. package/dist/es/standards-sdk.es151.js +59 -0
  263. package/dist/es/standards-sdk.es151.js.map +1 -0
  264. package/dist/es/standards-sdk.es152.js +87 -0
  265. package/dist/es/standards-sdk.es152.js.map +1 -0
  266. package/dist/es/standards-sdk.es153.js +175 -0
  267. package/dist/es/standards-sdk.es153.js.map +1 -0
  268. package/dist/es/standards-sdk.es154.js +325 -0
  269. package/dist/es/standards-sdk.es154.js.map +1 -0
  270. package/dist/es/standards-sdk.es155.js +349 -0
  271. package/dist/es/standards-sdk.es155.js.map +1 -0
  272. package/dist/es/standards-sdk.es156.js +456 -0
  273. package/dist/es/standards-sdk.es156.js.map +1 -0
  274. package/dist/es/standards-sdk.es157.js +334 -0
  275. package/dist/es/standards-sdk.es157.js.map +1 -0
  276. package/dist/es/standards-sdk.es158.js +79 -0
  277. package/dist/es/standards-sdk.es158.js.map +1 -0
  278. package/dist/es/standards-sdk.es159.js +242 -0
  279. package/dist/es/standards-sdk.es159.js.map +1 -0
  280. package/dist/es/standards-sdk.es16.js +917 -136
  281. package/dist/es/standards-sdk.es16.js.map +1 -1
  282. package/dist/es/standards-sdk.es160.js +247 -0
  283. package/dist/es/standards-sdk.es160.js.map +1 -0
  284. package/dist/es/standards-sdk.es17.js +23 -938
  285. package/dist/es/standards-sdk.es17.js.map +1 -1
  286. package/dist/es/standards-sdk.es18.js +2422 -24
  287. package/dist/es/standards-sdk.es18.js.map +1 -1
  288. package/dist/es/standards-sdk.es19.js +826 -2075
  289. package/dist/es/standards-sdk.es19.js.map +1 -1
  290. package/dist/es/standards-sdk.es2.js +654 -189
  291. package/dist/es/standards-sdk.es2.js.map +1 -1
  292. package/dist/es/standards-sdk.es20.js +205 -1086
  293. package/dist/es/standards-sdk.es20.js.map +1 -1
  294. package/dist/es/standards-sdk.es21.js +858 -221
  295. package/dist/es/standards-sdk.es21.js.map +1 -1
  296. package/dist/es/standards-sdk.es22.js +179 -903
  297. package/dist/es/standards-sdk.es22.js.map +1 -1
  298. package/dist/es/standards-sdk.es23.js +164 -179
  299. package/dist/es/standards-sdk.es23.js.map +1 -1
  300. package/dist/es/standards-sdk.es24.js +62 -118
  301. package/dist/es/standards-sdk.es24.js.map +1 -1
  302. package/dist/es/standards-sdk.es25.js +377 -52
  303. package/dist/es/standards-sdk.es25.js.map +1 -1
  304. package/dist/es/standards-sdk.es26.js +36 -394
  305. package/dist/es/standards-sdk.es26.js.map +1 -1
  306. package/dist/es/standards-sdk.es27.js +901 -50
  307. package/dist/es/standards-sdk.es27.js.map +1 -1
  308. package/dist/es/standards-sdk.es28.js +134 -897
  309. package/dist/es/standards-sdk.es28.js.map +1 -1
  310. package/dist/es/standards-sdk.es29.js +7 -134
  311. package/dist/es/standards-sdk.es29.js.map +1 -1
  312. package/dist/es/standards-sdk.es3.js +63 -680
  313. package/dist/es/standards-sdk.es3.js.map +1 -1
  314. package/dist/es/standards-sdk.es30.js +344 -7
  315. package/dist/es/standards-sdk.es30.js.map +1 -1
  316. package/dist/es/standards-sdk.es31.js +302 -287
  317. package/dist/es/standards-sdk.es31.js.map +1 -1
  318. package/dist/es/standards-sdk.es32.js +94 -322
  319. package/dist/es/standards-sdk.es32.js.map +1 -1
  320. package/dist/es/standards-sdk.es33.js +458 -101
  321. package/dist/es/standards-sdk.es33.js.map +1 -1
  322. package/dist/es/standards-sdk.es34.js +132 -451
  323. package/dist/es/standards-sdk.es34.js.map +1 -1
  324. package/dist/es/standards-sdk.es35.js +216 -130
  325. package/dist/es/standards-sdk.es35.js.map +1 -1
  326. package/dist/es/standards-sdk.es36.js +274 -191
  327. package/dist/es/standards-sdk.es36.js.map +1 -1
  328. package/dist/es/standards-sdk.es37.js +148 -87
  329. package/dist/es/standards-sdk.es37.js.map +1 -1
  330. package/dist/es/standards-sdk.es38.js +183 -320
  331. package/dist/es/standards-sdk.es38.js.map +1 -1
  332. package/dist/es/standards-sdk.es39.js +238 -161
  333. package/dist/es/standards-sdk.es39.js.map +1 -1
  334. package/dist/es/standards-sdk.es4.js +425 -63
  335. package/dist/es/standards-sdk.es4.js.map +1 -1
  336. package/dist/es/standards-sdk.es40.js +136 -254
  337. package/dist/es/standards-sdk.es40.js.map +1 -1
  338. package/dist/es/standards-sdk.es41.js +225 -176
  339. package/dist/es/standards-sdk.es41.js.map +1 -1
  340. package/dist/es/standards-sdk.es42.js +199 -261
  341. package/dist/es/standards-sdk.es42.js.map +1 -1
  342. package/dist/es/standards-sdk.es43.js +237 -199
  343. package/dist/es/standards-sdk.es43.js.map +1 -1
  344. package/dist/es/standards-sdk.es44.js +209 -201
  345. package/dist/es/standards-sdk.es44.js.map +1 -1
  346. package/dist/es/standards-sdk.es45.js +305 -201
  347. package/dist/es/standards-sdk.es45.js.map +1 -1
  348. package/dist/es/standards-sdk.es46.js +371 -261
  349. package/dist/es/standards-sdk.es46.js.map +1 -1
  350. package/dist/es/standards-sdk.es47.js +316 -371
  351. package/dist/es/standards-sdk.es47.js.map +1 -1
  352. package/dist/es/standards-sdk.es48.js +404 -336
  353. package/dist/es/standards-sdk.es48.js.map +1 -1
  354. package/dist/es/standards-sdk.es49.js +83 -449
  355. package/dist/es/standards-sdk.es49.js.map +1 -1
  356. package/dist/es/standards-sdk.es5.js +232 -354
  357. package/dist/es/standards-sdk.es5.js.map +1 -1
  358. package/dist/es/standards-sdk.es50.js +179 -89
  359. package/dist/es/standards-sdk.es50.js.map +1 -1
  360. package/dist/es/standards-sdk.es51.js +231 -165
  361. package/dist/es/standards-sdk.es51.js.map +1 -1
  362. package/dist/es/standards-sdk.es52.js +25 -262
  363. package/dist/es/standards-sdk.es52.js.map +1 -1
  364. package/dist/es/standards-sdk.es53.js +56 -26
  365. package/dist/es/standards-sdk.es53.js.map +1 -1
  366. package/dist/es/standards-sdk.es54.js +12 -57
  367. package/dist/es/standards-sdk.es54.js.map +1 -1
  368. package/dist/es/standards-sdk.es55.js +49 -12
  369. package/dist/es/standards-sdk.es55.js.map +1 -1
  370. package/dist/es/standards-sdk.es56.js +115 -43
  371. package/dist/es/standards-sdk.es56.js.map +1 -1
  372. package/dist/es/standards-sdk.es57.js +42 -115
  373. package/dist/es/standards-sdk.es57.js.map +1 -1
  374. package/dist/es/standards-sdk.es58.js +52 -43
  375. package/dist/es/standards-sdk.es58.js.map +1 -1
  376. package/dist/es/standards-sdk.es59.js +36 -50
  377. package/dist/es/standards-sdk.es59.js.map +1 -1
  378. package/dist/es/standards-sdk.es6.js +125 -246
  379. package/dist/es/standards-sdk.es6.js.map +1 -1
  380. package/dist/es/standards-sdk.es60.js +207 -39
  381. package/dist/es/standards-sdk.es60.js.map +1 -1
  382. package/dist/es/standards-sdk.es61.js +24 -195
  383. package/dist/es/standards-sdk.es61.js.map +1 -1
  384. package/dist/es/standards-sdk.es62.js +87 -25
  385. package/dist/es/standards-sdk.es62.js.map +1 -1
  386. package/dist/es/standards-sdk.es63.js +3 -51
  387. package/dist/es/standards-sdk.es63.js.map +1 -1
  388. package/dist/es/standards-sdk.es64.js +100 -3
  389. package/dist/es/standards-sdk.es64.js.map +1 -1
  390. package/dist/es/standards-sdk.es65.js +61 -62
  391. package/dist/es/standards-sdk.es65.js.map +1 -1
  392. package/dist/es/standards-sdk.es66.js +17 -98
  393. package/dist/es/standards-sdk.es66.js.map +1 -1
  394. package/dist/es/standards-sdk.es67.js +77 -19
  395. package/dist/es/standards-sdk.es67.js.map +1 -1
  396. package/dist/es/standards-sdk.es68.js +458 -77
  397. package/dist/es/standards-sdk.es68.js.map +1 -1
  398. package/dist/es/standards-sdk.es69.js +106 -240
  399. package/dist/es/standards-sdk.es69.js.map +1 -1
  400. package/dist/es/standards-sdk.es7.js +28 -183
  401. package/dist/es/standards-sdk.es7.js.map +1 -1
  402. package/dist/es/standards-sdk.es70.js +170 -286
  403. package/dist/es/standards-sdk.es70.js.map +1 -1
  404. package/dist/es/standards-sdk.es71.js +71 -207
  405. package/dist/es/standards-sdk.es71.js.map +1 -1
  406. package/dist/es/standards-sdk.es72.js +71 -72
  407. package/dist/es/standards-sdk.es72.js.map +1 -1
  408. package/dist/es/standards-sdk.es73.js +143 -71
  409. package/dist/es/standards-sdk.es73.js.map +1 -1
  410. package/dist/es/standards-sdk.es74.js +62 -136
  411. package/dist/es/standards-sdk.es74.js.map +1 -1
  412. package/dist/es/standards-sdk.es75.js +380 -45
  413. package/dist/es/standards-sdk.es75.js.map +1 -1
  414. package/dist/es/standards-sdk.es76.js +222 -130
  415. package/dist/es/standards-sdk.es76.js.map +1 -1
  416. package/dist/es/standards-sdk.es77.js +320 -444
  417. package/dist/es/standards-sdk.es77.js.map +1 -1
  418. package/dist/es/standards-sdk.es78.js +88 -364
  419. package/dist/es/standards-sdk.es78.js.map +1 -1
  420. package/dist/es/standards-sdk.es79.js +125 -89
  421. package/dist/es/standards-sdk.es79.js.map +1 -1
  422. package/dist/es/standards-sdk.es8.js +80 -29
  423. package/dist/es/standards-sdk.es8.js.map +1 -1
  424. package/dist/es/standards-sdk.es80.js +8 -125
  425. package/dist/es/standards-sdk.es80.js.map +1 -1
  426. package/dist/es/standards-sdk.es81.js +45 -6
  427. package/dist/es/standards-sdk.es81.js.map +1 -1
  428. package/dist/es/standards-sdk.es82.js +98 -44
  429. package/dist/es/standards-sdk.es82.js.map +1 -1
  430. package/dist/es/standards-sdk.es83.js +331 -84
  431. package/dist/es/standards-sdk.es83.js.map +1 -1
  432. package/dist/es/standards-sdk.es84.js +93 -160
  433. package/dist/es/standards-sdk.es84.js.map +1 -1
  434. package/dist/es/standards-sdk.es85.js +55 -275
  435. package/dist/es/standards-sdk.es85.js.map +1 -1
  436. package/dist/es/standards-sdk.es86.js +43 -55
  437. package/dist/es/standards-sdk.es86.js.map +1 -1
  438. package/dist/es/standards-sdk.es87.js +145 -22
  439. package/dist/es/standards-sdk.es87.js.map +1 -1
  440. package/dist/es/standards-sdk.es88.js +34 -47
  441. package/dist/es/standards-sdk.es88.js.map +1 -1
  442. package/dist/es/standards-sdk.es89.js +22 -57
  443. package/dist/es/standards-sdk.es89.js.map +1 -1
  444. package/dist/es/standards-sdk.es9.js +104 -80
  445. package/dist/es/standards-sdk.es9.js.map +1 -1
  446. package/dist/es/standards-sdk.es90.js +23 -28
  447. package/dist/es/standards-sdk.es90.js.map +1 -1
  448. package/dist/es/standards-sdk.es91.js +238 -23
  449. package/dist/es/standards-sdk.es91.js.map +1 -1
  450. package/dist/es/standards-sdk.es92.js +265 -152
  451. package/dist/es/standards-sdk.es92.js.map +1 -1
  452. package/dist/es/standards-sdk.es93.js +95 -68
  453. package/dist/es/standards-sdk.es93.js.map +1 -1
  454. package/dist/es/standards-sdk.es94.js +124 -136
  455. package/dist/es/standards-sdk.es94.js.map +1 -1
  456. package/dist/es/standards-sdk.es95.js +42 -138
  457. package/dist/es/standards-sdk.es95.js.map +1 -1
  458. package/dist/es/standards-sdk.es96.js +259 -42
  459. package/dist/es/standards-sdk.es96.js.map +1 -1
  460. package/dist/es/standards-sdk.es97.js +82 -243
  461. package/dist/es/standards-sdk.es97.js.map +1 -1
  462. package/dist/es/standards-sdk.es98.js +48 -47
  463. package/dist/es/standards-sdk.es98.js.map +1 -1
  464. package/dist/es/standards-sdk.es99.js +29 -100
  465. package/dist/es/standards-sdk.es99.js.map +1 -1
  466. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  467. package/dist/es/utils/crypto-env.d.ts.map +1 -1
  468. package/dist/es/utils/dynamic-import.d.ts +5 -1
  469. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  470. package/dist/es/utils/hash-adapter.d.ts.map +1 -1
  471. package/package.json +15 -16
  472. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  473. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  474. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  475. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es31.js","sources":["../../src/hcs-12/registries/base-registry.ts"],"sourcesContent":["/**\n * Base Registry Abstract Class for HCS-12\n *\n * Provides common functionality for all HCS-12 registry types including\n * action, block, assembly, and hashlinks registries.\n */\n\nimport { ILogger, Logger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport {\n RegistryType,\n AssemblyRegistryEntry,\n RegistryConfig,\n ActionRegistration,\n AssemblyRegistration,\n HashLinksRegistration,\n} from '../types';\nimport { inscribe, inscribeWithSigner } from '../../inscribe';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\n\n/**\n * Abstract base class for all HCS-12 registries\n */\nexport abstract class BaseRegistry {\n protected logger: ILogger;\n protected networkType: NetworkType;\n protected topicId?: string;\n protected registryType: RegistryType;\n protected entries: Map<string, AssemblyRegistryEntry> = new Map();\n protected client?: HCS12Client | HCS12BrowserClient;\n protected lastSyncTimestamp?: string;\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n registryType: RegistryType,\n topicId?: string,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n this.networkType = networkType;\n this.logger = logger;\n this.registryType = registryType;\n this.topicId = topicId;\n this.client = client;\n }\n\n /**\n * Submit a registration to the topic\n */\n abstract register(\n data: ActionRegistration | AssemblyRegistration | HashLinksRegistration,\n ): Promise<string>;\n\n /**\n * Retrieve an entry by ID\n */\n async getEntry(id: string): Promise<AssemblyRegistryEntry | null> {\n const cached = this.entries.get(id);\n if (cached) return cached;\n\n if (this.topicId && this.client) {\n await this.sync();\n return this.entries.get(id) || null;\n }\n\n return null;\n }\n\n /**\n * Get the latest entry from a specific topic ID (for non-indexed topics)\n */\n async getLatestEntry(topicId: string): Promise<AssemblyRegistryEntry | null> {\n if (!this.client) {\n return null;\n }\n\n try {\n const messages = await this.client.mirrorNode.getTopicMessagesByFilter(\n topicId,\n {\n order: 'desc',\n limit: 1,\n },\n );\n\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const latestMessage = messages[0];\n let data: any;\n\n if ((latestMessage as any).raw_content) {\n data = JSON.parse((latestMessage as any).raw_content);\n } else {\n const msgAny = latestMessage as any;\n if (msgAny.p === 'hcs-12' && msgAny.op) {\n data = {\n p: msgAny.p,\n op: msgAny.op,\n name: msgAny.name,\n version: msgAny.version,\n description: msgAny.description,\n permissions: msgAny.permissions,\n metadata: msgAny.metadata,\n data: msgAny.data,\n category: msgAny.category,\n source: msgAny.source,\n inputs: msgAny.inputs,\n outputs: msgAny.outputs,\n tags: msgAny.tags,\n fields: msgAny.fields,\n styles: msgAny.styles,\n actions: msgAny.actions,\n blocks: msgAny.blocks,\n refs: msgAny.refs,\n };\n\n Object.keys(data).forEach(key => {\n if (data[key] === undefined) {\n delete data[key];\n }\n });\n } else {\n return null;\n }\n }\n\n return {\n id: latestMessage.sequence_number.toString(),\n sequenceNumber: latestMessage.sequence_number,\n timestamp:\n latestMessage.consensus_timestamp || new Date().toISOString(),\n submitter: latestMessage.payer || 'unknown',\n data,\n };\n } catch (error) {\n this.logger.error('Failed to get latest entry', { topicId, error });\n return null;\n }\n }\n\n /**\n * List all entries with optional filtering\n */\n async listEntries(filter?: {\n submitter?: string;\n afterTimestamp?: string;\n beforeTimestamp?: string;\n }): Promise<AssemblyRegistryEntry[]> {\n if (this.topicId && this.client) {\n await this.sync();\n }\n\n const entries = Array.from(this.entries.values());\n\n if (!filter) return entries;\n\n return entries.filter(entry => {\n if (filter.submitter && entry.submitter !== filter.submitter) {\n return false;\n }\n if (filter.afterTimestamp && entry.timestamp < filter.afterTimestamp) {\n return false;\n }\n if (filter.beforeTimestamp && entry.timestamp > filter.beforeTimestamp) {\n return false;\n }\n return true;\n });\n }\n\n /**\n * Sync entries from the network\n */\n async sync(): Promise<void> {\n if (!this.topicId || !this.client) {\n this.logger.warn('Cannot sync without topic ID and client');\n return;\n }\n\n this.logger.info('Syncing registry entries', {\n topicId: this.topicId,\n registryType: RegistryType[this.registryType],\n lastSync: this.lastSyncTimestamp,\n });\n\n try {\n const messages = await this.client.mirrorNode.getTopicMessagesByFilter(\n this.topicId,\n {\n startTime: this.lastSyncTimestamp,\n order: 'asc',\n limit: 100,\n },\n );\n\n for (const msg of messages) {\n try {\n let data: any;\n\n if ((msg as any).raw_content) {\n data = JSON.parse((msg as any).raw_content);\n } else {\n const msgAny = msg as any;\n if (msgAny.p === 'hcs-12' && msgAny.op) {\n data = {\n p: msgAny.p,\n op: msgAny.op,\n name: msgAny.name,\n version: msgAny.version,\n description: msgAny.description,\n permissions: msgAny.permissions,\n metadata: msgAny.metadata,\n data: msgAny.data,\n category: msgAny.category,\n source: msgAny.source,\n inputs: msgAny.inputs,\n outputs: msgAny.outputs,\n tags: msgAny.tags,\n fields: msgAny.fields,\n styles: msgAny.styles,\n actions: msgAny.actions,\n blocks: msgAny.blocks,\n refs: msgAny.refs,\n t_id: msgAny.t_id,\n hash: msgAny.hash,\n wasm_hash: msgAny.wasm_hash,\n info_t_id: msgAny.info_t_id,\n validation_rules: msgAny.validation_rules,\n js_t_id: msgAny.js_t_id,\n js_hash: msgAny.js_hash,\n interface_version: msgAny.interface_version,\n title: msgAny.title,\n template: msgAny.template,\n author: msgAny.author,\n m: msgAny.m,\n };\n\n Object.keys(data).forEach(key => {\n if (data[key] === undefined) {\n delete data[key];\n }\n });\n } else {\n continue;\n }\n }\n\n if (data.p !== 'hcs-12') {\n continue;\n }\n\n const entry: AssemblyRegistryEntry = {\n id: msg.sequence_number.toString(),\n sequenceNumber: msg.sequence_number,\n timestamp: msg.consensus_timestamp || new Date().toISOString(),\n submitter: msg.payer || 'unknown',\n data,\n };\n this.entries.set(entry.id, entry);\n } catch (error) {\n this.logger.warn('Failed to parse registry message', {\n sequenceNumber: msg.sequence_number,\n error,\n });\n }\n }\n\n if (messages.length > 0) {\n this.lastSyncTimestamp =\n messages[messages.length - 1].consensus_timestamp ||\n new Date().toISOString();\n } else {\n this.lastSyncTimestamp = new Date().toISOString();\n }\n\n this.logger.info('Registry sync completed', {\n topicId: this.topicId,\n messageCount: messages.length,\n lastSync: this.lastSyncTimestamp,\n });\n } catch (error) {\n this.logger.error('Failed to sync registry', { error });\n throw error;\n }\n }\n\n /**\n * Get the registry topic memo format\n */\n getTopicMemo(): string {\n const indexed = 1;\n const ttl = 60;\n const type = this.registryType;\n return `hcs-12:${indexed}:${ttl}:${type}`;\n }\n\n /**\n * Create a new registry topic\n */\n async createRegistryTopic(): Promise<string> {\n if (!this.client) {\n throw new Error('Client required to create topic');\n }\n\n const topicId = await this.client.createRegistryTopic(this.registryType);\n this.topicId = topicId;\n\n return topicId;\n }\n\n /**\n * Get registry configuration\n */\n getConfig(): RegistryConfig {\n return {\n type: this.registryType,\n indexed: false,\n ttl: 60,\n topicId: this.topicId,\n memo: this.getTopicMemo(),\n };\n }\n\n /**\n * Store large content via HCS-1 inscription\n */\n protected async inscribeContent(\n content: Buffer | string,\n mimeType: string,\n metadata?: Record<string, any>,\n ): Promise<string> {\n if (!this.client) {\n throw new Error('Client required for inscription');\n }\n\n const buffer = typeof content === 'string' ? Buffer.from(content) : content;\n\n this.logger.info('Inscribing content via HCS-1', {\n size: buffer.length,\n mimeType,\n registryType: RegistryType[this.registryType],\n });\n\n let response;\n\n if ('getOperatorAccountId' in this.client) {\n response = await inscribe(\n {\n type: 'buffer',\n buffer,\n fileName:\n mimeType === 'application/octet-stream' &&\n metadata?.fileType === 'wasm'\n ? `${metadata?.name || 'content'}.wasm`\n : metadata?.name || 'content',\n mimeType,\n },\n {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n },\n {\n mode: 'file',\n metadata,\n waitForConfirmation: true,\n },\n );\n } else {\n const { accountId, signer } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n response = await inscribeWithSigner(\n {\n type: 'buffer',\n buffer,\n fileName:\n mimeType === 'application/octet-stream' &&\n metadata?.fileType === 'wasm'\n ? `${metadata?.name || 'content'}.wasm`\n : metadata?.name || 'content',\n mimeType,\n },\n signer,\n {\n mode: 'file',\n metadata,\n waitForConfirmation: true,\n },\n );\n }\n\n if (!response.confirmed) {\n throw new Error('Failed to inscribe content');\n }\n\n const topicId = response.inscription.topic_id;\n if (!topicId) {\n throw new Error('No topic ID in inscription response');\n }\n\n this.logger.info('Content inscribed successfully', {\n topicId,\n });\n return topicId;\n }\n\n /**\n * Validate common registration fields\n */\n protected validateBaseRegistration(\n data: ActionRegistration | AssemblyRegistration | HashLinksRegistration,\n ): void {\n if (!data.p || data.p !== 'hcs-12') {\n throw new Error('Invalid protocol identifier');\n }\n\n if (!data.op || data.op !== 'register') {\n throw new Error('Invalid operation');\n }\n }\n\n /**\n * Clear local cache\n */\n clearCache(): void {\n this.entries.clear();\n this.lastSyncTimestamp = undefined;\n this.logger.info('Registry cache cleared', {\n registryType: RegistryType[this.registryType],\n });\n }\n\n /**\n * Get registry statistics\n */\n getStats(): {\n entryCount: number;\n lastSync?: string;\n topicId?: string;\n registryType: string;\n } {\n return {\n entryCount: this.entries.size,\n lastSync: this.lastSyncTimestamp,\n topicId: this.topicId,\n registryType: RegistryType[this.registryType],\n };\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es31.js","sources":["../../src/hcs-12/registries/action-registry.ts"],"sourcesContent":["/**\n * Action Registry Implementation for HCS-12\n *\n * Manages registration and retrieval of HashLink WASM actions.\n */\n\nimport { ILogger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport {\n RegistryType,\n AssemblyRegistryEntry,\n ActionRegistration,\n ModuleInfo,\n SourceVerification,\n} from '../types';\nimport { BaseRegistry } from './base-registry';\nimport { retrieveInscription } from '../../inscribe';\nimport { getCryptoAdapter } from '../../utils/crypto-abstraction';\nimport { isSSREnvironment } from '../../utils/crypto-env';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\nimport {\n validateActionRegistration,\n safeValidate,\n actionRegistrationSchema,\n} from '../validation/schemas';\nimport { ZodError } from 'zod';\n\n/**\n * Registry for HashLink WASM actions\n */\nexport class ActionRegistry extends BaseRegistry {\n private actionsByHash: Map<string, ActionRegistration> = new Map();\n private cryptoAdapter = getCryptoAdapter();\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n topicId?: string,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n super(networkType, logger, RegistryType.ACTION, topicId, client);\n }\n\n /**\n * Register a WASM module with its binary via HCS-1\n */\n async registerWithWasm(\n wasmBinary: Buffer,\n moduleInfo: ModuleInfo,\n sourceVerification?: SourceVerification,\n ): Promise<ActionRegistration> {\n let wasmHash: string;\n let infoHash: string;\n\n if (isSSREnvironment()) {\n wasmHash = this.createSSRSafeHash(wasmBinary, 'wasm');\n const infoString = JSON.stringify(moduleInfo);\n infoHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const wasmHasher = this.cryptoAdapter.createHash('sha256');\n const wasmResult = wasmHasher.update(wasmBinary).digest('hex');\n const wasmHashValue =\n wasmResult instanceof Promise ? await wasmResult : wasmResult;\n wasmHash =\n typeof wasmHashValue === 'string'\n ? wasmHashValue\n : wasmHashValue.toString('hex');\n\n const infoString = JSON.stringify(moduleInfo);\n const infoHasher = this.cryptoAdapter.createHash('sha256');\n const infoResult = infoHasher\n .update(Buffer.from(infoString))\n .digest('hex');\n const infoHashValue =\n infoResult instanceof Promise ? await infoResult : infoResult;\n infoHash =\n typeof infoHashValue === 'string'\n ? infoHashValue\n : infoHashValue.toString('hex');\n }\n\n const wasmTopicId = await this.inscribeContent(\n wasmBinary,\n 'application/octet-stream',\n {\n name: moduleInfo.name,\n version: moduleInfo.version,\n hash: wasmHash,\n fileType: 'wasm',\n },\n );\n\n let infoTopicId: string | undefined;\n const infoString = JSON.stringify(moduleInfo);\n if (Buffer.byteLength(infoString, 'utf8') > 1024) {\n infoTopicId = await this.inscribeContent(infoString, 'application/json', {\n name: `${moduleInfo.name}-info`,\n version: moduleInfo.version,\n });\n }\n\n const registration: ActionRegistration = {\n p: 'hcs-12',\n op: 'register',\n t_id: wasmTopicId,\n hash: infoHash,\n wasm_hash: wasmHash,\n info_t_id: infoTopicId,\n source_verification: sourceVerification,\n m: `${moduleInfo.name} v${moduleInfo.version}`,\n };\n\n const id = await this.register(registration);\n return registration;\n }\n\n /**\n * Register a new WASM action\n */\n async register(registration: ActionRegistration): Promise<string> {\n this.validateRegistration(registration);\n\n if (this.topicId && this.client) {\n this.logger.info('Submitting action registration to HCS', {\n topicId: this.topicId,\n hash: registration.hash,\n wasmHash: registration.wasm_hash,\n });\n\n const result = await this.client.submitMessage(\n this.topicId,\n JSON.stringify(registration),\n );\n\n const sequenceNumber = result.sequenceNumber;\n if (!sequenceNumber) {\n throw new Error('No sequence number returned from submission');\n }\n\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter:\n 'getHashConnect' in this.client\n ? (await (this.client as HCS12BrowserClient).getAccountAndSigner())\n .accountId\n : this.client.getOperatorAccountId(),\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n this.logger.info('Action registered', {\n hash: registration.hash,\n sequenceNumber,\n hasSourceVerification: !!registration.source_verification,\n });\n\n return sequenceNumber.toString();\n } else {\n const sequenceNumber = this.entries.size + 1;\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter: 'local',\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n return sequenceNumber.toString();\n }\n }\n\n /**\n * Retrieve action by hash\n */\n async getAction(hash: string): Promise<ActionRegistration | null> {\n const cached = this.actionsByHash.get(hash);\n if (cached) return cached;\n\n if (this.topicId && this.client) {\n await this.sync();\n return this.actionsByHash.get(hash) || null;\n }\n\n return null;\n }\n\n /**\n * Retrieve action by topic ID\n */\n async getActionByTopicId(\n topicId: string,\n ): Promise<ActionRegistration | null> {\n this.logger.debug('getActionByTopicId called', { topicId });\n console.log('DEBUG: getActionByTopicId called', {\n topicId,\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(a => a.t_id),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found in cache', { topicId, action });\n console.log('DEBUG: Action found in cache', { topicId, action });\n return action;\n }\n }\n\n if (this.topicId && this.client) {\n this.logger.debug('Action not in cache, syncing...', { topicId });\n console.log('DEBUG: Action not in cache, syncing...');\n await this.sync();\n\n console.log('DEBUG: After sync', {\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(\n a => a.t_id,\n ),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found after sync', { topicId, action });\n console.log('DEBUG: Action found after sync', { topicId, action });\n return action;\n }\n }\n }\n\n this.logger.warn('Action not found', { topicId });\n console.log('DEBUG: Action not found', { topicId });\n return null;\n }\n\n /**\n * Retrieve action info by hash\n */\n async getActionInfo(hash: string): Promise<ModuleInfo | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n try {\n let infoString: string;\n\n if (action.info_t_id) {\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch INFO');\n return null;\n }\n\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.info_t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.info_t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n infoString =\n typeof inscription.content === 'string'\n ? inscription.content\n : Buffer.from(inscription.content).toString('utf8');\n } else {\n this.logger.warn('Inline INFO storage not yet implemented');\n return null;\n }\n\n const moduleInfo = JSON.parse(infoString) as ModuleInfo;\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(Buffer.from(infoString)).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.hash) {\n this.logger.error('INFO hash mismatch', {\n expected: action.hash,\n computed: computedHash,\n });\n throw new Error('Module info verification failed');\n }\n\n return moduleInfo;\n } catch (error) {\n this.logger.error('Failed to fetch action INFO', {\n hash,\n error,\n });\n return null;\n }\n }\n\n /**\n * Retrieve action WASM binary\n */\n async getActionWasm(hash: string): Promise<Uint8Array | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch WASM');\n return null;\n }\n\n try {\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n\n const wasmBuffer =\n typeof inscription.content === 'string'\n ? Buffer.from(inscription.content, 'base64')\n : Buffer.from(inscription.content);\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(wasmBuffer, 'wasm');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(wasmBuffer).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.wasm_hash) {\n this.logger.error('WASM hash mismatch', {\n expected: action.wasm_hash,\n computed: computedHash,\n });\n throw new Error('WASM binary verification failed');\n }\n\n return new Uint8Array(wasmBuffer);\n } catch (error) {\n this.logger.error('Failed to fetch WASM from HCS-1', {\n topicId: action.t_id,\n error,\n });\n return null;\n }\n }\n\n /**\n * Search actions by criteria\n */\n async searchActions(criteria: {\n creator?: string;\n capability?: string;\n afterTimestamp?: string;\n beforeTimestamp?: string;\n hasSourceVerification?: boolean;\n }): Promise<ActionRegistration[]> {\n const entries = await this.listEntries({\n submitter: criteria.creator,\n afterTimestamp: criteria.afterTimestamp,\n beforeTimestamp: criteria.beforeTimestamp,\n });\n\n return entries\n .map(entry => entry.data as ActionRegistration)\n .filter(action => {\n if (criteria.hasSourceVerification !== undefined) {\n const hasVerification = !!action.source_verification;\n if (hasVerification !== criteria.hasSourceVerification) return false;\n }\n\n return true;\n });\n }\n\n /**\n * Get actions by version chain\n */\n async getVersionChain(latestHash: string): Promise<ActionRegistration[]> {\n const chain: ActionRegistration[] = [];\n let currentHash: string | undefined = latestHash;\n\n while (currentHash) {\n const action = await this.getAction(currentHash);\n if (!action) break;\n\n chain.push(action);\n\n currentHash = undefined;\n }\n\n return chain;\n }\n\n /**\n * Validate action registration using Zod schema\n */\n private validateRegistration(registration: ActionRegistration): void {\n try {\n validateActionRegistration(registration);\n } catch (error) {\n if (error instanceof ZodError) {\n const firstError = error.errors[0];\n throw new Error(\n `Validation failed: ${firstError.path.join('.')} - ${firstError.message}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Override sync to handle action-specific processing\n */\n async sync(): Promise<void> {\n await super.sync();\n\n this.actionsByHash.clear();\n for (const entry of this.entries.values()) {\n const action = entry.data as ActionRegistration;\n this.actionsByHash.set(action.hash, action);\n }\n }\n\n /**\n * Override clear cache to also clear action hash index\n */\n clearCache(): void {\n super.clearCache();\n this.actionsByHash.clear();\n }\n\n /**\n * Create SSR-safe hash\n */\n private createSSRSafeHash(data: Buffer, type: string): string {\n let hash = 0;\n\n for (let i = 0; i < Math.min(data.length, 256); i++) {\n hash = ((hash << 5) - hash + data[i]) & 0xffffffff;\n }\n\n return `ssr-${type}-${data.length}-${Math.abs(hash).toString(16).padStart(8, '0')}`;\n }\n}\n"],"names":["infoString"],"mappings":"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"}
@@ -1,362 +1,134 @@
1
- import { RegistryType } from "./standards-sdk.es30.js";
2
- import { BaseRegistry } from "./standards-sdk.es31.js";
3
- import { retrieveInscription } from "./standards-sdk.es125.js";
4
- import "./standards-sdk.es139.js";
5
- import { getCryptoAdapter } from "./standards-sdk.es120.js";
6
- import { isSSREnvironment } from "./standards-sdk.es118.js";
7
- import { validateActionRegistration } from "./standards-sdk.es43.js";
8
- import { ZodError } from "zod";
9
- class ActionRegistry extends BaseRegistry {
10
- constructor(networkType, logger, topicId, client) {
11
- super(networkType, logger, RegistryType.ACTION, topicId, client);
12
- this.actionsByHash = /* @__PURE__ */ new Map();
13
- this.cryptoAdapter = getCryptoAdapter();
1
+ import { HRLResolver } from "./standards-sdk.es109.js";
2
+ class BlockLoader {
3
+ constructor(networkType, logger, client) {
4
+ this.blockCache = /* @__PURE__ */ new Map();
5
+ this.templateCache = /* @__PURE__ */ new Map();
6
+ this.networkType = networkType;
7
+ this.logger = logger;
8
+ this.client = client;
14
9
  }
15
10
  /**
16
- * Register a WASM module with its binary via HCS-1
11
+ * Load a block definition from HCS-1
17
12
  */
18
- async registerWithWasm(wasmBinary, moduleInfo, sourceVerification) {
19
- let wasmHash;
20
- let infoHash;
21
- if (isSSREnvironment()) {
22
- wasmHash = this.createSSRSafeHash(wasmBinary, "wasm");
23
- const infoString2 = JSON.stringify(moduleInfo);
24
- infoHash = this.createSSRSafeHash(Buffer.from(infoString2), "info");
25
- } else {
26
- const wasmHasher = this.cryptoAdapter.createHash("sha256");
27
- const wasmResult = wasmHasher.update(wasmBinary).digest("hex");
28
- const wasmHashValue = wasmResult instanceof Promise ? await wasmResult : wasmResult;
29
- wasmHash = typeof wasmHashValue === "string" ? wasmHashValue : wasmHashValue.toString("hex");
30
- const infoString2 = JSON.stringify(moduleInfo);
31
- const infoHasher = this.cryptoAdapter.createHash("sha256");
32
- const infoResult = infoHasher.update(Buffer.from(infoString2)).digest("hex");
33
- const infoHashValue = infoResult instanceof Promise ? await infoResult : infoResult;
34
- infoHash = typeof infoHashValue === "string" ? infoHashValue : infoHashValue.toString("hex");
35
- }
36
- const wasmTopicId = await this.inscribeContent(
37
- wasmBinary,
38
- "application/octet-stream",
39
- {
40
- name: moduleInfo.name,
41
- version: moduleInfo.version,
42
- hash: wasmHash,
43
- fileType: "wasm"
44
- }
45
- );
46
- let infoTopicId;
47
- const infoString = JSON.stringify(moduleInfo);
48
- if (Buffer.byteLength(infoString, "utf8") > 1024) {
49
- infoTopicId = await this.inscribeContent(infoString, "application/json", {
50
- name: `${moduleInfo.name}-info`,
51
- version: moduleInfo.version
52
- });
53
- }
54
- const registration = {
55
- p: "hcs-12",
56
- op: "register",
57
- t_id: wasmTopicId,
58
- hash: infoHash,
59
- wasm_hash: wasmHash,
60
- info_t_id: infoTopicId,
61
- source_verification: sourceVerification,
62
- m: `${moduleInfo.name} v${moduleInfo.version}`
63
- };
64
- await this.register(registration);
65
- return registration;
66
- }
67
- /**
68
- * Register a new WASM action
69
- */
70
- async register(registration) {
71
- this.validateRegistration(registration);
72
- if (this.topicId && this.client) {
73
- this.logger.info("Submitting action registration to HCS", {
74
- topicId: this.topicId,
75
- hash: registration.hash,
76
- wasmHash: registration.wasm_hash
77
- });
78
- const result = await this.client.submitMessage(
79
- this.topicId,
80
- JSON.stringify(registration)
81
- );
82
- const sequenceNumber = result.sequenceNumber;
83
- if (!sequenceNumber) {
84
- throw new Error("No sequence number returned from submission");
85
- }
86
- const entry = {
87
- id: sequenceNumber.toString(),
88
- sequenceNumber,
89
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
90
- submitter: "getHashConnect" in this.client ? (await this.client.getAccountAndSigner()).accountId : this.client.getOperatorAccountId(),
91
- data: registration
92
- };
93
- this.entries.set(entry.id, entry);
94
- this.actionsByHash.set(registration.hash, registration);
95
- this.logger.info("Action registered", {
96
- hash: registration.hash,
97
- sequenceNumber,
98
- hasSourceVerification: !!registration.source_verification
99
- });
100
- return sequenceNumber.toString();
101
- } else {
102
- const sequenceNumber = this.entries.size + 1;
103
- const entry = {
104
- id: sequenceNumber.toString(),
105
- sequenceNumber,
106
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
107
- submitter: "local",
108
- data: registration
109
- };
110
- this.entries.set(entry.id, entry);
111
- this.actionsByHash.set(registration.hash, registration);
112
- return sequenceNumber.toString();
113
- }
114
- }
115
- /**
116
- * Retrieve action by hash
117
- */
118
- async getAction(hash) {
119
- const cached = this.actionsByHash.get(hash);
13
+ async loadBlockDefinition(blockTopicId) {
14
+ const cached = this.blockCache.get(blockTopicId);
120
15
  if (cached) return cached;
121
- if (this.topicId && this.client) {
122
- await this.sync();
123
- return this.actionsByHash.get(hash) || null;
124
- }
125
- return null;
126
- }
127
- /**
128
- * Retrieve action by topic ID
129
- */
130
- async getActionByTopicId(topicId) {
131
- this.logger.debug("getActionByTopicId called", { topicId });
132
- console.log("DEBUG: getActionByTopicId called", {
133
- topicId,
134
- cacheSize: this.actionsByHash.size,
135
- cachedTopicIds: Array.from(this.actionsByHash.values()).map((a) => a.t_id)
136
- });
137
- for (const action of this.actionsByHash.values()) {
138
- if (action.t_id === topicId) {
139
- this.logger.debug("Action found in cache", { topicId, action });
140
- console.log("DEBUG: Action found in cache", { topicId, action });
141
- return action;
142
- }
143
- }
144
- if (this.topicId && this.client) {
145
- this.logger.debug("Action not in cache, syncing...", { topicId });
146
- console.log("DEBUG: Action not in cache, syncing...");
147
- await this.sync();
148
- console.log("DEBUG: After sync", {
149
- cacheSize: this.actionsByHash.size,
150
- cachedTopicIds: Array.from(this.actionsByHash.values()).map(
151
- (a) => a.t_id
152
- )
153
- });
154
- for (const action of this.actionsByHash.values()) {
155
- if (action.t_id === topicId) {
156
- this.logger.debug("Action found after sync", { topicId, action });
157
- console.log("DEBUG: Action found after sync", { topicId, action });
158
- return action;
159
- }
160
- }
161
- }
162
- this.logger.warn("Action not found", { topicId });
163
- console.log("DEBUG: Action not found", { topicId });
164
- return null;
165
- }
166
- /**
167
- * Retrieve action info by hash
168
- */
169
- async getActionInfo(hash) {
170
- const action = await this.getAction(hash);
171
- if (!action) return null;
172
16
  try {
173
- let infoString;
174
- if (action.info_t_id) {
175
- if (!this.client) {
176
- this.logger.error("Client not initialized - cannot fetch INFO");
177
- return null;
178
- }
179
- let inscription;
180
- if ("getOperatorAccountId" in this.client) {
181
- inscription = await retrieveInscription(action.info_t_id, {
182
- accountId: this.client.getOperatorAccountId(),
183
- privateKey: this.client.getOperatorPrivateKey(),
184
- network: this.networkType
185
- });
186
- } else {
187
- const { accountId } = await this.client.getAccountAndSigner();
188
- inscription = await retrieveInscription(action.info_t_id, {
189
- accountId,
190
- network: this.networkType
191
- });
192
- }
193
- if (!inscription.content) {
194
- this.logger.error("No content in inscription response");
195
- return null;
196
- }
197
- infoString = typeof inscription.content === "string" ? inscription.content : Buffer.from(inscription.content).toString("utf8");
198
- } else {
199
- this.logger.warn("Inline INFO storage not yet implemented");
200
- return null;
17
+ const hrlResolver = new HRLResolver();
18
+ const result = await hrlResolver.resolve(blockTopicId, {
19
+ network: this.networkType
20
+ });
21
+ if (!result.content) {
22
+ throw new Error(`Block definition not found: ${blockTopicId}`);
201
23
  }
202
- const moduleInfo = JSON.parse(infoString);
203
- let computedHash;
204
- if (isSSREnvironment()) {
205
- computedHash = this.createSSRSafeHash(Buffer.from(infoString), "info");
24
+ let blockDefinition;
25
+ if (typeof result.content === "object" && result.content !== null && !(result.content instanceof ArrayBuffer)) {
26
+ blockDefinition = result.content;
206
27
  } else {
207
- const hasher = this.cryptoAdapter.createHash("sha256");
208
- const result = hasher.update(Buffer.from(infoString)).digest("hex");
209
- const hashValue = result instanceof Promise ? await result : result;
210
- computedHash = typeof hashValue === "string" ? hashValue : hashValue.toString("hex");
211
- }
212
- if (computedHash !== action.hash) {
213
- this.logger.error("INFO hash mismatch", {
214
- expected: action.hash,
215
- computed: computedHash
216
- });
217
- throw new Error("Module info verification failed");
28
+ blockDefinition = JSON.parse(
29
+ typeof result.content === "string" ? result.content : result.content.toString()
30
+ );
218
31
  }
219
- return moduleInfo;
32
+ this.blockCache.set(blockTopicId, blockDefinition);
33
+ return blockDefinition;
220
34
  } catch (error) {
221
- this.logger.error("Failed to fetch action INFO", {
222
- hash,
223
- error
35
+ this.logger.error("Failed to load block definition", {
36
+ blockTopicId,
37
+ error: error.message
224
38
  });
225
- return null;
39
+ throw new Error(`Failed to load block definition: ${error.message}`);
226
40
  }
227
41
  }
228
42
  /**
229
- * Retrieve action WASM binary
43
+ * Load a block template from HCS-1
230
44
  */
231
- async getActionWasm(hash) {
232
- const action = await this.getAction(hash);
233
- if (!action) return null;
234
- if (!this.client) {
235
- this.logger.error("Client not initialized - cannot fetch WASM");
236
- return null;
237
- }
45
+ async loadBlockTemplate(templateTopicId) {
46
+ const cached = this.templateCache.get(templateTopicId);
47
+ if (cached) return cached;
238
48
  try {
239
- let inscription;
240
- if ("getOperatorAccountId" in this.client) {
241
- inscription = await retrieveInscription(action.t_id, {
242
- accountId: this.client.getOperatorAccountId(),
243
- privateKey: this.client.getOperatorPrivateKey(),
244
- network: this.networkType
245
- });
246
- } else {
247
- const { accountId } = await this.client.getAccountAndSigner();
248
- inscription = await retrieveInscription(action.t_id, {
249
- accountId,
250
- network: this.networkType
251
- });
252
- }
253
- if (!inscription.content) {
254
- this.logger.error("No content in inscription response");
255
- return null;
49
+ const hrlResolver = new HRLResolver();
50
+ const result = await hrlResolver.resolve(templateTopicId, {
51
+ network: this.networkType
52
+ });
53
+ if (!result.content) {
54
+ throw new Error(`Block template not found: ${templateTopicId}`);
256
55
  }
257
- const wasmBuffer = typeof inscription.content === "string" ? Buffer.from(inscription.content, "base64") : Buffer.from(inscription.content);
258
- let computedHash;
259
- if (isSSREnvironment()) {
260
- computedHash = this.createSSRSafeHash(wasmBuffer, "wasm");
56
+ let template;
57
+ if (typeof result.content === "string") {
58
+ template = result.content;
59
+ } else if (typeof result.content === "object" && result.content !== null) {
60
+ template = result.content.text || JSON.stringify(result.content);
261
61
  } else {
262
- const hasher = this.cryptoAdapter.createHash("sha256");
263
- const result = hasher.update(wasmBuffer).digest("hex");
264
- const hashValue = result instanceof Promise ? await result : result;
265
- computedHash = typeof hashValue === "string" ? hashValue : hashValue.toString("hex");
62
+ template = result.content.toString();
266
63
  }
267
- if (computedHash !== action.wasm_hash) {
268
- this.logger.error("WASM hash mismatch", {
269
- expected: action.wasm_hash,
270
- computed: computedHash
271
- });
272
- throw new Error("WASM binary verification failed");
273
- }
274
- return new Uint8Array(wasmBuffer);
64
+ this.templateCache.set(templateTopicId, template);
65
+ return template;
275
66
  } catch (error) {
276
- this.logger.error("Failed to fetch WASM from HCS-1", {
277
- topicId: action.t_id,
278
- error
67
+ this.logger.error("Failed to load block template", {
68
+ templateTopicId,
69
+ error: error.message
279
70
  });
280
- return null;
71
+ throw new Error(`Failed to load block template: ${error.message}`);
281
72
  }
282
73
  }
283
74
  /**
284
- * Search actions by criteria
75
+ * Load a complete block (definition + template)
285
76
  */
286
- async searchActions(criteria) {
287
- const entries = await this.listEntries({
288
- submitter: criteria.creator,
289
- afterTimestamp: criteria.afterTimestamp,
290
- beforeTimestamp: criteria.beforeTimestamp
291
- });
292
- return entries.map((entry) => entry.data).filter((action) => {
293
- if (criteria.hasSourceVerification !== void 0) {
294
- const hasVerification = !!action.source_verification;
295
- if (hasVerification !== criteria.hasSourceVerification) return false;
296
- }
297
- return true;
298
- });
77
+ async loadBlock(blockTopicId) {
78
+ const definition = await this.loadBlockDefinition(blockTopicId);
79
+ const template = await this.loadBlockTemplate(definition.template_t_id);
80
+ return { definition, template };
299
81
  }
300
82
  /**
301
- * Get actions by version chain
83
+ * Store a block definition and template via HCS-1
302
84
  */
303
- async getVersionChain(latestHash) {
304
- const chain = [];
305
- let currentHash = latestHash;
306
- while (currentHash) {
307
- const action = await this.getAction(currentHash);
308
- if (!action) break;
309
- chain.push(action);
310
- currentHash = void 0;
85
+ async storeBlock(template, definition) {
86
+ if (!this.client || !("inscribeFile" in this.client)) {
87
+ throw new Error("Client does not support inscription");
311
88
  }
312
- return chain;
313
- }
314
- /**
315
- * Validate action registration using Zod schema
316
- */
317
- validateRegistration(registration) {
318
89
  try {
319
- validateActionRegistration(registration);
320
- } catch (error) {
321
- if (error instanceof ZodError) {
322
- const firstError = error.errors[0];
323
- throw new Error(
324
- `Validation failed: ${firstError.path.join(".")} - ${firstError.message}`
325
- );
90
+ const templateBuffer = Buffer.from(template);
91
+ const templateResult = await this.client.inscribeFile(
92
+ templateBuffer,
93
+ `block-${definition.name}-template.html`
94
+ );
95
+ if (!templateResult?.topic_id) {
96
+ throw new Error("Failed to inscribe block template");
326
97
  }
327
- throw error;
328
- }
329
- }
330
- /**
331
- * Override sync to handle action-specific processing
332
- */
333
- async sync() {
334
- await super.sync();
335
- this.actionsByHash.clear();
336
- for (const entry of this.entries.values()) {
337
- const action = entry.data;
338
- this.actionsByHash.set(action.hash, action);
98
+ const fullDefinition = {
99
+ ...definition,
100
+ template_t_id: templateResult.topic_id
101
+ };
102
+ const definitionBuffer = Buffer.from(JSON.stringify(fullDefinition));
103
+ const definitionResult = await this.client.inscribeFile(
104
+ definitionBuffer,
105
+ `block-${definition.name}-definition.json`
106
+ );
107
+ if (!definitionResult?.topic_id) {
108
+ throw new Error("Failed to inscribe block definition");
109
+ }
110
+ this.blockCache.set(definitionResult.topic_id, fullDefinition);
111
+ this.templateCache.set(templateResult.topic_id, template);
112
+ return {
113
+ definitionTopicId: definitionResult.topic_id,
114
+ templateTopicId: templateResult.topic_id
115
+ };
116
+ } catch (error) {
117
+ this.logger.error("Failed to store block", {
118
+ error: error.message
119
+ });
120
+ throw new Error(`Failed to store block: ${error.message}`);
339
121
  }
340
122
  }
341
123
  /**
342
- * Override clear cache to also clear action hash index
124
+ * Clear all caches
343
125
  */
344
126
  clearCache() {
345
- super.clearCache();
346
- this.actionsByHash.clear();
347
- }
348
- /**
349
- * Create SSR-safe hash
350
- */
351
- createSSRSafeHash(data, type) {
352
- let hash = 0;
353
- for (let i = 0; i < Math.min(data.length, 256); i++) {
354
- hash = (hash << 5) - hash + data[i] & 4294967295;
355
- }
356
- return `ssr-${type}-${data.length}-${Math.abs(hash).toString(16).padStart(8, "0")}`;
127
+ this.blockCache.clear();
128
+ this.templateCache.clear();
357
129
  }
358
130
  }
359
131
  export {
360
- ActionRegistry
132
+ BlockLoader
361
133
  };
362
134
  //# sourceMappingURL=standards-sdk.es32.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es32.js","sources":["../../src/hcs-12/registries/action-registry.ts"],"sourcesContent":["/**\n * Action Registry Implementation for HCS-12\n *\n * Manages registration and retrieval of HashLink WASM actions.\n */\n\nimport { ILogger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport {\n RegistryType,\n AssemblyRegistryEntry,\n ActionRegistration,\n ModuleInfo,\n SourceVerification,\n} from '../types';\nimport { BaseRegistry } from './base-registry';\nimport { retrieveInscription } from '../../inscribe';\nimport { getCryptoAdapter } from '../../utils/crypto-abstraction';\nimport { isSSREnvironment } from '../../utils/crypto-env';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\nimport {\n validateActionRegistration,\n safeValidate,\n actionRegistrationSchema,\n} from '../validation/schemas';\nimport { ZodError } from 'zod';\n\n/**\n * Registry for HashLink WASM actions\n */\nexport class ActionRegistry extends BaseRegistry {\n private actionsByHash: Map<string, ActionRegistration> = new Map();\n private cryptoAdapter = getCryptoAdapter();\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n topicId?: string,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n super(networkType, logger, RegistryType.ACTION, topicId, client);\n }\n\n /**\n * Register a WASM module with its binary via HCS-1\n */\n async registerWithWasm(\n wasmBinary: Buffer,\n moduleInfo: ModuleInfo,\n sourceVerification?: SourceVerification,\n ): Promise<ActionRegistration> {\n let wasmHash: string;\n let infoHash: string;\n\n if (isSSREnvironment()) {\n wasmHash = this.createSSRSafeHash(wasmBinary, 'wasm');\n const infoString = JSON.stringify(moduleInfo);\n infoHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const wasmHasher = this.cryptoAdapter.createHash('sha256');\n const wasmResult = wasmHasher.update(wasmBinary).digest('hex');\n const wasmHashValue =\n wasmResult instanceof Promise ? await wasmResult : wasmResult;\n wasmHash =\n typeof wasmHashValue === 'string'\n ? wasmHashValue\n : wasmHashValue.toString('hex');\n\n const infoString = JSON.stringify(moduleInfo);\n const infoHasher = this.cryptoAdapter.createHash('sha256');\n const infoResult = infoHasher\n .update(Buffer.from(infoString))\n .digest('hex');\n const infoHashValue =\n infoResult instanceof Promise ? await infoResult : infoResult;\n infoHash =\n typeof infoHashValue === 'string'\n ? infoHashValue\n : infoHashValue.toString('hex');\n }\n\n const wasmTopicId = await this.inscribeContent(\n wasmBinary,\n 'application/octet-stream',\n {\n name: moduleInfo.name,\n version: moduleInfo.version,\n hash: wasmHash,\n fileType: 'wasm',\n },\n );\n\n let infoTopicId: string | undefined;\n const infoString = JSON.stringify(moduleInfo);\n if (Buffer.byteLength(infoString, 'utf8') > 1024) {\n infoTopicId = await this.inscribeContent(infoString, 'application/json', {\n name: `${moduleInfo.name}-info`,\n version: moduleInfo.version,\n });\n }\n\n const registration: ActionRegistration = {\n p: 'hcs-12',\n op: 'register',\n t_id: wasmTopicId,\n hash: infoHash,\n wasm_hash: wasmHash,\n info_t_id: infoTopicId,\n source_verification: sourceVerification,\n m: `${moduleInfo.name} v${moduleInfo.version}`,\n };\n\n const id = await this.register(registration);\n return registration;\n }\n\n /**\n * Register a new WASM action\n */\n async register(registration: ActionRegistration): Promise<string> {\n this.validateRegistration(registration);\n\n if (this.topicId && this.client) {\n this.logger.info('Submitting action registration to HCS', {\n topicId: this.topicId,\n hash: registration.hash,\n wasmHash: registration.wasm_hash,\n });\n\n const result = await this.client.submitMessage(\n this.topicId,\n JSON.stringify(registration),\n );\n\n const sequenceNumber = result.sequenceNumber;\n if (!sequenceNumber) {\n throw new Error('No sequence number returned from submission');\n }\n\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter:\n 'getHashConnect' in this.client\n ? (await (this.client as HCS12BrowserClient).getAccountAndSigner())\n .accountId\n : this.client.getOperatorAccountId(),\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n this.logger.info('Action registered', {\n hash: registration.hash,\n sequenceNumber,\n hasSourceVerification: !!registration.source_verification,\n });\n\n return sequenceNumber.toString();\n } else {\n const sequenceNumber = this.entries.size + 1;\n const entry: AssemblyRegistryEntry = {\n id: sequenceNumber.toString(),\n sequenceNumber,\n timestamp: new Date().toISOString(),\n submitter: 'local',\n data: registration,\n };\n\n this.entries.set(entry.id, entry);\n this.actionsByHash.set(registration.hash, registration);\n\n return sequenceNumber.toString();\n }\n }\n\n /**\n * Retrieve action by hash\n */\n async getAction(hash: string): Promise<ActionRegistration | null> {\n const cached = this.actionsByHash.get(hash);\n if (cached) return cached;\n\n if (this.topicId && this.client) {\n await this.sync();\n return this.actionsByHash.get(hash) || null;\n }\n\n return null;\n }\n\n /**\n * Retrieve action by topic ID\n */\n async getActionByTopicId(\n topicId: string,\n ): Promise<ActionRegistration | null> {\n this.logger.debug('getActionByTopicId called', { topicId });\n console.log('DEBUG: getActionByTopicId called', {\n topicId,\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(a => a.t_id),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found in cache', { topicId, action });\n console.log('DEBUG: Action found in cache', { topicId, action });\n return action;\n }\n }\n\n if (this.topicId && this.client) {\n this.logger.debug('Action not in cache, syncing...', { topicId });\n console.log('DEBUG: Action not in cache, syncing...');\n await this.sync();\n\n console.log('DEBUG: After sync', {\n cacheSize: this.actionsByHash.size,\n cachedTopicIds: Array.from(this.actionsByHash.values()).map(\n a => a.t_id,\n ),\n });\n\n for (const action of this.actionsByHash.values()) {\n if (action.t_id === topicId) {\n this.logger.debug('Action found after sync', { topicId, action });\n console.log('DEBUG: Action found after sync', { topicId, action });\n return action;\n }\n }\n }\n\n this.logger.warn('Action not found', { topicId });\n console.log('DEBUG: Action not found', { topicId });\n return null;\n }\n\n /**\n * Retrieve action info by hash\n */\n async getActionInfo(hash: string): Promise<ModuleInfo | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n try {\n let infoString: string;\n\n if (action.info_t_id) {\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch INFO');\n return null;\n }\n\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.info_t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.info_t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n infoString =\n typeof inscription.content === 'string'\n ? inscription.content\n : Buffer.from(inscription.content).toString('utf8');\n } else {\n this.logger.warn('Inline INFO storage not yet implemented');\n return null;\n }\n\n const moduleInfo = JSON.parse(infoString) as ModuleInfo;\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(Buffer.from(infoString), 'info');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(Buffer.from(infoString)).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.hash) {\n this.logger.error('INFO hash mismatch', {\n expected: action.hash,\n computed: computedHash,\n });\n throw new Error('Module info verification failed');\n }\n\n return moduleInfo;\n } catch (error) {\n this.logger.error('Failed to fetch action INFO', {\n hash,\n error,\n });\n return null;\n }\n }\n\n /**\n * Retrieve action WASM binary\n */\n async getActionWasm(hash: string): Promise<Uint8Array | null> {\n const action = await this.getAction(hash);\n if (!action) return null;\n\n if (!this.client) {\n this.logger.error('Client not initialized - cannot fetch WASM');\n return null;\n }\n\n try {\n let inscription;\n\n if ('getOperatorAccountId' in this.client) {\n inscription = await retrieveInscription(action.t_id, {\n accountId: this.client.getOperatorAccountId(),\n privateKey: this.client.getOperatorPrivateKey(),\n network: this.networkType as 'mainnet' | 'testnet',\n });\n } else {\n const { accountId } = await (\n this.client as HCS12BrowserClient\n ).getAccountAndSigner();\n inscription = await retrieveInscription(action.t_id, {\n accountId,\n network: this.networkType as 'mainnet' | 'testnet',\n });\n }\n\n if (!inscription.content) {\n this.logger.error('No content in inscription response');\n return null;\n }\n\n const wasmBuffer =\n typeof inscription.content === 'string'\n ? Buffer.from(inscription.content, 'base64')\n : Buffer.from(inscription.content);\n\n let computedHash: string;\n if (isSSREnvironment()) {\n computedHash = this.createSSRSafeHash(wasmBuffer, 'wasm');\n } else {\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(wasmBuffer).digest('hex');\n const hashValue = result instanceof Promise ? await result : result;\n computedHash =\n typeof hashValue === 'string' ? hashValue : hashValue.toString('hex');\n }\n\n if (computedHash !== action.wasm_hash) {\n this.logger.error('WASM hash mismatch', {\n expected: action.wasm_hash,\n computed: computedHash,\n });\n throw new Error('WASM binary verification failed');\n }\n\n return new Uint8Array(wasmBuffer);\n } catch (error) {\n this.logger.error('Failed to fetch WASM from HCS-1', {\n topicId: action.t_id,\n error,\n });\n return null;\n }\n }\n\n /**\n * Search actions by criteria\n */\n async searchActions(criteria: {\n creator?: string;\n capability?: string;\n afterTimestamp?: string;\n beforeTimestamp?: string;\n hasSourceVerification?: boolean;\n }): Promise<ActionRegistration[]> {\n const entries = await this.listEntries({\n submitter: criteria.creator,\n afterTimestamp: criteria.afterTimestamp,\n beforeTimestamp: criteria.beforeTimestamp,\n });\n\n return entries\n .map(entry => entry.data as ActionRegistration)\n .filter(action => {\n if (criteria.hasSourceVerification !== undefined) {\n const hasVerification = !!action.source_verification;\n if (hasVerification !== criteria.hasSourceVerification) return false;\n }\n\n return true;\n });\n }\n\n /**\n * Get actions by version chain\n */\n async getVersionChain(latestHash: string): Promise<ActionRegistration[]> {\n const chain: ActionRegistration[] = [];\n let currentHash: string | undefined = latestHash;\n\n while (currentHash) {\n const action = await this.getAction(currentHash);\n if (!action) break;\n\n chain.push(action);\n\n currentHash = undefined;\n }\n\n return chain;\n }\n\n /**\n * Validate action registration using Zod schema\n */\n private validateRegistration(registration: ActionRegistration): void {\n try {\n validateActionRegistration(registration);\n } catch (error) {\n if (error instanceof ZodError) {\n const firstError = error.errors[0];\n throw new Error(\n `Validation failed: ${firstError.path.join('.')} - ${firstError.message}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Override sync to handle action-specific processing\n */\n async sync(): Promise<void> {\n await super.sync();\n\n this.actionsByHash.clear();\n for (const entry of this.entries.values()) {\n const action = entry.data as ActionRegistration;\n this.actionsByHash.set(action.hash, action);\n }\n }\n\n /**\n * Override clear cache to also clear action hash index\n */\n clearCache(): void {\n super.clearCache();\n this.actionsByHash.clear();\n }\n\n /**\n * Create SSR-safe hash\n */\n private createSSRSafeHash(data: Buffer, type: string): string {\n let hash = 0;\n\n for (let i = 0; i < Math.min(data.length, 256); i++) {\n hash = ((hash << 5) - hash + data[i]) & 0xffffffff;\n }\n\n return `ssr-${type}-${data.length}-${Math.abs(hash).toString(16).padStart(8, '0')}`;\n }\n}\n"],"names":["infoString"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es32.js","sources":["../../src/hcs-12/registries/block-loader.ts"],"sourcesContent":["/**\n * Block Loader for HCS-12\n *\n * Loads block definitions and templates from HCS-1 storage.\n * Blocks are not stored in a registry but directly via HCS-1.\n */\n\nimport { ILogger, Logger } from '../../utils/logger';\nimport { NetworkType } from '../../utils/types';\nimport { BlockDefinition } from '../types';\nimport type { HCS12Client } from '../sdk';\nimport type { HCS12BrowserClient } from '../browser';\nimport { HRLResolver } from '../../utils/hrl-resolver';\n\n/**\n * Loader for HCS-1 stored block definitions\n */\nexport class BlockLoader {\n private logger: ILogger;\n private networkType: NetworkType;\n private client?: HCS12Client | HCS12BrowserClient;\n private blockCache: Map<string, BlockDefinition> = new Map();\n private templateCache: Map<string, string> = new Map();\n\n constructor(\n networkType: NetworkType,\n logger: ILogger,\n client?: HCS12Client | HCS12BrowserClient,\n ) {\n this.networkType = networkType;\n this.logger = logger;\n this.client = client;\n }\n\n /**\n * Load a block definition from HCS-1\n */\n async loadBlockDefinition(blockTopicId: string): Promise<BlockDefinition> {\n const cached = this.blockCache.get(blockTopicId);\n if (cached) return cached;\n\n try {\n const hrlResolver = new HRLResolver();\n const result = await hrlResolver.resolve(blockTopicId, {\n network: this.networkType,\n });\n\n if (!result.content) {\n throw new Error(`Block definition not found: ${blockTopicId}`);\n }\n\n let blockDefinition: BlockDefinition;\n\n if (\n typeof result.content === 'object' &&\n result.content !== null &&\n !(result.content instanceof ArrayBuffer)\n ) {\n blockDefinition = result.content as BlockDefinition;\n } else {\n blockDefinition = JSON.parse(\n typeof result.content === 'string'\n ? result.content\n : result.content.toString(),\n ) as BlockDefinition;\n }\n this.blockCache.set(blockTopicId, blockDefinition);\n\n return blockDefinition;\n } catch (error) {\n this.logger.error('Failed to load block definition', {\n blockTopicId,\n error: error.message,\n });\n throw new Error(`Failed to load block definition: ${error.message}`);\n }\n }\n\n /**\n * Load a block template from HCS-1\n */\n async loadBlockTemplate(templateTopicId: string): Promise<string> {\n const cached = this.templateCache.get(templateTopicId);\n if (cached) return cached;\n\n try {\n const hrlResolver = new HRLResolver();\n const result = await hrlResolver.resolve(templateTopicId, {\n network: this.networkType,\n });\n\n if (!result.content) {\n throw new Error(`Block template not found: ${templateTopicId}`);\n }\n\n let template: string;\n\n if (typeof result.content === 'string') {\n template = result.content;\n } else if (\n typeof result.content === 'object' &&\n result.content !== null\n ) {\n template =\n (result.content as any).text || JSON.stringify(result.content);\n } else {\n template = result.content.toString();\n }\n\n this.templateCache.set(templateTopicId, template);\n\n return template;\n } catch (error) {\n this.logger.error('Failed to load block template', {\n templateTopicId,\n error: error.message,\n });\n throw new Error(`Failed to load block template: ${error.message}`);\n }\n }\n\n /**\n * Load a complete block (definition + template)\n */\n async loadBlock(blockTopicId: string): Promise<{\n definition: BlockDefinition;\n template: string;\n }> {\n const definition = await this.loadBlockDefinition(blockTopicId);\n const template = await this.loadBlockTemplate(definition.template_t_id);\n\n return { definition, template };\n }\n\n /**\n * Store a block definition and template via HCS-1\n */\n async storeBlock(\n template: string,\n definition: Omit<BlockDefinition, 'template_t_id'>,\n ): Promise<{\n definitionTopicId: string;\n templateTopicId: string;\n }> {\n if (!this.client || !('inscribeFile' in this.client)) {\n throw new Error('Client does not support inscription');\n }\n\n try {\n const templateBuffer = Buffer.from(template);\n const templateResult = await this.client.inscribeFile(\n templateBuffer,\n `block-${definition.name}-template.html`,\n );\n\n if (!templateResult?.topic_id) {\n throw new Error('Failed to inscribe block template');\n }\n\n const fullDefinition: BlockDefinition = {\n ...definition,\n template_t_id: templateResult.topic_id,\n };\n\n const definitionBuffer = Buffer.from(JSON.stringify(fullDefinition));\n const definitionResult = await this.client.inscribeFile(\n definitionBuffer,\n `block-${definition.name}-definition.json`,\n );\n\n if (!definitionResult?.topic_id) {\n throw new Error('Failed to inscribe block definition');\n }\n\n this.blockCache.set(definitionResult.topic_id, fullDefinition);\n this.templateCache.set(templateResult.topic_id, template);\n\n return {\n definitionTopicId: definitionResult.topic_id,\n templateTopicId: templateResult.topic_id,\n };\n } catch (error) {\n this.logger.error('Failed to store block', {\n error: error.message,\n });\n throw new Error(`Failed to store block: ${error.message}`);\n }\n }\n\n /**\n * Clear all caches\n */\n clearCache(): void {\n this.blockCache.clear();\n this.templateCache.clear();\n }\n}\n"],"names":[],"mappings":"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"}