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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  2. package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
  3. package/dist/cjs/index.d.ts.map +1 -1
  4. package/dist/cjs/services/registry-broker/schemas.d.ts +153 -153
  5. package/dist/cjs/standards-sdk.cjs +2 -2
  6. package/dist/cjs/standards-sdk.cjs.map +1 -1
  7. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  8. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  9. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  10. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  11. package/dist/es/index.d.ts.map +1 -1
  12. package/dist/es/services/registry-broker/schemas.d.ts +153 -153
  13. package/dist/es/standards-sdk.es.js +134 -135
  14. package/dist/es/standards-sdk.es.js.map +1 -1
  15. package/dist/es/standards-sdk.es10.js +70 -90
  16. package/dist/es/standards-sdk.es10.js.map +1 -1
  17. package/dist/es/standards-sdk.es100.js +229 -27
  18. package/dist/es/standards-sdk.es100.js.map +1 -1
  19. package/dist/es/standards-sdk.es101.js +109 -228
  20. package/dist/es/standards-sdk.es101.js.map +1 -1
  21. package/dist/es/standards-sdk.es102.js +15 -94
  22. package/dist/es/standards-sdk.es102.js.map +1 -1
  23. package/dist/es/standards-sdk.es103.js +80 -30
  24. package/dist/es/standards-sdk.es103.js.map +1 -1
  25. package/dist/es/standards-sdk.es104.js +27 -80
  26. package/dist/es/standards-sdk.es104.js.map +1 -1
  27. package/dist/es/standards-sdk.es105.js +136 -25
  28. package/dist/es/standards-sdk.es105.js.map +1 -1
  29. package/dist/es/standards-sdk.es106.js +27 -140
  30. package/dist/es/standards-sdk.es106.js.map +1 -1
  31. package/dist/es/standards-sdk.es107.js +20 -27
  32. package/dist/es/standards-sdk.es107.js.map +1 -1
  33. package/dist/es/standards-sdk.es108.js +156 -18
  34. package/dist/es/standards-sdk.es108.js.map +1 -1
  35. package/dist/es/standards-sdk.es109.js +198 -148
  36. package/dist/es/standards-sdk.es109.js.map +1 -1
  37. package/dist/es/standards-sdk.es11.js +121 -45
  38. package/dist/es/standards-sdk.es11.js.map +1 -1
  39. package/dist/es/standards-sdk.es110.js +747 -167
  40. package/dist/es/standards-sdk.es110.js.map +1 -1
  41. package/dist/es/standards-sdk.es111.js +9 -786
  42. package/dist/es/standards-sdk.es111.js.map +1 -1
  43. package/dist/es/standards-sdk.es112.js +567 -13
  44. package/dist/es/standards-sdk.es112.js.map +1 -1
  45. package/dist/es/standards-sdk.es113.js +576 -541
  46. package/dist/es/standards-sdk.es113.js.map +1 -1
  47. package/dist/es/standards-sdk.es114.js +12 -601
  48. package/dist/es/standards-sdk.es114.js.map +1 -1
  49. package/dist/es/standards-sdk.es115.js +2 -13
  50. package/dist/es/standards-sdk.es115.js.map +1 -1
  51. package/dist/es/standards-sdk.es116.js +87 -2
  52. package/dist/es/standards-sdk.es116.js.map +1 -1
  53. package/dist/es/standards-sdk.es117.js +37 -84
  54. package/dist/es/standards-sdk.es117.js.map +1 -1
  55. package/dist/es/standards-sdk.es118.js +2 -40
  56. package/dist/es/standards-sdk.es118.js.map +1 -1
  57. package/dist/es/standards-sdk.es119.js +231 -2
  58. package/dist/es/standards-sdk.es119.js.map +1 -1
  59. package/dist/es/standards-sdk.es12.js +60 -159
  60. package/dist/es/standards-sdk.es12.js.map +1 -1
  61. package/dist/es/standards-sdk.es120.js +1110 -201
  62. package/dist/es/standards-sdk.es120.js.map +1 -1
  63. package/dist/es/standards-sdk.es121.js +225 -1059
  64. package/dist/es/standards-sdk.es121.js.map +1 -1
  65. package/dist/es/standards-sdk.es122.js +419 -303
  66. package/dist/es/standards-sdk.es122.js.map +1 -1
  67. package/dist/es/standards-sdk.es123.js +351 -418
  68. package/dist/es/standards-sdk.es123.js.map +1 -1
  69. package/dist/es/standards-sdk.es124.js +872 -347
  70. package/dist/es/standards-sdk.es124.js.map +1 -1
  71. package/dist/es/standards-sdk.es125.js +182 -854
  72. package/dist/es/standards-sdk.es125.js.map +1 -1
  73. package/dist/es/standards-sdk.es126.js +1512 -153
  74. package/dist/es/standards-sdk.es126.js.map +1 -1
  75. package/dist/es/standards-sdk.es127.js +157 -1547
  76. package/dist/es/standards-sdk.es127.js.map +1 -1
  77. package/dist/es/standards-sdk.es128.js +192 -162
  78. package/dist/es/standards-sdk.es128.js.map +1 -1
  79. package/dist/es/standards-sdk.es129.js +61 -164
  80. package/dist/es/standards-sdk.es129.js.map +1 -1
  81. package/dist/es/standards-sdk.es13.js +200 -60
  82. package/dist/es/standards-sdk.es13.js.map +1 -1
  83. package/dist/es/standards-sdk.es130.js +102 -85
  84. package/dist/es/standards-sdk.es130.js.map +1 -1
  85. package/dist/es/standards-sdk.es131.js +222 -96
  86. package/dist/es/standards-sdk.es131.js.map +1 -1
  87. package/dist/es/standards-sdk.es132.js +153 -220
  88. package/dist/es/standards-sdk.es132.js.map +1 -1
  89. package/dist/es/standards-sdk.es133.js +104 -162
  90. package/dist/es/standards-sdk.es133.js.map +1 -1
  91. package/dist/es/standards-sdk.es134.js +296 -92
  92. package/dist/es/standards-sdk.es134.js.map +1 -1
  93. package/dist/es/standards-sdk.es135.js +432 -294
  94. package/dist/es/standards-sdk.es135.js.map +1 -1
  95. package/dist/es/standards-sdk.es136.js +14 -461
  96. package/dist/es/standards-sdk.es136.js.map +1 -1
  97. package/dist/es/standards-sdk.es137.js +79 -15
  98. package/dist/es/standards-sdk.es137.js.map +1 -1
  99. package/dist/es/standards-sdk.es138.js +77 -71
  100. package/dist/es/standards-sdk.es138.js.map +1 -1
  101. package/dist/es/standards-sdk.es139.js +152 -80
  102. package/dist/es/standards-sdk.es139.js.map +1 -1
  103. package/dist/es/standards-sdk.es14.js +149 -178
  104. package/dist/es/standards-sdk.es14.js.map +1 -1
  105. package/dist/es/standards-sdk.es140.js +7 -159
  106. package/dist/es/standards-sdk.es140.js.map +1 -1
  107. package/dist/es/standards-sdk.es141.js +86 -7
  108. package/dist/es/standards-sdk.es141.js.map +1 -1
  109. package/dist/es/standards-sdk.es142.js +44 -65
  110. package/dist/es/standards-sdk.es142.js.map +1 -1
  111. package/dist/es/standards-sdk.es143.js +30 -65
  112. package/dist/es/standards-sdk.es143.js.map +1 -1
  113. package/dist/es/standards-sdk.es144.js +34 -30
  114. package/dist/es/standards-sdk.es144.js.map +1 -1
  115. package/dist/es/standards-sdk.es145.js +28 -34
  116. package/dist/es/standards-sdk.es145.js.map +1 -1
  117. package/dist/es/standards-sdk.es146.js +138 -28
  118. package/dist/es/standards-sdk.es146.js.map +1 -1
  119. package/dist/es/standards-sdk.es147.js +37 -133
  120. package/dist/es/standards-sdk.es147.js.map +1 -1
  121. package/dist/es/standards-sdk.es148.js +12280 -33
  122. package/dist/es/standards-sdk.es148.js.map +1 -1
  123. package/dist/es/standards-sdk.es149.js +1 -1
  124. package/dist/es/standards-sdk.es15.js +152 -151
  125. package/dist/es/standards-sdk.es15.js.map +1 -1
  126. package/dist/es/standards-sdk.es150.js +12 -12284
  127. package/dist/es/standards-sdk.es150.js.map +1 -1
  128. package/dist/es/standards-sdk.es151.js +54 -15
  129. package/dist/es/standards-sdk.es151.js.map +1 -1
  130. package/dist/es/standards-sdk.es152.js +72 -160
  131. package/dist/es/standards-sdk.es152.js.map +1 -1
  132. package/dist/es/standards-sdk.es153.js +139 -289
  133. package/dist/es/standards-sdk.es153.js.map +1 -1
  134. package/dist/es/standards-sdk.es154.js +274 -298
  135. package/dist/es/standards-sdk.es154.js.map +1 -1
  136. package/dist/es/standards-sdk.es155.js +262 -369
  137. package/dist/es/standards-sdk.es155.js.map +1 -1
  138. package/dist/es/standards-sdk.es156.js +316 -194
  139. package/dist/es/standards-sdk.es156.js.map +1 -1
  140. package/dist/es/standards-sdk.es157.js +319 -64
  141. package/dist/es/standards-sdk.es157.js.map +1 -1
  142. package/dist/es/standards-sdk.es158.js +69 -49
  143. package/dist/es/standards-sdk.es158.js.map +1 -1
  144. package/dist/es/standards-sdk.es159.js +222 -65
  145. package/dist/es/standards-sdk.es159.js.map +1 -1
  146. package/dist/es/standards-sdk.es16.js +917 -136
  147. package/dist/es/standards-sdk.es16.js.map +1 -1
  148. package/dist/es/standards-sdk.es160.js +223 -218
  149. package/dist/es/standards-sdk.es160.js.map +1 -1
  150. package/dist/es/standards-sdk.es17.js +23 -948
  151. package/dist/es/standards-sdk.es17.js.map +1 -1
  152. package/dist/es/standards-sdk.es18.js +2422 -24
  153. package/dist/es/standards-sdk.es18.js.map +1 -1
  154. package/dist/es/standards-sdk.es19.js +818 -2092
  155. package/dist/es/standards-sdk.es19.js.map +1 -1
  156. package/dist/es/standards-sdk.es2.js +654 -189
  157. package/dist/es/standards-sdk.es2.js.map +1 -1
  158. package/dist/es/standards-sdk.es20.js +205 -1092
  159. package/dist/es/standards-sdk.es20.js.map +1 -1
  160. package/dist/es/standards-sdk.es21.js +858 -221
  161. package/dist/es/standards-sdk.es21.js.map +1 -1
  162. package/dist/es/standards-sdk.es22.js +179 -903
  163. package/dist/es/standards-sdk.es22.js.map +1 -1
  164. package/dist/es/standards-sdk.es23.js +164 -179
  165. package/dist/es/standards-sdk.es23.js.map +1 -1
  166. package/dist/es/standards-sdk.es24.js +62 -118
  167. package/dist/es/standards-sdk.es24.js.map +1 -1
  168. package/dist/es/standards-sdk.es25.js +377 -57
  169. package/dist/es/standards-sdk.es25.js.map +1 -1
  170. package/dist/es/standards-sdk.es26.js +36 -394
  171. package/dist/es/standards-sdk.es26.js.map +1 -1
  172. package/dist/es/standards-sdk.es27.js +901 -50
  173. package/dist/es/standards-sdk.es27.js.map +1 -1
  174. package/dist/es/standards-sdk.es28.js +134 -922
  175. package/dist/es/standards-sdk.es28.js.map +1 -1
  176. package/dist/es/standards-sdk.es29.js +7 -134
  177. package/dist/es/standards-sdk.es29.js.map +1 -1
  178. package/dist/es/standards-sdk.es3.js +63 -680
  179. package/dist/es/standards-sdk.es3.js.map +1 -1
  180. package/dist/es/standards-sdk.es30.js +344 -7
  181. package/dist/es/standards-sdk.es30.js.map +1 -1
  182. package/dist/es/standards-sdk.es31.js +302 -287
  183. package/dist/es/standards-sdk.es31.js.map +1 -1
  184. package/dist/es/standards-sdk.es32.js +94 -322
  185. package/dist/es/standards-sdk.es32.js.map +1 -1
  186. package/dist/es/standards-sdk.es33.js +458 -101
  187. package/dist/es/standards-sdk.es33.js.map +1 -1
  188. package/dist/es/standards-sdk.es34.js +132 -451
  189. package/dist/es/standards-sdk.es34.js.map +1 -1
  190. package/dist/es/standards-sdk.es35.js +216 -130
  191. package/dist/es/standards-sdk.es35.js.map +1 -1
  192. package/dist/es/standards-sdk.es36.js +273 -196
  193. package/dist/es/standards-sdk.es36.js.map +1 -1
  194. package/dist/es/standards-sdk.es37.js +148 -87
  195. package/dist/es/standards-sdk.es37.js.map +1 -1
  196. package/dist/es/standards-sdk.es38.js +183 -320
  197. package/dist/es/standards-sdk.es38.js.map +1 -1
  198. package/dist/es/standards-sdk.es39.js +238 -161
  199. package/dist/es/standards-sdk.es39.js.map +1 -1
  200. package/dist/es/standards-sdk.es4.js +425 -63
  201. package/dist/es/standards-sdk.es4.js.map +1 -1
  202. package/dist/es/standards-sdk.es40.js +136 -254
  203. package/dist/es/standards-sdk.es40.js.map +1 -1
  204. package/dist/es/standards-sdk.es41.js +225 -176
  205. package/dist/es/standards-sdk.es41.js.map +1 -1
  206. package/dist/es/standards-sdk.es42.js +199 -261
  207. package/dist/es/standards-sdk.es42.js.map +1 -1
  208. package/dist/es/standards-sdk.es43.js +237 -199
  209. package/dist/es/standards-sdk.es43.js.map +1 -1
  210. package/dist/es/standards-sdk.es44.js +209 -201
  211. package/dist/es/standards-sdk.es44.js.map +1 -1
  212. package/dist/es/standards-sdk.es45.js +305 -201
  213. package/dist/es/standards-sdk.es45.js.map +1 -1
  214. package/dist/es/standards-sdk.es46.js +371 -261
  215. package/dist/es/standards-sdk.es46.js.map +1 -1
  216. package/dist/es/standards-sdk.es47.js +316 -372
  217. package/dist/es/standards-sdk.es47.js.map +1 -1
  218. package/dist/es/standards-sdk.es48.js +404 -336
  219. package/dist/es/standards-sdk.es48.js.map +1 -1
  220. package/dist/es/standards-sdk.es49.js +83 -449
  221. package/dist/es/standards-sdk.es49.js.map +1 -1
  222. package/dist/es/standards-sdk.es5.js +232 -354
  223. package/dist/es/standards-sdk.es5.js.map +1 -1
  224. package/dist/es/standards-sdk.es50.js +179 -89
  225. package/dist/es/standards-sdk.es50.js.map +1 -1
  226. package/dist/es/standards-sdk.es51.js +231 -165
  227. package/dist/es/standards-sdk.es51.js.map +1 -1
  228. package/dist/es/standards-sdk.es52.js +25 -262
  229. package/dist/es/standards-sdk.es52.js.map +1 -1
  230. package/dist/es/standards-sdk.es53.js +56 -26
  231. package/dist/es/standards-sdk.es53.js.map +1 -1
  232. package/dist/es/standards-sdk.es54.js +12 -57
  233. package/dist/es/standards-sdk.es54.js.map +1 -1
  234. package/dist/es/standards-sdk.es55.js +49 -12
  235. package/dist/es/standards-sdk.es55.js.map +1 -1
  236. package/dist/es/standards-sdk.es56.js +115 -43
  237. package/dist/es/standards-sdk.es56.js.map +1 -1
  238. package/dist/es/standards-sdk.es57.js +42 -115
  239. package/dist/es/standards-sdk.es57.js.map +1 -1
  240. package/dist/es/standards-sdk.es58.js +52 -43
  241. package/dist/es/standards-sdk.es58.js.map +1 -1
  242. package/dist/es/standards-sdk.es59.js +36 -50
  243. package/dist/es/standards-sdk.es59.js.map +1 -1
  244. package/dist/es/standards-sdk.es6.js +125 -246
  245. package/dist/es/standards-sdk.es6.js.map +1 -1
  246. package/dist/es/standards-sdk.es60.js +207 -39
  247. package/dist/es/standards-sdk.es60.js.map +1 -1
  248. package/dist/es/standards-sdk.es61.js +24 -201
  249. package/dist/es/standards-sdk.es61.js.map +1 -1
  250. package/dist/es/standards-sdk.es62.js +87 -25
  251. package/dist/es/standards-sdk.es62.js.map +1 -1
  252. package/dist/es/standards-sdk.es63.js +3 -51
  253. package/dist/es/standards-sdk.es63.js.map +1 -1
  254. package/dist/es/standards-sdk.es64.js +100 -3
  255. package/dist/es/standards-sdk.es64.js.map +1 -1
  256. package/dist/es/standards-sdk.es65.js +61 -62
  257. package/dist/es/standards-sdk.es65.js.map +1 -1
  258. package/dist/es/standards-sdk.es66.js +17 -98
  259. package/dist/es/standards-sdk.es66.js.map +1 -1
  260. package/dist/es/standards-sdk.es67.js +77 -19
  261. package/dist/es/standards-sdk.es67.js.map +1 -1
  262. package/dist/es/standards-sdk.es68.js +458 -77
  263. package/dist/es/standards-sdk.es68.js.map +1 -1
  264. package/dist/es/standards-sdk.es69.js +106 -240
  265. package/dist/es/standards-sdk.es69.js.map +1 -1
  266. package/dist/es/standards-sdk.es7.js +28 -183
  267. package/dist/es/standards-sdk.es7.js.map +1 -1
  268. package/dist/es/standards-sdk.es70.js +170 -286
  269. package/dist/es/standards-sdk.es70.js.map +1 -1
  270. package/dist/es/standards-sdk.es71.js +71 -207
  271. package/dist/es/standards-sdk.es71.js.map +1 -1
  272. package/dist/es/standards-sdk.es72.js +71 -72
  273. package/dist/es/standards-sdk.es72.js.map +1 -1
  274. package/dist/es/standards-sdk.es73.js +143 -71
  275. package/dist/es/standards-sdk.es73.js.map +1 -1
  276. package/dist/es/standards-sdk.es74.js +62 -136
  277. package/dist/es/standards-sdk.es74.js.map +1 -1
  278. package/dist/es/standards-sdk.es75.js +380 -45
  279. package/dist/es/standards-sdk.es75.js.map +1 -1
  280. package/dist/es/standards-sdk.es76.js +222 -130
  281. package/dist/es/standards-sdk.es76.js.map +1 -1
  282. package/dist/es/standards-sdk.es77.js +320 -444
  283. package/dist/es/standards-sdk.es77.js.map +1 -1
  284. package/dist/es/standards-sdk.es78.js +88 -371
  285. package/dist/es/standards-sdk.es78.js.map +1 -1
  286. package/dist/es/standards-sdk.es79.js +125 -89
  287. package/dist/es/standards-sdk.es79.js.map +1 -1
  288. package/dist/es/standards-sdk.es8.js +80 -29
  289. package/dist/es/standards-sdk.es8.js.map +1 -1
  290. package/dist/es/standards-sdk.es80.js +8 -125
  291. package/dist/es/standards-sdk.es80.js.map +1 -1
  292. package/dist/es/standards-sdk.es81.js +45 -6
  293. package/dist/es/standards-sdk.es81.js.map +1 -1
  294. package/dist/es/standards-sdk.es82.js +98 -44
  295. package/dist/es/standards-sdk.es82.js.map +1 -1
  296. package/dist/es/standards-sdk.es83.js +331 -84
  297. package/dist/es/standards-sdk.es83.js.map +1 -1
  298. package/dist/es/standards-sdk.es84.js +93 -160
  299. package/dist/es/standards-sdk.es84.js.map +1 -1
  300. package/dist/es/standards-sdk.es85.js +55 -275
  301. package/dist/es/standards-sdk.es85.js.map +1 -1
  302. package/dist/es/standards-sdk.es86.js +43 -55
  303. package/dist/es/standards-sdk.es86.js.map +1 -1
  304. package/dist/es/standards-sdk.es87.js +145 -44
  305. package/dist/es/standards-sdk.es87.js.map +1 -1
  306. package/dist/es/standards-sdk.es88.js +30 -113
  307. package/dist/es/standards-sdk.es88.js.map +1 -1
  308. package/dist/es/standards-sdk.es89.js +22 -59
  309. package/dist/es/standards-sdk.es89.js.map +1 -1
  310. package/dist/es/standards-sdk.es9.js +104 -80
  311. package/dist/es/standards-sdk.es9.js.map +1 -1
  312. package/dist/es/standards-sdk.es90.js +23 -28
  313. package/dist/es/standards-sdk.es90.js.map +1 -1
  314. package/dist/es/standards-sdk.es91.js +238 -23
  315. package/dist/es/standards-sdk.es91.js.map +1 -1
  316. package/dist/es/standards-sdk.es92.js +267 -225
  317. package/dist/es/standards-sdk.es92.js.map +1 -1
  318. package/dist/es/standards-sdk.es93.js +95 -220
  319. package/dist/es/standards-sdk.es93.js.map +1 -1
  320. package/dist/es/standards-sdk.es94.js +124 -136
  321. package/dist/es/standards-sdk.es94.js.map +1 -1
  322. package/dist/es/standards-sdk.es95.js +42 -138
  323. package/dist/es/standards-sdk.es95.js.map +1 -1
  324. package/dist/es/standards-sdk.es96.js +259 -43
  325. package/dist/es/standards-sdk.es96.js.map +1 -1
  326. package/dist/es/standards-sdk.es97.js +82 -245
  327. package/dist/es/standards-sdk.es97.js.map +1 -1
  328. package/dist/es/standards-sdk.es98.js +49 -50
  329. package/dist/es/standards-sdk.es98.js.map +1 -1
  330. package/dist/es/standards-sdk.es99.js +29 -100
  331. package/dist/es/standards-sdk.es99.js.map +1 -1
  332. package/dist/es/utils/dynamic-import.d.ts +5 -1
  333. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  334. package/package.json +4 -4
  335. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  336. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  337. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  338. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
  339. package/dist/es/standards-sdk.es161.js +0 -247
  340. package/dist/es/standards-sdk.es161.js.map +0 -1
@@ -1,74 +1,146 @@
1
- import { z } from "zod";
2
- const HCS20_CONSTANTS = {
3
- PROTOCOL: "hcs-20",
4
- PUBLIC_TOPIC_ID: "0.0.4350190",
5
- REGISTRY_TOPIC_ID: "0.0.4362300",
6
- MAX_NUMBER_LENGTH: 18,
7
- MAX_NAME_LENGTH: 100,
8
- MAX_METADATA_LENGTH: 100,
9
- HEDERA_ACCOUNT_REGEX: /^(0|(?:[1-9]\d*))\.(0|(?:[1-9]\d*))\.(0|(?:[1-9]\d*))$/
10
- };
11
- const HederaAccountIdSchema = z.string().regex(
12
- HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX,
13
- "Invalid Hedera account ID format"
14
- );
15
- const NumberStringSchema = z.string().regex(/^\d+$/, "Must be a valid number").max(
16
- HCS20_CONSTANTS.MAX_NUMBER_LENGTH,
17
- `Max ${HCS20_CONSTANTS.MAX_NUMBER_LENGTH} digits`
18
- );
19
- const TickSchema = z.string().min(1, "Tick cannot be empty").transform((val) => val.toLowerCase().trim());
20
- const HCS20BaseMessageSchema = z.object({
21
- p: z.literal("hcs-20"),
22
- m: z.string().optional()
23
- });
24
- const HCS20DeployMessageSchema = HCS20BaseMessageSchema.extend({
25
- op: z.literal("deploy"),
26
- name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),
27
- tick: TickSchema,
28
- max: NumberStringSchema,
29
- lim: NumberStringSchema.optional(),
30
- metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional()
31
- });
32
- const HCS20MintMessageSchema = HCS20BaseMessageSchema.extend({
33
- op: z.literal("mint"),
34
- tick: TickSchema,
35
- amt: NumberStringSchema,
36
- to: HederaAccountIdSchema
37
- });
38
- const HCS20BurnMessageSchema = HCS20BaseMessageSchema.extend({
39
- op: z.literal("burn"),
40
- tick: TickSchema,
41
- amt: NumberStringSchema,
42
- from: HederaAccountIdSchema
43
- });
44
- const HCS20TransferMessageSchema = HCS20BaseMessageSchema.extend({
45
- op: z.literal("transfer"),
46
- tick: TickSchema,
47
- amt: NumberStringSchema,
48
- from: HederaAccountIdSchema,
49
- to: HederaAccountIdSchema
50
- });
51
- const HCS20RegisterMessageSchema = HCS20BaseMessageSchema.extend({
52
- op: z.literal("register"),
53
- name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),
54
- metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(),
55
- private: z.boolean(),
56
- t_id: HederaAccountIdSchema
57
- });
58
- const HCS20MessageSchema = z.discriminatedUnion("op", [
59
- HCS20DeployMessageSchema,
60
- HCS20MintMessageSchema,
61
- HCS20BurnMessageSchema,
62
- HCS20TransferMessageSchema,
63
- HCS20RegisterMessageSchema
64
- ]);
1
+ class HCS20Error extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "HCS20Error";
5
+ }
6
+ }
7
+ class PointsDeploymentError extends HCS20Error {
8
+ constructor(message, tick) {
9
+ super(message);
10
+ this.tick = tick;
11
+ this.name = "PointsDeploymentError";
12
+ }
13
+ }
14
+ class PointsMintError extends HCS20Error {
15
+ constructor(message, tick, requestedAmount, availableSupply) {
16
+ super(message);
17
+ this.tick = tick;
18
+ this.requestedAmount = requestedAmount;
19
+ this.availableSupply = availableSupply;
20
+ this.name = "PointsMintError";
21
+ }
22
+ }
23
+ class PointsTransferError extends HCS20Error {
24
+ constructor(message, tick, from, to, amount, availableBalance) {
25
+ super(message);
26
+ this.tick = tick;
27
+ this.from = from;
28
+ this.to = to;
29
+ this.amount = amount;
30
+ this.availableBalance = availableBalance;
31
+ this.name = "PointsTransferError";
32
+ }
33
+ }
34
+ class PointsBurnError extends HCS20Error {
35
+ constructor(message, tick, from, amount, availableBalance) {
36
+ super(message);
37
+ this.tick = tick;
38
+ this.from = from;
39
+ this.amount = amount;
40
+ this.availableBalance = availableBalance;
41
+ this.name = "PointsBurnError";
42
+ }
43
+ }
44
+ class PointsValidationError extends HCS20Error {
45
+ constructor(message, validationErrors) {
46
+ super(message);
47
+ this.validationErrors = validationErrors;
48
+ this.name = "PointsValidationError";
49
+ }
50
+ }
51
+ class PointsNotFoundError extends HCS20Error {
52
+ constructor(tick) {
53
+ super(`Points with tick "${tick}" not found`);
54
+ this.tick = tick;
55
+ this.name = "PointsNotFoundError";
56
+ }
57
+ }
58
+ class TopicRegistrationError extends HCS20Error {
59
+ constructor(message, topicId) {
60
+ super(message);
61
+ this.topicId = topicId;
62
+ this.name = "TopicRegistrationError";
63
+ }
64
+ }
65
+ class InsufficientBalanceError extends HCS20Error {
66
+ constructor(accountId, tick, required, available) {
67
+ super(
68
+ `Insufficient balance for ${tick}: required ${required}, available ${available}`
69
+ );
70
+ this.accountId = accountId;
71
+ this.tick = tick;
72
+ this.required = required;
73
+ this.available = available;
74
+ this.name = "InsufficientBalanceError";
75
+ }
76
+ }
77
+ class SupplyLimitExceededError extends HCS20Error {
78
+ constructor(tick, requested, maxSupply, currentSupply) {
79
+ super(
80
+ `Supply limit exceeded for ${tick}: max ${maxSupply}, current ${currentSupply}, requested ${requested}`
81
+ );
82
+ this.tick = tick;
83
+ this.requested = requested;
84
+ this.maxSupply = maxSupply;
85
+ this.currentSupply = currentSupply;
86
+ this.name = "SupplyLimitExceededError";
87
+ }
88
+ }
89
+ class MintLimitExceededError extends HCS20Error {
90
+ constructor(tick, requested, limit) {
91
+ super(
92
+ `Mint limit exceeded for ${tick}: requested ${requested}, limit ${limit}`
93
+ );
94
+ this.tick = tick;
95
+ this.requested = requested;
96
+ this.limit = limit;
97
+ this.name = "MintLimitExceededError";
98
+ }
99
+ }
100
+ class InvalidMessageFormatError extends HCS20Error {
101
+ constructor(message, messageData) {
102
+ super(message);
103
+ this.messageData = messageData;
104
+ this.name = "InvalidMessageFormatError";
105
+ }
106
+ }
107
+ class InvalidAccountFormatError extends HCS20Error {
108
+ constructor(account) {
109
+ super(`Invalid Hedera account format: ${account}`);
110
+ this.account = account;
111
+ this.name = "InvalidAccountFormatError";
112
+ }
113
+ }
114
+ class InvalidTickFormatError extends HCS20Error {
115
+ constructor(tick) {
116
+ super(`Invalid tick format: ${tick}`);
117
+ this.tick = tick;
118
+ this.name = "InvalidTickFormatError";
119
+ }
120
+ }
121
+ class InvalidNumberFormatError extends HCS20Error {
122
+ constructor(value, field) {
123
+ super(`Invalid number format for ${field}: ${value}`);
124
+ this.value = value;
125
+ this.field = field;
126
+ this.name = "InvalidNumberFormatError";
127
+ }
128
+ }
65
129
  export {
66
- HCS20BurnMessageSchema,
67
- HCS20DeployMessageSchema,
68
- HCS20MessageSchema,
69
- HCS20MintMessageSchema,
70
- HCS20RegisterMessageSchema,
71
- HCS20TransferMessageSchema,
72
- HCS20_CONSTANTS
130
+ HCS20Error,
131
+ InsufficientBalanceError,
132
+ InvalidAccountFormatError,
133
+ InvalidMessageFormatError,
134
+ InvalidNumberFormatError,
135
+ InvalidTickFormatError,
136
+ MintLimitExceededError,
137
+ PointsBurnError,
138
+ PointsDeploymentError,
139
+ PointsMintError,
140
+ PointsNotFoundError,
141
+ PointsTransferError,
142
+ PointsValidationError,
143
+ SupplyLimitExceededError,
144
+ TopicRegistrationError
73
145
  };
74
146
  //# sourceMappingURL=standards-sdk.es73.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es73.js","sources":["../../src/hcs-20/types.ts"],"sourcesContent":["/**\n * HCS-20 Auditable Points Standard Types\n */\n\nimport { z } from 'zod';\nimport { AccountId, TopicId, PrivateKey } from '@hashgraph/sdk';\nimport type { ILogger } from '../utils/logger';\n\n/**\n * HCS-20 Constants\n */\nexport const HCS20_CONSTANTS = {\n PROTOCOL: 'hcs-20',\n PUBLIC_TOPIC_ID: '0.0.4350190',\n REGISTRY_TOPIC_ID: '0.0.4362300',\n MAX_NUMBER_LENGTH: 18,\n MAX_NAME_LENGTH: 100,\n MAX_METADATA_LENGTH: 100,\n HEDERA_ACCOUNT_REGEX:\n /^(0|(?:[1-9]\\d*))\\.(0|(?:[1-9]\\d*))\\.(0|(?:[1-9]\\d*))$/,\n} as const;\n\n/**\n * Hedera Account ID validator\n */\nconst HederaAccountIdSchema = z\n .string()\n .regex(\n HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX,\n 'Invalid Hedera account ID format',\n );\n\n/**\n * Number string validator\n */\nconst NumberStringSchema = z\n .string()\n .regex(/^\\d+$/, 'Must be a valid number')\n .max(\n HCS20_CONSTANTS.MAX_NUMBER_LENGTH,\n `Max ${HCS20_CONSTANTS.MAX_NUMBER_LENGTH} digits`,\n );\n\n/**\n * Tick validator\n */\nconst TickSchema = z\n .string()\n .min(1, 'Tick cannot be empty')\n .transform(val => val.toLowerCase().trim());\n\n/**\n * Base HCS-20 Message Schema\n */\nconst HCS20BaseMessageSchema = z.object({\n p: z.literal('hcs-20'),\n m: z.string().optional(),\n});\n\n/**\n * Deploy Points Operation Schema\n */\nexport const HCS20DeployMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('deploy'),\n name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),\n tick: TickSchema,\n max: NumberStringSchema,\n lim: NumberStringSchema.optional(),\n metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(),\n});\n\n/**\n * Mint Points Operation Schema\n */\nexport const HCS20MintMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('mint'),\n tick: TickSchema,\n amt: NumberStringSchema,\n to: HederaAccountIdSchema,\n});\n\n/**\n * Burn Points Operation Schema\n */\nexport const HCS20BurnMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('burn'),\n tick: TickSchema,\n amt: NumberStringSchema,\n from: HederaAccountIdSchema,\n});\n\n/**\n * Transfer Points Operation Schema\n */\nexport const HCS20TransferMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('transfer'),\n tick: TickSchema,\n amt: NumberStringSchema,\n from: HederaAccountIdSchema,\n to: HederaAccountIdSchema,\n});\n\n/**\n * Register Topic Operation Schema\n */\nexport const HCS20RegisterMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('register'),\n name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),\n metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(),\n private: z.boolean(),\n t_id: HederaAccountIdSchema,\n});\n\n/**\n * Union schema for all HCS-20 messages\n */\nexport const HCS20MessageSchema = z.discriminatedUnion('op', [\n HCS20DeployMessageSchema,\n HCS20MintMessageSchema,\n HCS20BurnMessageSchema,\n HCS20TransferMessageSchema,\n HCS20RegisterMessageSchema,\n]);\n\n/**\n * Inferred types from schemas\n */\nexport type HCS20BaseMessage = z.infer<typeof HCS20BaseMessageSchema>;\nexport type HCS20DeployMessage = z.infer<typeof HCS20DeployMessageSchema>;\nexport type HCS20MintMessage = z.infer<typeof HCS20MintMessageSchema>;\nexport type HCS20BurnMessage = z.infer<typeof HCS20BurnMessageSchema>;\nexport type HCS20TransferMessage = z.infer<typeof HCS20TransferMessageSchema>;\nexport type HCS20RegisterMessage = z.infer<typeof HCS20RegisterMessageSchema>;\nexport type HCS20Message = z.infer<typeof HCS20MessageSchema>;\nexport type HCS20Operation = HCS20Message['op'];\n\n/**\n * Points Configuration\n */\nexport interface PointsConfig {\n name: string;\n tick: string;\n maxSupply: string;\n limitPerMint?: string;\n metadata?: string;\n}\n\n/**\n * Points Information\n */\nexport interface PointsInfo extends PointsConfig {\n topicId: string;\n deployerAccountId: string;\n currentSupply: string;\n deploymentTimestamp: string;\n isPrivate: boolean;\n}\n\n/**\n * Points Balance\n */\nexport interface PointsBalance {\n tick: string;\n accountId: string;\n balance: string;\n lastUpdated: string;\n}\n\n/**\n * Points Transaction\n */\nexport interface PointsTransaction {\n id: string;\n operation: HCS20Operation;\n tick: string;\n amount?: string;\n from?: string;\n to?: string;\n timestamp: string;\n sequenceNumber: number;\n topicId: string;\n transactionId: string;\n memo?: string;\n}\n\n/**\n * HCS-20 Client Configuration\n */\nexport interface HCS20ClientConfig {\n mirrorNodeUrl?: string;\n logger?: ILogger;\n network?: 'mainnet' | 'testnet';\n registryTopicId?: string;\n publicTopicId?: string;\n}\n\n/**\n * Browser-specific HCS-20 Client Configuration\n */\nexport interface BrowserHCS20ClientConfig extends HCS20ClientConfig {\n walletConnectProjectId?: string;\n hwcMetadata?: {\n name: string;\n description: string;\n icons: string[];\n url: string;\n };\n}\n\n/**\n * SDK-specific HCS-20 Client Configuration\n */\nexport interface SDKHCS20ClientConfig extends HCS20ClientConfig {\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n}\n\n/**\n * Deploy Points Progress\n */\nexport interface DeployPointsProgress {\n stage: 'creating-topic' | 'submitting-deploy' | 'confirming' | 'complete';\n percentage: number;\n topicId?: string;\n deployTxId?: string;\n error?: string;\n}\n\n/**\n * Deploy Points Options\n */\nexport interface DeployPointsOptions extends PointsConfig {\n usePrivateTopic?: boolean;\n topicMemo?: string;\n progressCallback?: (data: DeployPointsProgress) => void;\n}\n\n/**\n * Mint Points Progress\n */\nexport interface MintPointsProgress {\n stage: 'validating' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n mintTxId?: string;\n error?: string;\n}\n\n/**\n * Mint Points Options\n */\nexport interface MintPointsOptions {\n tick: string;\n amount: string;\n to: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: MintPointsProgress) => void;\n disableMirrorCheck?: boolean;\n}\n\n/**\n * Transfer Points Progress\n */\nexport interface TransferPointsProgress {\n stage: 'validating-balance' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n transferTxId?: string;\n error?: string;\n}\n\n/**\n * Transfer Points Options\n */\nexport interface TransferPointsOptions {\n tick: string;\n amount: string;\n from: string | AccountId;\n to: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: TransferPointsProgress) => void;\n}\n\n/**\n * Burn Points Progress\n */\nexport interface BurnPointsProgress {\n stage: 'validating-balance' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n burnTxId?: string;\n error?: string;\n}\n\n/**\n * Burn Points Options\n */\nexport interface BurnPointsOptions {\n tick: string;\n amount: string;\n from: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: BurnPointsProgress) => void;\n}\n\n/**\n * Register Topic Progress\n */\nexport interface RegisterTopicProgress {\n stage: 'validating' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n registerTxId?: string;\n error?: string;\n}\n\n/**\n * Register Topic Options\n */\nexport interface RegisterTopicOptions {\n topicId: string | TopicId;\n name: string;\n metadata?: string;\n isPrivate: boolean;\n memo?: string;\n progressCallback?: (data: RegisterTopicProgress) => void;\n}\n\n/**\n * Query Points Options\n */\nexport interface QueryPointsOptions {\n tick?: string;\n accountId?: string | AccountId;\n topicId?: string | TopicId;\n limit?: number;\n order?: 'asc' | 'desc';\n}\n\n/**\n * Points Query Result\n */\nexport interface PointsQueryResult {\n points: PointsInfo[];\n balances?: PointsBalance[];\n transactions?: PointsTransaction[];\n totalCount: number;\n hasMore: boolean;\n nextCursor?: string;\n}\n\n/**\n * Points State\n */\nexport interface PointsState {\n deployedPoints: Map<string, PointsInfo>;\n balances: Map<string, Map<string, PointsBalance>>;\n transactions: PointsTransaction[];\n lastProcessedSequence: number;\n lastProcessedTimestamp: string;\n}\n\n/**\n * HCS-20 Registry Entry\n */\nexport interface HCS20RegistryEntry {\n name: string;\n topicId: string;\n metadata?: string;\n isPrivate: boolean;\n registeredAt: string;\n registeredBy: string;\n}\n"],"names":[],"mappings":";AAWO,MAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,sBACE;AACJ;AAKA,MAAM,wBAAwB,EAC3B,OAAA,EACA;AAAA,EACC,gBAAgB;AAAA,EAChB;AACF;AAKF,MAAM,qBAAqB,EACxB,OAAA,EACA,MAAM,SAAS,wBAAwB,EACvC;AAAA,EACC,gBAAgB;AAAA,EAChB,OAAO,gBAAgB,iBAAiB;AAC1C;AAKF,MAAM,aAAa,EAChB,OAAA,EACA,IAAI,GAAG,sBAAsB,EAC7B,UAAU,CAAA,QAAO,IAAI,YAAA,EAAc,MAAM;AAK5C,MAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,GAAG,EAAE,QAAQ,QAAQ;AAAA,EACrB,GAAG,EAAE,OAAA,EAAS,SAAA;AAChB,CAAC;AAKM,MAAM,2BAA2B,uBAAuB,OAAO;AAAA,EACpE,IAAI,EAAE,QAAQ,QAAQ;AAAA,EACtB,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,eAAe;AAAA,EAC3D,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK,mBAAmB,SAAA;AAAA,EACxB,UAAU,EAAE,OAAA,EAAS,IAAI,gBAAgB,mBAAmB,EAAE,SAAA;AAChE,CAAC;AAKM,MAAM,yBAAyB,uBAAuB,OAAO;AAAA,EAClE,IAAI,EAAE,QAAQ,MAAM;AAAA,EACpB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,IAAI;AACN,CAAC;AAKM,MAAM,yBAAyB,uBAAuB,OAAO;AAAA,EAClE,IAAI,EAAE,QAAQ,MAAM;AAAA,EACpB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACR,CAAC;AAKM,MAAM,6BAA6B,uBAAuB,OAAO;AAAA,EACtE,IAAI,EAAE,QAAQ,UAAU;AAAA,EACxB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,IAAI;AACN,CAAC;AAKM,MAAM,6BAA6B,uBAAuB,OAAO;AAAA,EACtE,IAAI,EAAE,QAAQ,UAAU;AAAA,EACxB,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,eAAe;AAAA,EAC3D,UAAU,EAAE,OAAA,EAAS,IAAI,gBAAgB,mBAAmB,EAAE,SAAA;AAAA,EAC9D,SAAS,EAAE,QAAA;AAAA,EACX,MAAM;AACR,CAAC;AAKM,MAAM,qBAAqB,EAAE,mBAAmB,MAAM;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;"}
1
+ {"version":3,"file":"standards-sdk.es73.js","sources":["../../src/hcs-20/errors.ts"],"sourcesContent":["/**\n * HCS-20 Specific Error Classes\n */\n\n/**\n * Base error class for HCS-20 operations\n */\nexport class HCS20Error extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'HCS20Error';\n }\n}\n\n/**\n * Error thrown when points deployment fails\n */\nexport class PointsDeploymentError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick?: string,\n ) {\n super(message);\n this.name = 'PointsDeploymentError';\n }\n}\n\n/**\n * Error thrown when points minting fails\n */\nexport class PointsMintError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick: string,\n public readonly requestedAmount: string,\n public readonly availableSupply?: string,\n ) {\n super(message);\n this.name = 'PointsMintError';\n }\n}\n\n/**\n * Error thrown when points transfer fails\n */\nexport class PointsTransferError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick: string,\n public readonly from: string,\n public readonly to: string,\n public readonly amount: string,\n public readonly availableBalance?: string,\n ) {\n super(message);\n this.name = 'PointsTransferError';\n }\n}\n\n/**\n * Error thrown when points burn fails\n */\nexport class PointsBurnError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick: string,\n public readonly from: string,\n public readonly amount: string,\n public readonly availableBalance?: string,\n ) {\n super(message);\n this.name = 'PointsBurnError';\n }\n}\n\n/**\n * Error thrown when points validation fails\n */\nexport class PointsValidationError extends HCS20Error {\n constructor(\n message: string,\n public readonly validationErrors: string[],\n ) {\n super(message);\n this.name = 'PointsValidationError';\n }\n}\n\n/**\n * Error thrown when points are not found\n */\nexport class PointsNotFoundError extends HCS20Error {\n constructor(public readonly tick: string) {\n super(`Points with tick \"${tick}\" not found`);\n this.name = 'PointsNotFoundError';\n }\n}\n\n/**\n * Error thrown when topic registration fails\n */\nexport class TopicRegistrationError extends HCS20Error {\n constructor(\n message: string,\n public readonly topicId: string,\n ) {\n super(message);\n this.name = 'TopicRegistrationError';\n }\n}\n\n/**\n * Error thrown when insufficient balance\n */\nexport class InsufficientBalanceError extends HCS20Error {\n constructor(\n public readonly accountId: string,\n public readonly tick: string,\n public readonly required: string,\n public readonly available: string,\n ) {\n super(\n `Insufficient balance for ${tick}: required ${required}, available ${available}`,\n );\n this.name = 'InsufficientBalanceError';\n }\n}\n\n/**\n * Error thrown when supply limit is exceeded\n */\nexport class SupplyLimitExceededError extends HCS20Error {\n constructor(\n public readonly tick: string,\n public readonly requested: string,\n public readonly maxSupply: string,\n public readonly currentSupply: string,\n ) {\n super(\n `Supply limit exceeded for ${tick}: max ${maxSupply}, current ${currentSupply}, requested ${requested}`,\n );\n this.name = 'SupplyLimitExceededError';\n }\n}\n\n/**\n * Error thrown when mint limit is exceeded\n */\nexport class MintLimitExceededError extends HCS20Error {\n constructor(\n public readonly tick: string,\n public readonly requested: string,\n public readonly limit: string,\n ) {\n super(\n `Mint limit exceeded for ${tick}: requested ${requested}, limit ${limit}`,\n );\n this.name = 'MintLimitExceededError';\n }\n}\n\n/**\n * Error thrown when HCS-20 message format is invalid\n */\nexport class InvalidMessageFormatError extends HCS20Error {\n constructor(\n message: string,\n public readonly messageData?: any,\n ) {\n super(message);\n this.name = 'InvalidMessageFormatError';\n }\n}\n\n/**\n * Error thrown when account format is invalid\n */\nexport class InvalidAccountFormatError extends HCS20Error {\n constructor(public readonly account: string) {\n super(`Invalid Hedera account format: ${account}`);\n this.name = 'InvalidAccountFormatError';\n }\n}\n\n/**\n * Error thrown when tick format is invalid\n */\nexport class InvalidTickFormatError extends HCS20Error {\n constructor(public readonly tick: string) {\n super(`Invalid tick format: ${tick}`);\n this.name = 'InvalidTickFormatError';\n }\n}\n\n/**\n * Error thrown when number format is invalid\n */\nexport class InvalidNumberFormatError extends HCS20Error {\n constructor(\n public readonly value: string,\n public readonly field: string,\n ) {\n super(`Invalid number format for ${field}: ${value}`);\n this.name = 'InvalidNumberFormatError';\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,146 +1,72 @@
1
- class HCS20Error extends Error {
2
- constructor(message) {
3
- super(message);
4
- this.name = "HCS20Error";
5
- }
6
- }
7
- class PointsDeploymentError extends HCS20Error {
8
- constructor(message, tick) {
9
- super(message);
10
- this.tick = tick;
11
- this.name = "PointsDeploymentError";
12
- }
13
- }
14
- class PointsMintError extends HCS20Error {
15
- constructor(message, tick, requestedAmount, availableSupply) {
16
- super(message);
17
- this.tick = tick;
18
- this.requestedAmount = requestedAmount;
19
- this.availableSupply = availableSupply;
20
- this.name = "PointsMintError";
21
- }
22
- }
23
- class PointsTransferError extends HCS20Error {
24
- constructor(message, tick, from, to, amount, availableBalance) {
25
- super(message);
26
- this.tick = tick;
27
- this.from = from;
28
- this.to = to;
29
- this.amount = amount;
30
- this.availableBalance = availableBalance;
31
- this.name = "PointsTransferError";
32
- }
33
- }
34
- class PointsBurnError extends HCS20Error {
35
- constructor(message, tick, from, amount, availableBalance) {
36
- super(message);
37
- this.tick = tick;
38
- this.from = from;
39
- this.amount = amount;
40
- this.availableBalance = availableBalance;
41
- this.name = "PointsBurnError";
42
- }
43
- }
44
- class PointsValidationError extends HCS20Error {
45
- constructor(message, validationErrors) {
46
- super(message);
47
- this.validationErrors = validationErrors;
48
- this.name = "PointsValidationError";
49
- }
50
- }
51
- class PointsNotFoundError extends HCS20Error {
52
- constructor(tick) {
53
- super(`Points with tick "${tick}" not found`);
54
- this.tick = tick;
55
- this.name = "PointsNotFoundError";
56
- }
57
- }
58
- class TopicRegistrationError extends HCS20Error {
59
- constructor(message, topicId) {
60
- super(message);
61
- this.topicId = topicId;
62
- this.name = "TopicRegistrationError";
63
- }
64
- }
65
- class InsufficientBalanceError extends HCS20Error {
66
- constructor(accountId, tick, required, available) {
67
- super(
68
- `Insufficient balance for ${tick}: required ${required}, available ${available}`
1
+ import { Logger } from "./standards-sdk.es105.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es126.js";
3
+ import { HCS20_CONSTANTS, HCS20MessageSchema } from "./standards-sdk.es72.js";
4
+ import { InvalidAccountFormatError } from "./standards-sdk.es73.js";
5
+ class HCS20BaseClient {
6
+ constructor(config) {
7
+ this.logger = config.logger || new Logger({ module: "HCS20Client" });
8
+ this.network = config.network === "mainnet" ? "mainnet" : "testnet";
9
+ this.mirrorNode = new HederaMirrorNode(
10
+ this.network,
11
+ this.logger,
12
+ config.mirrorNodeUrl ? { customUrl: config.mirrorNodeUrl } : void 0
69
13
  );
70
- this.accountId = accountId;
71
- this.tick = tick;
72
- this.required = required;
73
- this.available = available;
74
- this.name = "InsufficientBalanceError";
14
+ this.registryTopicId = config.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID;
15
+ this.publicTopicId = config.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID;
75
16
  }
76
- }
77
- class SupplyLimitExceededError extends HCS20Error {
78
- constructor(tick, requested, maxSupply, currentSupply) {
79
- super(
80
- `Supply limit exceeded for ${tick}: max ${maxSupply}, current ${currentSupply}, requested ${requested}`
81
- );
82
- this.tick = tick;
83
- this.requested = requested;
84
- this.maxSupply = maxSupply;
85
- this.currentSupply = currentSupply;
86
- this.name = "SupplyLimitExceededError";
17
+ /**
18
+ * Validate HCS-20 message using Zod schema
19
+ */
20
+ validateMessage(message) {
21
+ try {
22
+ HCS20MessageSchema.parse(message);
23
+ return { valid: true };
24
+ } catch (error) {
25
+ if (error.errors) {
26
+ const errors = error.errors.map(
27
+ (e) => `${e.path.join(".")}: ${e.message}`
28
+ );
29
+ return { valid: false, errors };
30
+ }
31
+ return { valid: false, errors: [error.message] };
32
+ }
87
33
  }
88
- }
89
- class MintLimitExceededError extends HCS20Error {
90
- constructor(tick, requested, limit) {
91
- super(
92
- `Mint limit exceeded for ${tick}: requested ${requested}, limit ${limit}`
93
- );
94
- this.tick = tick;
95
- this.requested = requested;
96
- this.limit = limit;
97
- this.name = "MintLimitExceededError";
34
+ /**
35
+ * Normalize tick to lowercase and trimmed
36
+ */
37
+ normalizeTick(tick) {
38
+ return tick.toLowerCase().trim();
98
39
  }
99
- }
100
- class InvalidMessageFormatError extends HCS20Error {
101
- constructor(message, messageData) {
102
- super(message);
103
- this.messageData = messageData;
104
- this.name = "InvalidMessageFormatError";
105
- }
106
- }
107
- class InvalidAccountFormatError extends HCS20Error {
108
- constructor(account) {
109
- super(`Invalid Hedera account format: ${account}`);
110
- this.account = account;
111
- this.name = "InvalidAccountFormatError";
40
+ /**
41
+ * Convert account to string format
42
+ */
43
+ accountToString(account) {
44
+ if (typeof account === "string") {
45
+ if (!HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX.test(account)) {
46
+ throw new InvalidAccountFormatError(account);
47
+ }
48
+ return account;
49
+ }
50
+ return account.toString();
112
51
  }
113
- }
114
- class InvalidTickFormatError extends HCS20Error {
115
- constructor(tick) {
116
- super(`Invalid tick format: ${tick}`);
117
- this.tick = tick;
118
- this.name = "InvalidTickFormatError";
119
- }
120
- }
121
- class InvalidNumberFormatError extends HCS20Error {
122
- constructor(value, field) {
123
- super(`Invalid number format for ${field}: ${value}`);
124
- this.value = value;
125
- this.field = field;
126
- this.name = "InvalidNumberFormatError";
52
+ /**
53
+ * Convert topic to string format
54
+ */
55
+ topicToString(topic) {
56
+ if (typeof topic === "string") {
57
+ if (!HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX.test(topic)) {
58
+ throw new InvalidAccountFormatError(topic);
59
+ }
60
+ return topic;
61
+ }
62
+ return topic.toString();
127
63
  }
64
+ /**
65
+ * NOTE: State queries (getPointsInfo, getBalance, etc.) require an external indexing service.
66
+ * The HCS-20 clients only handle message submission. Use HCS20PointsIndexer for state management.
67
+ */
128
68
  }
129
69
  export {
130
- HCS20Error,
131
- InsufficientBalanceError,
132
- InvalidAccountFormatError,
133
- InvalidMessageFormatError,
134
- InvalidNumberFormatError,
135
- InvalidTickFormatError,
136
- MintLimitExceededError,
137
- PointsBurnError,
138
- PointsDeploymentError,
139
- PointsMintError,
140
- PointsNotFoundError,
141
- PointsTransferError,
142
- PointsValidationError,
143
- SupplyLimitExceededError,
144
- TopicRegistrationError
70
+ HCS20BaseClient
145
71
  };
146
72
  //# sourceMappingURL=standards-sdk.es74.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es74.js","sources":["../../src/hcs-20/errors.ts"],"sourcesContent":["/**\n * HCS-20 Specific Error Classes\n */\n\n/**\n * Base error class for HCS-20 operations\n */\nexport class HCS20Error extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'HCS20Error';\n }\n}\n\n/**\n * Error thrown when points deployment fails\n */\nexport class PointsDeploymentError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick?: string,\n ) {\n super(message);\n this.name = 'PointsDeploymentError';\n }\n}\n\n/**\n * Error thrown when points minting fails\n */\nexport class PointsMintError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick: string,\n public readonly requestedAmount: string,\n public readonly availableSupply?: string,\n ) {\n super(message);\n this.name = 'PointsMintError';\n }\n}\n\n/**\n * Error thrown when points transfer fails\n */\nexport class PointsTransferError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick: string,\n public readonly from: string,\n public readonly to: string,\n public readonly amount: string,\n public readonly availableBalance?: string,\n ) {\n super(message);\n this.name = 'PointsTransferError';\n }\n}\n\n/**\n * Error thrown when points burn fails\n */\nexport class PointsBurnError extends HCS20Error {\n constructor(\n message: string,\n public readonly tick: string,\n public readonly from: string,\n public readonly amount: string,\n public readonly availableBalance?: string,\n ) {\n super(message);\n this.name = 'PointsBurnError';\n }\n}\n\n/**\n * Error thrown when points validation fails\n */\nexport class PointsValidationError extends HCS20Error {\n constructor(\n message: string,\n public readonly validationErrors: string[],\n ) {\n super(message);\n this.name = 'PointsValidationError';\n }\n}\n\n/**\n * Error thrown when points are not found\n */\nexport class PointsNotFoundError extends HCS20Error {\n constructor(public readonly tick: string) {\n super(`Points with tick \"${tick}\" not found`);\n this.name = 'PointsNotFoundError';\n }\n}\n\n/**\n * Error thrown when topic registration fails\n */\nexport class TopicRegistrationError extends HCS20Error {\n constructor(\n message: string,\n public readonly topicId: string,\n ) {\n super(message);\n this.name = 'TopicRegistrationError';\n }\n}\n\n/**\n * Error thrown when insufficient balance\n */\nexport class InsufficientBalanceError extends HCS20Error {\n constructor(\n public readonly accountId: string,\n public readonly tick: string,\n public readonly required: string,\n public readonly available: string,\n ) {\n super(\n `Insufficient balance for ${tick}: required ${required}, available ${available}`,\n );\n this.name = 'InsufficientBalanceError';\n }\n}\n\n/**\n * Error thrown when supply limit is exceeded\n */\nexport class SupplyLimitExceededError extends HCS20Error {\n constructor(\n public readonly tick: string,\n public readonly requested: string,\n public readonly maxSupply: string,\n public readonly currentSupply: string,\n ) {\n super(\n `Supply limit exceeded for ${tick}: max ${maxSupply}, current ${currentSupply}, requested ${requested}`,\n );\n this.name = 'SupplyLimitExceededError';\n }\n}\n\n/**\n * Error thrown when mint limit is exceeded\n */\nexport class MintLimitExceededError extends HCS20Error {\n constructor(\n public readonly tick: string,\n public readonly requested: string,\n public readonly limit: string,\n ) {\n super(\n `Mint limit exceeded for ${tick}: requested ${requested}, limit ${limit}`,\n );\n this.name = 'MintLimitExceededError';\n }\n}\n\n/**\n * Error thrown when HCS-20 message format is invalid\n */\nexport class InvalidMessageFormatError extends HCS20Error {\n constructor(\n message: string,\n public readonly messageData?: any,\n ) {\n super(message);\n this.name = 'InvalidMessageFormatError';\n }\n}\n\n/**\n * Error thrown when account format is invalid\n */\nexport class InvalidAccountFormatError extends HCS20Error {\n constructor(public readonly account: string) {\n super(`Invalid Hedera account format: ${account}`);\n this.name = 'InvalidAccountFormatError';\n }\n}\n\n/**\n * Error thrown when tick format is invalid\n */\nexport class InvalidTickFormatError extends HCS20Error {\n constructor(public readonly tick: string) {\n super(`Invalid tick format: ${tick}`);\n this.name = 'InvalidTickFormatError';\n }\n}\n\n/**\n * Error thrown when number format is invalid\n */\nexport class InvalidNumberFormatError extends HCS20Error {\n constructor(\n public readonly value: string,\n public readonly field: string,\n ) {\n super(`Invalid number format for ${field}: ${value}`);\n this.name = 'InvalidNumberFormatError';\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es74.js","sources":["../../src/hcs-20/base-client.ts"],"sourcesContent":["/**\n * Base client for HCS-20 Auditable Points operations\n */\n\nimport { AccountId, TopicId } from '@hashgraph/sdk';\nimport { Logger, ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport type { NetworkType } from '../utils/types';\nimport {\n HCS20ClientConfig,\n HCS20MessageSchema,\n PointsInfo,\n PointsTransaction,\n HCS20_CONSTANTS,\n DeployPointsOptions,\n MintPointsOptions,\n TransferPointsOptions,\n BurnPointsOptions,\n RegisterTopicOptions,\n} from './types';\nimport { InvalidAccountFormatError } from './errors';\n\n/**\n * Abstract base class for HCS-20 clients\n */\nexport abstract class HCS20BaseClient {\n protected logger: ILogger;\n protected mirrorNode: HederaMirrorNode;\n protected network: NetworkType;\n protected registryTopicId: string;\n protected publicTopicId: string;\n\n constructor(config: HCS20ClientConfig) {\n this.logger = config.logger || new Logger({ module: 'HCS20Client' });\n this.network = config.network === 'mainnet' ? 'mainnet' : 'testnet';\n this.mirrorNode = new HederaMirrorNode(\n this.network,\n this.logger,\n config.mirrorNodeUrl ? { customUrl: config.mirrorNodeUrl } : undefined,\n );\n this.registryTopicId =\n config.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID;\n this.publicTopicId =\n config.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID;\n }\n\n /**\n * Deploy new points\n */\n abstract deployPoints(options: DeployPointsOptions): Promise<PointsInfo>;\n\n /**\n * Mint points\n */\n abstract mintPoints(options: MintPointsOptions): Promise<PointsTransaction>;\n\n /**\n * Transfer points\n */\n abstract transferPoints(\n options: TransferPointsOptions,\n ): Promise<PointsTransaction>;\n\n /**\n * Burn points\n */\n abstract burnPoints(options: BurnPointsOptions): Promise<PointsTransaction>;\n\n /**\n * Register a topic in the registry\n */\n abstract registerTopic(options: RegisterTopicOptions): Promise<void>;\n\n /**\n * Validate HCS-20 message using Zod schema\n */\n protected validateMessage(message: any): {\n valid: boolean;\n errors?: string[];\n } {\n try {\n HCS20MessageSchema.parse(message);\n return { valid: true };\n } catch (error: any) {\n if (error.errors) {\n const errors = error.errors.map(\n (e: any) => `${e.path.join('.')}: ${e.message}`,\n );\n return { valid: false, errors };\n }\n return { valid: false, errors: [error.message] };\n }\n }\n\n /**\n * Normalize tick to lowercase and trimmed\n */\n protected normalizeTick(tick: string): string {\n return tick.toLowerCase().trim();\n }\n\n /**\n * Convert account to string format\n */\n protected accountToString(account: string | AccountId): string {\n if (typeof account === 'string') {\n if (!HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX.test(account)) {\n throw new InvalidAccountFormatError(account);\n }\n return account;\n }\n return account.toString();\n }\n\n /**\n * Convert topic to string format\n */\n protected topicToString(topic: string | TopicId): string {\n if (typeof topic === 'string') {\n if (!HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX.test(topic)) {\n throw new InvalidAccountFormatError(topic);\n }\n return topic;\n }\n return topic.toString();\n }\n\n /**\n * NOTE: State queries (getPointsInfo, getBalance, etc.) require an external indexing service.\n * The HCS-20 clients only handle message submission. Use HCS20PointsIndexer for state management.\n */\n}\n"],"names":[],"mappings":";;;;AAyBO,MAAe,gBAAgB;AAAA,EAOpC,YAAY,QAA2B;AACrC,SAAK,SAAS,OAAO,UAAU,IAAI,OAAO,EAAE,QAAQ,eAAe;AACnE,SAAK,UAAU,OAAO,YAAY,YAAY,YAAY;AAC1D,SAAK,aAAa,IAAI;AAAA,MACpB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO,gBAAgB,EAAE,WAAW,OAAO,kBAAkB;AAAA,IAAA;AAE/D,SAAK,kBACH,OAAO,mBAAmB,gBAAgB;AAC5C,SAAK,gBACH,OAAO,iBAAiB,gBAAgB;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAgCU,gBAAgB,SAGxB;AACA,QAAI;AACF,yBAAmB,MAAM,OAAO;AAChC,aAAO,EAAE,OAAO,KAAA;AAAA,IAClB,SAAS,OAAY;AACnB,UAAI,MAAM,QAAQ;AAChB,cAAM,SAAS,MAAM,OAAO;AAAA,UAC1B,CAAC,MAAW,GAAG,EAAE,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO;AAAA,QAAA;AAE/C,eAAO,EAAE,OAAO,OAAO,OAAA;AAAA,MACzB;AACA,aAAO,EAAE,OAAO,OAAO,QAAQ,CAAC,MAAM,OAAO,EAAA;AAAA,IAC/C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKU,cAAc,MAAsB;AAC5C,WAAO,KAAK,YAAA,EAAc,KAAA;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKU,gBAAgB,SAAqC;AAC7D,QAAI,OAAO,YAAY,UAAU;AAC/B,UAAI,CAAC,gBAAgB,qBAAqB,KAAK,OAAO,GAAG;AACvD,cAAM,IAAI,0BAA0B,OAAO;AAAA,MAC7C;AACA,aAAO;AAAA,IACT;AACA,WAAO,QAAQ,SAAA;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKU,cAAc,OAAiC;AACvD,QAAI,OAAO,UAAU,UAAU;AAC7B,UAAI,CAAC,gBAAgB,qBAAqB,KAAK,KAAK,GAAG;AACrD,cAAM,IAAI,0BAA0B,KAAK;AAAA,MAC3C;AACA,aAAO;AAAA,IACT;AACA,WAAO,MAAM,SAAA;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAMF;"}