@hashgraphonline/standards-sdk 0.1.144 → 0.1.145

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 (423) 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-14/issuers/hiero.d.ts.map +1 -1
  12. package/dist/cjs/hcs-15/browser.d.ts +2 -0
  13. package/dist/cjs/hcs-15/browser.d.ts.map +1 -1
  14. package/dist/cjs/hcs-15/sdk.d.ts +7 -1
  15. package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
  16. package/dist/cjs/hcs-15/tx.d.ts +4 -0
  17. package/dist/cjs/hcs-15/tx.d.ts.map +1 -1
  18. package/dist/cjs/hcs-15/types.d.ts +16 -1
  19. package/dist/cjs/hcs-15/types.d.ts.map +1 -1
  20. package/dist/cjs/hcs-16/browser.d.ts +11 -2
  21. package/dist/cjs/hcs-16/browser.d.ts.map +1 -1
  22. package/dist/cjs/hcs-16/sdk.d.ts +62 -1
  23. package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
  24. package/dist/cjs/hcs-16/tx.d.ts +21 -3
  25. package/dist/cjs/hcs-16/tx.d.ts.map +1 -1
  26. package/dist/cjs/hcs-17/base-client.d.ts +1 -0
  27. package/dist/cjs/hcs-17/base-client.d.ts.map +1 -1
  28. package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
  29. package/dist/cjs/hcs-17/tx.d.ts +2 -0
  30. package/dist/cjs/hcs-17/tx.d.ts.map +1 -1
  31. package/dist/cjs/hcs-17/types.d.ts +4 -0
  32. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  33. package/dist/cjs/index.d.ts.map +1 -1
  34. package/dist/cjs/services/registry-broker/client/base-client.d.ts +14 -1
  35. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  36. package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
  37. package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
  38. package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
  39. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  40. package/dist/cjs/services/registry-broker/schemas.d.ts +998 -577
  41. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  42. package/dist/cjs/services/registry-broker/types.d.ts +20 -1
  43. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  44. package/dist/cjs/standards-sdk.cjs +2 -2
  45. package/dist/cjs/standards-sdk.cjs.map +1 -1
  46. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  47. package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
  48. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  49. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  50. package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
  51. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  52. package/dist/es/hcs-10/sdk.d.ts +8 -0
  53. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  54. package/dist/es/hcs-11/client.d.ts +2 -2
  55. package/dist/es/hcs-11/client.d.ts.map +1 -1
  56. package/dist/es/hcs-11/person-builder.d.ts +1 -0
  57. package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
  58. package/dist/es/hcs-11/types.d.ts +1 -0
  59. package/dist/es/hcs-11/types.d.ts.map +1 -1
  60. package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  61. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  62. package/dist/es/hcs-15/browser.d.ts +2 -0
  63. package/dist/es/hcs-15/browser.d.ts.map +1 -1
  64. package/dist/es/hcs-15/sdk.d.ts +7 -1
  65. package/dist/es/hcs-15/sdk.d.ts.map +1 -1
  66. package/dist/es/hcs-15/tx.d.ts +4 -0
  67. package/dist/es/hcs-15/tx.d.ts.map +1 -1
  68. package/dist/es/hcs-15/types.d.ts +16 -1
  69. package/dist/es/hcs-15/types.d.ts.map +1 -1
  70. package/dist/es/hcs-16/browser.d.ts +11 -2
  71. package/dist/es/hcs-16/browser.d.ts.map +1 -1
  72. package/dist/es/hcs-16/sdk.d.ts +62 -1
  73. package/dist/es/hcs-16/sdk.d.ts.map +1 -1
  74. package/dist/es/hcs-16/tx.d.ts +21 -3
  75. package/dist/es/hcs-16/tx.d.ts.map +1 -1
  76. package/dist/es/hcs-17/base-client.d.ts +1 -0
  77. package/dist/es/hcs-17/base-client.d.ts.map +1 -1
  78. package/dist/es/hcs-17/sdk.d.ts.map +1 -1
  79. package/dist/es/hcs-17/tx.d.ts +2 -0
  80. package/dist/es/hcs-17/tx.d.ts.map +1 -1
  81. package/dist/es/hcs-17/types.d.ts +4 -0
  82. package/dist/es/hcs-17/types.d.ts.map +1 -1
  83. package/dist/es/index.d.ts.map +1 -1
  84. package/dist/es/services/registry-broker/client/base-client.d.ts +14 -1
  85. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  86. package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
  87. package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
  88. package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
  89. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  90. package/dist/es/services/registry-broker/schemas.d.ts +998 -577
  91. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  92. package/dist/es/services/registry-broker/types.d.ts +20 -1
  93. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  94. package/dist/es/standards-sdk.es.js +141 -135
  95. package/dist/es/standards-sdk.es.js.map +1 -1
  96. package/dist/es/standards-sdk.es10.js +70 -90
  97. package/dist/es/standards-sdk.es10.js.map +1 -1
  98. package/dist/es/standards-sdk.es100.js +229 -26
  99. package/dist/es/standards-sdk.es100.js.map +1 -1
  100. package/dist/es/standards-sdk.es101.js +109 -228
  101. package/dist/es/standards-sdk.es101.js.map +1 -1
  102. package/dist/es/standards-sdk.es102.js +15 -94
  103. package/dist/es/standards-sdk.es102.js.map +1 -1
  104. package/dist/es/standards-sdk.es103.js +80 -30
  105. package/dist/es/standards-sdk.es103.js.map +1 -1
  106. package/dist/es/standards-sdk.es104.js +27 -80
  107. package/dist/es/standards-sdk.es104.js.map +1 -1
  108. package/dist/es/standards-sdk.es105.js +136 -25
  109. package/dist/es/standards-sdk.es105.js.map +1 -1
  110. package/dist/es/standards-sdk.es106.js +27 -140
  111. package/dist/es/standards-sdk.es106.js.map +1 -1
  112. package/dist/es/standards-sdk.es107.js +20 -27
  113. package/dist/es/standards-sdk.es107.js.map +1 -1
  114. package/dist/es/standards-sdk.es108.js +156 -18
  115. package/dist/es/standards-sdk.es108.js.map +1 -1
  116. package/dist/es/standards-sdk.es109.js +198 -148
  117. package/dist/es/standards-sdk.es109.js.map +1 -1
  118. package/dist/es/standards-sdk.es11.js +121 -45
  119. package/dist/es/standards-sdk.es11.js.map +1 -1
  120. package/dist/es/standards-sdk.es110.js +747 -166
  121. package/dist/es/standards-sdk.es110.js.map +1 -1
  122. package/dist/es/standards-sdk.es111.js +9 -786
  123. package/dist/es/standards-sdk.es111.js.map +1 -1
  124. package/dist/es/standards-sdk.es112.js +567 -13
  125. package/dist/es/standards-sdk.es112.js.map +1 -1
  126. package/dist/es/standards-sdk.es113.js +576 -541
  127. package/dist/es/standards-sdk.es113.js.map +1 -1
  128. package/dist/es/standards-sdk.es114.js +12 -601
  129. package/dist/es/standards-sdk.es114.js.map +1 -1
  130. package/dist/es/standards-sdk.es115.js +2 -13
  131. package/dist/es/standards-sdk.es115.js.map +1 -1
  132. package/dist/es/standards-sdk.es116.js +87 -2
  133. package/dist/es/standards-sdk.es116.js.map +1 -1
  134. package/dist/es/standards-sdk.es117.js +37 -80
  135. package/dist/es/standards-sdk.es117.js.map +1 -1
  136. package/dist/es/standards-sdk.es118.js +2 -39
  137. package/dist/es/standards-sdk.es118.js.map +1 -1
  138. package/dist/es/standards-sdk.es119.js +231 -2
  139. package/dist/es/standards-sdk.es119.js.map +1 -1
  140. package/dist/es/standards-sdk.es12.js +60 -159
  141. package/dist/es/standards-sdk.es12.js.map +1 -1
  142. package/dist/es/standards-sdk.es120.js +1110 -193
  143. package/dist/es/standards-sdk.es120.js.map +1 -1
  144. package/dist/es/standards-sdk.es121.js +225 -1059
  145. package/dist/es/standards-sdk.es121.js.map +1 -1
  146. package/dist/es/standards-sdk.es122.js +419 -303
  147. package/dist/es/standards-sdk.es122.js.map +1 -1
  148. package/dist/es/standards-sdk.es123.js +351 -418
  149. package/dist/es/standards-sdk.es123.js.map +1 -1
  150. package/dist/es/standards-sdk.es124.js +872 -347
  151. package/dist/es/standards-sdk.es124.js.map +1 -1
  152. package/dist/es/standards-sdk.es125.js +182 -854
  153. package/dist/es/standards-sdk.es125.js.map +1 -1
  154. package/dist/es/standards-sdk.es126.js +1512 -153
  155. package/dist/es/standards-sdk.es126.js.map +1 -1
  156. package/dist/es/standards-sdk.es127.js +157 -1547
  157. package/dist/es/standards-sdk.es127.js.map +1 -1
  158. package/dist/es/standards-sdk.es128.js +192 -162
  159. package/dist/es/standards-sdk.es128.js.map +1 -1
  160. package/dist/es/standards-sdk.es129.js +61 -164
  161. package/dist/es/standards-sdk.es129.js.map +1 -1
  162. package/dist/es/standards-sdk.es13.js +200 -60
  163. package/dist/es/standards-sdk.es13.js.map +1 -1
  164. package/dist/es/standards-sdk.es130.js +102 -85
  165. package/dist/es/standards-sdk.es130.js.map +1 -1
  166. package/dist/es/standards-sdk.es131.js +222 -96
  167. package/dist/es/standards-sdk.es131.js.map +1 -1
  168. package/dist/es/standards-sdk.es132.js +153 -220
  169. package/dist/es/standards-sdk.es132.js.map +1 -1
  170. package/dist/es/standards-sdk.es133.js +104 -162
  171. package/dist/es/standards-sdk.es133.js.map +1 -1
  172. package/dist/es/standards-sdk.es134.js +296 -92
  173. package/dist/es/standards-sdk.es134.js.map +1 -1
  174. package/dist/es/standards-sdk.es135.js +432 -294
  175. package/dist/es/standards-sdk.es135.js.map +1 -1
  176. package/dist/es/standards-sdk.es136.js +14 -363
  177. package/dist/es/standards-sdk.es136.js.map +1 -1
  178. package/dist/es/standards-sdk.es137.js +79 -15
  179. package/dist/es/standards-sdk.es137.js.map +1 -1
  180. package/dist/es/standards-sdk.es138.js +79 -59
  181. package/dist/es/standards-sdk.es138.js.map +1 -1
  182. package/dist/es/standards-sdk.es139.js +152 -80
  183. package/dist/es/standards-sdk.es139.js.map +1 -1
  184. package/dist/es/standards-sdk.es14.js +149 -178
  185. package/dist/es/standards-sdk.es14.js.map +1 -1
  186. package/dist/es/standards-sdk.es140.js +7 -159
  187. package/dist/es/standards-sdk.es140.js.map +1 -1
  188. package/dist/es/standards-sdk.es141.js +86 -7
  189. package/dist/es/standards-sdk.es141.js.map +1 -1
  190. package/dist/es/standards-sdk.es142.js +44 -65
  191. package/dist/es/standards-sdk.es142.js.map +1 -1
  192. package/dist/es/standards-sdk.es143.js +30 -65
  193. package/dist/es/standards-sdk.es143.js.map +1 -1
  194. package/dist/es/standards-sdk.es144.js +34 -28
  195. package/dist/es/standards-sdk.es144.js.map +1 -1
  196. package/dist/es/standards-sdk.es145.js +28 -138
  197. package/dist/es/standards-sdk.es145.js.map +1 -1
  198. package/dist/es/standards-sdk.es146.js +133 -37
  199. package/dist/es/standards-sdk.es146.js.map +1 -1
  200. package/dist/es/standards-sdk.es147.js +34 -12281
  201. package/dist/es/standards-sdk.es147.js.map +1 -1
  202. package/dist/es/standards-sdk.es148.js +12284 -12
  203. package/dist/es/standards-sdk.es148.js.map +1 -1
  204. package/dist/es/standards-sdk.es149.js +958 -56
  205. package/dist/es/standards-sdk.es149.js.map +1 -1
  206. package/dist/es/standards-sdk.es15.js +152 -151
  207. package/dist/es/standards-sdk.es15.js.map +1 -1
  208. package/dist/es/standards-sdk.es150.js +48 -74
  209. package/dist/es/standards-sdk.es150.js.map +1 -1
  210. package/dist/es/standards-sdk.es151.js +72 -160
  211. package/dist/es/standards-sdk.es151.js.map +1 -1
  212. package/dist/es/standards-sdk.es152.js +13 -318
  213. package/dist/es/standards-sdk.es152.js.map +1 -1
  214. package/dist/es/standards-sdk.es153.js +120 -294
  215. package/dist/es/standards-sdk.es153.js.map +1 -1
  216. package/dist/es/standards-sdk.es154.js +191 -322
  217. package/dist/es/standards-sdk.es154.js.map +1 -1
  218. package/dist/es/standards-sdk.es155.js +294 -279
  219. package/dist/es/standards-sdk.es155.js.map +1 -1
  220. package/dist/es/standards-sdk.es156.js +440 -63
  221. package/dist/es/standards-sdk.es156.js.map +1 -1
  222. package/dist/es/standards-sdk.es157.js +331 -871
  223. package/dist/es/standards-sdk.es157.js.map +1 -1
  224. package/dist/es/standards-sdk.es158.js +68 -231
  225. package/dist/es/standards-sdk.es158.js.map +1 -1
  226. package/dist/es/standards-sdk.es159.js +218 -223
  227. package/dist/es/standards-sdk.es159.js.map +1 -1
  228. package/dist/es/standards-sdk.es16.js +917 -136
  229. package/dist/es/standards-sdk.es16.js.map +1 -1
  230. package/dist/es/standards-sdk.es160.js +247 -0
  231. package/dist/es/standards-sdk.es160.js.map +1 -0
  232. package/dist/es/standards-sdk.es17.js +23 -944
  233. package/dist/es/standards-sdk.es17.js.map +1 -1
  234. package/dist/es/standards-sdk.es18.js +2422 -24
  235. package/dist/es/standards-sdk.es18.js.map +1 -1
  236. package/dist/es/standards-sdk.es19.js +817 -2071
  237. package/dist/es/standards-sdk.es19.js.map +1 -1
  238. package/dist/es/standards-sdk.es2.js +654 -189
  239. package/dist/es/standards-sdk.es2.js.map +1 -1
  240. package/dist/es/standards-sdk.es20.js +205 -1091
  241. package/dist/es/standards-sdk.es20.js.map +1 -1
  242. package/dist/es/standards-sdk.es21.js +858 -221
  243. package/dist/es/standards-sdk.es21.js.map +1 -1
  244. package/dist/es/standards-sdk.es22.js +179 -903
  245. package/dist/es/standards-sdk.es22.js.map +1 -1
  246. package/dist/es/standards-sdk.es23.js +164 -179
  247. package/dist/es/standards-sdk.es23.js.map +1 -1
  248. package/dist/es/standards-sdk.es24.js +62 -118
  249. package/dist/es/standards-sdk.es24.js.map +1 -1
  250. package/dist/es/standards-sdk.es25.js +377 -52
  251. package/dist/es/standards-sdk.es25.js.map +1 -1
  252. package/dist/es/standards-sdk.es26.js +36 -394
  253. package/dist/es/standards-sdk.es26.js.map +1 -1
  254. package/dist/es/standards-sdk.es27.js +901 -50
  255. package/dist/es/standards-sdk.es27.js.map +1 -1
  256. package/dist/es/standards-sdk.es28.js +134 -902
  257. package/dist/es/standards-sdk.es28.js.map +1 -1
  258. package/dist/es/standards-sdk.es29.js +7 -134
  259. package/dist/es/standards-sdk.es29.js.map +1 -1
  260. package/dist/es/standards-sdk.es3.js +63 -680
  261. package/dist/es/standards-sdk.es3.js.map +1 -1
  262. package/dist/es/standards-sdk.es30.js +344 -7
  263. package/dist/es/standards-sdk.es30.js.map +1 -1
  264. package/dist/es/standards-sdk.es31.js +302 -287
  265. package/dist/es/standards-sdk.es31.js.map +1 -1
  266. package/dist/es/standards-sdk.es32.js +94 -322
  267. package/dist/es/standards-sdk.es32.js.map +1 -1
  268. package/dist/es/standards-sdk.es33.js +458 -101
  269. package/dist/es/standards-sdk.es33.js.map +1 -1
  270. package/dist/es/standards-sdk.es34.js +132 -451
  271. package/dist/es/standards-sdk.es34.js.map +1 -1
  272. package/dist/es/standards-sdk.es35.js +216 -130
  273. package/dist/es/standards-sdk.es35.js.map +1 -1
  274. package/dist/es/standards-sdk.es36.js +273 -195
  275. package/dist/es/standards-sdk.es36.js.map +1 -1
  276. package/dist/es/standards-sdk.es37.js +148 -87
  277. package/dist/es/standards-sdk.es37.js.map +1 -1
  278. package/dist/es/standards-sdk.es38.js +183 -320
  279. package/dist/es/standards-sdk.es38.js.map +1 -1
  280. package/dist/es/standards-sdk.es39.js +238 -161
  281. package/dist/es/standards-sdk.es39.js.map +1 -1
  282. package/dist/es/standards-sdk.es4.js +425 -63
  283. package/dist/es/standards-sdk.es4.js.map +1 -1
  284. package/dist/es/standards-sdk.es40.js +136 -254
  285. package/dist/es/standards-sdk.es40.js.map +1 -1
  286. package/dist/es/standards-sdk.es41.js +225 -176
  287. package/dist/es/standards-sdk.es41.js.map +1 -1
  288. package/dist/es/standards-sdk.es42.js +199 -261
  289. package/dist/es/standards-sdk.es42.js.map +1 -1
  290. package/dist/es/standards-sdk.es43.js +237 -199
  291. package/dist/es/standards-sdk.es43.js.map +1 -1
  292. package/dist/es/standards-sdk.es44.js +209 -201
  293. package/dist/es/standards-sdk.es44.js.map +1 -1
  294. package/dist/es/standards-sdk.es45.js +305 -201
  295. package/dist/es/standards-sdk.es45.js.map +1 -1
  296. package/dist/es/standards-sdk.es46.js +371 -261
  297. package/dist/es/standards-sdk.es46.js.map +1 -1
  298. package/dist/es/standards-sdk.es47.js +316 -371
  299. package/dist/es/standards-sdk.es47.js.map +1 -1
  300. package/dist/es/standards-sdk.es48.js +404 -336
  301. package/dist/es/standards-sdk.es48.js.map +1 -1
  302. package/dist/es/standards-sdk.es49.js +83 -449
  303. package/dist/es/standards-sdk.es49.js.map +1 -1
  304. package/dist/es/standards-sdk.es5.js +232 -354
  305. package/dist/es/standards-sdk.es5.js.map +1 -1
  306. package/dist/es/standards-sdk.es50.js +179 -89
  307. package/dist/es/standards-sdk.es50.js.map +1 -1
  308. package/dist/es/standards-sdk.es51.js +231 -165
  309. package/dist/es/standards-sdk.es51.js.map +1 -1
  310. package/dist/es/standards-sdk.es52.js +25 -262
  311. package/dist/es/standards-sdk.es52.js.map +1 -1
  312. package/dist/es/standards-sdk.es53.js +56 -26
  313. package/dist/es/standards-sdk.es53.js.map +1 -1
  314. package/dist/es/standards-sdk.es54.js +12 -57
  315. package/dist/es/standards-sdk.es54.js.map +1 -1
  316. package/dist/es/standards-sdk.es55.js +49 -12
  317. package/dist/es/standards-sdk.es55.js.map +1 -1
  318. package/dist/es/standards-sdk.es56.js +115 -43
  319. package/dist/es/standards-sdk.es56.js.map +1 -1
  320. package/dist/es/standards-sdk.es57.js +42 -115
  321. package/dist/es/standards-sdk.es57.js.map +1 -1
  322. package/dist/es/standards-sdk.es58.js +52 -43
  323. package/dist/es/standards-sdk.es58.js.map +1 -1
  324. package/dist/es/standards-sdk.es59.js +36 -50
  325. package/dist/es/standards-sdk.es59.js.map +1 -1
  326. package/dist/es/standards-sdk.es6.js +125 -246
  327. package/dist/es/standards-sdk.es6.js.map +1 -1
  328. package/dist/es/standards-sdk.es60.js +207 -39
  329. package/dist/es/standards-sdk.es60.js.map +1 -1
  330. package/dist/es/standards-sdk.es61.js +24 -200
  331. package/dist/es/standards-sdk.es61.js.map +1 -1
  332. package/dist/es/standards-sdk.es62.js +87 -25
  333. package/dist/es/standards-sdk.es62.js.map +1 -1
  334. package/dist/es/standards-sdk.es63.js +3 -51
  335. package/dist/es/standards-sdk.es63.js.map +1 -1
  336. package/dist/es/standards-sdk.es64.js +100 -3
  337. package/dist/es/standards-sdk.es64.js.map +1 -1
  338. package/dist/es/standards-sdk.es65.js +61 -62
  339. package/dist/es/standards-sdk.es65.js.map +1 -1
  340. package/dist/es/standards-sdk.es66.js +17 -98
  341. package/dist/es/standards-sdk.es66.js.map +1 -1
  342. package/dist/es/standards-sdk.es67.js +77 -19
  343. package/dist/es/standards-sdk.es67.js.map +1 -1
  344. package/dist/es/standards-sdk.es68.js +458 -77
  345. package/dist/es/standards-sdk.es68.js.map +1 -1
  346. package/dist/es/standards-sdk.es69.js +106 -240
  347. package/dist/es/standards-sdk.es69.js.map +1 -1
  348. package/dist/es/standards-sdk.es7.js +28 -183
  349. package/dist/es/standards-sdk.es7.js.map +1 -1
  350. package/dist/es/standards-sdk.es70.js +170 -286
  351. package/dist/es/standards-sdk.es70.js.map +1 -1
  352. package/dist/es/standards-sdk.es71.js +71 -207
  353. package/dist/es/standards-sdk.es71.js.map +1 -1
  354. package/dist/es/standards-sdk.es72.js +71 -72
  355. package/dist/es/standards-sdk.es72.js.map +1 -1
  356. package/dist/es/standards-sdk.es73.js +143 -71
  357. package/dist/es/standards-sdk.es73.js.map +1 -1
  358. package/dist/es/standards-sdk.es74.js +62 -136
  359. package/dist/es/standards-sdk.es74.js.map +1 -1
  360. package/dist/es/standards-sdk.es75.js +380 -45
  361. package/dist/es/standards-sdk.es75.js.map +1 -1
  362. package/dist/es/standards-sdk.es76.js +222 -130
  363. package/dist/es/standards-sdk.es76.js.map +1 -1
  364. package/dist/es/standards-sdk.es77.js +320 -444
  365. package/dist/es/standards-sdk.es77.js.map +1 -1
  366. package/dist/es/standards-sdk.es78.js +88 -370
  367. package/dist/es/standards-sdk.es78.js.map +1 -1
  368. package/dist/es/standards-sdk.es79.js +125 -89
  369. package/dist/es/standards-sdk.es79.js.map +1 -1
  370. package/dist/es/standards-sdk.es8.js +80 -29
  371. package/dist/es/standards-sdk.es8.js.map +1 -1
  372. package/dist/es/standards-sdk.es80.js +8 -125
  373. package/dist/es/standards-sdk.es80.js.map +1 -1
  374. package/dist/es/standards-sdk.es81.js +45 -6
  375. package/dist/es/standards-sdk.es81.js.map +1 -1
  376. package/dist/es/standards-sdk.es82.js +98 -44
  377. package/dist/es/standards-sdk.es82.js.map +1 -1
  378. package/dist/es/standards-sdk.es83.js +331 -84
  379. package/dist/es/standards-sdk.es83.js.map +1 -1
  380. package/dist/es/standards-sdk.es84.js +93 -160
  381. package/dist/es/standards-sdk.es84.js.map +1 -1
  382. package/dist/es/standards-sdk.es85.js +55 -275
  383. package/dist/es/standards-sdk.es85.js.map +1 -1
  384. package/dist/es/standards-sdk.es86.js +43 -55
  385. package/dist/es/standards-sdk.es86.js.map +1 -1
  386. package/dist/es/standards-sdk.es87.js +145 -22
  387. package/dist/es/standards-sdk.es87.js.map +1 -1
  388. package/dist/es/standards-sdk.es88.js +34 -47
  389. package/dist/es/standards-sdk.es88.js.map +1 -1
  390. package/dist/es/standards-sdk.es89.js +22 -57
  391. package/dist/es/standards-sdk.es89.js.map +1 -1
  392. package/dist/es/standards-sdk.es9.js +104 -80
  393. package/dist/es/standards-sdk.es9.js.map +1 -1
  394. package/dist/es/standards-sdk.es90.js +23 -28
  395. package/dist/es/standards-sdk.es90.js.map +1 -1
  396. package/dist/es/standards-sdk.es91.js +238 -23
  397. package/dist/es/standards-sdk.es91.js.map +1 -1
  398. package/dist/es/standards-sdk.es92.js +265 -152
  399. package/dist/es/standards-sdk.es92.js.map +1 -1
  400. package/dist/es/standards-sdk.es93.js +95 -68
  401. package/dist/es/standards-sdk.es93.js.map +1 -1
  402. package/dist/es/standards-sdk.es94.js +124 -136
  403. package/dist/es/standards-sdk.es94.js.map +1 -1
  404. package/dist/es/standards-sdk.es95.js +42 -138
  405. package/dist/es/standards-sdk.es95.js.map +1 -1
  406. package/dist/es/standards-sdk.es96.js +259 -42
  407. package/dist/es/standards-sdk.es96.js.map +1 -1
  408. package/dist/es/standards-sdk.es97.js +82 -243
  409. package/dist/es/standards-sdk.es97.js.map +1 -1
  410. package/dist/es/standards-sdk.es98.js +48 -47
  411. package/dist/es/standards-sdk.es98.js.map +1 -1
  412. package/dist/es/standards-sdk.es99.js +29 -100
  413. package/dist/es/standards-sdk.es99.js.map +1 -1
  414. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  415. package/dist/es/utils/crypto-env.d.ts.map +1 -1
  416. package/dist/es/utils/dynamic-import.d.ts +5 -1
  417. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  418. package/dist/es/utils/hash-adapter.d.ts.map +1 -1
  419. package/package.json +8 -7
  420. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  421. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  422. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  423. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
@@ -1,60 +1,46 @@
1
- import { HieroDidResolver } from "./standards-sdk.es60.js";
2
- import { parseHcs14Did } from "./standards-sdk.es57.js";
3
- import { multibaseB58btcDecode } from "./standards-sdk.es149.js";
4
- class ResolverRegistry {
5
- constructor() {
6
- this.resolvers = [];
7
- }
8
- register(resolver) {
9
- this.resolvers.push(resolver);
1
+ import { optionalImport } from "./standards-sdk.es151.js";
2
+ const hieroResolverModuleId = ["@hiero-did-sdk", "resolver"].join("/");
3
+ let resolverPromise = null;
4
+ async function loadResolveDID() {
5
+ if (!resolverPromise) {
6
+ resolverPromise = optionalImport(
7
+ hieroResolverModuleId
8
+ ).then((mod) => mod?.resolveDID ?? null);
10
9
  }
11
- list() {
12
- return [...this.resolvers];
10
+ return resolverPromise;
11
+ }
12
+ class HieroDidResolver {
13
+ constructor() {
14
+ this.meta = {
15
+ id: "hedera/hiero-resolver",
16
+ didMethods: ["hedera"],
17
+ caip2Networks: [
18
+ "hedera:mainnet",
19
+ "hedera:testnet",
20
+ "hedera:previewnet",
21
+ "hedera:devnet"
22
+ ],
23
+ caip10Namespaces: ["hedera"],
24
+ displayName: "Hedera (Hiero Resolver)",
25
+ description: "Resolves did:hedera identifiers via Hiero DID resolver.",
26
+ homepage: "https://github.com/hiero-ledger/hiero-did-sdk-js"
27
+ };
13
28
  }
14
- filterByDidMethod(method) {
15
- return this.resolvers.filter((r) => r.meta?.didMethods?.includes(method));
29
+ supports(did) {
30
+ return did.startsWith("did:hedera:");
16
31
  }
17
- async resolveDid(did) {
18
- for (const r of this.resolvers) {
19
- if (r.supports(did)) return r.resolve(did);
20
- }
21
- return null;
22
- }
23
- async resolveUaid(uaid) {
24
- const parsed = parseHcs14Did(uaid);
25
- if (parsed.method !== "uaid") return null;
26
- const src = parsed.params["src"];
27
- if (src) {
28
- const raw = Buffer.from(multibaseB58btcDecode(src)).toString("utf8");
29
- return this.resolveDid(raw);
30
- }
31
- const id = parsed.id;
32
- if (id.startsWith("testnet:") || id.startsWith("mainnet:") || id.startsWith("previewnet:") || id.startsWith("devnet:")) {
33
- const did = `did:hedera:${id}`;
34
- return this.resolveDid(did);
35
- }
36
- const proto = parsed.params["proto"];
37
- const nativeId = parsed.params["nativeId"];
38
- if (proto === "hcs-10" && nativeId) {
39
- const match = nativeId.match(
40
- /^hedera:(mainnet|testnet|previewnet|devnet):/
32
+ async resolve(did) {
33
+ const resolveDID = await loadResolveDID();
34
+ if (!resolveDID) {
35
+ throw new Error(
36
+ "Hiero resolver unavailable. Ensure @hiero-did-sdk/resolver is installed."
41
37
  );
42
- if (match) {
43
- const network = match[1];
44
- const did = `did:hedera:${network}:${id}`;
45
- return this.resolveDid(did);
46
- }
47
38
  }
48
- return null;
39
+ const res = await resolveDID(did);
40
+ return res && typeof res.id === "string" ? { id: res.id } : null;
49
41
  }
50
42
  }
51
- const defaultResolverRegistry = new ResolverRegistry();
52
- function registerDefaultResolvers() {
53
- defaultResolverRegistry.register(new HieroDidResolver());
54
- }
55
43
  export {
56
- ResolverRegistry,
57
- defaultResolverRegistry,
58
- registerDefaultResolvers
44
+ HieroDidResolver
59
45
  };
60
46
  //# sourceMappingURL=standards-sdk.es59.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es59.js","sources":["../../src/hcs-14/resolvers/registry.ts"],"sourcesContent":["/**\n * Resolver registry for HCS-14.\n */\n\nimport { DidDocumentMinimal, DidResolver } from './types';\nimport { HieroDidResolver } from './hiero';\nimport { parseHcs14Did } from '../did';\nimport { multibaseB58btcDecode } from '../base58';\n\nexport class ResolverRegistry {\n private resolvers: DidResolver[] = [];\n\n register(resolver: DidResolver): void {\n this.resolvers.push(resolver);\n }\n\n list(): DidResolver[] {\n return [...this.resolvers];\n }\n\n filterByDidMethod(method: string): DidResolver[] {\n return this.resolvers.filter(r => r.meta?.didMethods?.includes(method));\n }\n\n async resolveDid(did: string): Promise<DidDocumentMinimal | null> {\n for (const r of this.resolvers) {\n if (r.supports(did)) return r.resolve(did);\n }\n return null;\n }\n\n async resolveUaid(uaid: string): Promise<DidDocumentMinimal | null> {\n const parsed = parseHcs14Did(uaid);\n if (parsed.method !== 'uaid') return null;\n\n const src = parsed.params['src'];\n if (src) {\n const raw = Buffer.from(multibaseB58btcDecode(src)).toString('utf8');\n return this.resolveDid(raw);\n }\n\n const id = parsed.id;\n if (\n id.startsWith('testnet:') ||\n id.startsWith('mainnet:') ||\n id.startsWith('previewnet:') ||\n id.startsWith('devnet:')\n ) {\n const did = `did:hedera:${id}`;\n return this.resolveDid(did);\n }\n\n const proto = parsed.params['proto'];\n const nativeId = parsed.params['nativeId'];\n if (proto === 'hcs-10' && nativeId) {\n const match = nativeId.match(\n /^hedera:(mainnet|testnet|previewnet|devnet):/,\n );\n if (match) {\n const network = match[1];\n const did = `did:hedera:${network}:${id}`;\n return this.resolveDid(did);\n }\n }\n\n return null;\n }\n}\n\nexport const defaultResolverRegistry = new ResolverRegistry();\n\nexport function registerDefaultResolvers(): void {\n defaultResolverRegistry.register(new HieroDidResolver());\n}\n"],"names":[],"mappings":";;;AASO,MAAM,iBAAiB;AAAA,EAAvB,cAAA;AACL,SAAQ,YAA2B,CAAA;AAAA,EAAC;AAAA,EAEpC,SAAS,UAA6B;AACpC,SAAK,UAAU,KAAK,QAAQ;AAAA,EAC9B;AAAA,EAEA,OAAsB;AACpB,WAAO,CAAC,GAAG,KAAK,SAAS;AAAA,EAC3B;AAAA,EAEA,kBAAkB,QAA+B;AAC/C,WAAO,KAAK,UAAU,OAAO,CAAA,MAAK,EAAE,MAAM,YAAY,SAAS,MAAM,CAAC;AAAA,EACxE;AAAA,EAEA,MAAM,WAAW,KAAiD;AAChE,eAAW,KAAK,KAAK,WAAW;AAC9B,UAAI,EAAE,SAAS,GAAG,EAAG,QAAO,EAAE,QAAQ,GAAG;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,YAAY,MAAkD;AAClE,UAAM,SAAS,cAAc,IAAI;AACjC,QAAI,OAAO,WAAW,OAAQ,QAAO;AAErC,UAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,QAAI,KAAK;AACP,YAAM,MAAM,OAAO,KAAK,sBAAsB,GAAG,CAAC,EAAE,SAAS,MAAM;AACnE,aAAO,KAAK,WAAW,GAAG;AAAA,IAC5B;AAEA,UAAM,KAAK,OAAO;AAClB,QACE,GAAG,WAAW,UAAU,KACxB,GAAG,WAAW,UAAU,KACxB,GAAG,WAAW,aAAa,KAC3B,GAAG,WAAW,SAAS,GACvB;AACA,YAAM,MAAM,cAAc,EAAE;AAC5B,aAAO,KAAK,WAAW,GAAG;AAAA,IAC5B;AAEA,UAAM,QAAQ,OAAO,OAAO,OAAO;AACnC,UAAM,WAAW,OAAO,OAAO,UAAU;AACzC,QAAI,UAAU,YAAY,UAAU;AAClC,YAAM,QAAQ,SAAS;AAAA,QACrB;AAAA,MAAA;AAEF,UAAI,OAAO;AACT,cAAM,UAAU,MAAM,CAAC;AACvB,cAAM,MAAM,cAAc,OAAO,IAAI,EAAE;AACvC,eAAO,KAAK,WAAW,GAAG;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAEO,MAAM,0BAA0B,IAAI,iBAAA;AAEpC,SAAS,2BAAiC;AAC/C,0BAAwB,SAAS,IAAI,kBAAkB;AACzD;"}
1
+ {"version":3,"file":"standards-sdk.es59.js","sources":["../../src/hcs-14/resolvers/hiero.ts"],"sourcesContent":["import { DidDocumentMinimal, DidResolver } from './types';\nimport type { AdapterMeta } from '../adapters/types';\nimport { optionalImport } from '../../utils/dynamic-import';\n\ntype ResolveDID = typeof import('@hiero-did-sdk/resolver').resolveDID;\ntype HieroResolverModule = typeof import('@hiero-did-sdk/resolver');\n\nconst hieroResolverModuleId = ['@hiero-did-sdk', 'resolver'].join('/');\n\nlet resolverPromise: Promise<ResolveDID | null> | null = null;\n\nasync function loadResolveDID(): Promise<ResolveDID | null> {\n if (!resolverPromise) {\n resolverPromise = optionalImport<HieroResolverModule>(\n hieroResolverModuleId,\n ).then(mod => mod?.resolveDID ?? null);\n }\n return resolverPromise;\n}\n\nexport class HieroDidResolver implements DidResolver {\n readonly meta: AdapterMeta = {\n id: 'hedera/hiero-resolver',\n didMethods: ['hedera'],\n caip2Networks: [\n 'hedera:mainnet',\n 'hedera:testnet',\n 'hedera:previewnet',\n 'hedera:devnet',\n ],\n caip10Namespaces: ['hedera'],\n displayName: 'Hedera (Hiero Resolver)',\n description: 'Resolves did:hedera identifiers via Hiero DID resolver.',\n homepage: 'https://github.com/hiero-ledger/hiero-did-sdk-js',\n };\n supports(did: string): boolean {\n return did.startsWith('did:hedera:');\n }\n\n async resolve(did: string): Promise<DidDocumentMinimal | null> {\n const resolveDID = await loadResolveDID();\n if (!resolveDID) {\n throw new Error(\n 'Hiero resolver unavailable. Ensure @hiero-did-sdk/resolver is installed.',\n );\n }\n const res = await resolveDID(did as Parameters<ResolveDID>[0]);\n return res && typeof res.id === 'string' ? { id: res.id } : null;\n }\n}\n"],"names":[],"mappings":";AAOA,MAAM,wBAAwB,CAAC,kBAAkB,UAAU,EAAE,KAAK,GAAG;AAErE,IAAI,kBAAqD;AAEzD,eAAe,iBAA6C;AAC1D,MAAI,CAAC,iBAAiB;AACpB,sBAAkB;AAAA,MAChB;AAAA,IAAA,EACA,KAAK,CAAA,QAAO,KAAK,cAAc,IAAI;AAAA,EACvC;AACA,SAAO;AACT;AAEO,MAAM,iBAAwC;AAAA,EAA9C,cAAA;AACL,SAAS,OAAoB;AAAA,MAC3B,IAAI;AAAA,MACJ,YAAY,CAAC,QAAQ;AAAA,MACrB,eAAe;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,kBAAkB,CAAC,QAAQ;AAAA,MAC3B,aAAa;AAAA,MACb,aAAa;AAAA,MACb,UAAU;AAAA,IAAA;AAAA,EACZ;AAAA,EACA,SAAS,KAAsB;AAC7B,WAAO,IAAI,WAAW,aAAa;AAAA,EACrC;AAAA,EAEA,MAAM,QAAQ,KAAiD;AAC7D,UAAM,aAAa,MAAM,eAAA;AACzB,QAAI,CAAC,YAAY;AACf,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AACA,UAAM,MAAM,MAAM,WAAW,GAAgC;AAC7D,WAAO,OAAO,OAAO,IAAI,OAAO,WAAW,EAAE,IAAI,IAAI,GAAA,IAAO;AAAA,EAC9D;AACF;"}
@@ -1,278 +1,157 @@
1
- import { HCS6BaseClient } from "./standards-sdk.es7.js";
2
- import { HCS6RegistryType } from "./standards-sdk.es4.js";
3
- import { inscribeWithSigner } from "./standards-sdk.es125.js";
4
- import { getTopicId } from "./standards-sdk.es115.js";
5
- class HCS6BrowserClient extends HCS6BaseClient {
1
+ import { Logger } from "./standards-sdk.es105.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es126.js";
3
+ import { HCS6RegistryType, validateHCS6TTL, generateHCS6RegistryMemo, hcs6MessageSchema, HCS6Operation } from "./standards-sdk.es3.js";
4
+ import { ZodError } from "zod";
5
+ class HCS6BaseClient {
6
6
  /**
7
- * Create a new HCS-6 browser client
7
+ * Create a new HCS-6 base client
8
8
  * @param config Client configuration
9
9
  */
10
10
  constructor(config) {
11
- super(config);
12
- this.hwc = config.hwc;
13
- this.signer = config.signer;
14
- }
15
- ensureConnected() {
16
- const info = this.hwc.getAccountInfo();
17
- const accountId = info?.accountId;
18
- if (!accountId) {
19
- throw new Error(
20
- "No active wallet connection: wallet integration required to perform write operations"
21
- );
22
- }
23
- return accountId;
24
- }
25
- getSigner() {
26
- const explicit = this.signer;
27
- if (explicit) {
28
- return explicit;
29
- }
30
- this.ensureConnected();
31
- const dc = this.hwc.dAppConnector;
32
- const signer = dc?.signers?.[0];
33
- if (!signer) {
34
- throw new Error("No active wallet signer");
35
- }
36
- return signer;
11
+ this.network = config.network;
12
+ this.logger = config.logger || Logger.getInstance({
13
+ level: config.logLevel || "info",
14
+ module: "HCS6Client",
15
+ silent: config.silent
16
+ });
17
+ this.mirrorNode = new HederaMirrorNode(
18
+ this.network,
19
+ this.logger,
20
+ config.mirrorNodeUrl ? { customUrl: config.mirrorNodeUrl } : void 0
21
+ );
37
22
  }
38
23
  /**
39
- * Create a new HCS-6 registry topic (for dynamic hashinals)
40
- * Note: In browser environment, this would typically be called through a wallet or proxy service
41
- * @param options Registry creation options
42
- * @returns Promise resolving to the transaction result
24
+ * Determine the registry type from a topic memo (HCS-6 specific)
25
+ * @param memo The topic memo
26
+ * @returns The registry type or undefined if not found
43
27
  */
44
- async createRegistry(options) {
28
+ parseRegistryTypeFromMemo(memo) {
45
29
  try {
46
- this.ensureConnected();
47
- const ttl = options?.ttl ?? 86400;
48
- const memo = this.generateRegistryMemo(ttl);
49
- const topicId = await this.hwc.createTopic(memo);
50
- this.logger.info(
51
- `Created HCS-6 registry topic via wallet: ${topicId} (TTL ${ttl})`
52
- );
53
- return { success: true, topicId };
30
+ const regex = /hcs-6:(\d):(\d+)/;
31
+ const match = memo.match(regex);
32
+ if (match && match.length === 3) {
33
+ const registryType = parseInt(match[1]);
34
+ const ttl = parseInt(match[2]);
35
+ if (registryType === HCS6RegistryType.NON_INDEXED && validateHCS6TTL(ttl)) {
36
+ return { registryType, ttl };
37
+ }
38
+ }
39
+ return void 0;
54
40
  } catch (error) {
55
- this.logger.error(`Failed to create HCS-6 registry: ${error}`);
56
- return { success: false, error: String(error) };
41
+ this.logger.error(
42
+ `Error parsing HCS-6 registry type from memo: ${error}`
43
+ );
44
+ return void 0;
57
45
  }
58
46
  }
59
47
  /**
60
- * Register a new dynamic hashinal update in the registry
61
- * Note: In browser environment, this would typically be called through a wallet or proxy service
62
- * @param registryTopicId The topic ID of the HCS-6 registry
63
- * @param options Registration options
64
- * @returns Promise resolving to the operation result
48
+ * Generate a memo string for a HCS-6 registry topic
49
+ * @param ttl The time-to-live in seconds
50
+ * @returns The memo string
65
51
  */
66
- async registerEntry(registryTopicId, options) {
67
- try {
68
- const valid = await this.validateHCS6Topic(registryTopicId);
69
- if (!valid) {
70
- throw new Error(
71
- `Topic ${registryTopicId} is not a valid HCS-6 registry`
72
- );
73
- }
74
- const message = this.createRegisterMessage(
75
- options.targetTopicId,
76
- options.memo
77
- );
78
- const receipt = await this.submitMessage(registryTopicId, message);
79
- const seqField = receipt.topicSequenceNumber;
80
- const sequenceNumber = typeof seqField === "number" ? seqField : seqField?.low;
81
- return { success: true, receipt, sequenceNumber };
82
- } catch (error) {
83
- this.logger.error(`Failed to register HCS-6 entry: ${error}`);
84
- return { success: false, error: String(error) };
85
- }
52
+ generateRegistryMemo(ttl) {
53
+ return generateHCS6RegistryMemo(ttl);
86
54
  }
87
55
  /**
88
- * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)
89
- * @param topicId The topic ID of the registry
90
- * @param options Query options
91
- * @returns Promise resolving to the registry information
56
+ * Validate a HCS-6 message
57
+ * @param message The message to validate
58
+ * @returns Validation result
92
59
  */
93
- async getRegistry(topicId, options = {}) {
60
+ validateMessage(message) {
94
61
  try {
95
- const topicInfo = await this.mirrorNode.getTopicInfo(topicId);
96
- this.logger.debug(
97
- `Retrieved topic info for HCS-6 ${topicId}: ${JSON.stringify(topicInfo)}`
98
- );
99
- const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);
100
- if (!memoInfo) {
101
- throw new Error(
102
- `Topic ${topicId} is not an HCS-6 registry (invalid memo format)`
103
- );
62
+ hcs6MessageSchema.parse(message);
63
+ return { valid: true, errors: [] };
64
+ } catch (error) {
65
+ const errors = [];
66
+ if (error instanceof ZodError) {
67
+ error.errors.forEach((err) => {
68
+ const path = err.path.join(".");
69
+ errors.push(`${path ? path + ": " : ""}${err.message}`);
70
+ });
71
+ } else {
72
+ errors.push(`Unexpected error: ${error}`);
104
73
  }
105
74
  this.logger.debug(
106
- `Retrieving messages for HCS-6 topic ${topicId} with limit ${options.limit ?? 100}`
107
- );
108
- const rawMessagesResult = await this.mirrorNode.getTopicMessages(
109
- topicId,
110
- {
111
- sequenceNumber: options.skip && options.skip > 0 ? `gt:${options.skip}` : void 0,
112
- limit: options.limit ?? 100,
113
- order: options.order ?? "asc"
114
- }
75
+ `HCS-6 message validation failed: ${errors.join(", ")}`
115
76
  );
116
- const rawMessages = options.limit ? rawMessagesResult.slice(0, options.limit) : rawMessagesResult;
117
- this.logger.debug(
118
- `Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`
119
- );
120
- return this.parseRegistryEntries(
121
- topicId,
122
- rawMessages,
123
- memoInfo.registryType,
124
- memoInfo.ttl
125
- );
126
- } catch (error) {
127
- this.logger.error(`Failed to get HCS-6 registry: ${error}`);
128
- throw error;
77
+ return { valid: false, errors };
129
78
  }
130
79
  }
131
80
  /**
132
- * Submit a message to a HCS-6 topic
133
- * Note: In browser environment, this would typically be called through a wallet or proxy service
134
- * @param topicId The topic ID to submit to
135
- * @param payload The message payload
136
- * @returns Promise resolving to the transaction receipt
81
+ * Create a HCS-6 register message
82
+ * @param targetTopicId The target HCS-1 topic ID
83
+ * @param memo Optional memo
84
+ * @returns The register message
137
85
  */
138
- async submitMessage(topicId, payload) {
139
- this.ensureConnected();
140
- const { valid, errors } = this.validateMessage(payload);
141
- if (!valid) {
142
- throw new Error(`Invalid HCS-6 message: ${errors.join(", ")}`);
143
- }
144
- const receipt = await this.hwc.submitMessageToTopic(
145
- topicId,
146
- JSON.stringify(payload)
147
- );
148
- return receipt;
86
+ createRegisterMessage(targetTopicId, memo) {
87
+ return {
88
+ p: "hcs-6",
89
+ op: HCS6Operation.REGISTER,
90
+ t_id: targetTopicId,
91
+ m: memo
92
+ };
149
93
  }
150
94
  /**
151
- * Create a complete dynamic hashinal with inscription and registry
152
- * Note: In browser environment, this would typically be called through a wallet or proxy service
153
- * @param options Options for creating the dynamic hashinal
154
- * @returns Promise resolving to the creation response
95
+ * Parse HCS-6 registry entries from topic messages
96
+ * @param topicId The topic ID
97
+ * @param messages The messages to parse
98
+ * @param registryType The registry type
99
+ * @param ttl The time-to-live in seconds
100
+ * @returns The parsed registry
155
101
  */
156
- async createHashinal(options) {
157
- try {
158
- if (!this.signer) {
159
- return {
160
- success: false,
161
- error: "No signer configured for browser createHashinal"
162
- };
163
- }
164
- const inscriptionOptions = {
165
- ...options.inscriptionOptions,
166
- mode: "hashinal",
167
- metadata: options.metadata,
168
- waitForConfirmation: true,
169
- network: this.network
170
- };
171
- const input = {
172
- type: "buffer",
173
- buffer: Buffer.from(JSON.stringify(options.metadata)),
174
- fileName: "metadata.json",
175
- mimeType: "application/json"
176
- };
177
- const res = await inscribeWithSigner(
178
- input,
179
- this.signer,
180
- inscriptionOptions
181
- );
182
- const inscriptionTopicId = res.inscription?.jsonTopicId || getTopicId(res.inscription);
183
- if (!inscriptionTopicId) {
184
- return { success: false, error: "Failed to inscribe metadata" };
185
- }
186
- let registryTopicId = options.registryTopicId;
187
- if (!registryTopicId) {
188
- const reg = await this.createRegistry({ ttl: options.ttl });
189
- if (!reg.success || !reg.topicId)
190
- return { success: false, error: reg.error };
191
- registryTopicId = reg.topicId;
192
- }
193
- const regRes = await this.registerEntry(registryTopicId, {
194
- targetTopicId: inscriptionTopicId,
195
- memo: options.memo || "Initial dynamic hashinal registration"
196
- });
197
- if (!regRes.success) return { success: false, error: regRes.error };
198
- return {
199
- success: true,
200
- registryTopicId,
201
- inscriptionTopicId
202
- };
203
- } catch (error) {
204
- this.logger.error(`Failed to create dynamic hashinal: ${error}`);
205
- return { success: false, error: String(error) };
206
- }
207
- }
208
- /**
209
- * Register a dynamic hashinal with combined inscription and registry creation
210
- * Note: In browser environment, this would typically be called through a wallet or proxy service
211
- * @param options Options for registering the dynamic hashinal
212
- * @returns Promise resolving to the creation response
213
- */
214
- async register(options) {
215
- try {
216
- if (!this.signer) {
217
- return {
218
- success: false,
219
- error: "No signer configured for browser register"
220
- };
221
- }
222
- let input;
223
- if (options.data?.base64) {
224
- input = {
225
- type: "buffer",
226
- buffer: Buffer.from(options.data.base64, "base64"),
227
- fileName: "data." + (options.data.mimeType?.split("/")[1] || "bin"),
228
- mimeType: options.data.mimeType || "application/octet-stream"
229
- };
230
- } else if (options.data?.url) {
231
- input = { type: "url", url: options.data.url };
232
- } else {
233
- input = {
234
- type: "buffer",
235
- buffer: Buffer.from(JSON.stringify(options.metadata)),
236
- fileName: "metadata.json",
237
- mimeType: "application/json"
102
+ parseRegistryEntries(topicId, messages, registryType, ttl) {
103
+ const entries = [];
104
+ let latestEntry;
105
+ this.logger.debug(
106
+ `Parsing ${messages.length} messages for HCS-6 topic ${topicId}`
107
+ );
108
+ for (const msg of messages) {
109
+ try {
110
+ if (!msg.message) {
111
+ this.logger.debug(
112
+ `Message is missing 'message' property: ${JSON.stringify(msg)}`
113
+ );
114
+ continue;
115
+ }
116
+ const decodedMessage = Buffer.from(msg.message, "base64").toString(
117
+ "utf-8"
118
+ );
119
+ const message = JSON.parse(decodedMessage);
120
+ this.logger.debug(
121
+ `Successfully parsed HCS-6 message: ${JSON.stringify(message)}`
122
+ );
123
+ const { valid, errors } = this.validateMessage(message);
124
+ if (!valid) {
125
+ this.logger.warn(`Invalid HCS-6 message: ${errors.join(", ")}`);
126
+ continue;
127
+ }
128
+ const entry = {
129
+ topicId,
130
+ sequence: msg.sequence_number,
131
+ timestamp: msg.consensus_timestamp,
132
+ payer: msg.payer_account_id,
133
+ message,
134
+ consensus_timestamp: msg.consensus_timestamp,
135
+ registry_type: registryType
238
136
  };
137
+ entries.push(entry);
138
+ if (!latestEntry || entry.timestamp > latestEntry.timestamp) {
139
+ latestEntry = entry;
140
+ }
141
+ } catch (error) {
142
+ this.logger.warn(`Error parsing HCS-6 message: ${error}`);
239
143
  }
240
- const inscriptionOptions = {
241
- ...options.inscriptionOptions,
242
- mode: "hashinal",
243
- metadata: options.metadata,
244
- waitForConfirmation: true,
245
- network: this.network
246
- };
247
- const res = await inscribeWithSigner(
248
- input,
249
- this.signer,
250
- inscriptionOptions
251
- );
252
- const inscriptionTopicId = res.inscription?.jsonTopicId || getTopicId(res.inscription);
253
- if (!inscriptionTopicId)
254
- return { success: false, error: "Failed to inscribe data" };
255
- let registryTopicId = options.registryTopicId;
256
- if (!registryTopicId) {
257
- const reg = await this.createRegistry({ ttl: options.ttl });
258
- if (!reg.success || !reg.topicId)
259
- return { success: false, error: reg.error };
260
- registryTopicId = reg.topicId;
261
- }
262
- const regRes = await this.registerEntry(registryTopicId, {
263
- targetTopicId: inscriptionTopicId,
264
- memo: options.memo || "Dynamic hashinal registration"
265
- });
266
- if (!regRes.success) return { success: false, error: regRes.error };
267
- return {
268
- success: true,
269
- registryTopicId,
270
- inscriptionTopicId
271
- };
272
- } catch (error) {
273
- this.logger.error(`Failed to register dynamic hashinal: ${error}`);
274
- return { success: false, error: String(error) };
275
144
  }
145
+ this.logger.debug(
146
+ `Parsed ${entries.length} valid entries for HCS-6 topic ${topicId}`
147
+ );
148
+ return {
149
+ topicId,
150
+ registryType,
151
+ ttl,
152
+ entries: latestEntry ? [latestEntry] : [],
153
+ latestEntry
154
+ };
276
155
  }
277
156
  /**
278
157
  * Validate that a topic is a valid HCS-6 registry
@@ -303,6 +182,6 @@ class HCS6BrowserClient extends HCS6BaseClient {
303
182
  }
304
183
  }
305
184
  export {
306
- HCS6BrowserClient
185
+ HCS6BaseClient
307
186
  };
308
187
  //# sourceMappingURL=standards-sdk.es6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es6.js","sources":["../../src/hcs-6/browser.ts"],"sourcesContent":["import { HCS6BaseClient } from './base-client';\nimport {\n HCS6ClientConfig,\n HCS6Message,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6TopicRegistry,\n HCS6CreateRegistryOptions,\n HCS6RegisterEntryOptions,\n HCS6QueryRegistryOptions,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n HCS6RegistryType,\n} from './types';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport { TransactionReceipt } from '@hashgraph/sdk';\nimport {\n inscribeWithSigner,\n type InscriptionInput,\n type InscriptionOptions,\n type InscriptionResponse,\n} from '../inscribe/inscriber';\nimport { getTopicId as getInscriptionTopicId } from '../utils/topic-id-utils';\n\n/**\n * Browser client configuration for HCS-6\n */\nexport interface BrowserHCS6ClientConfig extends HCS6ClientConfig {\n hwc: HashinalsWalletConnectSDK;\n signer?: DAppSigner;\n}\n\n/**\n * Browser client for HCS-6 operations\n * This client is designed to work in browser environments where direct key management is not available\n */\nexport class HCS6BrowserClient extends HCS6BaseClient {\n private hwc: HashinalsWalletConnectSDK;\n private signer?: DAppSigner;\n /**\n * Create a new HCS-6 browser client\n * @param config Client configuration\n */\n constructor(config: BrowserHCS6ClientConfig) {\n super(config);\n this.hwc = config.hwc;\n this.signer = config.signer;\n }\n\n private ensureConnected(): string {\n const info = this.hwc.getAccountInfo();\n const accountId = info?.accountId;\n if (!accountId) {\n throw new Error(\n 'No active wallet connection: wallet integration required to perform write operations',\n );\n }\n return accountId;\n }\n\n public getSigner(): DAppSigner {\n const explicit = this.signer;\n if (explicit) {\n return explicit;\n }\n this.ensureConnected();\n const dc = this.hwc.dAppConnector;\n const signer = dc?.signers?.[0];\n if (!signer) {\n throw new Error('No active wallet signer');\n }\n return signer;\n }\n\n /**\n * Create a new HCS-6 registry topic (for dynamic hashinals)\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n async createRegistry(\n options: HCS6CreateRegistryOptions,\n ): Promise<HCS6TopicRegistrationResponse> {\n try {\n this.ensureConnected();\n const ttl = options?.ttl ?? 86400;\n const memo = this.generateRegistryMemo(ttl);\n const topicId = await this.hwc.createTopic(memo);\n this.logger.info(\n `Created HCS-6 registry topic via wallet: ${topicId} (TTL ${ttl})`,\n );\n return { success: true, topicId };\n } catch (error) {\n this.logger.error(`Failed to create HCS-6 registry: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Register a new dynamic hashinal update in the registry\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @returns Promise resolving to the operation result\n */\n async registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse> {\n try {\n const valid = await this.validateHCS6Topic(registryTopicId);\n if (!valid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n\n const message = this.createRegisterMessage(\n options.targetTopicId,\n options.memo,\n );\n const receipt = await this.submitMessage(registryTopicId, message);\n const seqField = receipt.topicSequenceNumber as\n | number\n | { low: number }\n | undefined;\n const sequenceNumber =\n typeof seqField === 'number' ? seqField : seqField?.low;\n return { success: true, receipt, sequenceNumber };\n } catch (error) {\n this.logger.error(`Failed to register HCS-6 entry: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)\n * @param topicId The topic ID of the registry\n * @param options Query options\n * @returns Promise resolving to the registry information\n */\n async getRegistry(\n topicId: string,\n options: HCS6QueryRegistryOptions = {},\n ): Promise<HCS6TopicRegistry> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n this.logger.debug(\n `Retrieved topic info for HCS-6 ${topicId}: ${JSON.stringify(topicInfo)}`,\n );\n\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n throw new Error(\n `Topic ${topicId} is not an HCS-6 registry (invalid memo format)`,\n );\n }\n\n this.logger.debug(\n `Retrieving messages for HCS-6 topic ${topicId} with limit ${options.limit ?? 100}`,\n );\n const rawMessagesResult = (await this.mirrorNode.getTopicMessages(\n topicId,\n {\n sequenceNumber:\n options.skip && options.skip > 0 ? `gt:${options.skip}` : undefined,\n limit: options.limit ?? 100,\n order: options.order ?? 'asc',\n },\n )) as unknown as Array<{\n message?: string;\n sequence_number: number;\n consensus_timestamp: string;\n payer_account_id: string;\n }>;\n\n const rawMessages = options.limit\n ? rawMessagesResult.slice(0, options.limit)\n : rawMessagesResult;\n\n this.logger.debug(\n `Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`,\n );\n\n return this.parseRegistryEntries(\n topicId,\n rawMessages,\n memoInfo.registryType,\n memoInfo.ttl,\n );\n } catch (error) {\n this.logger.error(`Failed to get HCS-6 registry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Submit a message to a HCS-6 topic\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @returns Promise resolving to the transaction receipt\n */\n async submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt> {\n this.ensureConnected();\n const { valid, errors } = this.validateMessage(payload);\n if (!valid) {\n throw new Error(`Invalid HCS-6 message: ${errors.join(', ')}`);\n }\n const receipt = await this.hwc.submitMessageToTopic(\n topicId,\n JSON.stringify(payload),\n );\n return receipt;\n }\n\n /**\n * Create a complete dynamic hashinal with inscription and registry\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Options for creating the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n async createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n if (!this.signer) {\n return {\n success: false,\n error: 'No signer configured for browser createHashinal',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n network: this.network,\n };\n\n const input: InscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n\n const res: InscriptionResponse = await inscribeWithSigner(\n input,\n this.signer,\n inscriptionOptions,\n );\n const inscriptionTopicId =\n res.inscription?.jsonTopicId || getInscriptionTopicId(res.inscription);\n if (!inscriptionTopicId) {\n return { success: false, error: 'Failed to inscribe metadata' };\n }\n\n let registryTopicId = options.registryTopicId;\n if (!registryTopicId) {\n const reg = await this.createRegistry({ ttl: options.ttl });\n if (!reg.success || !reg.topicId)\n return { success: false, error: reg.error };\n registryTopicId = reg.topicId;\n }\n\n const regRes = await this.registerEntry(registryTopicId, {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Initial dynamic hashinal registration',\n });\n if (!regRes.success) return { success: false, error: regRes.error };\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n };\n } catch (error) {\n this.logger.error(`Failed to create dynamic hashinal: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Register a dynamic hashinal with combined inscription and registry creation\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Options for registering the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n async register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n if (!this.signer) {\n return {\n success: false,\n error: 'No signer configured for browser register',\n };\n }\n\n let input: InscriptionInput;\n if (options.data?.base64) {\n input = {\n type: 'buffer',\n buffer: Buffer.from(options.data.base64, 'base64'),\n fileName: 'data.' + (options.data.mimeType?.split('/')[1] || 'bin'),\n mimeType: options.data.mimeType || 'application/octet-stream',\n };\n } else if (options.data?.url) {\n input = { type: 'url', url: options.data.url };\n } else {\n input = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n network: this.network,\n };\n\n const res: InscriptionResponse = await inscribeWithSigner(\n input,\n this.signer,\n inscriptionOptions,\n );\n const inscriptionTopicId =\n res.inscription?.jsonTopicId || getInscriptionTopicId(res.inscription);\n if (!inscriptionTopicId)\n return { success: false, error: 'Failed to inscribe data' };\n\n let registryTopicId = options.registryTopicId;\n if (!registryTopicId) {\n const reg = await this.createRegistry({ ttl: options.ttl });\n if (!reg.success || !reg.topicId)\n return { success: false, error: reg.error };\n registryTopicId = reg.topicId;\n }\n\n const regRes = await this.registerEntry(registryTopicId, {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Dynamic hashinal registration',\n });\n if (!regRes.success) return { success: false, error: regRes.error };\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n };\n } catch (error) {\n this.logger.error(`Failed to register dynamic hashinal: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Validate that a topic is a valid HCS-6 registry\n * @param topicId The topic ID to validate\n * @returns Promise resolving to true if valid, false otherwise\n */\n async validateHCS6Topic(topicId: string): Promise<boolean> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (invalid memo format)`,\n );\n return false;\n }\n\n if (memoInfo.registryType !== HCS6RegistryType.NON_INDEXED) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (must be non-indexed)`,\n );\n return false;\n }\n\n return true;\n } catch (error) {\n this.logger.error(`Error validating HCS-6 topic ${topicId}: ${error}`);\n return false;\n }\n }\n}\n"],"names":["getInscriptionTopicId"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es6.js","sources":["../../src/hcs-6/base-client.ts"],"sourcesContent":["import { Logger, ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport {\n HCS6ClientConfig,\n HCS6Message,\n HCS6Operation,\n HCS6RegisterMessage,\n HCS6RegistryType,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6TopicRegistry,\n HCS6CreateRegistryOptions,\n HCS6RegisterEntryOptions,\n HCS6QueryRegistryOptions,\n HCS6RegistryEntry,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n hcs6MessageSchema,\n validateHCS6TTL,\n generateHCS6RegistryMemo,\n} from './types';\nimport { TransactionReceipt } from '@hashgraph/sdk';\nimport { NetworkType } from '../utils/types';\nimport { ZodError } from 'zod';\n\n/**\n * Base client for HCS-6 operations\n * This abstract class provides shared functionality for both SDK and browser implementations\n */\nexport abstract class HCS6BaseClient {\n protected logger: ILogger;\n protected mirrorNode: HederaMirrorNode;\n protected network: NetworkType;\n\n /**\n * Create a new HCS-6 base client\n * @param config Client configuration\n */\n constructor(config: HCS6ClientConfig) {\n this.network = config.network;\n\n this.logger =\n config.logger ||\n Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS6Client',\n silent: config.silent,\n });\n\n this.mirrorNode = new HederaMirrorNode(\n this.network,\n this.logger,\n config.mirrorNodeUrl ? { customUrl: config.mirrorNodeUrl } : undefined,\n );\n }\n\n /**\n * Create a new HCS-6 registry topic (for dynamic hashinals)\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n abstract createRegistry(\n options: HCS6CreateRegistryOptions,\n ): Promise<HCS6TopicRegistrationResponse>;\n\n /**\n * Register a new dynamic hashinal update in the registry\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @returns Promise resolving to the operation result\n */\n abstract registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse>;\n\n /**\n * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)\n * @param topicId The topic ID of the registry\n * @param options Query options\n * @returns Promise resolving to the registry information\n */\n abstract getRegistry(\n topicId: string,\n options?: HCS6QueryRegistryOptions,\n ): Promise<HCS6TopicRegistry>;\n\n /**\n * Submit a message to a HCS-6 topic\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @returns Promise resolving to the transaction receipt\n */\n abstract submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt>;\n\n /**\n * Create a complete dynamic hashinal with inscription and registry\n * @param options Options for creating the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n abstract createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse>;\n\n /**\n * Register a dynamic hashinal with combined inscription and registry creation\n * @param options Options for registering the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n abstract register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse>;\n\n /**\n * Determine the registry type from a topic memo (HCS-6 specific)\n * @param memo The topic memo\n * @returns The registry type or undefined if not found\n */\n protected parseRegistryTypeFromMemo(\n memo: string,\n ): { registryType: HCS6RegistryType; ttl: number } | undefined {\n try {\n const regex = /hcs-6:(\\d):(\\d+)/;\n const match = memo.match(regex);\n\n if (match && match.length === 3) {\n const registryType = parseInt(match[1]) as HCS6RegistryType;\n const ttl = parseInt(match[2]);\n\n if (\n registryType === HCS6RegistryType.NON_INDEXED &&\n validateHCS6TTL(ttl)\n ) {\n return { registryType, ttl };\n }\n }\n\n return undefined;\n } catch (error) {\n this.logger.error(\n `Error parsing HCS-6 registry type from memo: ${error}`,\n );\n return undefined;\n }\n }\n\n /**\n * Generate a memo string for a HCS-6 registry topic\n * @param ttl The time-to-live in seconds\n * @returns The memo string\n */\n protected generateRegistryMemo(ttl: number): string {\n return generateHCS6RegistryMemo(ttl);\n }\n\n /**\n * Validate a HCS-6 message\n * @param message The message to validate\n * @returns Validation result\n */\n protected validateMessage(message: unknown): {\n valid: boolean;\n errors: string[];\n } {\n try {\n hcs6MessageSchema.parse(message);\n return { valid: true, errors: [] };\n } catch (error) {\n const errors: string[] = [];\n\n if (error instanceof ZodError) {\n error.errors.forEach(err => {\n const path = err.path.join('.');\n errors.push(`${path ? path + ': ' : ''}${err.message}`);\n });\n } else {\n errors.push(`Unexpected error: ${error}`);\n }\n\n this.logger.debug(\n `HCS-6 message validation failed: ${errors.join(', ')}`,\n );\n return { valid: false, errors };\n }\n }\n\n /**\n * Create a HCS-6 register message\n * @param targetTopicId The target HCS-1 topic ID\n * @param memo Optional memo\n * @returns The register message\n */\n protected createRegisterMessage(\n targetTopicId: string,\n memo?: string,\n ): HCS6RegisterMessage {\n return {\n p: 'hcs-6',\n op: HCS6Operation.REGISTER,\n t_id: targetTopicId,\n m: memo,\n };\n }\n\n /**\n * Parse HCS-6 registry entries from topic messages\n * @param topicId The topic ID\n * @param messages The messages to parse\n * @param registryType The registry type\n * @param ttl The time-to-live in seconds\n * @returns The parsed registry\n */\n protected parseRegistryEntries(\n topicId: string,\n messages: Array<{\n message?: string;\n sequence_number: number;\n consensus_timestamp: string;\n payer_account_id: string;\n }>,\n registryType: HCS6RegistryType,\n ttl: number,\n ): HCS6TopicRegistry {\n const entries: HCS6RegistryEntry[] = [];\n let latestEntry: HCS6RegistryEntry | undefined;\n\n this.logger.debug(\n `Parsing ${messages.length} messages for HCS-6 topic ${topicId}`,\n );\n\n for (const msg of messages) {\n try {\n if (!msg.message) {\n this.logger.debug(\n `Message is missing 'message' property: ${JSON.stringify(msg)}`,\n );\n continue;\n }\n\n const decodedMessage = Buffer.from(msg.message, 'base64').toString(\n 'utf-8',\n );\n const message = JSON.parse(decodedMessage) as HCS6Message;\n\n this.logger.debug(\n `Successfully parsed HCS-6 message: ${JSON.stringify(message)}`,\n );\n\n const { valid, errors } = this.validateMessage(message);\n if (!valid) {\n this.logger.warn(`Invalid HCS-6 message: ${errors.join(', ')}`);\n continue;\n }\n\n const entry: HCS6RegistryEntry = {\n topicId,\n sequence: msg.sequence_number,\n timestamp: msg.consensus_timestamp,\n payer: msg.payer_account_id,\n message,\n consensus_timestamp: msg.consensus_timestamp,\n registry_type: registryType,\n };\n\n entries.push(entry);\n\n if (!latestEntry || entry.timestamp > latestEntry.timestamp) {\n latestEntry = entry;\n }\n } catch (error) {\n this.logger.warn(`Error parsing HCS-6 message: ${error}`);\n }\n }\n\n this.logger.debug(\n `Parsed ${entries.length} valid entries for HCS-6 topic ${topicId}`,\n );\n\n return {\n topicId,\n registryType,\n ttl,\n entries: latestEntry ? [latestEntry] : [],\n latestEntry,\n };\n }\n\n /**\n * Validate that a topic is a valid HCS-6 registry\n * @param topicId The topic ID to validate\n * @returns Promise resolving to true if valid, false otherwise\n */\n protected async validateHCS6Topic(topicId: string): Promise<boolean> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (invalid memo format)`,\n );\n return false;\n }\n\n if (memoInfo.registryType !== HCS6RegistryType.NON_INDEXED) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (must be non-indexed)`,\n );\n return false;\n }\n\n return true;\n } catch (error) {\n this.logger.error(`Error validating HCS-6 topic ${topicId}: ${error}`);\n return false;\n }\n }\n}\n"],"names":[],"mappings":"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"}