@hashgraphonline/standards-sdk 0.1.144 → 0.1.146-feat-rb-inscriber.canary.5cd93f8.85

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 (433) 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/hcs-7/types.d.ts +4 -4
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/inscribe/inscriber.d.ts +89 -0
  36. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  37. package/dist/cjs/services/registry-broker/client/base-client.d.ts +14 -1
  38. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  39. package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
  40. package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
  41. package/dist/cjs/services/registry-broker/hol-chat-ops.d.ts +24 -0
  42. package/dist/cjs/services/registry-broker/hol-chat-ops.d.ts.map +1 -0
  43. package/dist/cjs/services/registry-broker/index.d.ts +1 -0
  44. package/dist/cjs/services/registry-broker/index.d.ts.map +1 -1
  45. package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
  46. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  47. package/dist/cjs/services/registry-broker/schemas.d.ts +1001 -577
  48. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  49. package/dist/cjs/services/registry-broker/types.d.ts +20 -1
  50. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  51. package/dist/cjs/standards-sdk.cjs +3 -3
  52. package/dist/cjs/standards-sdk.cjs.map +1 -1
  53. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  54. package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
  55. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  56. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  57. package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
  58. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  59. package/dist/es/hcs-10/sdk.d.ts +8 -0
  60. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  61. package/dist/es/hcs-11/client.d.ts +2 -2
  62. package/dist/es/hcs-11/client.d.ts.map +1 -1
  63. package/dist/es/hcs-11/person-builder.d.ts +1 -0
  64. package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
  65. package/dist/es/hcs-11/types.d.ts +1 -0
  66. package/dist/es/hcs-11/types.d.ts.map +1 -1
  67. package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  68. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  69. package/dist/es/hcs-15/browser.d.ts +2 -0
  70. package/dist/es/hcs-15/browser.d.ts.map +1 -1
  71. package/dist/es/hcs-15/sdk.d.ts +7 -1
  72. package/dist/es/hcs-15/sdk.d.ts.map +1 -1
  73. package/dist/es/hcs-15/tx.d.ts +4 -0
  74. package/dist/es/hcs-15/tx.d.ts.map +1 -1
  75. package/dist/es/hcs-15/types.d.ts +16 -1
  76. package/dist/es/hcs-15/types.d.ts.map +1 -1
  77. package/dist/es/hcs-16/browser.d.ts +11 -2
  78. package/dist/es/hcs-16/browser.d.ts.map +1 -1
  79. package/dist/es/hcs-16/sdk.d.ts +62 -1
  80. package/dist/es/hcs-16/sdk.d.ts.map +1 -1
  81. package/dist/es/hcs-16/tx.d.ts +21 -3
  82. package/dist/es/hcs-16/tx.d.ts.map +1 -1
  83. package/dist/es/hcs-17/base-client.d.ts +1 -0
  84. package/dist/es/hcs-17/base-client.d.ts.map +1 -1
  85. package/dist/es/hcs-17/sdk.d.ts.map +1 -1
  86. package/dist/es/hcs-17/tx.d.ts +2 -0
  87. package/dist/es/hcs-17/tx.d.ts.map +1 -1
  88. package/dist/es/hcs-17/types.d.ts +4 -0
  89. package/dist/es/hcs-17/types.d.ts.map +1 -1
  90. package/dist/es/hcs-7/types.d.ts +4 -4
  91. package/dist/es/index.d.ts.map +1 -1
  92. package/dist/es/inscribe/inscriber.d.ts +89 -0
  93. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  94. package/dist/es/services/registry-broker/client/base-client.d.ts +14 -1
  95. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  96. package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
  97. package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
  98. package/dist/es/services/registry-broker/hol-chat-ops.d.ts +24 -0
  99. package/dist/es/services/registry-broker/hol-chat-ops.d.ts.map +1 -0
  100. package/dist/es/services/registry-broker/index.d.ts +1 -0
  101. package/dist/es/services/registry-broker/index.d.ts.map +1 -1
  102. package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
  103. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  104. package/dist/es/services/registry-broker/schemas.d.ts +1001 -577
  105. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  106. package/dist/es/services/registry-broker/types.d.ts +20 -1
  107. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  108. package/dist/es/standards-sdk.es.js +146 -131
  109. package/dist/es/standards-sdk.es10.js +70 -90
  110. package/dist/es/standards-sdk.es10.js.map +1 -1
  111. package/dist/es/standards-sdk.es100.js +229 -26
  112. package/dist/es/standards-sdk.es100.js.map +1 -1
  113. package/dist/es/standards-sdk.es101.js +109 -228
  114. package/dist/es/standards-sdk.es101.js.map +1 -1
  115. package/dist/es/standards-sdk.es102.js +15 -94
  116. package/dist/es/standards-sdk.es102.js.map +1 -1
  117. package/dist/es/standards-sdk.es103.js +80 -30
  118. package/dist/es/standards-sdk.es103.js.map +1 -1
  119. package/dist/es/standards-sdk.es104.js +27 -80
  120. package/dist/es/standards-sdk.es104.js.map +1 -1
  121. package/dist/es/standards-sdk.es105.js +136 -25
  122. package/dist/es/standards-sdk.es105.js.map +1 -1
  123. package/dist/es/standards-sdk.es106.js +27 -140
  124. package/dist/es/standards-sdk.es106.js.map +1 -1
  125. package/dist/es/standards-sdk.es107.js +20 -27
  126. package/dist/es/standards-sdk.es107.js.map +1 -1
  127. package/dist/es/standards-sdk.es108.js +156 -18
  128. package/dist/es/standards-sdk.es108.js.map +1 -1
  129. package/dist/es/standards-sdk.es109.js +198 -148
  130. package/dist/es/standards-sdk.es109.js.map +1 -1
  131. package/dist/es/standards-sdk.es11.js +121 -45
  132. package/dist/es/standards-sdk.es11.js.map +1 -1
  133. package/dist/es/standards-sdk.es110.js +747 -166
  134. package/dist/es/standards-sdk.es110.js.map +1 -1
  135. package/dist/es/standards-sdk.es111.js +9 -786
  136. package/dist/es/standards-sdk.es111.js.map +1 -1
  137. package/dist/es/standards-sdk.es112.js +567 -13
  138. package/dist/es/standards-sdk.es112.js.map +1 -1
  139. package/dist/es/standards-sdk.es113.js +576 -541
  140. package/dist/es/standards-sdk.es113.js.map +1 -1
  141. package/dist/es/standards-sdk.es114.js +12 -601
  142. package/dist/es/standards-sdk.es114.js.map +1 -1
  143. package/dist/es/standards-sdk.es115.js +2 -13
  144. package/dist/es/standards-sdk.es115.js.map +1 -1
  145. package/dist/es/standards-sdk.es116.js +87 -2
  146. package/dist/es/standards-sdk.es116.js.map +1 -1
  147. package/dist/es/standards-sdk.es117.js +37 -80
  148. package/dist/es/standards-sdk.es117.js.map +1 -1
  149. package/dist/es/standards-sdk.es118.js +2 -39
  150. package/dist/es/standards-sdk.es118.js.map +1 -1
  151. package/dist/es/standards-sdk.es119.js +231 -2
  152. package/dist/es/standards-sdk.es119.js.map +1 -1
  153. package/dist/es/standards-sdk.es12.js +60 -159
  154. package/dist/es/standards-sdk.es12.js.map +1 -1
  155. package/dist/es/standards-sdk.es120.js +1110 -193
  156. package/dist/es/standards-sdk.es120.js.map +1 -1
  157. package/dist/es/standards-sdk.es121.js +225 -1059
  158. package/dist/es/standards-sdk.es121.js.map +1 -1
  159. package/dist/es/standards-sdk.es122.js +419 -303
  160. package/dist/es/standards-sdk.es122.js.map +1 -1
  161. package/dist/es/standards-sdk.es123.js +351 -418
  162. package/dist/es/standards-sdk.es123.js.map +1 -1
  163. package/dist/es/standards-sdk.es124.js +1109 -347
  164. package/dist/es/standards-sdk.es124.js.map +1 -1
  165. package/dist/es/standards-sdk.es125.js +182 -854
  166. package/dist/es/standards-sdk.es125.js.map +1 -1
  167. package/dist/es/standards-sdk.es126.js +1512 -153
  168. package/dist/es/standards-sdk.es126.js.map +1 -1
  169. package/dist/es/standards-sdk.es127.js +157 -1547
  170. package/dist/es/standards-sdk.es127.js.map +1 -1
  171. package/dist/es/standards-sdk.es128.js +192 -162
  172. package/dist/es/standards-sdk.es128.js.map +1 -1
  173. package/dist/es/standards-sdk.es129.js +61 -164
  174. package/dist/es/standards-sdk.es129.js.map +1 -1
  175. package/dist/es/standards-sdk.es13.js +200 -60
  176. package/dist/es/standards-sdk.es13.js.map +1 -1
  177. package/dist/es/standards-sdk.es130.js +102 -85
  178. package/dist/es/standards-sdk.es130.js.map +1 -1
  179. package/dist/es/standards-sdk.es131.js +222 -96
  180. package/dist/es/standards-sdk.es131.js.map +1 -1
  181. package/dist/es/standards-sdk.es132.js +153 -220
  182. package/dist/es/standards-sdk.es132.js.map +1 -1
  183. package/dist/es/standards-sdk.es133.js +104 -162
  184. package/dist/es/standards-sdk.es133.js.map +1 -1
  185. package/dist/es/standards-sdk.es134.js +296 -92
  186. package/dist/es/standards-sdk.es134.js.map +1 -1
  187. package/dist/es/standards-sdk.es135.js +432 -294
  188. package/dist/es/standards-sdk.es135.js.map +1 -1
  189. package/dist/es/standards-sdk.es136.js +14 -363
  190. package/dist/es/standards-sdk.es136.js.map +1 -1
  191. package/dist/es/standards-sdk.es137.js +79 -15
  192. package/dist/es/standards-sdk.es137.js.map +1 -1
  193. package/dist/es/standards-sdk.es138.js +79 -59
  194. package/dist/es/standards-sdk.es138.js.map +1 -1
  195. package/dist/es/standards-sdk.es139.js +53 -80
  196. package/dist/es/standards-sdk.es139.js.map +1 -1
  197. package/dist/es/standards-sdk.es14.js +149 -178
  198. package/dist/es/standards-sdk.es14.js.map +1 -1
  199. package/dist/es/standards-sdk.es140.js +1 -1
  200. package/dist/es/standards-sdk.es142.js +1 -1
  201. package/dist/es/standards-sdk.es143.js +1 -1
  202. package/dist/es/standards-sdk.es144.js +30 -28
  203. package/dist/es/standards-sdk.es144.js.map +1 -1
  204. package/dist/es/standards-sdk.es145.js +34 -138
  205. package/dist/es/standards-sdk.es145.js.map +1 -1
  206. package/dist/es/standards-sdk.es146.js +28 -42
  207. package/dist/es/standards-sdk.es146.js.map +1 -1
  208. package/dist/es/standards-sdk.es147.js +105 -12256
  209. package/dist/es/standards-sdk.es147.js.map +1 -1
  210. package/dist/es/standards-sdk.es148.js +40 -15
  211. package/dist/es/standards-sdk.es148.js.map +1 -1
  212. package/dist/es/standards-sdk.es149.js +959 -56
  213. package/dist/es/standards-sdk.es149.js.map +1 -1
  214. package/dist/es/standards-sdk.es15.js +152 -151
  215. package/dist/es/standards-sdk.es15.js.map +1 -1
  216. package/dist/es/standards-sdk.es150.js +12264 -57
  217. package/dist/es/standards-sdk.es150.js.map +1 -1
  218. package/dist/es/standards-sdk.es151.js +51 -167
  219. package/dist/es/standards-sdk.es151.js.map +1 -1
  220. package/dist/es/standards-sdk.es152.js +70 -308
  221. package/dist/es/standards-sdk.es152.js.map +1 -1
  222. package/dist/es/standards-sdk.es153.js +13 -342
  223. package/dist/es/standards-sdk.es153.js.map +1 -1
  224. package/dist/es/standards-sdk.es154.js +129 -410
  225. package/dist/es/standards-sdk.es154.js.map +1 -1
  226. package/dist/es/standards-sdk.es155.js +200 -209
  227. package/dist/es/standards-sdk.es155.js.map +1 -1
  228. package/dist/es/standards-sdk.es156.js +334 -64
  229. package/dist/es/standards-sdk.es156.js.map +1 -1
  230. package/dist/es/standards-sdk.es157.js +453 -871
  231. package/dist/es/standards-sdk.es157.js.map +1 -1
  232. package/dist/es/standards-sdk.es158.js +314 -222
  233. package/dist/es/standards-sdk.es158.js.map +1 -1
  234. package/dist/es/standards-sdk.es159.js +60 -228
  235. package/dist/es/standards-sdk.es159.js.map +1 -1
  236. package/dist/es/standards-sdk.es16.js +917 -136
  237. package/dist/es/standards-sdk.es16.js.map +1 -1
  238. package/dist/es/standards-sdk.es160.js +242 -0
  239. package/dist/es/standards-sdk.es160.js.map +1 -0
  240. package/dist/es/standards-sdk.es161.js +247 -0
  241. package/dist/es/standards-sdk.es161.js.map +1 -0
  242. package/dist/es/standards-sdk.es17.js +23 -944
  243. package/dist/es/standards-sdk.es17.js.map +1 -1
  244. package/dist/es/standards-sdk.es18.js +2422 -24
  245. package/dist/es/standards-sdk.es18.js.map +1 -1
  246. package/dist/es/standards-sdk.es19.js +817 -2071
  247. package/dist/es/standards-sdk.es19.js.map +1 -1
  248. package/dist/es/standards-sdk.es2.js +654 -189
  249. package/dist/es/standards-sdk.es2.js.map +1 -1
  250. package/dist/es/standards-sdk.es20.js +205 -1091
  251. package/dist/es/standards-sdk.es20.js.map +1 -1
  252. package/dist/es/standards-sdk.es21.js +858 -221
  253. package/dist/es/standards-sdk.es21.js.map +1 -1
  254. package/dist/es/standards-sdk.es22.js +179 -903
  255. package/dist/es/standards-sdk.es22.js.map +1 -1
  256. package/dist/es/standards-sdk.es23.js +164 -179
  257. package/dist/es/standards-sdk.es23.js.map +1 -1
  258. package/dist/es/standards-sdk.es24.js +62 -118
  259. package/dist/es/standards-sdk.es24.js.map +1 -1
  260. package/dist/es/standards-sdk.es25.js +377 -52
  261. package/dist/es/standards-sdk.es25.js.map +1 -1
  262. package/dist/es/standards-sdk.es26.js +36 -394
  263. package/dist/es/standards-sdk.es26.js.map +1 -1
  264. package/dist/es/standards-sdk.es27.js +901 -50
  265. package/dist/es/standards-sdk.es27.js.map +1 -1
  266. package/dist/es/standards-sdk.es28.js +134 -902
  267. package/dist/es/standards-sdk.es28.js.map +1 -1
  268. package/dist/es/standards-sdk.es29.js +7 -134
  269. package/dist/es/standards-sdk.es29.js.map +1 -1
  270. package/dist/es/standards-sdk.es3.js +63 -680
  271. package/dist/es/standards-sdk.es3.js.map +1 -1
  272. package/dist/es/standards-sdk.es30.js +344 -7
  273. package/dist/es/standards-sdk.es30.js.map +1 -1
  274. package/dist/es/standards-sdk.es31.js +302 -287
  275. package/dist/es/standards-sdk.es31.js.map +1 -1
  276. package/dist/es/standards-sdk.es32.js +94 -322
  277. package/dist/es/standards-sdk.es32.js.map +1 -1
  278. package/dist/es/standards-sdk.es33.js +458 -101
  279. package/dist/es/standards-sdk.es33.js.map +1 -1
  280. package/dist/es/standards-sdk.es34.js +132 -451
  281. package/dist/es/standards-sdk.es34.js.map +1 -1
  282. package/dist/es/standards-sdk.es35.js +216 -130
  283. package/dist/es/standards-sdk.es35.js.map +1 -1
  284. package/dist/es/standards-sdk.es36.js +273 -195
  285. package/dist/es/standards-sdk.es36.js.map +1 -1
  286. package/dist/es/standards-sdk.es37.js +148 -87
  287. package/dist/es/standards-sdk.es37.js.map +1 -1
  288. package/dist/es/standards-sdk.es38.js +183 -320
  289. package/dist/es/standards-sdk.es38.js.map +1 -1
  290. package/dist/es/standards-sdk.es39.js +238 -161
  291. package/dist/es/standards-sdk.es39.js.map +1 -1
  292. package/dist/es/standards-sdk.es4.js +425 -63
  293. package/dist/es/standards-sdk.es4.js.map +1 -1
  294. package/dist/es/standards-sdk.es40.js +136 -254
  295. package/dist/es/standards-sdk.es40.js.map +1 -1
  296. package/dist/es/standards-sdk.es41.js +225 -176
  297. package/dist/es/standards-sdk.es41.js.map +1 -1
  298. package/dist/es/standards-sdk.es42.js +199 -261
  299. package/dist/es/standards-sdk.es42.js.map +1 -1
  300. package/dist/es/standards-sdk.es43.js +237 -199
  301. package/dist/es/standards-sdk.es43.js.map +1 -1
  302. package/dist/es/standards-sdk.es44.js +209 -201
  303. package/dist/es/standards-sdk.es44.js.map +1 -1
  304. package/dist/es/standards-sdk.es45.js +305 -201
  305. package/dist/es/standards-sdk.es45.js.map +1 -1
  306. package/dist/es/standards-sdk.es46.js +371 -261
  307. package/dist/es/standards-sdk.es46.js.map +1 -1
  308. package/dist/es/standards-sdk.es47.js +316 -371
  309. package/dist/es/standards-sdk.es47.js.map +1 -1
  310. package/dist/es/standards-sdk.es48.js +404 -336
  311. package/dist/es/standards-sdk.es48.js.map +1 -1
  312. package/dist/es/standards-sdk.es49.js +83 -449
  313. package/dist/es/standards-sdk.es49.js.map +1 -1
  314. package/dist/es/standards-sdk.es5.js +232 -354
  315. package/dist/es/standards-sdk.es5.js.map +1 -1
  316. package/dist/es/standards-sdk.es50.js +179 -89
  317. package/dist/es/standards-sdk.es50.js.map +1 -1
  318. package/dist/es/standards-sdk.es51.js +231 -165
  319. package/dist/es/standards-sdk.es51.js.map +1 -1
  320. package/dist/es/standards-sdk.es52.js +25 -262
  321. package/dist/es/standards-sdk.es52.js.map +1 -1
  322. package/dist/es/standards-sdk.es53.js +56 -26
  323. package/dist/es/standards-sdk.es53.js.map +1 -1
  324. package/dist/es/standards-sdk.es54.js +12 -57
  325. package/dist/es/standards-sdk.es54.js.map +1 -1
  326. package/dist/es/standards-sdk.es55.js +49 -12
  327. package/dist/es/standards-sdk.es55.js.map +1 -1
  328. package/dist/es/standards-sdk.es56.js +115 -43
  329. package/dist/es/standards-sdk.es56.js.map +1 -1
  330. package/dist/es/standards-sdk.es57.js +42 -115
  331. package/dist/es/standards-sdk.es57.js.map +1 -1
  332. package/dist/es/standards-sdk.es58.js +52 -43
  333. package/dist/es/standards-sdk.es58.js.map +1 -1
  334. package/dist/es/standards-sdk.es59.js +36 -50
  335. package/dist/es/standards-sdk.es59.js.map +1 -1
  336. package/dist/es/standards-sdk.es6.js +125 -246
  337. package/dist/es/standards-sdk.es6.js.map +1 -1
  338. package/dist/es/standards-sdk.es60.js +207 -39
  339. package/dist/es/standards-sdk.es60.js.map +1 -1
  340. package/dist/es/standards-sdk.es61.js +24 -200
  341. package/dist/es/standards-sdk.es61.js.map +1 -1
  342. package/dist/es/standards-sdk.es62.js +87 -25
  343. package/dist/es/standards-sdk.es62.js.map +1 -1
  344. package/dist/es/standards-sdk.es63.js +3 -51
  345. package/dist/es/standards-sdk.es63.js.map +1 -1
  346. package/dist/es/standards-sdk.es64.js +100 -3
  347. package/dist/es/standards-sdk.es64.js.map +1 -1
  348. package/dist/es/standards-sdk.es65.js +61 -62
  349. package/dist/es/standards-sdk.es65.js.map +1 -1
  350. package/dist/es/standards-sdk.es66.js +17 -98
  351. package/dist/es/standards-sdk.es66.js.map +1 -1
  352. package/dist/es/standards-sdk.es67.js +77 -19
  353. package/dist/es/standards-sdk.es67.js.map +1 -1
  354. package/dist/es/standards-sdk.es68.js +458 -77
  355. package/dist/es/standards-sdk.es68.js.map +1 -1
  356. package/dist/es/standards-sdk.es69.js +106 -240
  357. package/dist/es/standards-sdk.es69.js.map +1 -1
  358. package/dist/es/standards-sdk.es7.js +28 -183
  359. package/dist/es/standards-sdk.es7.js.map +1 -1
  360. package/dist/es/standards-sdk.es70.js +170 -286
  361. package/dist/es/standards-sdk.es70.js.map +1 -1
  362. package/dist/es/standards-sdk.es71.js +71 -207
  363. package/dist/es/standards-sdk.es71.js.map +1 -1
  364. package/dist/es/standards-sdk.es72.js +71 -72
  365. package/dist/es/standards-sdk.es72.js.map +1 -1
  366. package/dist/es/standards-sdk.es73.js +143 -71
  367. package/dist/es/standards-sdk.es73.js.map +1 -1
  368. package/dist/es/standards-sdk.es74.js +62 -136
  369. package/dist/es/standards-sdk.es74.js.map +1 -1
  370. package/dist/es/standards-sdk.es75.js +380 -45
  371. package/dist/es/standards-sdk.es75.js.map +1 -1
  372. package/dist/es/standards-sdk.es76.js +222 -130
  373. package/dist/es/standards-sdk.es76.js.map +1 -1
  374. package/dist/es/standards-sdk.es77.js +320 -444
  375. package/dist/es/standards-sdk.es77.js.map +1 -1
  376. package/dist/es/standards-sdk.es78.js +88 -370
  377. package/dist/es/standards-sdk.es78.js.map +1 -1
  378. package/dist/es/standards-sdk.es79.js +125 -89
  379. package/dist/es/standards-sdk.es79.js.map +1 -1
  380. package/dist/es/standards-sdk.es8.js +80 -29
  381. package/dist/es/standards-sdk.es8.js.map +1 -1
  382. package/dist/es/standards-sdk.es80.js +8 -125
  383. package/dist/es/standards-sdk.es80.js.map +1 -1
  384. package/dist/es/standards-sdk.es81.js +45 -6
  385. package/dist/es/standards-sdk.es81.js.map +1 -1
  386. package/dist/es/standards-sdk.es82.js +98 -44
  387. package/dist/es/standards-sdk.es82.js.map +1 -1
  388. package/dist/es/standards-sdk.es83.js +331 -84
  389. package/dist/es/standards-sdk.es83.js.map +1 -1
  390. package/dist/es/standards-sdk.es84.js +93 -160
  391. package/dist/es/standards-sdk.es84.js.map +1 -1
  392. package/dist/es/standards-sdk.es85.js +55 -275
  393. package/dist/es/standards-sdk.es85.js.map +1 -1
  394. package/dist/es/standards-sdk.es86.js +43 -55
  395. package/dist/es/standards-sdk.es86.js.map +1 -1
  396. package/dist/es/standards-sdk.es87.js +145 -22
  397. package/dist/es/standards-sdk.es87.js.map +1 -1
  398. package/dist/es/standards-sdk.es88.js +34 -47
  399. package/dist/es/standards-sdk.es88.js.map +1 -1
  400. package/dist/es/standards-sdk.es89.js +22 -57
  401. package/dist/es/standards-sdk.es89.js.map +1 -1
  402. package/dist/es/standards-sdk.es9.js +104 -80
  403. package/dist/es/standards-sdk.es9.js.map +1 -1
  404. package/dist/es/standards-sdk.es90.js +23 -28
  405. package/dist/es/standards-sdk.es90.js.map +1 -1
  406. package/dist/es/standards-sdk.es91.js +238 -23
  407. package/dist/es/standards-sdk.es91.js.map +1 -1
  408. package/dist/es/standards-sdk.es92.js +265 -152
  409. package/dist/es/standards-sdk.es92.js.map +1 -1
  410. package/dist/es/standards-sdk.es93.js +95 -68
  411. package/dist/es/standards-sdk.es93.js.map +1 -1
  412. package/dist/es/standards-sdk.es94.js +124 -136
  413. package/dist/es/standards-sdk.es94.js.map +1 -1
  414. package/dist/es/standards-sdk.es95.js +42 -138
  415. package/dist/es/standards-sdk.es95.js.map +1 -1
  416. package/dist/es/standards-sdk.es96.js +259 -42
  417. package/dist/es/standards-sdk.es96.js.map +1 -1
  418. package/dist/es/standards-sdk.es97.js +82 -243
  419. package/dist/es/standards-sdk.es97.js.map +1 -1
  420. package/dist/es/standards-sdk.es98.js +48 -47
  421. package/dist/es/standards-sdk.es98.js.map +1 -1
  422. package/dist/es/standards-sdk.es99.js +29 -100
  423. package/dist/es/standards-sdk.es99.js.map +1 -1
  424. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  425. package/dist/es/utils/crypto-env.d.ts.map +1 -1
  426. package/dist/es/utils/dynamic-import.d.ts +5 -1
  427. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  428. package/dist/es/utils/hash-adapter.d.ts.map +1 -1
  429. package/package.json +9 -7
  430. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  431. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  432. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  433. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
@@ -1,80 +1,461 @@
1
- import { z } from "zod";
2
- var HCS2Operation = /* @__PURE__ */ ((HCS2Operation2) => {
3
- HCS2Operation2["REGISTER"] = "register";
4
- HCS2Operation2["UPDATE"] = "update";
5
- HCS2Operation2["DELETE"] = "delete";
6
- HCS2Operation2["MIGRATE"] = "migrate";
7
- return HCS2Operation2;
8
- })(HCS2Operation || {});
9
- var HCS2RegistryType = /* @__PURE__ */ ((HCS2RegistryType2) => {
10
- HCS2RegistryType2[HCS2RegistryType2["INDEXED"] = 0] = "INDEXED";
11
- HCS2RegistryType2[HCS2RegistryType2["NON_INDEXED"] = 1] = "NON_INDEXED";
12
- return HCS2RegistryType2;
13
- })(HCS2RegistryType || {});
14
- const topicIdSchema = z.string().regex(/^\d+\.\d+\.\d+$/, {
15
- message: "Topic ID must be in Hedera format (e.g., '0.0.123456')"
16
- });
17
- const baseMessageSchema = z.object({
18
- p: z.string().regex(/^hcs-\d+$/, {
19
- message: "Protocol must be in format 'hcs-N' where N is a number"
20
- }),
21
- op: z.enum([
22
- "register",
23
- "update",
24
- "delete",
25
- "migrate"
26
- /* MIGRATE */
27
- ]),
28
- m: z.string().max(500, "Memo must not exceed 500 characters").optional(),
29
- ttl: z.number().int().positive().optional()
30
- });
31
- const registerMessageSchema = baseMessageSchema.extend({
32
- op: z.literal(
33
- "register"
34
- /* REGISTER */
35
- ),
36
- t_id: topicIdSchema,
37
- metadata: z.string().optional()
38
- });
39
- const updateMessageSchema = baseMessageSchema.extend({
40
- op: z.literal(
41
- "update"
42
- /* UPDATE */
43
- ),
44
- uid: z.string(),
45
- t_id: topicIdSchema,
46
- metadata: z.string().optional()
47
- });
48
- const deleteMessageSchema = baseMessageSchema.extend({
49
- op: z.literal(
50
- "delete"
51
- /* DELETE */
52
- ),
53
- uid: z.string()
54
- });
55
- const migrateMessageSchema = baseMessageSchema.extend({
56
- op: z.literal(
57
- "migrate"
58
- /* MIGRATE */
59
- ),
60
- t_id: topicIdSchema,
61
- metadata: z.string().optional()
62
- });
63
- const hcs2MessageSchema = z.discriminatedUnion("op", [
64
- registerMessageSchema,
65
- updateMessageSchema,
66
- deleteMessageSchema,
67
- migrateMessageSchema
68
- ]);
1
+ import { AccountId, Client, PublicKey } from "@hashgraph/sdk";
2
+ import { HCS2BaseClient } from "./standards-sdk.es70.js";
3
+ import { HCS2Operation, HCS2RegistryType } from "./standards-sdk.es67.js";
4
+ import { createNodeOperatorContext } from "./standards-sdk.es147.js";
5
+ import { buildMessageTx } from "./standards-sdk.es148.js";
6
+ import { buildHcs2CreateRegistryTx } from "./standards-sdk.es71.js";
7
+ const _HCS2Client = class _HCS2Client extends HCS2BaseClient {
8
+ /**
9
+ * Create a new HCS-2 client
10
+ * @param config Client configuration
11
+ */
12
+ constructor(config) {
13
+ super({
14
+ network: config.network,
15
+ logLevel: config.logLevel,
16
+ silent: config.silent,
17
+ mirrorNodeUrl: config.mirrorNodeUrl,
18
+ logger: config.logger
19
+ });
20
+ this.registryTypeCache = /* @__PURE__ */ new Map();
21
+ this.operatorId = typeof config.operatorId === "string" ? AccountId.fromString(config.operatorId) : config.operatorId;
22
+ this.operatorCtx = createNodeOperatorContext({
23
+ network: this.network,
24
+ operatorId: this.operatorId,
25
+ operatorKey: config.operatorKey,
26
+ keyType: config.keyType,
27
+ mirrorNode: this.mirrorNode,
28
+ logger: this.logger,
29
+ client: this.createClient(config.network)
30
+ });
31
+ this.client = this.operatorCtx.client;
32
+ }
33
+ /**
34
+ * Initialize the Hedera client with operator information
35
+ */
36
+ async ensureInitialized() {
37
+ await this.operatorCtx.ensureInitialized();
38
+ }
39
+ /**
40
+ * Create a Hedera client for the specified network
41
+ * @param network The network to connect to
42
+ * @returns The Hedera client
43
+ */
44
+ createClient(network) {
45
+ if (network === "mainnet") {
46
+ return Client.forMainnet();
47
+ } else {
48
+ return Client.forTestnet();
49
+ }
50
+ }
51
+ /**
52
+ * Create a new registry topic
53
+ * @param options Registry creation options
54
+ * @returns Promise resolving to the transaction result
55
+ */
56
+ async createRegistry(options = {}) {
57
+ try {
58
+ await this.ensureInitialized();
59
+ const registryType = options.registryType ?? HCS2RegistryType.INDEXED;
60
+ const ttl = options.ttl ?? 86400;
61
+ const memo = this.generateRegistryMemo(registryType, ttl);
62
+ let adminKeyPrivate;
63
+ let adminPublicKey;
64
+ if (options.adminKey) {
65
+ if (typeof options.adminKey === "string") {
66
+ try {
67
+ adminPublicKey = PublicKey.fromString(options.adminKey);
68
+ } catch {
69
+ const keyBytes = Buffer.from(
70
+ options.adminKey.replace(/^0x/i, ""),
71
+ "hex"
72
+ );
73
+ adminPublicKey = this.operatorCtx.keyType === "ed25519" ? PublicKey.fromBytesED25519(keyBytes) : PublicKey.fromBytesECDSA(keyBytes);
74
+ }
75
+ } else if (typeof options.adminKey === "boolean") {
76
+ adminPublicKey = this.operatorCtx.operatorKey.publicKey;
77
+ } else {
78
+ adminPublicKey = options.adminKey.publicKey;
79
+ adminKeyPrivate = options.adminKey;
80
+ }
81
+ }
82
+ let submitKeyPrivate;
83
+ let submitPublicKey;
84
+ if (options.submitKey) {
85
+ if (typeof options.submitKey === "string") {
86
+ try {
87
+ submitPublicKey = PublicKey.fromString(options.submitKey);
88
+ } catch {
89
+ const keyBytes = Buffer.from(
90
+ options.submitKey.replace(/^0x/i, ""),
91
+ "hex"
92
+ );
93
+ submitPublicKey = this.operatorCtx.keyType === "ed25519" ? PublicKey.fromBytesED25519(keyBytes) : PublicKey.fromBytesECDSA(keyBytes);
94
+ }
95
+ } else if (typeof options.submitKey === "boolean") {
96
+ submitPublicKey = this.operatorCtx.operatorKey.publicKey;
97
+ } else {
98
+ submitPublicKey = options.submitKey.publicKey;
99
+ submitKeyPrivate = options.submitKey;
100
+ }
101
+ }
102
+ const transaction = buildHcs2CreateRegistryTx({
103
+ registryType,
104
+ ttl,
105
+ adminKey: adminPublicKey,
106
+ submitKey: submitPublicKey,
107
+ operatorPublicKey: this.operatorCtx.operatorKey.publicKey
108
+ });
109
+ const frozenTx = await transaction.freezeWith(this.client);
110
+ if (adminKeyPrivate) {
111
+ await frozenTx.sign(adminKeyPrivate);
112
+ }
113
+ if (submitKeyPrivate) {
114
+ await frozenTx.sign(submitKeyPrivate);
115
+ }
116
+ const txResponse = await frozenTx.execute(this.client);
117
+ const receipt = await txResponse.getReceipt(this.client);
118
+ const topicId = receipt.topicId;
119
+ if (!topicId) {
120
+ throw new Error("Failed to create registry: No topic ID in receipt");
121
+ }
122
+ const topicIdStr = topicId.toString();
123
+ this.registryTypeCache.set(topicIdStr, registryType);
124
+ this.logger.info(
125
+ `Created registry topic: ${topicIdStr} (${registryType === HCS2RegistryType.INDEXED ? "Indexed" : "Non-indexed"}, TTL: ${ttl}s)`
126
+ );
127
+ return {
128
+ success: true,
129
+ topicId: topicIdStr,
130
+ transactionId: txResponse.transactionId.toString()
131
+ };
132
+ } catch (error) {
133
+ this.logger.error(`Failed to create registry: ${error}`);
134
+ return {
135
+ success: false,
136
+ error: `Failed to create registry: ${error}`
137
+ };
138
+ }
139
+ }
140
+ /**
141
+ * Register a new entry in the registry
142
+ * @param registryTopicId The topic ID of the registry
143
+ * @param options Registration options
144
+ * @param protocol Optional protocol version (defaults to 'hcs-2')
145
+ * @returns Promise resolving to the operation result
146
+ */
147
+ async registerEntry(registryTopicId, options, protocol = "hcs-2") {
148
+ try {
149
+ await this.ensureInitialized();
150
+ const message = this.createRegisterMessage(
151
+ options.targetTopicId,
152
+ options.metadata,
153
+ options.memo,
154
+ protocol
155
+ );
156
+ const registryType = options.registryType ?? await this.resolveRegistryType(registryTopicId);
157
+ this.registryTypeCache.set(registryTopicId, registryType);
158
+ const analyticsMemo = options.analyticsMemo ?? this.buildAnalyticsMemo(HCS2Operation.REGISTER, registryType);
159
+ const receipt = await this.submitMessage(
160
+ registryTopicId,
161
+ message,
162
+ analyticsMemo
163
+ );
164
+ this.logger.info(
165
+ `Registered entry in registry ${registryTopicId} pointing to topic ${options.targetTopicId} using protocol ${protocol}`
166
+ );
167
+ return {
168
+ success: true,
169
+ receipt,
170
+ sequenceNumber: receipt.topicSequenceNumber?.low ?? void 0
171
+ };
172
+ } catch (error) {
173
+ this.logger.error(`Failed to register entry: ${error}`);
174
+ return {
175
+ success: false,
176
+ error: `Failed to register entry: ${error}`
177
+ };
178
+ }
179
+ }
180
+ /**
181
+ * Update an existing entry in the registry (indexed registries only)
182
+ * @param registryTopicId The topic ID of the registry
183
+ * @param options Update options
184
+ * @returns Promise resolving to the operation result
185
+ */
186
+ async updateEntry(registryTopicId, options) {
187
+ try {
188
+ await this.ensureInitialized();
189
+ const registryInfo = await this.mirrorNode.getTopicInfo(registryTopicId);
190
+ const memoInfo = this.parseRegistryTypeFromMemo(registryInfo.memo);
191
+ if (!memoInfo || memoInfo.registryType !== HCS2RegistryType.INDEXED) {
192
+ throw new Error(
193
+ "Update operation is only valid for indexed registries"
194
+ );
195
+ }
196
+ const message = this.createUpdateMessage(
197
+ options.targetTopicId,
198
+ options.uid,
199
+ options.metadata,
200
+ options.memo
201
+ );
202
+ const registryType = options.registryType ?? await this.resolveRegistryType(registryTopicId);
203
+ this.registryTypeCache.set(registryTopicId, registryType);
204
+ const analyticsMemo = options.analyticsMemo ?? this.buildAnalyticsMemo(HCS2Operation.UPDATE, registryType);
205
+ const receipt = await this.submitMessage(
206
+ registryTopicId,
207
+ message,
208
+ analyticsMemo
209
+ );
210
+ this.logger.info(
211
+ `Updated entry with UID ${options.uid} in registry ${registryTopicId}`
212
+ );
213
+ return {
214
+ success: true,
215
+ receipt,
216
+ sequenceNumber: receipt.topicSequenceNumber?.low ?? void 0
217
+ };
218
+ } catch (error) {
219
+ this.logger.error(`Failed to update entry: ${error}`);
220
+ throw error;
221
+ }
222
+ }
223
+ /**
224
+ * Delete an entry from the registry (indexed registries only)
225
+ * @param registryTopicId The topic ID of the registry
226
+ * @param options Delete options
227
+ * @returns Promise resolving to the operation result
228
+ */
229
+ async deleteEntry(registryTopicId, options) {
230
+ try {
231
+ await this.ensureInitialized();
232
+ const registryInfo = await this.mirrorNode.getTopicInfo(registryTopicId);
233
+ const memoInfo = this.parseRegistryTypeFromMemo(registryInfo.memo);
234
+ if (!memoInfo || memoInfo.registryType !== HCS2RegistryType.INDEXED) {
235
+ throw new Error(
236
+ "Delete operation is only valid for indexed registries"
237
+ );
238
+ }
239
+ const message = this.createDeleteMessage(options.uid, options.memo);
240
+ const registryType = options.registryType ?? await this.resolveRegistryType(registryTopicId);
241
+ this.registryTypeCache.set(registryTopicId, registryType);
242
+ const analyticsMemo = options.analyticsMemo ?? this.buildAnalyticsMemo(HCS2Operation.DELETE, registryType);
243
+ const receipt = await this.submitMessage(
244
+ registryTopicId,
245
+ message,
246
+ analyticsMemo
247
+ );
248
+ this.logger.info(
249
+ `Deleted entry with UID ${options.uid} from registry ${registryTopicId}`
250
+ );
251
+ return {
252
+ success: true,
253
+ receipt,
254
+ sequenceNumber: receipt.topicSequenceNumber?.low ?? void 0
255
+ };
256
+ } catch (error) {
257
+ this.logger.error(`Failed to delete entry: ${error}`);
258
+ throw error;
259
+ }
260
+ }
261
+ /**
262
+ * Migrate a registry to a new topic
263
+ * @param registryTopicId The topic ID of the registry
264
+ * @param options Migration options
265
+ * @returns Promise resolving to the operation result
266
+ */
267
+ async migrateRegistry(registryTopicId, options) {
268
+ try {
269
+ await this.ensureInitialized();
270
+ const message = this.createMigrateMessage(
271
+ options.targetTopicId,
272
+ options.metadata,
273
+ options.memo
274
+ );
275
+ const registryType = options.registryType ?? await this.resolveRegistryType(registryTopicId);
276
+ this.registryTypeCache.set(registryTopicId, registryType);
277
+ const analyticsMemo = options.analyticsMemo ?? this.buildAnalyticsMemo(HCS2Operation.MIGRATE, registryType);
278
+ const receipt = await this.submitMessage(
279
+ registryTopicId,
280
+ message,
281
+ analyticsMemo
282
+ );
283
+ this.logger.info(
284
+ `Migrated registry ${registryTopicId} to ${options.targetTopicId}`
285
+ );
286
+ return {
287
+ success: true,
288
+ receipt,
289
+ sequenceNumber: receipt.topicSequenceNumber?.low ?? void 0
290
+ };
291
+ } catch (error) {
292
+ this.logger.error(`Failed to migrate registry: ${error}`);
293
+ throw error;
294
+ }
295
+ }
296
+ /**
297
+ * Get all entries from a registry
298
+ * @param topicId The topic ID of the registry
299
+ * @param options Query options
300
+ * @returns Promise resolving to the registry information
301
+ */
302
+ async getRegistry(topicId, options = {}) {
303
+ try {
304
+ await this.ensureInitialized();
305
+ const topicInfo = await this.mirrorNode.getTopicInfo(topicId);
306
+ this.logger.debug(
307
+ `Retrieved topic info for ${topicId}: ${JSON.stringify(topicInfo)}`
308
+ );
309
+ const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);
310
+ if (!memoInfo) {
311
+ throw new Error(
312
+ `Topic ${topicId} is not an HCS-2 registry (invalid memo format)`
313
+ );
314
+ }
315
+ this.logger.debug(
316
+ `Retrieving messages for topic ${topicId} with limit ${options.limit ?? 100}`
317
+ );
318
+ const rawMessagesResult = await this.mirrorNode.getTopicMessages(
319
+ topicId,
320
+ {
321
+ sequenceNumber: options.skip && options.skip > 0 ? `gt:${options.skip}` : void 0,
322
+ limit: options.limit ?? 100,
323
+ order: options.order ?? "asc"
324
+ }
325
+ );
326
+ const rawMessages = options.limit ? rawMessagesResult.slice(0, options.limit) : rawMessagesResult;
327
+ this.logger.debug(
328
+ `Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`
329
+ );
330
+ const entries = [];
331
+ let latestEntry;
332
+ for (const msg of rawMessages) {
333
+ try {
334
+ const message = {
335
+ p: "hcs-2",
336
+ op: msg.op,
337
+ t_id: msg.t_id,
338
+ uid: msg.uid,
339
+ metadata: msg.metadata,
340
+ m: msg.m
341
+ };
342
+ const { valid, errors } = this.validateMessage(message);
343
+ if (!valid) {
344
+ this.logger.warn(`Invalid HCS-2 message: ${errors.join(", ")}`);
345
+ continue;
346
+ }
347
+ const entry = {
348
+ topicId,
349
+ sequence: msg.sequence_number,
350
+ timestamp: msg.consensus_timestamp,
351
+ payer: msg.payer_account_id || msg.payer || "",
352
+ message,
353
+ consensus_timestamp: msg.consensus_timestamp,
354
+ registry_type: memoInfo.registryType
355
+ };
356
+ entries.push(entry);
357
+ if (memoInfo.registryType === HCS2RegistryType.NON_INDEXED || !latestEntry || entry.timestamp > latestEntry.timestamp) {
358
+ latestEntry = entry;
359
+ }
360
+ } catch (error) {
361
+ this.logger.warn(`Error processing message: ${error}`);
362
+ }
363
+ }
364
+ this.logger.debug(
365
+ `Processed ${entries.length} valid entries for registry ${topicId}`
366
+ );
367
+ const registry = {
368
+ topicId,
369
+ registryType: memoInfo.registryType,
370
+ ttl: memoInfo.ttl,
371
+ entries: memoInfo.registryType === HCS2RegistryType.INDEXED ? entries : latestEntry ? [latestEntry] : [],
372
+ latestEntry
373
+ };
374
+ return registry;
375
+ } catch (error) {
376
+ this.logger.error(`Failed to get registry: ${error}`);
377
+ throw error;
378
+ }
379
+ }
380
+ buildAnalyticsMemo(operation, registryType) {
381
+ const opCode = _HCS2Client.operationAnalyticsCode[operation];
382
+ return `hcs-2:op:${opCode}:${registryType}`;
383
+ }
384
+ async resolveRegistryType(topicId) {
385
+ const cached = this.registryTypeCache.get(topicId);
386
+ if (cached !== void 0) {
387
+ return cached;
388
+ }
389
+ const topicInfo = await this.mirrorNode.getTopicInfo(topicId);
390
+ const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);
391
+ if (!memoInfo) {
392
+ throw new Error(
393
+ `Topic ${topicId} is not an HCS-2 registry (invalid memo format)`
394
+ );
395
+ }
396
+ this.registryTypeCache.set(topicId, memoInfo.registryType);
397
+ return memoInfo.registryType;
398
+ }
399
+ /**
400
+ * Submit a message to a topic
401
+ * @param topicId The topic ID to submit to
402
+ * @param payload The message payload
403
+ * @returns Promise resolving to the transaction receipt
404
+ */
405
+ async submitMessage(topicId, payload, analyticsMemo) {
406
+ try {
407
+ await this.ensureInitialized();
408
+ const { valid, errors } = this.validateMessage(payload);
409
+ if (!valid) {
410
+ throw new Error(`Invalid HCS-2 message: ${errors.join(", ")}`);
411
+ }
412
+ const transaction = buildMessageTx({
413
+ topicId,
414
+ message: JSON.stringify(payload),
415
+ transactionMemo: analyticsMemo
416
+ });
417
+ const txResponse = await transaction.execute(this.client);
418
+ const receipt = await txResponse.getReceipt(this.client);
419
+ return receipt;
420
+ } catch (error) {
421
+ this.logger.error(`Failed to submit message: ${error}`);
422
+ throw error;
423
+ }
424
+ }
425
+ /**
426
+ * @param topicId The topic ID to query
427
+ * @returns Promise resolving to the topic information
428
+ */
429
+ async getTopicInfo(topicId) {
430
+ return this.mirrorNode.getTopicInfo(topicId);
431
+ }
432
+ /**
433
+ * Close the client and release resources
434
+ */
435
+ close() {
436
+ this.logger.info("HCS-2 client closed.");
437
+ }
438
+ /**
439
+ * Get the configured key type (ed25519 or ecdsa)
440
+ */
441
+ getKeyType() {
442
+ return this.operatorCtx.keyType;
443
+ }
444
+ /**
445
+ * Get the configured operator private key
446
+ */
447
+ getOperatorKey() {
448
+ return this.operatorCtx.operatorKey;
449
+ }
450
+ };
451
+ _HCS2Client.operationAnalyticsCode = {
452
+ [HCS2Operation.REGISTER]: 0,
453
+ [HCS2Operation.UPDATE]: 1,
454
+ [HCS2Operation.DELETE]: 2,
455
+ [HCS2Operation.MIGRATE]: 3
456
+ };
457
+ let HCS2Client = _HCS2Client;
69
458
  export {
70
- HCS2Operation,
71
- HCS2RegistryType,
72
- baseMessageSchema,
73
- deleteMessageSchema,
74
- hcs2MessageSchema,
75
- migrateMessageSchema,
76
- registerMessageSchema,
77
- topicIdSchema,
78
- updateMessageSchema
459
+ HCS2Client
79
460
  };
80
461
  //# sourceMappingURL=standards-sdk.es68.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es68.js","sources":["../../src/hcs-2/types.ts"],"sourcesContent":["import { Logger, LogLevel } from '../utils/logger';\nimport { NetworkType } from '../utils/types';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { TransactionReceipt, PrivateKey } from '@hashgraph/sdk';\nimport { z } from 'zod';\n\n/**\n * HCS-2 operation types\n * - register: Add a new entry/version\n * - update: Modify a previous entry (indexed topics only)\n * - delete: Remove an entry by uid (indexed topics only)\n * - migrate: Move a topic to a new one\n */\nexport enum HCS2Operation {\n REGISTER = 'register',\n UPDATE = 'update',\n DELETE = 'delete',\n MIGRATE = 'migrate',\n}\n\n/**\n * HCS-2 registry type\n * - 0: Indexed registry - All records are considered for processing\n * - 1: Non-indexed registry - Only the latest message is considered\n */\nexport enum HCS2RegistryType {\n INDEXED = 0,\n NON_INDEXED = 1,\n}\n\n/**\n * Base HCS-2 message format\n */\nexport interface HCS2Message {\n p: string; // Protocol (e.g., \"hcs-2\", \"hcs-6\", etc.)\n op: HCS2Operation; // Operation\n t_id?: string; // Target Topic ID (for register, update, migrate)\n uid?: string; // Unique ID/Sequence number (for update, delete)\n metadata?: string; // Metadata URI (HIP-412 format)\n m?: string; // Memo (max 500 chars)\n ttl?: number; // Time to live (in seconds, optional override)\n}\n\n/**\n * Register operation message\n */\nexport interface HCS2RegisterMessage extends HCS2Message {\n op: HCS2Operation.REGISTER;\n t_id: string;\n}\n\n/**\n * Update operation message\n */\nexport interface HCS2UpdateMessage extends HCS2Message {\n op: HCS2Operation.UPDATE;\n uid: string;\n t_id: string;\n}\n\n/**\n * Delete operation message\n */\nexport interface HCS2DeleteMessage extends HCS2Message {\n op: HCS2Operation.DELETE;\n uid: string;\n}\n\n/**\n * Migrate operation message\n */\nexport interface HCS2MigrateMessage extends HCS2Message {\n op: HCS2Operation.MIGRATE;\n t_id: string;\n}\n\n/**\n * Configuration for HCS-2 client\n */\nexport interface HCS2ClientConfig {\n network: NetworkType;\n logLevel?: LogLevel;\n silent?: boolean;\n mirrorNodeUrl?: string;\n logger?: Logger;\n}\n\n/**\n * Response from topic registration\n */\nexport interface TopicRegistrationResponse {\n success: boolean;\n topicId?: string;\n transactionId?: string;\n error?: string;\n}\n\n/**\n * Response from a registry operation\n */\nexport interface RegistryOperationResponse {\n success: boolean;\n transactionId?: string;\n receipt?: TransactionReceipt;\n error?: string;\n sequenceNumber?: number;\n}\n\n/**\n * Registry entry information\n */\nexport interface RegistryEntry {\n topicId: string;\n sequence: number;\n timestamp: string;\n payer: string;\n message: HCS2Message;\n consensus_timestamp: string;\n registry_type: HCS2RegistryType;\n}\n\n/**\n * Topic registry information\n */\nexport interface TopicRegistry {\n topicId: string;\n registryType: HCS2RegistryType;\n ttl: number;\n entries: RegistryEntry[];\n latestEntry?: RegistryEntry;\n}\n\n/**\n * Options for creating a new registry\n */\nexport interface CreateRegistryOptions {\n registryType?: HCS2RegistryType;\n ttl?: number;\n adminKey?: string | boolean | PrivateKey;\n submitKey?: string | boolean | PrivateKey;\n}\n\n/**\n * Options for registering a topic entry\n */\nexport interface RegisterEntryOptions {\n targetTopicId: string;\n metadata?: string;\n memo?: string;\n analyticsMemo?: string;\n registryType?: HCS2RegistryType;\n}\n\n/**\n * Options for updating a topic entry\n */\nexport interface UpdateEntryOptions {\n targetTopicId: string;\n uid: string;\n metadata?: string;\n memo?: string;\n analyticsMemo?: string;\n registryType?: HCS2RegistryType;\n}\n\n/**\n * Options for deleting a topic entry\n */\nexport interface DeleteEntryOptions {\n uid: string;\n memo?: string;\n analyticsMemo?: string;\n registryType?: HCS2RegistryType;\n}\n\n/**\n * Options for migrating a topic\n */\nexport interface MigrateTopicOptions {\n targetTopicId: string;\n metadata?: string;\n memo?: string;\n analyticsMemo?: string;\n registryType?: HCS2RegistryType;\n}\n\n/**\n * Options for querying registry entries\n */\nexport interface QueryRegistryOptions {\n limit?: number;\n order?: 'asc' | 'desc';\n skip?: number;\n}\n\n/**\n * Zod schemas for HCS-2 message validation\n */\n\nexport const topicIdSchema = z.string().regex(/^\\d+\\.\\d+\\.\\d+$/, {\n message: \"Topic ID must be in Hedera format (e.g., '0.0.123456')\",\n});\n\nexport const baseMessageSchema = z.object({\n p: z.string().regex(/^hcs-\\d+$/, {\n message: \"Protocol must be in format 'hcs-N' where N is a number\",\n }),\n op: z.enum([\n HCS2Operation.REGISTER,\n HCS2Operation.UPDATE,\n HCS2Operation.DELETE,\n HCS2Operation.MIGRATE,\n ]),\n m: z.string().max(500, 'Memo must not exceed 500 characters').optional(),\n ttl: z.number().int().positive().optional(),\n});\n\nexport const registerMessageSchema = baseMessageSchema.extend({\n op: z.literal(HCS2Operation.REGISTER),\n t_id: topicIdSchema,\n metadata: z.string().optional(),\n});\n\nexport const updateMessageSchema = baseMessageSchema.extend({\n op: z.literal(HCS2Operation.UPDATE),\n uid: z.string(),\n t_id: topicIdSchema,\n metadata: z.string().optional(),\n});\n\nexport const deleteMessageSchema = baseMessageSchema.extend({\n op: z.literal(HCS2Operation.DELETE),\n uid: z.string(),\n});\n\nexport const migrateMessageSchema = baseMessageSchema.extend({\n op: z.literal(HCS2Operation.MIGRATE),\n t_id: topicIdSchema,\n metadata: z.string().optional(),\n});\n\nexport const hcs2MessageSchema = z.discriminatedUnion('op', [\n registerMessageSchema,\n updateMessageSchema,\n deleteMessageSchema,\n migrateMessageSchema,\n]);\n"],"names":["HCS2Operation","HCS2RegistryType"],"mappings":";AAaO,IAAK,kCAAAA,mBAAL;AACLA,iBAAA,UAAA,IAAW;AACXA,iBAAA,QAAA,IAAS;AACTA,iBAAA,QAAA,IAAS;AACTA,iBAAA,SAAA,IAAU;AAJA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;AAYL,IAAK,qCAAAC,sBAAL;AACLA,oBAAAA,kBAAA,aAAU,CAAA,IAAV;AACAA,oBAAAA,kBAAA,iBAAc,CAAA,IAAd;AAFU,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AA8KL,MAAM,gBAAgB,EAAE,SAAS,MAAM,mBAAmB;AAAA,EAC/D,SAAS;AACX,CAAC;AAEM,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,GAAG,EAAE,SAAS,MAAM,aAAa;AAAA,IAC/B,SAAS;AAAA,EAAA,CACV;AAAA,EACD,IAAI,EAAE,KAAK;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAAA,CACD;AAAA,EACD,GAAG,EAAE,OAAA,EAAS,IAAI,KAAK,qCAAqC,EAAE,SAAA;AAAA,EAC9D,KAAK,EAAE,OAAA,EAAS,MAAM,SAAA,EAAW,SAAA;AACnC,CAAC;AAEM,MAAM,wBAAwB,kBAAkB,OAAO;AAAA,EAC5D,IAAI,EAAE;AAAA,IAAQ;AAAA;AAAA,EAAA;AAAA,EACd,MAAM;AAAA,EACN,UAAU,EAAE,OAAA,EAAS,SAAA;AACvB,CAAC;AAEM,MAAM,sBAAsB,kBAAkB,OAAO;AAAA,EAC1D,IAAI,EAAE;AAAA,IAAQ;AAAA;AAAA,EAAA;AAAA,EACd,KAAK,EAAE,OAAA;AAAA,EACP,MAAM;AAAA,EACN,UAAU,EAAE,OAAA,EAAS,SAAA;AACvB,CAAC;AAEM,MAAM,sBAAsB,kBAAkB,OAAO;AAAA,EAC1D,IAAI,EAAE;AAAA,IAAQ;AAAA;AAAA,EAAA;AAAA,EACd,KAAK,EAAE,OAAA;AACT,CAAC;AAEM,MAAM,uBAAuB,kBAAkB,OAAO;AAAA,EAC3D,IAAI,EAAE;AAAA,IAAQ;AAAA;AAAA,EAAA;AAAA,EACd,MAAM;AAAA,EACN,UAAU,EAAE,OAAA,EAAS,SAAA;AACvB,CAAC;AAEM,MAAM,oBAAoB,EAAE,mBAAmB,MAAM;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;"}
1
+ {"version":3,"file":"standards-sdk.es68.js","sources":["../../src/hcs-2/client.ts"],"sourcesContent":["import {\n Client,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PrivateKey,\n TopicId,\n TransactionReceipt,\n AccountId,\n PublicKey,\n} from '@hashgraph/sdk';\nimport { HCS2BaseClient } from './base-client';\nimport {\n HCS2ClientConfig,\n HCS2Message,\n HCS2Operation,\n HCS2RegistryType,\n TopicRegistrationResponse,\n RegistryOperationResponse,\n TopicRegistry,\n CreateRegistryOptions,\n RegisterEntryOptions,\n UpdateEntryOptions,\n DeleteEntryOptions,\n MigrateTopicOptions,\n QueryRegistryOptions,\n RegistryEntry,\n} from './types';\nimport { NetworkType } from '../utils/types';\nimport {\n NodeOperatorResolver,\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { buildMessageTx } from '../common/tx/tx-utils';\nimport { buildHcs2CreateRegistryTx } from './tx';\n\n/**\n * SDK client configuration for HCS-2\n */\nexport interface SDKHCS2ClientConfig extends HCS2ClientConfig {\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n}\n\n/**\n * SDK client for HCS-2 operations\n */\nexport class HCS2Client extends HCS2BaseClient {\n private static readonly operationAnalyticsCode: Record<\n HCS2Operation,\n number\n > = {\n [HCS2Operation.REGISTER]: 0,\n [HCS2Operation.UPDATE]: 1,\n [HCS2Operation.DELETE]: 2,\n [HCS2Operation.MIGRATE]: 3,\n };\n\n private client: Client;\n private operatorId: AccountId;\n private operatorCtx: NodeOperatorContext;\n private readonly registryTypeCache = new Map<string, HCS2RegistryType>();\n\n /**\n * Create a new HCS-2 client\n * @param config Client configuration\n */\n constructor(config: SDKHCS2ClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n silent: config.silent,\n mirrorNodeUrl: config.mirrorNodeUrl,\n logger: config.logger,\n });\n\n this.operatorId =\n typeof config.operatorId === 'string'\n ? AccountId.fromString(config.operatorId)\n : config.operatorId;\n\n this.operatorCtx = createNodeOperatorContext({\n network: this.network,\n operatorId: this.operatorId,\n operatorKey: config.operatorKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client: this.createClient(config.network),\n });\n this.client = this.operatorCtx.client;\n }\n\n /**\n * Initialize the Hedera client with operator information\n */\n private async ensureInitialized(): Promise<void> {\n await this.operatorCtx.ensureInitialized();\n }\n\n /**\n * Create a Hedera client for the specified network\n * @param network The network to connect to\n * @returns The Hedera client\n */\n private createClient(network: NetworkType): Client {\n if (network === 'mainnet') {\n return Client.forMainnet();\n } else {\n return Client.forTestnet();\n }\n }\n\n /**\n * Create a new registry topic\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n async createRegistry(\n options: CreateRegistryOptions = {},\n ): Promise<TopicRegistrationResponse> {\n try {\n await this.ensureInitialized();\n const registryType = options.registryType ?? HCS2RegistryType.INDEXED;\n const ttl = options.ttl ?? 86400; // Default TTL: 24 hours\n\n const memo = this.generateRegistryMemo(registryType, ttl);\n\n let adminKeyPrivate: PrivateKey | undefined;\n let adminPublicKey: PublicKey | undefined;\n if (options.adminKey) {\n if (typeof options.adminKey === 'string') {\n try {\n adminPublicKey = PublicKey.fromString(options.adminKey);\n } catch {\n const keyBytes = Buffer.from(\n options.adminKey.replace(/^0x/i, ''),\n 'hex',\n );\n adminPublicKey =\n this.operatorCtx.keyType === 'ed25519'\n ? PublicKey.fromBytesED25519(keyBytes)\n : PublicKey.fromBytesECDSA(keyBytes);\n }\n } else if (typeof options.adminKey === 'boolean') {\n adminPublicKey = this.operatorCtx.operatorKey.publicKey;\n } else {\n adminPublicKey = options.adminKey.publicKey;\n adminKeyPrivate = options.adminKey;\n }\n }\n\n let submitKeyPrivate: PrivateKey | undefined;\n let submitPublicKey: PublicKey | undefined;\n if (options.submitKey) {\n if (typeof options.submitKey === 'string') {\n try {\n submitPublicKey = PublicKey.fromString(options.submitKey);\n } catch {\n const keyBytes = Buffer.from(\n options.submitKey.replace(/^0x/i, ''),\n 'hex',\n );\n submitPublicKey =\n this.operatorCtx.keyType === 'ed25519'\n ? PublicKey.fromBytesED25519(keyBytes)\n : PublicKey.fromBytesECDSA(keyBytes);\n }\n } else if (typeof options.submitKey === 'boolean') {\n submitPublicKey = this.operatorCtx.operatorKey.publicKey;\n } else {\n submitPublicKey = options.submitKey.publicKey;\n submitKeyPrivate = options.submitKey;\n }\n }\n\n const transaction = buildHcs2CreateRegistryTx({\n registryType,\n ttl,\n adminKey: adminPublicKey,\n submitKey: submitPublicKey,\n operatorPublicKey: this.operatorCtx.operatorKey.publicKey,\n });\n\n const frozenTx = await transaction.freezeWith(this.client);\n\n if (adminKeyPrivate) {\n await frozenTx.sign(adminKeyPrivate);\n }\n\n if (submitKeyPrivate) {\n await frozenTx.sign(submitKeyPrivate);\n }\n\n const txResponse = await frozenTx.execute(this.client);\n\n const receipt = await txResponse.getReceipt(this.client);\n const topicId = receipt.topicId;\n\n if (!topicId) {\n throw new Error('Failed to create registry: No topic ID in receipt');\n }\n\n const topicIdStr = topicId.toString();\n this.registryTypeCache.set(topicIdStr, registryType);\n\n this.logger.info(\n `Created registry topic: ${topicIdStr} (${registryType === HCS2RegistryType.INDEXED ? 'Indexed' : 'Non-indexed'}, TTL: ${ttl}s)`,\n );\n\n return {\n success: true,\n topicId: topicIdStr,\n transactionId: txResponse.transactionId.toString(),\n };\n } catch (error) {\n this.logger.error(`Failed to create registry: ${error}`);\n return {\n success: false,\n error: `Failed to create registry: ${error}`,\n };\n }\n }\n\n /**\n * Register a new entry in the registry\n * @param registryTopicId The topic ID of the registry\n * @param options Registration options\n * @param protocol Optional protocol version (defaults to 'hcs-2')\n * @returns Promise resolving to the operation result\n */\n async registerEntry(\n registryTopicId: string,\n options: RegisterEntryOptions,\n protocol: string = 'hcs-2',\n ): Promise<RegistryOperationResponse> {\n try {\n await this.ensureInitialized();\n const message = this.createRegisterMessage(\n options.targetTopicId,\n options.metadata,\n options.memo,\n protocol,\n );\n\n const registryType =\n options.registryType ??\n (await this.resolveRegistryType(registryTopicId));\n this.registryTypeCache.set(registryTopicId, registryType);\n const analyticsMemo =\n options.analyticsMemo ??\n this.buildAnalyticsMemo(HCS2Operation.REGISTER, registryType);\n\n const receipt = await this.submitMessage(\n registryTopicId,\n message,\n analyticsMemo,\n );\n\n this.logger.info(\n `Registered entry in registry ${registryTopicId} pointing to topic ${options.targetTopicId} using protocol ${protocol}`,\n );\n\n return {\n success: true,\n receipt,\n sequenceNumber: receipt.topicSequenceNumber?.low ?? undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to register entry: ${error}`);\n return {\n success: false,\n error: `Failed to register entry: ${error}`,\n };\n }\n }\n\n /**\n * Update an existing entry in the registry (indexed registries only)\n * @param registryTopicId The topic ID of the registry\n * @param options Update options\n * @returns Promise resolving to the operation result\n */\n async updateEntry(\n registryTopicId: string,\n options: UpdateEntryOptions,\n ): Promise<RegistryOperationResponse> {\n try {\n await this.ensureInitialized();\n const registryInfo = await this.mirrorNode.getTopicInfo(registryTopicId);\n const memoInfo = this.parseRegistryTypeFromMemo(registryInfo.memo);\n\n if (!memoInfo || memoInfo.registryType !== HCS2RegistryType.INDEXED) {\n throw new Error(\n 'Update operation is only valid for indexed registries',\n );\n }\n\n const message = this.createUpdateMessage(\n options.targetTopicId,\n options.uid,\n options.metadata,\n options.memo,\n );\n\n const registryType =\n options.registryType ??\n (await this.resolveRegistryType(registryTopicId));\n this.registryTypeCache.set(registryTopicId, registryType);\n const analyticsMemo =\n options.analyticsMemo ??\n this.buildAnalyticsMemo(HCS2Operation.UPDATE, registryType);\n\n const receipt = await this.submitMessage(\n registryTopicId,\n message,\n analyticsMemo,\n );\n\n this.logger.info(\n `Updated entry with UID ${options.uid} in registry ${registryTopicId}`,\n );\n\n return {\n success: true,\n receipt,\n sequenceNumber: receipt.topicSequenceNumber?.low ?? undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to update entry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Delete an entry from the registry (indexed registries only)\n * @param registryTopicId The topic ID of the registry\n * @param options Delete options\n * @returns Promise resolving to the operation result\n */\n async deleteEntry(\n registryTopicId: string,\n options: DeleteEntryOptions,\n ): Promise<RegistryOperationResponse> {\n try {\n await this.ensureInitialized();\n const registryInfo = await this.mirrorNode.getTopicInfo(registryTopicId);\n const memoInfo = this.parseRegistryTypeFromMemo(registryInfo.memo);\n\n if (!memoInfo || memoInfo.registryType !== HCS2RegistryType.INDEXED) {\n throw new Error(\n 'Delete operation is only valid for indexed registries',\n );\n }\n\n const message = this.createDeleteMessage(options.uid, options.memo);\n\n const registryType =\n options.registryType ??\n (await this.resolveRegistryType(registryTopicId));\n this.registryTypeCache.set(registryTopicId, registryType);\n const analyticsMemo =\n options.analyticsMemo ??\n this.buildAnalyticsMemo(HCS2Operation.DELETE, registryType);\n\n const receipt = await this.submitMessage(\n registryTopicId,\n message,\n analyticsMemo,\n );\n\n this.logger.info(\n `Deleted entry with UID ${options.uid} from registry ${registryTopicId}`,\n );\n\n return {\n success: true,\n receipt,\n sequenceNumber: receipt.topicSequenceNumber?.low ?? undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to delete entry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Migrate a registry to a new topic\n * @param registryTopicId The topic ID of the registry\n * @param options Migration options\n * @returns Promise resolving to the operation result\n */\n async migrateRegistry(\n registryTopicId: string,\n options: MigrateTopicOptions,\n ): Promise<RegistryOperationResponse> {\n try {\n await this.ensureInitialized();\n const message = this.createMigrateMessage(\n options.targetTopicId,\n options.metadata,\n options.memo,\n );\n\n const registryType =\n options.registryType ??\n (await this.resolveRegistryType(registryTopicId));\n this.registryTypeCache.set(registryTopicId, registryType);\n const analyticsMemo =\n options.analyticsMemo ??\n this.buildAnalyticsMemo(HCS2Operation.MIGRATE, registryType);\n\n const receipt = await this.submitMessage(\n registryTopicId,\n message,\n analyticsMemo,\n );\n\n this.logger.info(\n `Migrated registry ${registryTopicId} to ${options.targetTopicId}`,\n );\n\n return {\n success: true,\n receipt,\n sequenceNumber: receipt.topicSequenceNumber?.low ?? undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to migrate registry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Get all entries from a registry\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: QueryRegistryOptions = {},\n ): Promise<TopicRegistry> {\n try {\n await this.ensureInitialized();\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n this.logger.debug(\n `Retrieved topic info for ${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-2 registry (invalid memo format)`,\n );\n }\n\n this.logger.debug(\n `Retrieving messages for 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 any[];\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 const entries: RegistryEntry[] = [];\n let latestEntry: RegistryEntry | undefined;\n\n for (const msg of rawMessages) {\n try {\n const message: HCS2Message = {\n p: 'hcs-2',\n op: msg.op,\n t_id: msg.t_id,\n uid: msg.uid,\n metadata: msg.metadata,\n m: msg.m,\n } as HCS2Message;\n\n const { valid, errors } = this.validateMessage(message);\n if (!valid) {\n this.logger.warn(`Invalid HCS-2 message: ${errors.join(', ')}`);\n continue;\n }\n\n const entry: RegistryEntry = {\n topicId,\n sequence: msg.sequence_number,\n timestamp: msg.consensus_timestamp,\n payer: msg.payer_account_id || msg.payer || '',\n message,\n consensus_timestamp: msg.consensus_timestamp,\n registry_type: memoInfo.registryType,\n };\n\n entries.push(entry);\n\n if (\n memoInfo.registryType === HCS2RegistryType.NON_INDEXED ||\n !latestEntry ||\n entry.timestamp > latestEntry.timestamp\n ) {\n latestEntry = entry;\n }\n } catch (error) {\n this.logger.warn(`Error processing message: ${error}`);\n }\n }\n\n this.logger.debug(\n `Processed ${entries.length} valid entries for registry ${topicId}`,\n );\n\n const registry: TopicRegistry = {\n topicId,\n registryType: memoInfo.registryType,\n ttl: memoInfo.ttl,\n entries:\n memoInfo.registryType === HCS2RegistryType.INDEXED\n ? entries\n : latestEntry\n ? [latestEntry]\n : [],\n latestEntry,\n };\n\n return registry;\n } catch (error) {\n this.logger.error(`Failed to get registry: ${error}`);\n throw error;\n }\n }\n\n private buildAnalyticsMemo(\n operation: HCS2Operation,\n registryType: HCS2RegistryType,\n ): string {\n const opCode = HCS2Client.operationAnalyticsCode[operation];\n return `hcs-2:op:${opCode}:${registryType}`;\n }\n\n private async resolveRegistryType(\n topicId: string,\n ): Promise<HCS2RegistryType> {\n const cached = this.registryTypeCache.get(topicId);\n if (cached !== undefined) {\n return cached;\n }\n\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n if (!memoInfo) {\n throw new Error(\n `Topic ${topicId} is not an HCS-2 registry (invalid memo format)`,\n );\n }\n\n this.registryTypeCache.set(topicId, memoInfo.registryType);\n return memoInfo.registryType;\n }\n\n /**\n * Submit a message to a 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 async submitMessage(\n topicId: string,\n payload: HCS2Message,\n analyticsMemo?: string,\n ): Promise<TransactionReceipt> {\n try {\n await this.ensureInitialized();\n const { valid, errors } = this.validateMessage(payload);\n if (!valid) {\n throw new Error(`Invalid HCS-2 message: ${errors.join(', ')}`);\n }\n\n const transaction = buildMessageTx({\n topicId,\n message: JSON.stringify(payload),\n transactionMemo: analyticsMemo,\n });\n\n const txResponse = await transaction.execute(this.client);\n\n const receipt = await txResponse.getReceipt(this.client);\n\n return receipt;\n } catch (error) {\n this.logger.error(`Failed to submit message: ${error}`);\n throw error;\n }\n }\n\n /**\n * @param topicId The topic ID to query\n * @returns Promise resolving to the topic information\n */\n public async getTopicInfo(topicId: string): Promise<any> {\n return this.mirrorNode.getTopicInfo(topicId);\n }\n\n /**\n * Close the client and release resources\n */\n public close(): void {\n this.logger.info('HCS-2 client closed.');\n }\n\n /**\n * Get the configured key type (ed25519 or ecdsa)\n */\n public getKeyType(): 'ed25519' | 'ecdsa' {\n return this.operatorCtx.keyType;\n }\n\n /**\n * Get the configured operator private key\n */\n public getOperatorKey(): PrivateKey {\n return this.operatorCtx.operatorKey;\n }\n}\n"],"names":[],"mappings":";;;;;;AAgDO,MAAM,cAAN,MAAM,oBAAmB,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAoB7C,YAAY,QAA6B;AACvC,UAAM;AAAA,MACJ,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO;AAAA,MACf,eAAe,OAAO;AAAA,MACtB,QAAQ,OAAO;AAAA,IAAA,CAChB;AAbH,SAAiB,wCAAwB,IAAA;AAevC,SAAK,aACH,OAAO,OAAO,eAAe,WACzB,UAAU,WAAW,OAAO,UAAU,IACtC,OAAO;AAEb,SAAK,cAAc,0BAA0B;AAAA,MAC3C,SAAS,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,MACjB,aAAa,OAAO;AAAA,MACpB,SAAS,OAAO;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,QAAQ,KAAK;AAAA,MACb,QAAQ,KAAK,aAAa,OAAO,OAAO;AAAA,IAAA,CACzC;AACD,SAAK,SAAS,KAAK,YAAY;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,oBAAmC;AAC/C,UAAM,KAAK,YAAY,kBAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,aAAa,SAA8B;AACjD,QAAI,YAAY,WAAW;AACzB,aAAO,OAAO,WAAA;AAAA,IAChB,OAAO;AACL,aAAO,OAAO,WAAA;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eACJ,UAAiC,IACG;AACpC,QAAI;AACF,YAAM,KAAK,kBAAA;AACX,YAAM,eAAe,QAAQ,gBAAgB,iBAAiB;AAC9D,YAAM,MAAM,QAAQ,OAAO;AAE3B,YAAM,OAAO,KAAK,qBAAqB,cAAc,GAAG;AAExD,UAAI;AACJ,UAAI;AACJ,UAAI,QAAQ,UAAU;AACpB,YAAI,OAAO,QAAQ,aAAa,UAAU;AACxC,cAAI;AACF,6BAAiB,UAAU,WAAW,QAAQ,QAAQ;AAAA,UACxD,QAAQ;AACN,kBAAM,WAAW,OAAO;AAAA,cACtB,QAAQ,SAAS,QAAQ,QAAQ,EAAE;AAAA,cACnC;AAAA,YAAA;AAEF,6BACE,KAAK,YAAY,YAAY,YACzB,UAAU,iBAAiB,QAAQ,IACnC,UAAU,eAAe,QAAQ;AAAA,UACzC;AAAA,QACF,WAAW,OAAO,QAAQ,aAAa,WAAW;AAChD,2BAAiB,KAAK,YAAY,YAAY;AAAA,QAChD,OAAO;AACL,2BAAiB,QAAQ,SAAS;AAClC,4BAAkB,QAAQ;AAAA,QAC5B;AAAA,MACF;AAEA,UAAI;AACJ,UAAI;AACJ,UAAI,QAAQ,WAAW;AACrB,YAAI,OAAO,QAAQ,cAAc,UAAU;AACzC,cAAI;AACF,8BAAkB,UAAU,WAAW,QAAQ,SAAS;AAAA,UAC1D,QAAQ;AACN,kBAAM,WAAW,OAAO;AAAA,cACtB,QAAQ,UAAU,QAAQ,QAAQ,EAAE;AAAA,cACpC;AAAA,YAAA;AAEF,8BACE,KAAK,YAAY,YAAY,YACzB,UAAU,iBAAiB,QAAQ,IACnC,UAAU,eAAe,QAAQ;AAAA,UACzC;AAAA,QACF,WAAW,OAAO,QAAQ,cAAc,WAAW;AACjD,4BAAkB,KAAK,YAAY,YAAY;AAAA,QACjD,OAAO;AACL,4BAAkB,QAAQ,UAAU;AACpC,6BAAmB,QAAQ;AAAA,QAC7B;AAAA,MACF;AAEA,YAAM,cAAc,0BAA0B;AAAA,QAC5C;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,WAAW;AAAA,QACX,mBAAmB,KAAK,YAAY,YAAY;AAAA,MAAA,CACjD;AAED,YAAM,WAAW,MAAM,YAAY,WAAW,KAAK,MAAM;AAEzD,UAAI,iBAAiB;AACnB,cAAM,SAAS,KAAK,eAAe;AAAA,MACrC;AAEA,UAAI,kBAAkB;AACpB,cAAM,SAAS,KAAK,gBAAgB;AAAA,MACtC;AAEA,YAAM,aAAa,MAAM,SAAS,QAAQ,KAAK,MAAM;AAErD,YAAM,UAAU,MAAM,WAAW,WAAW,KAAK,MAAM;AACvD,YAAM,UAAU,QAAQ;AAExB,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAEA,YAAM,aAAa,QAAQ,SAAA;AAC3B,WAAK,kBAAkB,IAAI,YAAY,YAAY;AAEnD,WAAK,OAAO;AAAA,QACV,2BAA2B,UAAU,KAAK,iBAAiB,iBAAiB,UAAU,YAAY,aAAa,UAAU,GAAG;AAAA,MAAA;AAG9H,aAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS;AAAA,QACT,eAAe,WAAW,cAAc,SAAA;AAAA,MAAS;AAAA,IAErD,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,8BAA8B,KAAK,EAAE;AACvD,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,8BAA8B,KAAK;AAAA,MAAA;AAAA,IAE9C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,cACJ,iBACA,SACA,WAAmB,SACiB;AACpC,QAAI;AACF,YAAM,KAAK,kBAAA;AACX,YAAM,UAAU,KAAK;AAAA,QACnB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR;AAAA,MAAA;AAGF,YAAM,eACJ,QAAQ,gBACP,MAAM,KAAK,oBAAoB,eAAe;AACjD,WAAK,kBAAkB,IAAI,iBAAiB,YAAY;AACxD,YAAM,gBACJ,QAAQ,iBACR,KAAK,mBAAmB,cAAc,UAAU,YAAY;AAE9D,YAAM,UAAU,MAAM,KAAK;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAGF,WAAK,OAAO;AAAA,QACV,gCAAgC,eAAe,sBAAsB,QAAQ,aAAa,mBAAmB,QAAQ;AAAA,MAAA;AAGvH,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA,gBAAgB,QAAQ,qBAAqB,OAAO;AAAA,MAAA;AAAA,IAExD,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,6BAA6B,KAAK,EAAE;AACtD,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,6BAA6B,KAAK;AAAA,MAAA;AAAA,IAE7C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,YACJ,iBACA,SACoC;AACpC,QAAI;AACF,YAAM,KAAK,kBAAA;AACX,YAAM,eAAe,MAAM,KAAK,WAAW,aAAa,eAAe;AACvE,YAAM,WAAW,KAAK,0BAA0B,aAAa,IAAI;AAEjE,UAAI,CAAC,YAAY,SAAS,iBAAiB,iBAAiB,SAAS;AACnE,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAAA,MAEJ;AAEA,YAAM,UAAU,KAAK;AAAA,QACnB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA;AAGV,YAAM,eACJ,QAAQ,gBACP,MAAM,KAAK,oBAAoB,eAAe;AACjD,WAAK,kBAAkB,IAAI,iBAAiB,YAAY;AACxD,YAAM,gBACJ,QAAQ,iBACR,KAAK,mBAAmB,cAAc,QAAQ,YAAY;AAE5D,YAAM,UAAU,MAAM,KAAK;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAGF,WAAK,OAAO;AAAA,QACV,0BAA0B,QAAQ,GAAG,gBAAgB,eAAe;AAAA,MAAA;AAGtE,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA,gBAAgB,QAAQ,qBAAqB,OAAO;AAAA,MAAA;AAAA,IAExD,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,2BAA2B,KAAK,EAAE;AACpD,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,YACJ,iBACA,SACoC;AACpC,QAAI;AACF,YAAM,KAAK,kBAAA;AACX,YAAM,eAAe,MAAM,KAAK,WAAW,aAAa,eAAe;AACvE,YAAM,WAAW,KAAK,0BAA0B,aAAa,IAAI;AAEjE,UAAI,CAAC,YAAY,SAAS,iBAAiB,iBAAiB,SAAS;AACnE,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAAA,MAEJ;AAEA,YAAM,UAAU,KAAK,oBAAoB,QAAQ,KAAK,QAAQ,IAAI;AAElE,YAAM,eACJ,QAAQ,gBACP,MAAM,KAAK,oBAAoB,eAAe;AACjD,WAAK,kBAAkB,IAAI,iBAAiB,YAAY;AACxD,YAAM,gBACJ,QAAQ,iBACR,KAAK,mBAAmB,cAAc,QAAQ,YAAY;AAE5D,YAAM,UAAU,MAAM,KAAK;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAGF,WAAK,OAAO;AAAA,QACV,0BAA0B,QAAQ,GAAG,kBAAkB,eAAe;AAAA,MAAA;AAGxE,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA,gBAAgB,QAAQ,qBAAqB,OAAO;AAAA,MAAA;AAAA,IAExD,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,2BAA2B,KAAK,EAAE;AACpD,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,gBACJ,iBACA,SACoC;AACpC,QAAI;AACF,YAAM,KAAK,kBAAA;AACX,YAAM,UAAU,KAAK;AAAA,QACnB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA;AAGV,YAAM,eACJ,QAAQ,gBACP,MAAM,KAAK,oBAAoB,eAAe;AACjD,WAAK,kBAAkB,IAAI,iBAAiB,YAAY;AACxD,YAAM,gBACJ,QAAQ,iBACR,KAAK,mBAAmB,cAAc,SAAS,YAAY;AAE7D,YAAM,UAAU,MAAM,KAAK;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAGF,WAAK,OAAO;AAAA,QACV,qBAAqB,eAAe,OAAO,QAAQ,aAAa;AAAA,MAAA;AAGlE,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA,gBAAgB,QAAQ,qBAAqB,OAAO;AAAA,MAAA;AAAA,IAExD,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,+BAA+B,KAAK,EAAE;AACxD,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,YACJ,SACA,UAAgC,IACR;AACxB,QAAI;AACF,YAAM,KAAK,kBAAA;AACX,YAAM,YAAY,MAAM,KAAK,WAAW,aAAa,OAAO;AAC5D,WAAK,OAAO;AAAA,QACV,4BAA4B,OAAO,KAAK,KAAK,UAAU,SAAS,CAAC;AAAA,MAAA;AAGnE,YAAM,WAAW,KAAK,0BAA0B,UAAU,IAAI;AAE9D,UAAI,CAAC,UAAU;AACb,cAAM,IAAI;AAAA,UACR,SAAS,OAAO;AAAA,QAAA;AAAA,MAEpB;AAEA,WAAK,OAAO;AAAA,QACV,iCAAiC,OAAO,eAAe,QAAQ,SAAS,GAAG;AAAA,MAAA;AAE7E,YAAM,oBAAqB,MAAM,KAAK,WAAW;AAAA,QAC/C;AAAA,QACA;AAAA,UACE,gBACE,QAAQ,QAAQ,QAAQ,OAAO,IAAI,MAAM,QAAQ,IAAI,KAAK;AAAA,UAC5D,OAAO,QAAQ,SAAS;AAAA,UACxB,OAAO,QAAQ,SAAS;AAAA,QAAA;AAAA,MAC1B;AAGF,YAAM,cAAc,QAAQ,QACxB,kBAAkB,MAAM,GAAG,QAAQ,KAAK,IACxC;AAEJ,WAAK,OAAO;AAAA,QACV,aAAa,kBAAkB,MAAM,oBAAoB,YAAY,MAAM;AAAA,MAAA;AAG7E,YAAM,UAA2B,CAAA;AACjC,UAAI;AAEJ,iBAAW,OAAO,aAAa;AAC7B,YAAI;AACF,gBAAM,UAAuB;AAAA,YAC3B,GAAG;AAAA,YACH,IAAI,IAAI;AAAA,YACR,MAAM,IAAI;AAAA,YACV,KAAK,IAAI;AAAA,YACT,UAAU,IAAI;AAAA,YACd,GAAG,IAAI;AAAA,UAAA;AAGT,gBAAM,EAAE,OAAO,OAAA,IAAW,KAAK,gBAAgB,OAAO;AACtD,cAAI,CAAC,OAAO;AACV,iBAAK,OAAO,KAAK,0BAA0B,OAAO,KAAK,IAAI,CAAC,EAAE;AAC9D;AAAA,UACF;AAEA,gBAAM,QAAuB;AAAA,YAC3B;AAAA,YACA,UAAU,IAAI;AAAA,YACd,WAAW,IAAI;AAAA,YACf,OAAO,IAAI,oBAAoB,IAAI,SAAS;AAAA,YAC5C;AAAA,YACA,qBAAqB,IAAI;AAAA,YACzB,eAAe,SAAS;AAAA,UAAA;AAG1B,kBAAQ,KAAK,KAAK;AAElB,cACE,SAAS,iBAAiB,iBAAiB,eAC3C,CAAC,eACD,MAAM,YAAY,YAAY,WAC9B;AACA,0BAAc;AAAA,UAChB;AAAA,QACF,SAAS,OAAO;AACd,eAAK,OAAO,KAAK,6BAA6B,KAAK,EAAE;AAAA,QACvD;AAAA,MACF;AAEA,WAAK,OAAO;AAAA,QACV,aAAa,QAAQ,MAAM,+BAA+B,OAAO;AAAA,MAAA;AAGnE,YAAM,WAA0B;AAAA,QAC9B;AAAA,QACA,cAAc,SAAS;AAAA,QACvB,KAAK,SAAS;AAAA,QACd,SACE,SAAS,iBAAiB,iBAAiB,UACvC,UACA,cACE,CAAC,WAAW,IACZ,CAAA;AAAA,QACR;AAAA,MAAA;AAGF,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,2BAA2B,KAAK,EAAE;AACpD,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEQ,mBACN,WACA,cACQ;AACR,UAAM,SAAS,YAAW,uBAAuB,SAAS;AAC1D,WAAO,YAAY,MAAM,IAAI,YAAY;AAAA,EAC3C;AAAA,EAEA,MAAc,oBACZ,SAC2B;AAC3B,UAAM,SAAS,KAAK,kBAAkB,IAAI,OAAO;AACjD,QAAI,WAAW,QAAW;AACxB,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,MAAM,KAAK,WAAW,aAAa,OAAO;AAC5D,UAAM,WAAW,KAAK,0BAA0B,UAAU,IAAI;AAC9D,QAAI,CAAC,UAAU;AACb,YAAM,IAAI;AAAA,QACR,SAAS,OAAO;AAAA,MAAA;AAAA,IAEpB;AAEA,SAAK,kBAAkB,IAAI,SAAS,SAAS,YAAY;AACzD,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,cACJ,SACA,SACA,eAC6B;AAC7B,QAAI;AACF,YAAM,KAAK,kBAAA;AACX,YAAM,EAAE,OAAO,OAAA,IAAW,KAAK,gBAAgB,OAAO;AACtD,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,MAAM,0BAA0B,OAAO,KAAK,IAAI,CAAC,EAAE;AAAA,MAC/D;AAEA,YAAM,cAAc,eAAe;AAAA,QACjC;AAAA,QACA,SAAS,KAAK,UAAU,OAAO;AAAA,QAC/B,iBAAiB;AAAA,MAAA,CAClB;AAED,YAAM,aAAa,MAAM,YAAY,QAAQ,KAAK,MAAM;AAExD,YAAM,UAAU,MAAM,WAAW,WAAW,KAAK,MAAM;AAEvD,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,6BAA6B,KAAK,EAAE;AACtD,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAa,aAAa,SAA+B;AACvD,WAAO,KAAK,WAAW,aAAa,OAAO;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKO,QAAc;AACnB,SAAK,OAAO,KAAK,sBAAsB;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAKO,aAAkC;AACvC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKO,iBAA6B;AAClC,WAAO,KAAK,YAAY;AAAA,EAC1B;AACF;AA9kBE,YAAwB,yBAGpB;AAAA,EACF,CAAC,cAAc,QAAQ,GAAG;AAAA,EAC1B,CAAC,cAAc,MAAM,GAAG;AAAA,EACxB,CAAC,cAAc,MAAM,GAAG;AAAA,EACxB,CAAC,cAAc,OAAO,GAAG;AAAA;AARtB,IAAM,aAAN;"}