@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 +1 @@
1
- {"version":3,"file":"standards-sdk.es77.js","sources":["../../src/hcs-20/sdk.ts"],"sourcesContent":["/**\n * SDK implementation of HCS-20 client for server-side usage\n */\n\nimport {\n AccountId,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PrivateKey,\n Client,\n TransactionReceipt,\n TransactionResponse,\n Status,\n} from '@hashgraph/sdk';\nimport { HCS20BaseClient } from './base-client';\nimport {\n SDKHCS20ClientConfig,\n DeployPointsOptions,\n MintPointsOptions,\n TransferPointsOptions,\n BurnPointsOptions,\n RegisterTopicOptions,\n PointsInfo,\n PointsTransaction,\n HCS20DeployMessage,\n HCS20RegisterMessage,\n} from './types';\nimport {\n PointsDeploymentError,\n PointsTransferError,\n PointsBurnError,\n PointsValidationError,\n} from './errors';\nimport { sleep } from '../utils/sleep';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { HCS2Client } from '../hcs-2/client';\nimport {\n buildHcs20DeployTx,\n buildHcs20MintTx,\n buildHcs20TransferTx,\n buildHcs20BurnTx,\n buildHcs20RegisterTx,\n} from './tx';\n\n/**\n * SDK-specific HCS-20 client for server-side operations\n */\nexport class HCS20Client extends HCS20BaseClient {\n private client: Client;\n private operatorAccountId: AccountId;\n private operatorId: string;\n private operatorCtx: NodeOperatorContext;\n\n constructor(config: SDKHCS20ClientConfig) {\n super(config);\n\n this.operatorAccountId =\n typeof config.operatorId === 'string'\n ? AccountId.fromString(config.operatorId)\n : config.operatorId;\n this.operatorId = this.operatorAccountId.toString();\n\n const baseClient =\n this.network === 'mainnet' ? Client.forMainnet() : Client.forTestnet();\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: baseClient,\n });\n\n this.client = this.operatorCtx.client;\n void this.operatorCtx.ensureInitialized();\n }\n\n /**\n * Ensure operator is initialized before operations\n */\n private async ensureInitialized(): Promise<void> {\n await this.operatorCtx.ensureInitialized();\n }\n\n /**\n * Submit a payload to a topic\n */\n private async submitPayload(\n transaction: TopicMessageSubmitTransaction,\n submitKey?: PrivateKey,\n ): Promise<{ receipt: TransactionReceipt; transactionId: string }> {\n let transactionResponse: TransactionResponse;\n if (submitKey) {\n const frozenTransaction = transaction.freezeWith(this.client);\n const signedTransaction = await frozenTransaction.sign(submitKey);\n transactionResponse = await signedTransaction.execute(this.client);\n } else {\n transactionResponse = await transaction.execute(this.client);\n }\n\n const receipt = await transactionResponse.getReceipt(this.client);\n if (!receipt || receipt.status !== Status.Success) {\n throw new Error('Failed to submit message to topic');\n }\n\n return {\n receipt,\n transactionId: transactionResponse.transactionId!.toString(),\n };\n }\n\n /**\n * Create a public topic for HCS-20 (for testnet)\n */\n async createPublicTopic(memo?: string): Promise<string> {\n await this.ensureInitialized();\n\n this.logger.info('Creating public HCS-20 topic...');\n\n const topicCreateTx = await new TopicCreateTransaction()\n .setTopicMemo(memo || 'HCS-20 Public Topic')\n .execute(this.client);\n\n const receipt = await topicCreateTx.getReceipt(this.client);\n if (receipt.status !== Status.Success || !receipt.topicId) {\n throw new Error('Failed to create public topic');\n }\n\n const topicId = receipt.topicId.toString();\n this.logger.info(`Created public topic: ${topicId}`);\n\n this.publicTopicId = topicId;\n\n return topicId;\n }\n\n /**\n * Create a registry topic for HCS-20\n */\n async createRegistryTopic(): Promise<string> {\n await this.ensureInitialized();\n\n this.logger.info('Creating HCS-20 registry topic...');\n\n const hcs2Client = new HCS2Client({\n operatorId: this.operatorId,\n operatorKey: this.operatorCtx.operatorKey,\n network: this.network,\n });\n\n const topicCreateResponse = await hcs2Client.createRegistry({\n submitKey: this.operatorCtx.operatorKey,\n adminKey: this.operatorCtx.operatorKey,\n });\n\n if (!topicCreateResponse.success) {\n throw new Error('Failed to create registry topic');\n }\n\n const topicId = topicCreateResponse.topicId;\n this.logger.info(`Created registry topic: ${topicId}`);\n\n this.registryTopicId = topicId;\n\n return topicId;\n }\n\n /**\n * Deploy new points\n */\n async deployPoints(options: DeployPointsOptions): Promise<PointsInfo> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'creating-topic',\n percentage: 20,\n });\n\n let topicId: string;\n\n const hcs2Client = new HCS2Client({\n operatorId: this.operatorId,\n operatorKey: this.operatorCtx.operatorKey,\n network: this.network,\n });\n\n if (options.usePrivateTopic) {\n const topicCreateResponse = await hcs2Client.createRegistry({\n submitKey: this.operatorCtx.operatorKey,\n adminKey: this.operatorCtx.operatorKey,\n });\n\n if (!topicCreateResponse.success) {\n throw new PointsDeploymentError(\n 'Failed to create topic',\n options.tick,\n );\n }\n\n topicId = topicCreateResponse.topicId;\n this.logger.info(`Created private topic: ${topicId}`);\n } else {\n topicId = this.publicTopicId;\n }\n\n progressCallback?.({\n stage: 'submitting-deploy',\n percentage: 50,\n topicId,\n });\n\n const deployMessage: HCS20DeployMessage = {\n p: 'hcs-20',\n op: 'deploy',\n name: options.name,\n tick: this.normalizeTick(options.tick),\n max: options.maxSupply,\n lim: options.limitPerMint,\n metadata: options.metadata,\n m: options.topicMemo,\n };\n\n const validation = this.validateMessage(deployMessage);\n if (!validation.valid) {\n throw new PointsValidationError(\n 'Invalid deploy message',\n validation.errors!,\n );\n }\n\n const deployTransaction = buildHcs20DeployTx({\n topicId,\n name: options.name,\n tick: options.tick,\n max: options.maxSupply,\n lim: options.limitPerMint,\n metadata: options.metadata,\n memo: options.topicMemo,\n });\n\n const { transactionId: deployTxId } =\n await this.submitPayload(deployTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n topicId,\n deployTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, deployTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n topicId,\n deployTxId,\n });\n\n const pointsInfo: PointsInfo = {\n name: options.name,\n tick: this.normalizeTick(options.tick),\n maxSupply: options.maxSupply,\n limitPerMint: options.limitPerMint,\n metadata: options.metadata,\n topicId,\n deployerAccountId: this.operatorId,\n currentSupply: '0',\n deploymentTimestamp: new Date().toISOString(),\n isPrivate: options.usePrivateTopic || false,\n };\n\n return pointsInfo;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Mint points\n */\n async mintPoints(options: MintPointsOptions): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const mintTransaction = buildHcs20MintTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n to: this.accountToString(options.to),\n memo: options.memo,\n });\n\n const { transactionId: mintTxId } =\n await this.submitPayload(mintTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n mintTxId,\n });\n\n if (!options.disableMirrorCheck) {\n await this.waitForMirrorNodeConfirmation(topicId, mintTxId);\n }\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n mintTxId,\n });\n\n const transaction: PointsTransaction = {\n id: mintTxId,\n operation: 'mint',\n tick: normalizedTick,\n amount: options.amount,\n to: this.accountToString(options.to),\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: mintTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Transfer points\n */\n async transferPoints(\n options: TransferPointsOptions,\n ): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating-balance',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n const fromAccount = this.accountToString(options.from);\n const toAccount = this.accountToString(options.to);\n\n if (fromAccount !== this.operatorId) {\n throw new PointsTransferError(\n 'For public topics, transaction payer must match sender',\n options.tick,\n fromAccount,\n toAccount,\n options.amount,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const transferTransaction = buildHcs20TransferTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n from: fromAccount,\n to: toAccount,\n memo: options.memo,\n });\n\n const { transactionId: transferTxId } =\n await this.submitPayload(transferTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n transferTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, transferTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n transferTxId,\n });\n\n const transaction: PointsTransaction = {\n id: transferTxId,\n operation: 'transfer',\n tick: normalizedTick,\n amount: options.amount,\n from: fromAccount,\n to: toAccount,\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: transferTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Burn points\n */\n async burnPoints(options: BurnPointsOptions): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating-balance',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n const fromAccount = this.accountToString(options.from);\n\n if (fromAccount !== this.operatorId) {\n throw new PointsBurnError(\n 'For public topics, transaction payer must match burner',\n options.tick,\n fromAccount,\n options.amount,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const burnTransaction = buildHcs20BurnTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n from: fromAccount,\n memo: options.memo,\n });\n\n const { transactionId: burnTxId } =\n await this.submitPayload(burnTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n burnTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, burnTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n burnTxId,\n });\n\n const transaction: PointsTransaction = {\n id: burnTxId,\n operation: 'burn',\n tick: normalizedTick,\n amount: options.amount,\n from: fromAccount,\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: burnTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Register a topic in the registry\n */\n async registerTopic(options: RegisterTopicOptions): Promise<void> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating',\n percentage: 20,\n });\n\n const registerMessage: HCS20RegisterMessage = {\n p: 'hcs-20',\n op: 'register',\n name: options.name,\n metadata: options.metadata,\n private: options.isPrivate,\n t_id: this.topicToString(options.topicId),\n m: options.memo,\n };\n\n const validation = this.validateMessage(registerMessage);\n if (!validation.valid) {\n throw new PointsValidationError(\n 'Invalid register message',\n validation.errors!,\n );\n }\n\n if (!this.registryTopicId) {\n throw new PointsDeploymentError(\n 'Registry topic not available',\n options.name,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const registerTransaction = buildHcs20RegisterTx({\n registryTopicId: this.registryTopicId,\n name: options.name,\n topicId: this.topicToString(options.topicId),\n isPrivate: options.isPrivate,\n metadata: options.metadata,\n memo: options.memo,\n });\n\n const { transactionId: registerTxId } = await this.submitPayload(\n registerTransaction,\n this.operatorCtx.operatorKey,\n );\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n registerTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(\n this.registryTopicId,\n registerTxId,\n );\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n registerTxId,\n });\n\n this.logger.info(`Registered topic ${options.topicId} in registry`);\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Wait for mirror node to index a message\n */\n private async waitForMirrorNodeConfirmation(\n topicId: string,\n transactionId: string,\n maxRetries = 10,\n ): Promise<void> {\n for (let i = 0; i < maxRetries; i++) {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n limit: 10,\n order: 'desc',\n });\n\n const found = messages.some(message => {\n if (typeof message !== 'object' || message === null) {\n return false;\n }\n const candidate = message as { consensus_timestamp?: unknown };\n return typeof candidate.consensus_timestamp === 'string';\n });\n\n if (found) {\n this.logger.debug(\n `Transaction ${transactionId} confirmed on mirror node`,\n );\n return;\n }\n } catch (error) {\n this.logger.debug(`Mirror node check attempt ${i + 1} failed:`, error);\n }\n\n await sleep(2000);\n }\n\n this.logger.warn(\n `Transaction ${transactionId} not found on mirror node after ${maxRetries} attempts`,\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es77.js","sources":["../../src/hcs-20/points-indexer.ts"],"sourcesContent":["/**\n * HCS-20 Points Indexer for state calculation\n * Handles async processing of HCS messages to build points state.\n * With larger topics, we do not recommend using this indexer, and\n * instead utilizing more scalable, database or redis based solutions.\n */\n\nimport { Logger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services';\nimport { NetworkType } from '../utils/types';\nimport {\n PointsState,\n PointsInfo,\n HCS20Message,\n HCS20DeployMessage,\n HCS20MintMessage,\n HCS20TransferMessage,\n HCS20BurnMessage,\n HCS20_CONSTANTS,\n HCS20MessageSchema,\n} from './types';\n\ninterface TopicMessageMeta {\n consensus_timestamp: string;\n sequence_number: number;\n payer_account_id: string;\n transaction_id: string;\n}\n\n/**\n * HCS-20 Points Indexer for processing and maintaining points state\n */\nexport class HCS20PointsIndexer {\n private logger: Logger;\n private mirrorNode: HederaMirrorNode;\n private state: PointsState;\n private isProcessing: boolean = false;\n private lastIndexedSequence: Map<string, number> = new Map();\n\n constructor(network: NetworkType, logger?: Logger, mirrorNodeUrl?: string) {\n this.logger =\n logger ||\n new Logger({\n level: 'info',\n module: 'HCS20PointsIndexer',\n });\n this.mirrorNode = new HederaMirrorNode(network, this.logger, {\n customUrl: mirrorNodeUrl,\n });\n this.state = this.initializeState();\n }\n\n /**\n * Initialize empty state\n */\n private initializeState(): PointsState {\n return {\n deployedPoints: new Map(),\n balances: new Map(),\n transactions: [],\n lastProcessedSequence: 0,\n lastProcessedTimestamp: new Date().toISOString(),\n };\n }\n\n /**\n * Get current state snapshot\n */\n getState(): PointsState {\n return {\n ...this.state,\n deployedPoints: new Map(this.state.deployedPoints),\n balances: new Map(this.state.balances),\n transactions: [...this.state.transactions],\n };\n }\n\n /**\n * Get points info for a specific tick\n */\n getPointsInfo(tick: string): PointsInfo | undefined {\n return this.state.deployedPoints.get(this.normalizeTick(tick));\n }\n\n /**\n * Get balance for an account and tick\n */\n getBalance(tick: string, accountId: string): string {\n const normalizedTick = this.normalizeTick(tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) return '0';\n const balance = tickBalances.get(accountId);\n return balance?.balance || '0';\n }\n\n /**\n * Start indexing process\n */\n async startIndexing(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n pollInterval?: number;\n }): Promise<void> {\n if (this.isProcessing) {\n this.logger.warn('Indexing already in progress');\n return;\n }\n\n this.isProcessing = true;\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n const pollInterval = options?.pollInterval || 30000;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n\n const pollTopics = async () => {\n if (!this.isProcessing) return;\n try {\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n } catch (error) {\n this.logger.error('Polling error:', error);\n }\n if (this.isProcessing) {\n setTimeout(pollTopics, pollInterval);\n }\n };\n\n setTimeout(pollTopics, pollInterval);\n }\n\n /**\n * Index topics once and wait for completion\n */\n async indexOnce(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n }): Promise<void> {\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n }\n\n /**\n * Stop indexing process\n */\n stopIndexing(): void {\n this.isProcessing = false;\n this.logger.info('Indexing stopped');\n }\n\n /**\n * Index topics and update state\n */\n private async indexTopics(\n publicTopicId: string | null,\n registryTopicId: string | null,\n privateTopics?: string[],\n ): Promise<void> {\n this.logger.debug('Starting indexing cycle');\n if (publicTopicId) {\n await this.indexTopic(publicTopicId, false);\n }\n const registeredTopics = registryTopicId\n ? await this.getRegisteredTopics(registryTopicId)\n : [];\n const topicsToIndex = [...registeredTopics, ...(privateTopics || [])];\n for (const topicId of topicsToIndex) {\n await this.indexTopic(topicId, true);\n }\n\n this.logger.debug('Indexing cycle complete');\n }\n\n /**\n * Get registered topics from registry\n */\n private async getRegisteredTopics(\n registryTopicId: string,\n ): Promise<string[]> {\n const topics: string[] = [];\n try {\n const messages = await this.mirrorNode.getTopicMessages(registryTopicId, {\n limit: 100,\n order: 'asc',\n });\n\n messages\n .filter(\n message =>\n message.p === 'hcs-20' &&\n message.op === 'register' &&\n typeof message.t_id === 'string',\n )\n .forEach(message => {\n topics.push(message.t_id as string);\n });\n } catch (error) {\n this.logger.error('Failed to fetch registry messages:', error);\n }\n return topics;\n }\n\n /**\n * Index a single topic\n */\n private async indexTopic(topicId: string, isPrivate: boolean): Promise<void> {\n try {\n const lastSequence = this.lastIndexedSequence.get(topicId);\n this.logger.debug(\n `Indexing topic ${topicId}, starting from sequence ${lastSequence || 0}`,\n );\n\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n sequenceNumber: lastSequence ? lastSequence + 1 : undefined,\n limit: 1000,\n order: 'asc',\n });\n\n this.logger.debug(\n `Fetched ${messages.length} messages from topic ${topicId}`,\n );\n\n let maxSequence = lastSequence || 0;\n\n for (const message of messages) {\n if (message.p !== 'hcs-20') {\n continue;\n }\n\n const parseResult = HCS20MessageSchema.safeParse(message);\n if (!parseResult.success) {\n this.logger.debug('Skipping message due to schema mismatch');\n continue;\n }\n\n const parsedMsg = parseResult.data;\n const sequenceNumber = message.sequence_number ?? 0;\n\n this.logger.debug(\n `Found HCS-20 message: op=${parsedMsg.op}, sequence=${sequenceNumber}`,\n );\n\n if (sequenceNumber > maxSequence) {\n maxSequence = sequenceNumber;\n }\n\n const topicMessage: TopicMessageMeta = {\n consensus_timestamp: message.consensus_timestamp ?? '',\n sequence_number: sequenceNumber,\n payer_account_id: message.payer_account_id ?? message.payer ?? '',\n transaction_id: message.transaction_id ?? '',\n };\n\n this.processMessage(parsedMsg, topicMessage, topicId, isPrivate);\n\n this.state.lastProcessedSequence++;\n this.state.lastProcessedTimestamp = message.consensus_timestamp || '';\n }\n if (maxSequence > (lastSequence || 0)) {\n this.lastIndexedSequence.set(topicId, maxSequence);\n }\n } catch (error) {\n this.logger.error(`Failed to index topic ${topicId}:`, error);\n }\n }\n\n /**\n * Process a single message\n */\n private processMessage(\n msg: HCS20Message,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n switch (msg.op) {\n case 'deploy':\n this.processDeployMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'mint':\n this.processMintMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'transfer':\n this.processTransferMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'burn':\n this.processBurnMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n }\n }\n\n /**\n * Process deploy message\n */\n private processDeployMessage(\n msg: HCS20DeployMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n if (this.state.deployedPoints.has(normalizedTick)) {\n return;\n }\n const pointsInfo: PointsInfo = {\n name: msg.name,\n tick: normalizedTick,\n maxSupply: msg.max,\n limitPerMint: msg.lim,\n metadata: msg.metadata,\n topicId,\n deployerAccountId: hcsMsg.payer_account_id,\n currentSupply: '0',\n deploymentTimestamp: hcsMsg.consensus_timestamp,\n isPrivate,\n };\n\n this.state.deployedPoints.set(normalizedTick, pointsInfo);\n this.logger.info(`Deployed points: ${normalizedTick}`);\n }\n\n /**\n * Process mint message\n */\n private processMintMessage(\n msg: HCS20MintMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n\n if (!pointsInfo) return;\n const mintAmount = BigInt(msg.amt);\n const currentSupply = BigInt(pointsInfo.currentSupply);\n const maxSupply = BigInt(pointsInfo.maxSupply);\n\n if (currentSupply + mintAmount > maxSupply) return;\n\n if (pointsInfo.limitPerMint && mintAmount > BigInt(pointsInfo.limitPerMint))\n return;\n pointsInfo.currentSupply = (currentSupply + mintAmount).toString();\n let tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) {\n tickBalances = new Map();\n this.state.balances.set(normalizedTick, tickBalances);\n }\n\n const currentBalance = tickBalances.get(msg.to);\n const newBalance = currentBalance\n ? (BigInt(currentBalance.balance) + mintAmount).toString()\n : msg.amt;\n\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: newBalance,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'mint',\n tick: normalizedTick,\n amount: msg.amt,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process transfer message\n */\n private processTransferMessage(\n msg: HCS20TransferMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const senderBalance = tickBalances.get(msg.from);\n if (!senderBalance || BigInt(senderBalance.balance) < BigInt(msg.amt))\n return;\n const transferAmount = BigInt(msg.amt);\n\n senderBalance.balance = (\n BigInt(senderBalance.balance) - transferAmount\n ).toString();\n senderBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n const receiverBalance = tickBalances.get(msg.to);\n if (receiverBalance) {\n receiverBalance.balance = (\n BigInt(receiverBalance.balance) + transferAmount\n ).toString();\n receiverBalance.lastUpdated = hcsMsg.consensus_timestamp;\n } else {\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: msg.amt,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n }\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'transfer',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process burn message\n */\n private processBurnMessage(\n msg: HCS20BurnMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!pointsInfo || !tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const accountBalance = tickBalances.get(msg.from);\n if (!accountBalance || BigInt(accountBalance.balance) < BigInt(msg.amt))\n return;\n const burnAmount = BigInt(msg.amt);\n\n accountBalance.balance = (\n BigInt(accountBalance.balance) - burnAmount\n ).toString();\n accountBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n pointsInfo.currentSupply = (\n BigInt(pointsInfo.currentSupply) - burnAmount\n ).toString();\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'burn',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Normalize tick to lowercase and trim\n */\n private normalizeTick(tick: string): string {\n return tick.toLowerCase().trim();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,374 +1,92 @@
1
- import { Logger } from "./standards-sdk.es106.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es127.js";
3
- import "./standards-sdk.es128.js";
4
- import "./standards-sdk.es129.js";
5
- import "./standards-sdk.es130.js";
6
- import "./standards-sdk.es131.js";
7
- import "./standards-sdk.es132.js";
8
- import "./standards-sdk.es133.js";
9
- import "./standards-sdk.es134.js";
10
- import "./standards-sdk.es135.js";
11
- import "buffer";
12
- import "crypto";
13
- import "@noble/curves/secp256k1.js";
14
- import "zod";
15
- import "./standards-sdk.es139.js";
16
- import { HCS20_CONSTANTS, HCS20MessageSchema } from "./standards-sdk.es73.js";
17
- class HCS20PointsIndexer {
18
- constructor(network, logger, mirrorNodeUrl) {
19
- this.isProcessing = false;
20
- this.lastIndexedSequence = /* @__PURE__ */ new Map();
21
- this.logger = logger || new Logger({
22
- level: "info",
23
- module: "HCS20PointsIndexer"
24
- });
25
- this.mirrorNode = new HederaMirrorNode(network, this.logger, {
26
- customUrl: mirrorNodeUrl
27
- });
28
- this.state = this.initializeState();
29
- }
30
- /**
31
- * Initialize empty state
32
- */
33
- initializeState() {
34
- return {
35
- deployedPoints: /* @__PURE__ */ new Map(),
36
- balances: /* @__PURE__ */ new Map(),
37
- transactions: [],
38
- lastProcessedSequence: 0,
39
- lastProcessedTimestamp: (/* @__PURE__ */ new Date()).toISOString()
40
- };
41
- }
42
- /**
43
- * Get current state snapshot
44
- */
45
- getState() {
46
- return {
47
- ...this.state,
48
- deployedPoints: new Map(this.state.deployedPoints),
49
- balances: new Map(this.state.balances),
50
- transactions: [...this.state.transactions]
51
- };
52
- }
53
- /**
54
- * Get points info for a specific tick
55
- */
56
- getPointsInfo(tick) {
57
- return this.state.deployedPoints.get(this.normalizeTick(tick));
58
- }
59
- /**
60
- * Get balance for an account and tick
61
- */
62
- getBalance(tick, accountId) {
63
- const normalizedTick = this.normalizeTick(tick);
64
- const tickBalances = this.state.balances.get(normalizedTick);
65
- if (!tickBalances) return "0";
66
- const balance = tickBalances.get(accountId);
67
- return balance?.balance || "0";
68
- }
69
- /**
70
- * Start indexing process
71
- */
72
- async startIndexing(options) {
73
- if (this.isProcessing) {
74
- this.logger.warn("Indexing already in progress");
75
- return;
76
- }
77
- this.isProcessing = true;
78
- const includePublicTopic = options?.includePublicTopic !== false;
79
- const includeRegistryTopic = options?.includeRegistryTopic !== false;
80
- const publicTopicId = includePublicTopic ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID : null;
81
- const registryTopicId = includeRegistryTopic ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID : null;
82
- const pollInterval = options?.pollInterval || 3e4;
83
- await this.indexTopics(
84
- publicTopicId,
85
- registryTopicId,
86
- options?.privateTopics
87
- );
88
- const pollTopics = async () => {
89
- if (!this.isProcessing) return;
90
- try {
91
- await this.indexTopics(
92
- publicTopicId,
93
- registryTopicId,
94
- options?.privateTopics
95
- );
96
- } catch (error) {
97
- this.logger.error("Polling error:", error);
98
- }
99
- if (this.isProcessing) {
100
- setTimeout(pollTopics, pollInterval);
101
- }
102
- };
103
- setTimeout(pollTopics, pollInterval);
104
- }
105
- /**
106
- * Index topics once and wait for completion
107
- */
108
- async indexOnce(options) {
109
- const includePublicTopic = options?.includePublicTopic !== false;
110
- const includeRegistryTopic = options?.includeRegistryTopic !== false;
111
- const publicTopicId = includePublicTopic ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID : null;
112
- const registryTopicId = includeRegistryTopic ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID : null;
113
- await this.indexTopics(
114
- publicTopicId,
115
- registryTopicId,
116
- options?.privateTopics
117
- );
118
- }
119
- /**
120
- * Stop indexing process
121
- */
122
- stopIndexing() {
123
- this.isProcessing = false;
124
- this.logger.info("Indexing stopped");
125
- }
126
- /**
127
- * Index topics and update state
128
- */
129
- async indexTopics(publicTopicId, registryTopicId, privateTopics) {
130
- this.logger.debug("Starting indexing cycle");
131
- if (publicTopicId) {
132
- await this.indexTopic(publicTopicId, false);
133
- }
134
- const registeredTopics = registryTopicId ? await this.getRegisteredTopics(registryTopicId) : [];
135
- const topicsToIndex = [...registeredTopics, ...privateTopics || []];
136
- for (const topicId of topicsToIndex) {
137
- await this.indexTopic(topicId, true);
138
- }
139
- this.logger.debug("Indexing cycle complete");
140
- }
141
- /**
142
- * Get registered topics from registry
143
- */
144
- async getRegisteredTopics(registryTopicId) {
145
- const topics = [];
146
- try {
147
- const messages = await this.mirrorNode.getTopicMessages(registryTopicId, {
148
- limit: 100,
149
- order: "asc"
150
- });
151
- messages.filter(
152
- (message) => message.p === "hcs-20" && message.op === "register" && typeof message.t_id === "string"
153
- ).forEach((message) => {
154
- topics.push(message.t_id);
155
- });
156
- } catch (error) {
157
- this.logger.error("Failed to fetch registry messages:", error);
158
- }
159
- return topics;
160
- }
161
- /**
162
- * Index a single topic
163
- */
164
- async indexTopic(topicId, isPrivate) {
165
- try {
166
- const lastSequence = this.lastIndexedSequence.get(topicId);
167
- this.logger.debug(
168
- `Indexing topic ${topicId}, starting from sequence ${lastSequence || 0}`
169
- );
170
- const messages = await this.mirrorNode.getTopicMessages(topicId, {
171
- sequenceNumber: lastSequence ? lastSequence + 1 : void 0,
172
- limit: 1e3,
173
- order: "asc"
174
- });
175
- this.logger.debug(
176
- `Fetched ${messages.length} messages from topic ${topicId}`
177
- );
178
- let maxSequence = lastSequence || 0;
179
- for (const message of messages) {
180
- if (message.p !== "hcs-20") {
181
- continue;
182
- }
183
- const parseResult = HCS20MessageSchema.safeParse(message);
184
- if (!parseResult.success) {
185
- this.logger.debug("Skipping message due to schema mismatch");
186
- continue;
187
- }
188
- const parsedMsg = parseResult.data;
189
- const sequenceNumber = message.sequence_number ?? 0;
190
- this.logger.debug(
191
- `Found HCS-20 message: op=${parsedMsg.op}, sequence=${sequenceNumber}`
192
- );
193
- if (sequenceNumber > maxSequence) {
194
- maxSequence = sequenceNumber;
195
- }
196
- const topicMessage = {
197
- consensus_timestamp: message.consensus_timestamp ?? "",
198
- sequence_number: sequenceNumber,
199
- payer_account_id: message.payer_account_id ?? message.payer ?? "",
200
- transaction_id: message.transaction_id ?? ""
201
- };
202
- this.processMessage(parsedMsg, topicMessage, topicId, isPrivate);
203
- this.state.lastProcessedSequence++;
204
- this.state.lastProcessedTimestamp = message.consensus_timestamp || "";
205
- }
206
- if (maxSequence > (lastSequence || 0)) {
207
- this.lastIndexedSequence.set(topicId, maxSequence);
208
- }
209
- } catch (error) {
210
- this.logger.error(`Failed to index topic ${topicId}:`, error);
211
- }
212
- }
213
- /**
214
- * Process a single message
215
- */
216
- processMessage(msg, hcsMsg, topicId, isPrivate) {
217
- switch (msg.op) {
218
- case "deploy":
219
- this.processDeployMessage(msg, hcsMsg, topicId, isPrivate);
220
- break;
221
- case "mint":
222
- this.processMintMessage(msg, hcsMsg, topicId, isPrivate);
223
- break;
224
- case "transfer":
225
- this.processTransferMessage(msg, hcsMsg, topicId, isPrivate);
226
- break;
227
- case "burn":
228
- this.processBurnMessage(msg, hcsMsg, topicId, isPrivate);
229
- break;
230
- }
231
- }
232
- /**
233
- * Process deploy message
234
- */
235
- processDeployMessage(msg, hcsMsg, topicId, isPrivate) {
236
- const normalizedTick = this.normalizeTick(msg.tick);
237
- if (this.state.deployedPoints.has(normalizedTick)) {
238
- return;
239
- }
240
- const pointsInfo = {
241
- name: msg.name,
242
- tick: normalizedTick,
243
- maxSupply: msg.max,
244
- limitPerMint: msg.lim,
245
- metadata: msg.metadata,
246
- topicId,
247
- deployerAccountId: hcsMsg.payer_account_id,
248
- currentSupply: "0",
249
- deploymentTimestamp: hcsMsg.consensus_timestamp,
250
- isPrivate
251
- };
252
- this.state.deployedPoints.set(normalizedTick, pointsInfo);
253
- this.logger.info(`Deployed points: ${normalizedTick}`);
254
- }
255
- /**
256
- * Process mint message
257
- */
258
- processMintMessage(msg, hcsMsg, topicId, isPrivate) {
259
- const normalizedTick = this.normalizeTick(msg.tick);
260
- const pointsInfo = this.state.deployedPoints.get(normalizedTick);
261
- if (!pointsInfo) return;
262
- const mintAmount = BigInt(msg.amt);
263
- const currentSupply = BigInt(pointsInfo.currentSupply);
264
- const maxSupply = BigInt(pointsInfo.maxSupply);
265
- if (currentSupply + mintAmount > maxSupply) return;
266
- if (pointsInfo.limitPerMint && mintAmount > BigInt(pointsInfo.limitPerMint))
267
- return;
268
- pointsInfo.currentSupply = (currentSupply + mintAmount).toString();
269
- let tickBalances = this.state.balances.get(normalizedTick);
270
- if (!tickBalances) {
271
- tickBalances = /* @__PURE__ */ new Map();
272
- this.state.balances.set(normalizedTick, tickBalances);
273
- }
274
- const currentBalance = tickBalances.get(msg.to);
275
- const newBalance = currentBalance ? (BigInt(currentBalance.balance) + mintAmount).toString() : msg.amt;
276
- tickBalances.set(msg.to, {
277
- tick: normalizedTick,
278
- accountId: msg.to,
279
- balance: newBalance,
280
- lastUpdated: hcsMsg.consensus_timestamp
281
- });
282
- this.state.transactions.push({
283
- id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,
284
- operation: "mint",
285
- tick: normalizedTick,
286
- amount: msg.amt,
287
- to: msg.to,
288
- timestamp: hcsMsg.consensus_timestamp,
289
- sequenceNumber: hcsMsg.sequence_number,
290
- topicId,
291
- transactionId: hcsMsg.transaction_id || "",
292
- memo: msg.m
293
- });
294
- }
295
- /**
296
- * Process transfer message
297
- */
298
- processTransferMessage(msg, hcsMsg, topicId, isPrivate) {
299
- const normalizedTick = this.normalizeTick(msg.tick);
300
- const tickBalances = this.state.balances.get(normalizedTick);
301
- if (!tickBalances) return;
302
- if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;
303
- const senderBalance = tickBalances.get(msg.from);
304
- if (!senderBalance || BigInt(senderBalance.balance) < BigInt(msg.amt))
305
- return;
306
- const transferAmount = BigInt(msg.amt);
307
- senderBalance.balance = (BigInt(senderBalance.balance) - transferAmount).toString();
308
- senderBalance.lastUpdated = hcsMsg.consensus_timestamp;
309
- const receiverBalance = tickBalances.get(msg.to);
310
- if (receiverBalance) {
311
- receiverBalance.balance = (BigInt(receiverBalance.balance) + transferAmount).toString();
312
- receiverBalance.lastUpdated = hcsMsg.consensus_timestamp;
313
- } else {
314
- tickBalances.set(msg.to, {
315
- tick: normalizedTick,
316
- accountId: msg.to,
317
- balance: msg.amt,
318
- lastUpdated: hcsMsg.consensus_timestamp
319
- });
320
- }
321
- this.state.transactions.push({
322
- id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,
323
- operation: "transfer",
324
- tick: normalizedTick,
325
- amount: msg.amt,
326
- from: msg.from,
327
- to: msg.to,
328
- timestamp: hcsMsg.consensus_timestamp,
329
- sequenceNumber: hcsMsg.sequence_number,
330
- topicId,
331
- transactionId: hcsMsg.transaction_id || "",
332
- memo: msg.m
333
- });
334
- }
335
- /**
336
- * Process burn message
337
- */
338
- processBurnMessage(msg, hcsMsg, topicId, isPrivate) {
339
- const normalizedTick = this.normalizeTick(msg.tick);
340
- const pointsInfo = this.state.deployedPoints.get(normalizedTick);
341
- const tickBalances = this.state.balances.get(normalizedTick);
342
- if (!pointsInfo || !tickBalances) return;
343
- if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;
344
- const accountBalance = tickBalances.get(msg.from);
345
- if (!accountBalance || BigInt(accountBalance.balance) < BigInt(msg.amt))
346
- return;
347
- const burnAmount = BigInt(msg.amt);
348
- accountBalance.balance = (BigInt(accountBalance.balance) - burnAmount).toString();
349
- accountBalance.lastUpdated = hcsMsg.consensus_timestamp;
350
- pointsInfo.currentSupply = (BigInt(pointsInfo.currentSupply) - burnAmount).toString();
351
- this.state.transactions.push({
352
- id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,
353
- operation: "burn",
354
- tick: normalizedTick,
355
- amount: msg.amt,
356
- from: msg.from,
357
- timestamp: hcsMsg.consensus_timestamp,
358
- sequenceNumber: hcsMsg.sequence_number,
359
- topicId,
360
- transactionId: hcsMsg.transaction_id || "",
361
- memo: msg.m
362
- });
363
- }
364
- /**
365
- * Normalize tick to lowercase and trim
366
- */
367
- normalizeTick(tick) {
368
- return tick.toLowerCase().trim();
369
- }
1
+ import { buildMessageTx } from "./standards-sdk.es148.js";
2
+ function buildHcs20SubmitMessageTx(params) {
3
+ const msg = typeof params.payload === "string" ? params.payload : JSON.stringify(params.payload);
4
+ return buildMessageTx({
5
+ topicId: params.topicId,
6
+ message: msg,
7
+ transactionMemo: params.transactionMemo
8
+ });
9
+ }
10
+ function buildHcs20DeployTx(params) {
11
+ const payload = {
12
+ p: "hcs-20",
13
+ op: "deploy",
14
+ name: params.name,
15
+ tick: params.tick.toLowerCase().trim(),
16
+ max: params.max,
17
+ lim: params.lim,
18
+ metadata: params.metadata,
19
+ m: params.memo
20
+ };
21
+ return buildMessageTx({
22
+ topicId: params.topicId,
23
+ message: JSON.stringify(payload)
24
+ });
25
+ }
26
+ function buildHcs20MintTx(params) {
27
+ const payload = {
28
+ p: "hcs-20",
29
+ op: "mint",
30
+ tick: params.tick.toLowerCase().trim(),
31
+ amt: params.amt,
32
+ to: params.to,
33
+ m: params.memo
34
+ };
35
+ return buildMessageTx({
36
+ topicId: params.topicId,
37
+ message: JSON.stringify(payload)
38
+ });
39
+ }
40
+ function buildHcs20TransferTx(params) {
41
+ const payload = {
42
+ p: "hcs-20",
43
+ op: "transfer",
44
+ tick: params.tick.toLowerCase().trim(),
45
+ amt: params.amt,
46
+ from: params.from,
47
+ to: params.to,
48
+ m: params.memo
49
+ };
50
+ return buildMessageTx({
51
+ topicId: params.topicId,
52
+ message: JSON.stringify(payload)
53
+ });
54
+ }
55
+ function buildHcs20BurnTx(params) {
56
+ const payload = {
57
+ p: "hcs-20",
58
+ op: "burn",
59
+ tick: params.tick.toLowerCase().trim(),
60
+ amt: params.amt,
61
+ from: params.from,
62
+ m: params.memo
63
+ };
64
+ return buildMessageTx({
65
+ topicId: params.topicId,
66
+ message: JSON.stringify(payload)
67
+ });
68
+ }
69
+ function buildHcs20RegisterTx(params) {
70
+ const payload = {
71
+ p: "hcs-20",
72
+ op: "register",
73
+ name: params.name,
74
+ metadata: params.metadata,
75
+ private: params.isPrivate,
76
+ t_id: params.topicId,
77
+ m: params.memo
78
+ };
79
+ return buildMessageTx({
80
+ topicId: params.registryTopicId,
81
+ message: JSON.stringify(payload)
82
+ });
370
83
  }
371
84
  export {
372
- HCS20PointsIndexer
85
+ buildHcs20BurnTx,
86
+ buildHcs20DeployTx,
87
+ buildHcs20MintTx,
88
+ buildHcs20RegisterTx,
89
+ buildHcs20SubmitMessageTx,
90
+ buildHcs20TransferTx
373
91
  };
374
92
  //# sourceMappingURL=standards-sdk.es78.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es78.js","sources":["../../src/hcs-20/points-indexer.ts"],"sourcesContent":["/**\n * HCS-20 Points Indexer for state calculation\n * Handles async processing of HCS messages to build points state.\n * With larger topics, we do not recommend using this indexer, and\n * instead utilizing more scalable, database or redis based solutions.\n */\n\nimport { Logger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services';\nimport { NetworkType } from '../utils/types';\nimport {\n PointsState,\n PointsInfo,\n HCS20Message,\n HCS20DeployMessage,\n HCS20MintMessage,\n HCS20TransferMessage,\n HCS20BurnMessage,\n HCS20_CONSTANTS,\n HCS20MessageSchema,\n} from './types';\n\ninterface TopicMessageMeta {\n consensus_timestamp: string;\n sequence_number: number;\n payer_account_id: string;\n transaction_id: string;\n}\n\n/**\n * HCS-20 Points Indexer for processing and maintaining points state\n */\nexport class HCS20PointsIndexer {\n private logger: Logger;\n private mirrorNode: HederaMirrorNode;\n private state: PointsState;\n private isProcessing: boolean = false;\n private lastIndexedSequence: Map<string, number> = new Map();\n\n constructor(network: NetworkType, logger?: Logger, mirrorNodeUrl?: string) {\n this.logger =\n logger ||\n new Logger({\n level: 'info',\n module: 'HCS20PointsIndexer',\n });\n this.mirrorNode = new HederaMirrorNode(network, this.logger, {\n customUrl: mirrorNodeUrl,\n });\n this.state = this.initializeState();\n }\n\n /**\n * Initialize empty state\n */\n private initializeState(): PointsState {\n return {\n deployedPoints: new Map(),\n balances: new Map(),\n transactions: [],\n lastProcessedSequence: 0,\n lastProcessedTimestamp: new Date().toISOString(),\n };\n }\n\n /**\n * Get current state snapshot\n */\n getState(): PointsState {\n return {\n ...this.state,\n deployedPoints: new Map(this.state.deployedPoints),\n balances: new Map(this.state.balances),\n transactions: [...this.state.transactions],\n };\n }\n\n /**\n * Get points info for a specific tick\n */\n getPointsInfo(tick: string): PointsInfo | undefined {\n return this.state.deployedPoints.get(this.normalizeTick(tick));\n }\n\n /**\n * Get balance for an account and tick\n */\n getBalance(tick: string, accountId: string): string {\n const normalizedTick = this.normalizeTick(tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) return '0';\n const balance = tickBalances.get(accountId);\n return balance?.balance || '0';\n }\n\n /**\n * Start indexing process\n */\n async startIndexing(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n pollInterval?: number;\n }): Promise<void> {\n if (this.isProcessing) {\n this.logger.warn('Indexing already in progress');\n return;\n }\n\n this.isProcessing = true;\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n const pollInterval = options?.pollInterval || 30000;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n\n const pollTopics = async () => {\n if (!this.isProcessing) return;\n try {\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n } catch (error) {\n this.logger.error('Polling error:', error);\n }\n if (this.isProcessing) {\n setTimeout(pollTopics, pollInterval);\n }\n };\n\n setTimeout(pollTopics, pollInterval);\n }\n\n /**\n * Index topics once and wait for completion\n */\n async indexOnce(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n }): Promise<void> {\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n }\n\n /**\n * Stop indexing process\n */\n stopIndexing(): void {\n this.isProcessing = false;\n this.logger.info('Indexing stopped');\n }\n\n /**\n * Index topics and update state\n */\n private async indexTopics(\n publicTopicId: string | null,\n registryTopicId: string | null,\n privateTopics?: string[],\n ): Promise<void> {\n this.logger.debug('Starting indexing cycle');\n if (publicTopicId) {\n await this.indexTopic(publicTopicId, false);\n }\n const registeredTopics = registryTopicId\n ? await this.getRegisteredTopics(registryTopicId)\n : [];\n const topicsToIndex = [...registeredTopics, ...(privateTopics || [])];\n for (const topicId of topicsToIndex) {\n await this.indexTopic(topicId, true);\n }\n\n this.logger.debug('Indexing cycle complete');\n }\n\n /**\n * Get registered topics from registry\n */\n private async getRegisteredTopics(\n registryTopicId: string,\n ): Promise<string[]> {\n const topics: string[] = [];\n try {\n const messages = await this.mirrorNode.getTopicMessages(registryTopicId, {\n limit: 100,\n order: 'asc',\n });\n\n messages\n .filter(\n message =>\n message.p === 'hcs-20' &&\n message.op === 'register' &&\n typeof message.t_id === 'string',\n )\n .forEach(message => {\n topics.push(message.t_id as string);\n });\n } catch (error) {\n this.logger.error('Failed to fetch registry messages:', error);\n }\n return topics;\n }\n\n /**\n * Index a single topic\n */\n private async indexTopic(topicId: string, isPrivate: boolean): Promise<void> {\n try {\n const lastSequence = this.lastIndexedSequence.get(topicId);\n this.logger.debug(\n `Indexing topic ${topicId}, starting from sequence ${lastSequence || 0}`,\n );\n\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n sequenceNumber: lastSequence ? lastSequence + 1 : undefined,\n limit: 1000,\n order: 'asc',\n });\n\n this.logger.debug(\n `Fetched ${messages.length} messages from topic ${topicId}`,\n );\n\n let maxSequence = lastSequence || 0;\n\n for (const message of messages) {\n if (message.p !== 'hcs-20') {\n continue;\n }\n\n const parseResult = HCS20MessageSchema.safeParse(message);\n if (!parseResult.success) {\n this.logger.debug('Skipping message due to schema mismatch');\n continue;\n }\n\n const parsedMsg = parseResult.data;\n const sequenceNumber = message.sequence_number ?? 0;\n\n this.logger.debug(\n `Found HCS-20 message: op=${parsedMsg.op}, sequence=${sequenceNumber}`,\n );\n\n if (sequenceNumber > maxSequence) {\n maxSequence = sequenceNumber;\n }\n\n const topicMessage: TopicMessageMeta = {\n consensus_timestamp: message.consensus_timestamp ?? '',\n sequence_number: sequenceNumber,\n payer_account_id: message.payer_account_id ?? message.payer ?? '',\n transaction_id: message.transaction_id ?? '',\n };\n\n this.processMessage(parsedMsg, topicMessage, topicId, isPrivate);\n\n this.state.lastProcessedSequence++;\n this.state.lastProcessedTimestamp = message.consensus_timestamp || '';\n }\n if (maxSequence > (lastSequence || 0)) {\n this.lastIndexedSequence.set(topicId, maxSequence);\n }\n } catch (error) {\n this.logger.error(`Failed to index topic ${topicId}:`, error);\n }\n }\n\n /**\n * Process a single message\n */\n private processMessage(\n msg: HCS20Message,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n switch (msg.op) {\n case 'deploy':\n this.processDeployMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'mint':\n this.processMintMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'transfer':\n this.processTransferMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'burn':\n this.processBurnMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n }\n }\n\n /**\n * Process deploy message\n */\n private processDeployMessage(\n msg: HCS20DeployMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n if (this.state.deployedPoints.has(normalizedTick)) {\n return;\n }\n const pointsInfo: PointsInfo = {\n name: msg.name,\n tick: normalizedTick,\n maxSupply: msg.max,\n limitPerMint: msg.lim,\n metadata: msg.metadata,\n topicId,\n deployerAccountId: hcsMsg.payer_account_id,\n currentSupply: '0',\n deploymentTimestamp: hcsMsg.consensus_timestamp,\n isPrivate,\n };\n\n this.state.deployedPoints.set(normalizedTick, pointsInfo);\n this.logger.info(`Deployed points: ${normalizedTick}`);\n }\n\n /**\n * Process mint message\n */\n private processMintMessage(\n msg: HCS20MintMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n\n if (!pointsInfo) return;\n const mintAmount = BigInt(msg.amt);\n const currentSupply = BigInt(pointsInfo.currentSupply);\n const maxSupply = BigInt(pointsInfo.maxSupply);\n\n if (currentSupply + mintAmount > maxSupply) return;\n\n if (pointsInfo.limitPerMint && mintAmount > BigInt(pointsInfo.limitPerMint))\n return;\n pointsInfo.currentSupply = (currentSupply + mintAmount).toString();\n let tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) {\n tickBalances = new Map();\n this.state.balances.set(normalizedTick, tickBalances);\n }\n\n const currentBalance = tickBalances.get(msg.to);\n const newBalance = currentBalance\n ? (BigInt(currentBalance.balance) + mintAmount).toString()\n : msg.amt;\n\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: newBalance,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'mint',\n tick: normalizedTick,\n amount: msg.amt,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process transfer message\n */\n private processTransferMessage(\n msg: HCS20TransferMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const senderBalance = tickBalances.get(msg.from);\n if (!senderBalance || BigInt(senderBalance.balance) < BigInt(msg.amt))\n return;\n const transferAmount = BigInt(msg.amt);\n\n senderBalance.balance = (\n BigInt(senderBalance.balance) - transferAmount\n ).toString();\n senderBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n const receiverBalance = tickBalances.get(msg.to);\n if (receiverBalance) {\n receiverBalance.balance = (\n BigInt(receiverBalance.balance) + transferAmount\n ).toString();\n receiverBalance.lastUpdated = hcsMsg.consensus_timestamp;\n } else {\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: msg.amt,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n }\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'transfer',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process burn message\n */\n private processBurnMessage(\n msg: HCS20BurnMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!pointsInfo || !tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const accountBalance = tickBalances.get(msg.from);\n if (!accountBalance || BigInt(accountBalance.balance) < BigInt(msg.amt))\n return;\n const burnAmount = BigInt(msg.amt);\n\n accountBalance.balance = (\n BigInt(accountBalance.balance) - burnAmount\n ).toString();\n accountBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n pointsInfo.currentSupply = (\n BigInt(pointsInfo.currentSupply) - burnAmount\n ).toString();\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'burn',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Normalize tick to lowercase and trim\n */\n private normalizeTick(tick: string): string {\n return tick.toLowerCase().trim();\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es78.js","sources":["../../src/hcs-20/tx.ts"],"sourcesContent":["import { TopicMessageSubmitTransaction } from '@hashgraph/sdk';\nimport { buildMessageTx } from '../common/tx/tx-utils';\nimport type {\n HCS20DeployMessage,\n HCS20MintMessage,\n HCS20TransferMessage,\n HCS20BurnMessage,\n HCS20RegisterMessage,\n} from './types';\n\nexport function buildHcs20SubmitMessageTx(params: {\n topicId: string;\n payload: object | string;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n const msg =\n typeof params.payload === 'string'\n ? params.payload\n : JSON.stringify(params.payload);\n return buildMessageTx({\n topicId: params.topicId,\n message: msg,\n transactionMemo: params.transactionMemo,\n });\n}\n\nexport function buildHcs20DeployTx(params: {\n topicId: string;\n name: string;\n tick: string;\n max: string;\n lim?: string;\n metadata?: string;\n memo?: string;\n}): TopicMessageSubmitTransaction {\n const payload: HCS20DeployMessage = {\n p: 'hcs-20',\n op: 'deploy',\n name: params.name,\n tick: params.tick.toLowerCase().trim(),\n max: params.max,\n lim: params.lim,\n metadata: params.metadata,\n m: params.memo,\n };\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(payload),\n });\n}\n\nexport function buildHcs20MintTx(params: {\n topicId: string;\n tick: string;\n amt: string;\n to: string;\n memo?: string;\n}): TopicMessageSubmitTransaction {\n const payload: HCS20MintMessage = {\n p: 'hcs-20',\n op: 'mint',\n tick: params.tick.toLowerCase().trim(),\n amt: params.amt,\n to: params.to,\n m: params.memo,\n };\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(payload),\n });\n}\n\nexport function buildHcs20TransferTx(params: {\n topicId: string;\n tick: string;\n amt: string;\n from: string;\n to: string;\n memo?: string;\n}): TopicMessageSubmitTransaction {\n const payload: HCS20TransferMessage = {\n p: 'hcs-20',\n op: 'transfer',\n tick: params.tick.toLowerCase().trim(),\n amt: params.amt,\n from: params.from,\n to: params.to,\n m: params.memo,\n };\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(payload),\n });\n}\n\nexport function buildHcs20BurnTx(params: {\n topicId: string;\n tick: string;\n amt: string;\n from: string;\n memo?: string;\n}): TopicMessageSubmitTransaction {\n const payload: HCS20BurnMessage = {\n p: 'hcs-20',\n op: 'burn',\n tick: params.tick.toLowerCase().trim(),\n amt: params.amt,\n from: params.from,\n m: params.memo,\n };\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(payload),\n });\n}\n\nexport function buildHcs20RegisterTx(params: {\n registryTopicId: string;\n name: string;\n topicId: string;\n isPrivate: boolean;\n metadata?: string;\n memo?: string;\n}): TopicMessageSubmitTransaction {\n const payload: HCS20RegisterMessage = {\n p: 'hcs-20',\n op: 'register',\n name: params.name,\n metadata: params.metadata,\n private: params.isPrivate,\n t_id: params.topicId,\n m: params.memo,\n };\n return buildMessageTx({\n topicId: params.registryTopicId,\n message: JSON.stringify(payload),\n });\n}\n"],"names":[],"mappings":";AAUO,SAAS,0BAA0B,QAIR;AAChC,QAAM,MACJ,OAAO,OAAO,YAAY,WACtB,OAAO,UACP,KAAK,UAAU,OAAO,OAAO;AACnC,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS;AAAA,IACT,iBAAiB,OAAO;AAAA,EAAA,CACzB;AACH;AAEO,SAAS,mBAAmB,QAQD;AAChC,QAAM,UAA8B;AAAA,IAClC,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,OAAO;AAAA,IACb,MAAM,OAAO,KAAK,YAAA,EAAc,KAAA;AAAA,IAChC,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,UAAU,OAAO;AAAA,IACjB,GAAG,OAAO;AAAA,EAAA;AAEZ,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO;AAAA,EAAA,CAChC;AACH;AAEO,SAAS,iBAAiB,QAMC;AAChC,QAAM,UAA4B;AAAA,IAChC,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,OAAO,KAAK,YAAA,EAAc,KAAA;AAAA,IAChC,KAAK,OAAO;AAAA,IACZ,IAAI,OAAO;AAAA,IACX,GAAG,OAAO;AAAA,EAAA;AAEZ,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO;AAAA,EAAA,CAChC;AACH;AAEO,SAAS,qBAAqB,QAOH;AAChC,QAAM,UAAgC;AAAA,IACpC,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,OAAO,KAAK,YAAA,EAAc,KAAA;AAAA,IAChC,KAAK,OAAO;AAAA,IACZ,MAAM,OAAO;AAAA,IACb,IAAI,OAAO;AAAA,IACX,GAAG,OAAO;AAAA,EAAA;AAEZ,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO;AAAA,EAAA,CAChC;AACH;AAEO,SAAS,iBAAiB,QAMC;AAChC,QAAM,UAA4B;AAAA,IAChC,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,OAAO,KAAK,YAAA,EAAc,KAAA;AAAA,IAChC,KAAK,OAAO;AAAA,IACZ,MAAM,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,EAAA;AAEZ,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO;AAAA,EAAA,CAChC;AACH;AAEO,SAAS,qBAAqB,QAOH;AAChC,QAAM,UAAgC;AAAA,IACpC,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,OAAO;AAAA,IACb,UAAU,OAAO;AAAA,IACjB,SAAS,OAAO;AAAA,IAChB,MAAM,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,EAAA;AAEZ,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO;AAAA,EAAA,CAChC;AACH;"}