@hashgraphonline/standards-sdk 0.1.167 → 0.1.169

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 (385) hide show
  1. package/README.md +21 -7
  2. package/dist/browser/hcs-10/sdk.d.ts.map +1 -1
  3. package/dist/browser/hcs-10/types.d.ts +3 -1
  4. package/dist/browser/hcs-10/types.d.ts.map +1 -1
  5. package/dist/browser/hcs-11/client.d.ts.map +1 -1
  6. package/dist/browser/hcs-11/types.d.ts +2 -1
  7. package/dist/browser/hcs-11/types.d.ts.map +1 -1
  8. package/dist/browser/hcs-12/sdk.d.ts +2 -0
  9. package/dist/browser/hcs-12/sdk.d.ts.map +1 -1
  10. package/dist/browser/hcs-15/sdk.d.ts.map +1 -1
  11. package/dist/browser/hcs-15/types.d.ts +2 -1
  12. package/dist/browser/hcs-15/types.d.ts.map +1 -1
  13. package/dist/browser/hcs-16/sdk.d.ts +2 -1
  14. package/dist/browser/hcs-16/sdk.d.ts.map +1 -1
  15. package/dist/browser/hcs-17/sdk.d.ts.map +1 -1
  16. package/dist/browser/hcs-17/types.d.ts +2 -1
  17. package/dist/browser/hcs-17/types.d.ts.map +1 -1
  18. package/dist/browser/hcs-18/sdk.d.ts +2 -1
  19. package/dist/browser/hcs-18/sdk.d.ts.map +1 -1
  20. package/dist/browser/hcs-2/client.d.ts +2 -1
  21. package/dist/browser/hcs-2/client.d.ts.map +1 -1
  22. package/dist/browser/hcs-20/sdk.d.ts.map +1 -1
  23. package/dist/browser/hcs-20/types.d.ts +2 -1
  24. package/dist/browser/hcs-20/types.d.ts.map +1 -1
  25. package/dist/browser/hcs-21/sdk.d.ts +2 -1
  26. package/dist/browser/hcs-21/sdk.d.ts.map +1 -1
  27. package/dist/browser/hcs-27/base-client.d.ts +41 -0
  28. package/dist/browser/hcs-27/base-client.d.ts.map +1 -0
  29. package/dist/browser/hcs-27/index.d.ts +6 -0
  30. package/dist/browser/hcs-27/index.d.ts.map +1 -0
  31. package/dist/browser/hcs-27/memos.d.ts +5 -0
  32. package/dist/browser/hcs-27/memos.d.ts.map +1 -0
  33. package/dist/browser/hcs-27/merkle.d.ts +23 -0
  34. package/dist/browser/hcs-27/merkle.d.ts.map +1 -0
  35. package/dist/browser/hcs-27/sdk.d.ts +23 -0
  36. package/dist/browser/hcs-27/sdk.d.ts.map +1 -0
  37. package/dist/browser/hcs-27/types.d.ts +1611 -0
  38. package/dist/browser/hcs-27/types.d.ts.map +1 -0
  39. package/dist/browser/hcs-5/sdk.d.ts.map +1 -1
  40. package/dist/browser/hcs-5/types.d.ts +2 -1
  41. package/dist/browser/hcs-5/types.d.ts.map +1 -1
  42. package/dist/browser/hcs-6/sdk.d.ts +2 -1
  43. package/dist/browser/hcs-6/sdk.d.ts.map +1 -1
  44. package/dist/browser/hcs-7/sdk.d.ts.map +1 -1
  45. package/dist/browser/hcs-7/types.d.ts +2 -1
  46. package/dist/browser/hcs-7/types.d.ts.map +1 -1
  47. package/dist/browser/index.d.ts +1 -0
  48. package/dist/browser/index.d.ts.map +1 -1
  49. package/dist/browser/standards-sdk.browser.js +33 -8
  50. package/dist/browser/standards-sdk.browser.js.map +1 -1
  51. package/dist/browser/utils/key-type-detector.d.ts.map +1 -1
  52. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  53. package/dist/cjs/hcs-10/types.d.ts +3 -1
  54. package/dist/cjs/hcs-10/types.d.ts.map +1 -1
  55. package/dist/cjs/hcs-11/client.d.ts.map +1 -1
  56. package/dist/cjs/hcs-11/types.d.ts +2 -1
  57. package/dist/cjs/hcs-11/types.d.ts.map +1 -1
  58. package/dist/cjs/hcs-12/sdk.d.ts +2 -0
  59. package/dist/cjs/hcs-12/sdk.d.ts.map +1 -1
  60. package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
  61. package/dist/cjs/hcs-15/types.d.ts +2 -1
  62. package/dist/cjs/hcs-15/types.d.ts.map +1 -1
  63. package/dist/cjs/hcs-16/sdk.d.ts +2 -1
  64. package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
  65. package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
  66. package/dist/cjs/hcs-17/types.d.ts +2 -1
  67. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  68. package/dist/cjs/hcs-18/sdk.d.ts +2 -1
  69. package/dist/cjs/hcs-18/sdk.d.ts.map +1 -1
  70. package/dist/cjs/hcs-2/client.d.ts +2 -1
  71. package/dist/cjs/hcs-2/client.d.ts.map +1 -1
  72. package/dist/cjs/hcs-20/sdk.d.ts.map +1 -1
  73. package/dist/cjs/hcs-20/types.d.ts +2 -1
  74. package/dist/cjs/hcs-20/types.d.ts.map +1 -1
  75. package/dist/cjs/hcs-21/sdk.d.ts +2 -1
  76. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
  77. package/dist/cjs/hcs-27/base-client.d.ts +41 -0
  78. package/dist/cjs/hcs-27/base-client.d.ts.map +1 -0
  79. package/dist/cjs/hcs-27/index.d.ts +6 -0
  80. package/dist/cjs/hcs-27/index.d.ts.map +1 -0
  81. package/dist/cjs/hcs-27/memos.d.ts +5 -0
  82. package/dist/cjs/hcs-27/memos.d.ts.map +1 -0
  83. package/dist/cjs/hcs-27/merkle.d.ts +23 -0
  84. package/dist/cjs/hcs-27/merkle.d.ts.map +1 -0
  85. package/dist/cjs/hcs-27/sdk.d.ts +23 -0
  86. package/dist/cjs/hcs-27/sdk.d.ts.map +1 -0
  87. package/dist/cjs/hcs-27/types.d.ts +1611 -0
  88. package/dist/cjs/hcs-27/types.d.ts.map +1 -0
  89. package/dist/cjs/hcs-5/sdk.d.ts.map +1 -1
  90. package/dist/cjs/hcs-5/types.d.ts +2 -1
  91. package/dist/cjs/hcs-5/types.d.ts.map +1 -1
  92. package/dist/cjs/hcs-6/sdk.d.ts +2 -1
  93. package/dist/cjs/hcs-6/sdk.d.ts.map +1 -1
  94. package/dist/cjs/hcs-7/sdk.d.ts.map +1 -1
  95. package/dist/cjs/hcs-7/types.d.ts +2 -1
  96. package/dist/cjs/hcs-7/types.d.ts.map +1 -1
  97. package/dist/cjs/index.d.ts +1 -0
  98. package/dist/cjs/index.d.ts.map +1 -1
  99. package/dist/cjs/standards-sdk.cjs +2 -2
  100. package/dist/cjs/standards-sdk.cjs.map +1 -1
  101. package/dist/cjs/utils/key-type-detector.d.ts.map +1 -1
  102. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  103. package/dist/es/hcs-10/types.d.ts +3 -1
  104. package/dist/es/hcs-10/types.d.ts.map +1 -1
  105. package/dist/es/hcs-11/client.d.ts.map +1 -1
  106. package/dist/es/hcs-11/types.d.ts +2 -1
  107. package/dist/es/hcs-11/types.d.ts.map +1 -1
  108. package/dist/es/hcs-12/sdk.d.ts +2 -0
  109. package/dist/es/hcs-12/sdk.d.ts.map +1 -1
  110. package/dist/es/hcs-15/sdk.d.ts.map +1 -1
  111. package/dist/es/hcs-15/types.d.ts +2 -1
  112. package/dist/es/hcs-15/types.d.ts.map +1 -1
  113. package/dist/es/hcs-16/sdk.d.ts +2 -1
  114. package/dist/es/hcs-16/sdk.d.ts.map +1 -1
  115. package/dist/es/hcs-17/sdk.d.ts.map +1 -1
  116. package/dist/es/hcs-17/types.d.ts +2 -1
  117. package/dist/es/hcs-17/types.d.ts.map +1 -1
  118. package/dist/es/hcs-18/sdk.d.ts +2 -1
  119. package/dist/es/hcs-18/sdk.d.ts.map +1 -1
  120. package/dist/es/hcs-2/client.d.ts +2 -1
  121. package/dist/es/hcs-2/client.d.ts.map +1 -1
  122. package/dist/es/hcs-20/sdk.d.ts.map +1 -1
  123. package/dist/es/hcs-20/types.d.ts +2 -1
  124. package/dist/es/hcs-20/types.d.ts.map +1 -1
  125. package/dist/es/hcs-21/sdk.d.ts +2 -1
  126. package/dist/es/hcs-21/sdk.d.ts.map +1 -1
  127. package/dist/es/hcs-27/base-client.d.ts +41 -0
  128. package/dist/es/hcs-27/base-client.d.ts.map +1 -0
  129. package/dist/es/hcs-27/index.d.ts +6 -0
  130. package/dist/es/hcs-27/index.d.ts.map +1 -0
  131. package/dist/es/hcs-27/memos.d.ts +5 -0
  132. package/dist/es/hcs-27/memos.d.ts.map +1 -0
  133. package/dist/es/hcs-27/merkle.d.ts +23 -0
  134. package/dist/es/hcs-27/merkle.d.ts.map +1 -0
  135. package/dist/es/hcs-27/sdk.d.ts +23 -0
  136. package/dist/es/hcs-27/sdk.d.ts.map +1 -0
  137. package/dist/es/hcs-27/types.d.ts +1611 -0
  138. package/dist/es/hcs-27/types.d.ts.map +1 -0
  139. package/dist/es/hcs-5/sdk.d.ts.map +1 -1
  140. package/dist/es/hcs-5/types.d.ts +2 -1
  141. package/dist/es/hcs-5/types.d.ts.map +1 -1
  142. package/dist/es/hcs-6/sdk.d.ts +2 -1
  143. package/dist/es/hcs-6/sdk.d.ts.map +1 -1
  144. package/dist/es/hcs-7/sdk.d.ts.map +1 -1
  145. package/dist/es/hcs-7/types.d.ts +2 -1
  146. package/dist/es/hcs-7/types.d.ts.map +1 -1
  147. package/dist/es/index.d.ts +1 -0
  148. package/dist/es/index.d.ts.map +1 -1
  149. package/dist/es/standards-sdk.es.js +67 -38
  150. package/dist/es/standards-sdk.es.js.map +1 -1
  151. package/dist/es/standards-sdk.es101.js +2 -2
  152. package/dist/es/standards-sdk.es102.js.map +1 -1
  153. package/dist/es/standards-sdk.es103.js +2 -2
  154. package/dist/es/standards-sdk.es104.js +2 -2
  155. package/dist/es/standards-sdk.es104.js.map +1 -1
  156. package/dist/es/standards-sdk.es106.js +1 -1
  157. package/dist/es/standards-sdk.es108.js +3 -3
  158. package/dist/es/standards-sdk.es108.js.map +1 -1
  159. package/dist/es/standards-sdk.es11.js +3 -2
  160. package/dist/es/standards-sdk.es11.js.map +1 -1
  161. package/dist/es/standards-sdk.es110.js +1 -1
  162. package/dist/es/standards-sdk.es111.js +2 -2
  163. package/dist/es/standards-sdk.es112.js +151 -234
  164. package/dist/es/standards-sdk.es112.js.map +1 -1
  165. package/dist/es/standards-sdk.es113.js +20 -471
  166. package/dist/es/standards-sdk.es113.js.map +1 -1
  167. package/dist/es/standards-sdk.es114.js +263 -104
  168. package/dist/es/standards-sdk.es114.js.map +1 -1
  169. package/dist/es/standards-sdk.es115.js +167 -138
  170. package/dist/es/standards-sdk.es115.js.map +1 -1
  171. package/dist/es/standards-sdk.es116.js +315 -29
  172. package/dist/es/standards-sdk.es116.js.map +1 -1
  173. package/dist/es/standards-sdk.es117.js +250 -10
  174. package/dist/es/standards-sdk.es117.js.map +1 -1
  175. package/dist/es/standards-sdk.es118.js +448 -152
  176. package/dist/es/standards-sdk.es118.js.map +1 -1
  177. package/dist/es/standards-sdk.es119.js +101 -25
  178. package/dist/es/standards-sdk.es119.js.map +1 -1
  179. package/dist/es/standards-sdk.es12.js +1 -1
  180. package/dist/es/standards-sdk.es120.js +155 -17
  181. package/dist/es/standards-sdk.es120.js.map +1 -1
  182. package/dist/es/standards-sdk.es121.js +29 -155
  183. package/dist/es/standards-sdk.es121.js.map +1 -1
  184. package/dist/es/standards-sdk.es122.js +9 -200
  185. package/dist/es/standards-sdk.es122.js.map +1 -1
  186. package/dist/es/standards-sdk.es123.js +146 -754
  187. package/dist/es/standards-sdk.es123.js.map +1 -1
  188. package/dist/es/standards-sdk.es124.js +27 -11
  189. package/dist/es/standards-sdk.es124.js.map +1 -1
  190. package/dist/es/standards-sdk.es125.js +19 -564
  191. package/dist/es/standards-sdk.es125.js.map +1 -1
  192. package/dist/es/standards-sdk.es126.js +140 -582
  193. package/dist/es/standards-sdk.es126.js.map +1 -1
  194. package/dist/es/standards-sdk.es127.js +202 -12
  195. package/dist/es/standards-sdk.es127.js.map +1 -1
  196. package/dist/es/standards-sdk.es128.js +790 -2
  197. package/dist/es/standards-sdk.es128.js.map +1 -1
  198. package/dist/es/standards-sdk.es129.js +10 -84
  199. package/dist/es/standards-sdk.es129.js.map +1 -1
  200. package/dist/es/standards-sdk.es13.js +1 -1
  201. package/dist/es/standards-sdk.es130.js +567 -40
  202. package/dist/es/standards-sdk.es130.js.map +1 -1
  203. package/dist/es/standards-sdk.es131.js +626 -2
  204. package/dist/es/standards-sdk.es131.js.map +1 -1
  205. package/dist/es/standards-sdk.es132.js +12 -234
  206. package/dist/es/standards-sdk.es132.js.map +1 -1
  207. package/dist/es/standards-sdk.es133.js +2 -1140
  208. package/dist/es/standards-sdk.es133.js.map +1 -1
  209. package/dist/es/standards-sdk.es134.js +73 -292
  210. package/dist/es/standards-sdk.es134.js.map +1 -1
  211. package/dist/es/standards-sdk.es135.js +36 -418
  212. package/dist/es/standards-sdk.es135.js.map +1 -1
  213. package/dist/es/standards-sdk.es136.js +2 -355
  214. package/dist/es/standards-sdk.es136.js.map +1 -1
  215. package/dist/es/standards-sdk.es137.js +198 -1079
  216. package/dist/es/standards-sdk.es137.js.map +1 -1
  217. package/dist/es/standards-sdk.es138.js +1107 -175
  218. package/dist/es/standards-sdk.es138.js.map +1 -1
  219. package/dist/es/standards-sdk.es139.js +218 -1479
  220. package/dist/es/standards-sdk.es139.js.map +1 -1
  221. package/dist/es/standards-sdk.es14.js +1 -1
  222. package/dist/es/standards-sdk.es140.js +422 -1500
  223. package/dist/es/standards-sdk.es140.js.map +1 -1
  224. package/dist/es/standards-sdk.es141.js +351 -13
  225. package/dist/es/standards-sdk.es141.js.map +1 -1
  226. package/dist/es/standards-sdk.es142.js +1102 -73
  227. package/dist/es/standards-sdk.es142.js.map +1 -1
  228. package/dist/es/standards-sdk.es143.js +203 -76
  229. package/dist/es/standards-sdk.es143.js.map +1 -1
  230. package/dist/es/standards-sdk.es144.js +1459 -830
  231. package/dist/es/standards-sdk.es144.js.map +1 -1
  232. package/dist/es/standards-sdk.es145.js +1499 -59
  233. package/dist/es/standards-sdk.es145.js.map +1 -1
  234. package/dist/es/standards-sdk.es146.js +14 -156
  235. package/dist/es/standards-sdk.es146.js.map +1 -1
  236. package/dist/es/standards-sdk.es147.js +87 -7
  237. package/dist/es/standards-sdk.es147.js.map +1 -1
  238. package/dist/es/standards-sdk.es148.js +74 -79
  239. package/dist/es/standards-sdk.es148.js.map +1 -1
  240. package/dist/es/standards-sdk.es149.js +934 -61
  241. package/dist/es/standards-sdk.es149.js.map +1 -1
  242. package/dist/es/standards-sdk.es15.js +1 -1
  243. package/dist/es/standards-sdk.es150.js +60 -30
  244. package/dist/es/standards-sdk.es150.js.map +1 -1
  245. package/dist/es/standards-sdk.es151.js +159 -34
  246. package/dist/es/standards-sdk.es151.js.map +1 -1
  247. package/dist/es/standards-sdk.es152.js +7 -48
  248. package/dist/es/standards-sdk.es152.js.map +1 -1
  249. package/dist/es/standards-sdk.es153.js +70 -122
  250. package/dist/es/standards-sdk.es153.js.map +1 -1
  251. package/dist/es/standards-sdk.es154.js +58 -35
  252. package/dist/es/standards-sdk.es154.js.map +1 -1
  253. package/dist/es/standards-sdk.es155.js +30 -12482
  254. package/dist/es/standards-sdk.es155.js.map +1 -1
  255. package/dist/es/standards-sdk.es156.js +34 -56
  256. package/dist/es/standards-sdk.es156.js.map +1 -1
  257. package/dist/es/standards-sdk.es157.js +48 -84
  258. package/dist/es/standards-sdk.es157.js.map +1 -1
  259. package/dist/es/standards-sdk.es158.js +128 -71
  260. package/dist/es/standards-sdk.es158.js.map +1 -1
  261. package/dist/es/standards-sdk.es159.js +33 -191
  262. package/dist/es/standards-sdk.es159.js.map +1 -1
  263. package/dist/es/standards-sdk.es16.js +5 -5
  264. package/dist/es/standards-sdk.es160.js +12477 -12
  265. package/dist/es/standards-sdk.es160.js.map +1 -1
  266. package/dist/es/standards-sdk.es161.js +15 -548
  267. package/dist/es/standards-sdk.es161.js.map +1 -1
  268. package/dist/es/standards-sdk.es162.js +51 -167
  269. package/dist/es/standards-sdk.es162.js.map +1 -1
  270. package/dist/es/standards-sdk.es163.js +70 -308
  271. package/dist/es/standards-sdk.es163.js.map +1 -1
  272. package/dist/es/standards-sdk.es164.js +71 -336
  273. package/dist/es/standards-sdk.es164.js.map +1 -1
  274. package/dist/es/standards-sdk.es165.js +186 -439
  275. package/dist/es/standards-sdk.es165.js.map +1 -1
  276. package/dist/es/standards-sdk.es166.js +537 -318
  277. package/dist/es/standards-sdk.es166.js.map +1 -1
  278. package/dist/es/standards-sdk.es167.js +63 -66
  279. package/dist/es/standards-sdk.es167.js.map +1 -1
  280. package/dist/es/standards-sdk.es168.js +165 -66
  281. package/dist/es/standards-sdk.es168.js.map +1 -1
  282. package/dist/es/standards-sdk.es169.js +310 -160
  283. package/dist/es/standards-sdk.es169.js.map +1 -1
  284. package/dist/es/standards-sdk.es170.js +336 -212
  285. package/dist/es/standards-sdk.es170.js.map +1 -1
  286. package/dist/es/standards-sdk.es171.js +437 -223
  287. package/dist/es/standards-sdk.es171.js.map +1 -1
  288. package/dist/es/standards-sdk.es172.js +324 -112
  289. package/dist/es/standards-sdk.es172.js.map +1 -1
  290. package/dist/es/standards-sdk.es173.js +65 -115
  291. package/dist/es/standards-sdk.es173.js.map +1 -1
  292. package/dist/es/standards-sdk.es174.js +151 -140
  293. package/dist/es/standards-sdk.es174.js.map +1 -1
  294. package/dist/es/standards-sdk.es175.js +193 -156
  295. package/dist/es/standards-sdk.es175.js.map +1 -1
  296. package/dist/es/standards-sdk.es176.js +221 -121
  297. package/dist/es/standards-sdk.es176.js.map +1 -1
  298. package/dist/es/standards-sdk.es177.js +81 -293
  299. package/dist/es/standards-sdk.es177.js.map +1 -1
  300. package/dist/es/standards-sdk.es178.js +114 -247
  301. package/dist/es/standards-sdk.es178.js.map +1 -1
  302. package/dist/es/standards-sdk.es179.js +119 -110
  303. package/dist/es/standards-sdk.es179.js.map +1 -1
  304. package/dist/es/standards-sdk.es18.js +15 -14
  305. package/dist/es/standards-sdk.es18.js.map +1 -1
  306. package/dist/es/standards-sdk.es180.js +188 -0
  307. package/dist/es/standards-sdk.es180.js.map +1 -0
  308. package/dist/es/standards-sdk.es181.js +142 -0
  309. package/dist/es/standards-sdk.es181.js.map +1 -0
  310. package/dist/es/standards-sdk.es182.js +334 -0
  311. package/dist/es/standards-sdk.es182.js.map +1 -0
  312. package/dist/es/standards-sdk.es183.js +262 -0
  313. package/dist/es/standards-sdk.es183.js.map +1 -0
  314. package/dist/es/standards-sdk.es184.js +155 -0
  315. package/dist/es/standards-sdk.es184.js.map +1 -0
  316. package/dist/es/standards-sdk.es19.js +9 -9
  317. package/dist/es/standards-sdk.es2.js +2 -2
  318. package/dist/es/standards-sdk.es20.js +1 -1
  319. package/dist/es/standards-sdk.es21.js +1 -1
  320. package/dist/es/standards-sdk.es22.js +1 -1
  321. package/dist/es/standards-sdk.es23.js +1 -1
  322. package/dist/es/standards-sdk.es24.js +1 -1
  323. package/dist/es/standards-sdk.es25.js +1 -1
  324. package/dist/es/standards-sdk.es26.js +1 -1
  325. package/dist/es/standards-sdk.es27.js +13 -13
  326. package/dist/es/standards-sdk.es27.js.map +1 -1
  327. package/dist/es/standards-sdk.es28.js.map +1 -1
  328. package/dist/es/standards-sdk.es30.js +2 -2
  329. package/dist/es/standards-sdk.es31.js +4 -4
  330. package/dist/es/standards-sdk.es32.js +1 -1
  331. package/dist/es/standards-sdk.es35.js +6 -6
  332. package/dist/es/standards-sdk.es36.js +5 -5
  333. package/dist/es/standards-sdk.es36.js.map +1 -1
  334. package/dist/es/standards-sdk.es37.js +2 -2
  335. package/dist/es/standards-sdk.es38.js +2 -2
  336. package/dist/es/standards-sdk.es39.js +1 -1
  337. package/dist/es/standards-sdk.es4.js +3 -3
  338. package/dist/es/standards-sdk.es4.js.map +1 -1
  339. package/dist/es/standards-sdk.es40.js +1 -1
  340. package/dist/es/standards-sdk.es41.js +2 -2
  341. package/dist/es/standards-sdk.es46.js +1 -1
  342. package/dist/es/standards-sdk.es5.js +2 -2
  343. package/dist/es/standards-sdk.es51.js +1 -1
  344. package/dist/es/standards-sdk.es53.js +1 -1
  345. package/dist/es/standards-sdk.es56.js +2 -2
  346. package/dist/es/standards-sdk.es59.js +1 -1
  347. package/dist/es/standards-sdk.es6.js +2 -2
  348. package/dist/es/standards-sdk.es60.js +1 -1
  349. package/dist/es/standards-sdk.es62.js +1 -1
  350. package/dist/es/standards-sdk.es63.js +2 -2
  351. package/dist/es/standards-sdk.es64.js +1 -1
  352. package/dist/es/standards-sdk.es65.js +1 -1
  353. package/dist/es/standards-sdk.es66.js +1 -1
  354. package/dist/es/standards-sdk.es67.js +7 -7
  355. package/dist/es/standards-sdk.es69.js +1 -1
  356. package/dist/es/standards-sdk.es7.js +1 -1
  357. package/dist/es/standards-sdk.es70.js.map +1 -1
  358. package/dist/es/standards-sdk.es71.js +2 -2
  359. package/dist/es/standards-sdk.es72.js +5 -4
  360. package/dist/es/standards-sdk.es72.js.map +1 -1
  361. package/dist/es/standards-sdk.es75.js +6 -6
  362. package/dist/es/standards-sdk.es75.js.map +1 -1
  363. package/dist/es/standards-sdk.es76.js +3 -3
  364. package/dist/es/standards-sdk.es77.js +2 -2
  365. package/dist/es/standards-sdk.es78.js +1 -1
  366. package/dist/es/standards-sdk.es79.js.map +1 -1
  367. package/dist/es/standards-sdk.es8.js.map +1 -1
  368. package/dist/es/standards-sdk.es81.js +2 -2
  369. package/dist/es/standards-sdk.es83.js +7 -5
  370. package/dist/es/standards-sdk.es83.js.map +1 -1
  371. package/dist/es/standards-sdk.es84.js +4 -4
  372. package/dist/es/standards-sdk.es85.js +1 -1
  373. package/dist/es/standards-sdk.es88.js +1 -1
  374. package/dist/es/standards-sdk.es89.js +2 -2
  375. package/dist/es/standards-sdk.es9.js +2 -2
  376. package/dist/es/standards-sdk.es90.js +5 -5
  377. package/dist/es/standards-sdk.es90.js.map +1 -1
  378. package/dist/es/standards-sdk.es94.js +4 -4
  379. package/dist/es/standards-sdk.es94.js.map +1 -1
  380. package/dist/es/standards-sdk.es96.js +2 -2
  381. package/dist/es/standards-sdk.es98.js +1 -1
  382. package/dist/es/standards-sdk.es99.js +4 -4
  383. package/dist/es/standards-sdk.es99.js.map +1 -1
  384. package/dist/es/utils/key-type-detector.d.ts.map +1 -1
  385. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es118.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent';\n\nexport interface LoggerOptions {\n level?: LogLevel;\n module?: string;\n prettyPrint?: boolean;\n silent?: boolean;\n}\n\nexport interface ILogger {\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n trace(...args: any[]): void;\n setLogLevel(level: LogLevel): void;\n getLevel(): LogLevel;\n setSilent(silent: boolean): void;\n setModule(module: string): void;\n}\n\nexport type LoggerFactory = (options: LoggerOptions) => ILogger;\n\nlet loggerFactory: LoggerFactory | null = null;\n\nfunction normalizeErrorData(error: Error): Record<string, unknown> {\n const normalizedData: Record<string, unknown> = {\n name: error.name,\n message: error.message,\n };\n\n if (error.stack) {\n normalizedData.stack = error.stack;\n }\n\n for (const [key, value] of Object.entries(error)) {\n normalizedData[key] = value;\n }\n\n return normalizedData;\n}\n\nfunction serializeLogData(data: unknown): string {\n try {\n return JSON.stringify(\n data,\n (_key, value: unknown) => {\n if (value instanceof Error) {\n return normalizeErrorData(value);\n }\n if (typeof value === 'bigint') {\n return value.toString();\n }\n if (value instanceof Map) {\n return Object.fromEntries(value);\n }\n if (value instanceof Set) {\n return Array.from(value);\n }\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n },\n 2,\n );\n } catch {\n return String(data);\n }\n}\n\n/**\n * Set a custom logger factory to override the default Pino-based implementation\n */\nexport function setLoggerFactory(factory: LoggerFactory): void {\n loggerFactory = factory;\n Logger.clearInstances();\n}\n\nexport class Logger implements ILogger {\n private static instances: Map<string, ILogger> = new Map();\n private level: LogLevel;\n private moduleContext: string;\n private silent: boolean;\n private prettyPrint: boolean;\n\n constructor(options: LoggerOptions = {}) {\n if (loggerFactory) {\n return loggerFactory(options) as any;\n }\n\n const globalDisable =\n typeof process !== 'undefined' && process.env?.DISABLE_LOGS === 'true';\n\n this.silent = options.silent || globalDisable;\n this.level = this.silent ? 'silent' : options.level || 'info';\n this.moduleContext = options.module || 'app';\n this.prettyPrint = !this.silent && options.prettyPrint !== false;\n }\n\n static getInstance(options: LoggerOptions = {}): ILogger {\n const moduleKey = options.module || 'default';\n\n const globalDisable =\n typeof process !== 'undefined' && process.env?.DISABLE_LOGS === 'true';\n\n if (globalDisable && Logger.instances.has(moduleKey)) {\n const existingLogger = Logger.instances.get(moduleKey)!;\n if (existingLogger.getLevel() !== 'silent') {\n Logger.instances.delete(moduleKey);\n }\n }\n\n if (!Logger.instances.has(moduleKey)) {\n const logger = loggerFactory\n ? loggerFactory(options)\n : new Logger(options);\n Logger.instances.set(moduleKey, logger);\n }\n\n return Logger.instances.get(moduleKey)!;\n }\n\n setLogLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n setSilent(silent: boolean): void {\n this.silent = silent;\n if (silent) {\n this.level = 'silent';\n }\n }\n\n setModule(module: string): void {\n this.moduleContext = module;\n }\n\n private formatArgs(args: any[]): { msg: string; data?: any } {\n if (args.length === 0) {\n return { msg: '' };\n }\n\n if (args.length === 1) {\n if (typeof args[0] === 'string') {\n return { msg: args[0] };\n }\n return { msg: '', data: args[0] };\n }\n\n const stringArgs: string[] = [];\n const objectArgs: any[] = [];\n\n args.forEach(arg => {\n if (\n typeof arg === 'string' ||\n typeof arg === 'number' ||\n typeof arg === 'boolean'\n ) {\n stringArgs.push(String(arg));\n } else {\n objectArgs.push(arg);\n }\n });\n\n const msg = stringArgs.join(' ');\n return objectArgs.length > 0 ? { msg, data: objectArgs } : { msg };\n }\n\n private shouldLog(level: LogLevel): boolean {\n if (this.silent || this.level === 'silent') {\n return false;\n }\n\n const levels = ['trace', 'debug', 'info', 'warn', 'error', 'silent'];\n const currentLevelIndex = levels.indexOf(this.level);\n const targetLevelIndex = levels.indexOf(level);\n\n return targetLevelIndex >= currentLevelIndex;\n }\n\n private getConsoleMethod(level: LogLevel): (...args: any[]) => void {\n if (level === 'error') {\n return console.error;\n }\n if (level === 'warn') {\n return console.warn;\n }\n if (level === 'debug') {\n return console.debug;\n }\n return console.log;\n }\n\n private writeLog(level: LogLevel, ...args: any[]): void {\n if (!this.shouldLog(level)) {\n return;\n }\n\n const { msg, data } = this.formatArgs(args);\n const timestamp = new Date().toISOString();\n const consoleMethod = this.getConsoleMethod(level);\n\n if (this.prettyPrint) {\n const levelFormatted = level.toUpperCase().padEnd(5);\n let output = `${timestamp} ${levelFormatted} [${this.moduleContext}] ${msg}`;\n\n if (data) {\n output += '\\n' + serializeLogData(data);\n }\n\n consoleMethod(output);\n } else {\n const logObj = {\n timestamp,\n level,\n module: this.moduleContext,\n message: msg,\n ...(data && { data }),\n };\n\n consoleMethod(JSON.stringify(logObj));\n }\n }\n\n debug(...args: any[]): void {\n this.writeLog('debug', ...args);\n }\n\n info(...args: any[]): void {\n this.writeLog('info', ...args);\n }\n\n warn(...args: any[]): void {\n this.writeLog('warn', ...args);\n }\n\n error(...args: any[]): void {\n this.writeLog('error', ...args);\n }\n\n trace(...args: any[]): void {\n this.writeLog('trace', ...args);\n }\n\n /**\n * Clear all logger instances\n * Used when switching logger implementations\n */\n static clearInstances(): void {\n Logger.instances.clear();\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es118.js","sources":["../../src/hcs-26/resolver.ts"],"sourcesContent":["import { Logger, type ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { HRLResolver } from '../utils/hrl-resolver';\nimport type { MirrorNodeConfig } from '../services/mirror-node';\nimport { hash } from '../utils/crypto-abstraction';\nimport {\n hcs26DiscoveryRegisterSchema,\n hcs26DiscoveryRegisterLegacySchema,\n hcs26DiscoveryMetadataSchema,\n hcs26DiscoveryMetadataPatchSchema,\n hcs26DiscoveryUpdateSchema,\n hcs26DiscoveryUpdateLegacySchema,\n hcs26DiscoveryDeleteSchema,\n hcs26SkillManifestSchema,\n hcs26VersionRegisterSchema,\n hcs26VersionRegisterLegacySchema,\n hcs26VersionUpdateSchema,\n hcs26VersionDeleteSchema,\n type HCS26Network,\n type Hcs26DiscoveryRegister,\n type Hcs26DiscoveryRegisterLegacy,\n type Hcs26SkillManifest,\n type Hcs26VersionRegister,\n type Hcs26VersionRegisterLegacy,\n type Hcs26VersionUpdate,\n} from './types';\n\ntype Hcs26ResolverDeps = {\n network: HCS26Network;\n logger?: ILogger;\n mirrorNode?: MirrorNodeConfig;\n};\n\ntype ParsedSemver = {\n major: number;\n minor: number;\n patch: number;\n prerelease: (string | number)[];\n};\n\nfunction parseSemver(versionRaw: string): ParsedSemver | null {\n const trimmed = versionRaw.trim().replace(/^v/i, '');\n const match = trimmed.match(\n /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([0-9A-Za-z.-]+))?(?:\\+[0-9A-Za-z.-]+)?$/,\n );\n if (!match) {\n return null;\n }\n\n const major = Number(match[1]);\n const minor = Number(match[2]);\n const patch = Number(match[3]);\n if (![major, minor, patch].every(Number.isFinite)) {\n return null;\n }\n\n const prereleaseRaw = match[4];\n const prerelease = prereleaseRaw\n ? prereleaseRaw.split('.').map(part => {\n if (/^(0|[1-9]\\d*)$/.test(part)) {\n return Number(part);\n }\n return part;\n })\n : [];\n\n return { major, minor, patch, prerelease };\n}\n\nfunction compareSemver(a: ParsedSemver, b: ParsedSemver): number {\n if (a.major !== b.major) return a.major - b.major;\n if (a.minor !== b.minor) return a.minor - b.minor;\n if (a.patch !== b.patch) return a.patch - b.patch;\n\n const aHasPre = a.prerelease.length > 0;\n const bHasPre = b.prerelease.length > 0;\n if (!aHasPre && bHasPre) return 1;\n if (aHasPre && !bHasPre) return -1;\n if (!aHasPre && !bHasPre) return 0;\n\n const len = Math.max(a.prerelease.length, b.prerelease.length);\n for (let index = 0; index < len; index += 1) {\n const aId = a.prerelease[index];\n const bId = b.prerelease[index];\n if (aId === undefined && bId !== undefined) return -1;\n if (aId !== undefined && bId === undefined) return 1;\n if (aId === bId) continue;\n\n if (typeof aId === 'number' && typeof bId === 'number') {\n return aId - bId;\n }\n if (typeof aId === 'number' && typeof bId === 'string') {\n return -1;\n }\n if (typeof aId === 'string' && typeof bId === 'number') {\n return 1;\n }\n if (typeof aId === 'string' && typeof bId === 'string') {\n return aId < bId ? -1 : 1;\n }\n }\n\n return 0;\n}\n\nfunction isActiveStatus(\n status: (Hcs26VersionRegister | Hcs26VersionRegisterLegacy)['status'],\n): boolean {\n return !status || status === 'active';\n}\n\nfunction normalizeUidString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction resolveSequenceNumber(\n primary: unknown,\n fallback: unknown,\n): number | null {\n if (typeof primary === 'number') {\n return primary;\n }\n if (typeof fallback === 'number') {\n return fallback;\n }\n return null;\n}\n\nfunction parseSequenceFromUid(uid: string): number | null {\n if (!/^\\d+$/.test(uid)) {\n return null;\n }\n const parsed = Number(uid);\n return Number.isSafeInteger(parsed) ? parsed : null;\n}\n\nfunction ensureNonEmptyString(value: unknown, field: string): string {\n if (typeof value !== 'string') {\n throw new Error(`Expected ${field} to be a string`);\n }\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error(`Expected ${field} to be a non-empty string`);\n }\n return trimmed;\n}\n\ntype NormalizedDiscoveryRegister = {\n p: 'hcs-26';\n op: 'register';\n t_id: string;\n account_id: string;\n metadata: Record<string, unknown>;\n m?: string;\n sequence_number?: number;\n};\n\ntype NormalizedDiscoveryRegisterRaw = Omit<\n NormalizedDiscoveryRegister,\n 'metadata'\n> & {\n metadata: Record<string, unknown> | string;\n};\n\nfunction mergeDiscoveryMetadata(\n base: Record<string, unknown>,\n update?: Record<string, unknown>,\n): Record<string, unknown> {\n if (!update) {\n return base;\n }\n return { ...base, ...update };\n}\n\nfunction normalizeDiscoveryRegister(\n input: Hcs26DiscoveryRegister | Hcs26DiscoveryRegisterLegacy,\n messageSequenceNumber?: number,\n): NormalizedDiscoveryRegisterRaw {\n const seq =\n typeof input.sequence_number === 'number'\n ? input.sequence_number\n : typeof messageSequenceNumber === 'number'\n ? messageSequenceNumber\n : undefined;\n\n if ('t_id' in input) {\n return {\n p: 'hcs-26',\n op: 'register',\n t_id: ensureNonEmptyString(input.t_id, 't_id'),\n account_id: ensureNonEmptyString(input.account_id, 'account_id'),\n metadata: input.metadata,\n ...(input.m ? { m: input.m } : {}),\n ...(typeof seq === 'number' ? { sequence_number: seq } : {}),\n };\n }\n\n return {\n p: 'hcs-26',\n op: 'register',\n t_id: ensureNonEmptyString(input.version_registry, 'version_registry'),\n account_id: ensureNonEmptyString(input.publisher, 'publisher'),\n metadata: input.metadata,\n ...(input.m ? { m: input.m } : {}),\n ...(typeof seq === 'number' ? { sequence_number: seq } : {}),\n };\n}\n\nexport class Hcs26SkillRegistryResolver {\n private readonly logger: ILogger;\n private readonly mirrorNode: HederaMirrorNode;\n private readonly hrlResolver: HRLResolver;\n private readonly network: HCS26Network;\n\n constructor(deps: Hcs26ResolverDeps) {\n this.network = deps.network;\n this.logger =\n deps.logger ??\n Logger.getInstance({\n module: 'HCS26Resolver',\n level: 'info',\n });\n this.mirrorNode = new HederaMirrorNode(\n deps.network,\n this.logger,\n deps.mirrorNode,\n );\n this.hrlResolver = new HRLResolver('warn');\n }\n\n private async resolveDiscoveryMetadataHrl(\n metadataHrl: string,\n mode: 'full' | 'patch',\n ): Promise<Record<string, unknown>> {\n const resolved = await this.hrlResolver.resolve(metadataHrl, {\n network: this.network,\n returnRaw: true,\n });\n\n const bytes =\n resolved.content instanceof ArrayBuffer\n ? Buffer.from(resolved.content)\n : Buffer.from(String(resolved.content), 'utf8');\n\n let raw: unknown;\n try {\n raw = JSON.parse(bytes.toString('utf8'));\n } catch {\n throw new Error('Discovery metadata HRL content is not valid JSON');\n }\n\n const schema =\n mode === 'full'\n ? hcs26DiscoveryMetadataSchema\n : hcs26DiscoveryMetadataPatchSchema;\n const parsed = schema.safeParse(raw);\n if (!parsed.success) {\n throw new Error(`Invalid discovery metadata: ${parsed.error.message}`);\n }\n return this.normalizeDiscoveryMetadataObject(\n parsed.data as unknown as Record<string, unknown>,\n );\n }\n\n private normalizeDiscoveryMetadataObject(\n metadata: Record<string, unknown>,\n ): Record<string, unknown> {\n if (\n typeof metadata.icon !== 'string' ||\n metadata.icon.trim().length === 0\n ) {\n const iconLegacy = metadata.icon_hcs1;\n if (typeof iconLegacy === 'string' && iconLegacy.trim().length > 0) {\n return { ...metadata, icon: iconLegacy };\n }\n }\n return metadata;\n }\n\n private async resolveDiscoveryMetadataUri(\n metadataUri: string,\n mode: 'full' | 'patch',\n ): Promise<Record<string, unknown>> {\n const trimmed = metadataUri.trim();\n if (trimmed.startsWith('hcs://1/')) {\n return this.resolveDiscoveryMetadataHrl(trimmed, mode);\n }\n throw new Error(`Unsupported discovery metadata URI: ${trimmed}`);\n }\n\n private resolveDiscoveryMetadataObject(params: {\n metadata: unknown;\n mode: 'full' | 'patch';\n }): Promise<Record<string, unknown>> {\n if (typeof params.metadata === 'string') {\n return this.resolveDiscoveryMetadataUri(params.metadata, params.mode);\n }\n\n const schema =\n params.mode === 'full'\n ? hcs26DiscoveryMetadataSchema\n : hcs26DiscoveryMetadataPatchSchema;\n const parsed = schema.safeParse(params.metadata);\n if (!parsed.success) {\n throw new Error(`Invalid discovery metadata: ${parsed.error.message}`);\n }\n return Promise.resolve(\n this.normalizeDiscoveryMetadataObject(\n parsed.data as unknown as Record<string, unknown>,\n ),\n );\n }\n\n async getDiscoveryRegister(params: {\n directoryTopicId: string;\n skillUid: number;\n }): Promise<NormalizedDiscoveryRegister | null> {\n const messages = await this.mirrorNode.getTopicMessages(\n params.directoryTopicId,\n {\n sequenceNumber: `eq:${params.skillUid}`,\n limit: 5,\n order: 'asc',\n },\n );\n\n for (const message of messages) {\n const parsedNew = hcs26DiscoveryRegisterSchema.safeParse(message);\n const parsedLegacy = parsedNew.success\n ? null\n : hcs26DiscoveryRegisterLegacySchema.safeParse(message);\n const parsed = parsedNew.success\n ? parsedNew\n : parsedLegacy && parsedLegacy.success\n ? parsedLegacy\n : null;\n if (!parsed) {\n continue;\n }\n\n const normalized = normalizeDiscoveryRegister(\n parsed.data as Hcs26DiscoveryRegister | Hcs26DiscoveryRegisterLegacy,\n message.sequence_number,\n );\n const seq = normalized.sequence_number;\n if (typeof seq === 'number' && seq === params.skillUid) {\n const metadata = await this.resolveDiscoveryMetadataObject({\n metadata: normalized.metadata,\n mode: 'full',\n });\n return { ...normalized, metadata };\n }\n }\n\n return null;\n }\n\n async resolveDiscoveryRecord(params: {\n directoryTopicId: string;\n skillUid: number;\n scanLimit?: number;\n }): Promise<NormalizedDiscoveryRegister | null> {\n const register = await this.getDiscoveryRegister({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n });\n if (!register) {\n return null;\n }\n\n const scanLimit =\n typeof params.scanLimit === 'number' && params.scanLimit > 0\n ? Math.min(5000, Math.floor(params.scanLimit))\n : 1000;\n\n const messages = await this.mirrorNode.getTopicMessages(\n params.directoryTopicId,\n {\n limit: scanLimit,\n order: 'asc',\n },\n );\n\n const uid = String(params.skillUid);\n const registerSequence = resolveSequenceNumber(\n register.sequence_number,\n params.skillUid,\n );\n\n let current: NormalizedDiscoveryRegister = register;\n for (const message of messages) {\n const messageSequence = resolveSequenceNumber(\n undefined,\n message.sequence_number,\n );\n const deleteParsed = hcs26DiscoveryDeleteSchema.safeParse(message);\n if (deleteParsed.success && deleteParsed.data.uid === uid) {\n const deleteSequence = resolveSequenceNumber(\n deleteParsed.data.sequence_number,\n messageSequence,\n );\n if (\n registerSequence !== null &&\n deleteSequence !== null &&\n deleteSequence <= registerSequence\n ) {\n continue;\n }\n return null;\n }\n\n const updateParsedNew = hcs26DiscoveryUpdateSchema.safeParse(message);\n const updateParsedLegacy = updateParsedNew.success\n ? null\n : hcs26DiscoveryUpdateLegacySchema.safeParse(message);\n const updateParsed = updateParsedNew.success\n ? updateParsedNew\n : updateParsedLegacy && updateParsedLegacy.success\n ? updateParsedLegacy\n : null;\n if (!updateParsed || updateParsed.data.uid !== uid) {\n continue;\n }\n const updateSequence = resolveSequenceNumber(\n updateParsed.data.sequence_number,\n messageSequence,\n );\n if (\n registerSequence !== null &&\n updateSequence !== null &&\n updateSequence <= registerSequence\n ) {\n continue;\n }\n\n const nextAccountId =\n 'account_id' in updateParsed.data\n ? normalizeUidString(updateParsed.data.account_id)\n : normalizeUidString(updateParsed.data.publisher);\n const nextMetadataRaw = updateParsed.data.metadata;\n const nextMetadata =\n nextMetadataRaw !== undefined\n ? await this.resolveDiscoveryMetadataObject({\n metadata: nextMetadataRaw,\n mode: 'patch',\n })\n : undefined;\n current = {\n ...current,\n ...(nextAccountId ? { account_id: nextAccountId } : {}),\n metadata: mergeDiscoveryMetadata(current.metadata, nextMetadata),\n };\n }\n\n return current;\n }\n\n async listVersionRegisters(params: {\n versionRegistryTopicId: string;\n skillUid: number;\n limit?: number;\n }): Promise<Array<Hcs26VersionRegister | Hcs26VersionRegisterLegacy>> {\n const limit =\n typeof params.limit === 'number' && params.limit > 0\n ? Math.min(1000, params.limit)\n : 500;\n const messages = await this.mirrorNode.getTopicMessages(\n params.versionRegistryTopicId,\n {\n limit,\n order: 'desc',\n },\n );\n\n const registersByUid = new Map<\n string,\n {\n register: Hcs26VersionRegister | Hcs26VersionRegisterLegacy;\n sequenceNumber: number | null;\n }\n >();\n const updatesByUid = new Map<\n string,\n Array<{ update: Hcs26VersionUpdate; sequenceNumber: number | null }>\n >();\n const deletedByUid = new Map<string, number[]>();\n\n for (const message of messages) {\n const parsedNew = hcs26VersionRegisterSchema.safeParse(message);\n const parsedLegacy = parsedNew.success\n ? null\n : hcs26VersionRegisterLegacySchema.safeParse(message);\n const registerParsed = parsedNew.success\n ? parsedNew\n : parsedLegacy && parsedLegacy.success\n ? parsedLegacy\n : null;\n\n if (registerParsed) {\n if (registerParsed.data.skill_uid !== params.skillUid) {\n continue;\n }\n const uid =\n typeof registerParsed.data.sequence_number === 'number'\n ? String(registerParsed.data.sequence_number)\n : typeof message.sequence_number === 'number'\n ? String(message.sequence_number)\n : null;\n if (uid) {\n const registerSequence = resolveSequenceNumber(\n registerParsed.data.sequence_number,\n message.sequence_number,\n );\n registersByUid.set(uid, {\n register: registerParsed.data as\n | Hcs26VersionRegister\n | Hcs26VersionRegisterLegacy,\n sequenceNumber: registerSequence,\n });\n }\n continue;\n }\n\n const updateParsed = hcs26VersionUpdateSchema.safeParse(message);\n if (updateParsed.success) {\n const uid = updateParsed.data.uid.trim();\n const list = updatesByUid.get(uid) ?? [];\n list.push({\n update: updateParsed.data,\n sequenceNumber: resolveSequenceNumber(\n updateParsed.data.sequence_number,\n message.sequence_number,\n ),\n });\n updatesByUid.set(uid, list);\n continue;\n }\n\n const deleteParsed = hcs26VersionDeleteSchema.safeParse(message);\n if (deleteParsed.success) {\n const uid = deleteParsed.data.uid.trim();\n const list = deletedByUid.get(uid) ?? [];\n const sequenceNumber = resolveSequenceNumber(\n deleteParsed.data.sequence_number,\n message.sequence_number,\n );\n if (sequenceNumber !== null) {\n list.push(sequenceNumber);\n deletedByUid.set(uid, list);\n }\n }\n }\n\n const entries: Array<Hcs26VersionRegister | Hcs26VersionRegisterLegacy> =\n [];\n for (const [uid, registerState] of registersByUid.entries()) {\n const registerSequence =\n registerState.sequenceNumber ?? parseSequenceFromUid(uid);\n const deleteSequences = deletedByUid.get(uid) ?? [];\n const hasDeleteAfterRegister = deleteSequences.some(sequence =>\n registerSequence === null ? true : sequence > registerSequence,\n );\n if (hasDeleteAfterRegister) {\n continue;\n }\n\n const updates = updatesByUid.get(uid);\n if (!updates || updates.length === 0) {\n entries.push(registerState.register);\n continue;\n }\n\n const sorted = [...updates]\n .filter(update =>\n registerSequence === null\n ? true\n : update.sequenceNumber !== null &&\n update.sequenceNumber > registerSequence,\n )\n .sort((a, b) => {\n const aSeq = a.sequenceNumber ?? 0;\n const bSeq = b.sequenceNumber ?? 0;\n return aSeq - bSeq;\n });\n if (sorted.length === 0) {\n entries.push(registerState.register);\n continue;\n }\n\n const final = sorted.reduce<\n Hcs26VersionRegister | Hcs26VersionRegisterLegacy\n >((acc, updateState) => {\n if (updateState.update.status) {\n return { ...acc, status: updateState.update.status };\n }\n return acc;\n }, registerState.register);\n entries.push(final);\n }\n\n return entries;\n }\n\n async getLatestVersionRegister(params: {\n versionRegistryTopicId: string;\n skillUid: number;\n }): Promise<(Hcs26VersionRegister | Hcs26VersionRegisterLegacy) | null> {\n const entries = await this.listVersionRegisters({\n versionRegistryTopicId: params.versionRegistryTopicId,\n skillUid: params.skillUid,\n limit: 100,\n });\n const active = entries.filter(entry => isActiveStatus(entry.status));\n if (active.length === 0) {\n return null;\n }\n\n let best = active[0];\n let bestParsed = parseSemver(best.version);\n\n for (let index = 1; index < active.length; index += 1) {\n const candidate = active[index];\n const candidateParsed = parseSemver(candidate.version);\n\n if (!bestParsed && candidateParsed) {\n best = candidate;\n bestParsed = candidateParsed;\n continue;\n }\n\n if (bestParsed && candidateParsed) {\n const cmp = compareSemver(candidateParsed, bestParsed);\n if (cmp > 0) {\n best = candidate;\n bestParsed = candidateParsed;\n continue;\n }\n\n if (cmp === 0) {\n const bestSeq =\n typeof best.sequence_number === 'number' ? best.sequence_number : 0;\n const candSeq =\n typeof candidate.sequence_number === 'number'\n ? candidate.sequence_number\n : 0;\n if (candSeq > bestSeq) {\n best = candidate;\n bestParsed = candidateParsed;\n }\n }\n }\n }\n\n return best;\n }\n\n async resolveManifest(params: {\n manifestHrl?: string;\n manifestTopicId?: string;\n }): Promise<{\n manifest: Hcs26SkillManifest;\n raw: unknown;\n sha256Hex: string;\n }> {\n const manifestHrl =\n typeof params.manifestHrl === 'string' &&\n params.manifestHrl.trim().length > 0\n ? params.manifestHrl.trim()\n : typeof params.manifestTopicId === 'string' &&\n params.manifestTopicId.trim().length > 0\n ? `hcs://1/${params.manifestTopicId.trim()}`\n : null;\n if (!manifestHrl) {\n throw new Error('Manifest HRL or topic id is required');\n }\n\n const resolved = await this.hrlResolver.resolve(manifestHrl, {\n network: this.network,\n returnRaw: true,\n });\n\n const contentType = resolved.contentType ?? '';\n if (!contentType.toLowerCase().startsWith('application/json')) {\n throw new Error(\n `Expected application/json for manifest, got ${resolved.contentType ?? 'unknown'}`,\n );\n }\n\n const bytes =\n resolved.content instanceof ArrayBuffer\n ? Buffer.from(resolved.content)\n : Buffer.from(String(resolved.content), 'utf8');\n\n const sha256Hex = await hash(bytes, 'sha256');\n\n let raw: unknown;\n try {\n raw = JSON.parse(bytes.toString('utf8'));\n } catch {\n throw new Error('Manifest content is not valid JSON');\n }\n\n const parsed = hcs26SkillManifestSchema.safeParse(raw);\n if (!parsed.success) {\n throw new Error(`Invalid HCS-26 manifest: ${parsed.error.message}`);\n }\n\n const hasSkillMd = parsed.data.files.some(file => file.path === 'SKILL.md');\n if (!hasSkillMd) {\n throw new Error(\n 'HCS-26 manifest must include SKILL.md at path \"SKILL.md\"',\n );\n }\n\n return { manifest: parsed.data, raw, sha256Hex };\n }\n\n async verifyVersionRegisterMatchesManifest(params: {\n versionRegister: Hcs26VersionRegister | Hcs26VersionRegisterLegacy;\n manifestSha256Hex: string;\n }): Promise<void> {\n const checksumRaw = params.versionRegister.checksum;\n if (!checksumRaw) {\n this.logger.warn(\n 'HCS-26 version register is missing checksum; skipping manifest verification.',\n );\n return;\n }\n\n const checksum = checksumRaw.trim();\n if (!checksum.startsWith('sha256:')) {\n throw new Error(`Unsupported checksum: ${checksum}`);\n }\n const expectedHex = checksum.slice('sha256:'.length);\n if (params.manifestSha256Hex !== expectedHex) {\n throw new Error(\n `Manifest checksum mismatch (expected ${expectedHex}, got ${params.manifestSha256Hex})`,\n );\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,32 +1,108 @@
1
- import { Logger } from "./standards-sdk.es118.js";
2
- function createLoggerAdapter(iLogger) {
3
- const adapter = Object.create(Logger.prototype);
4
- adapter.debug = (...args) => iLogger.debug(...args);
5
- adapter.info = (...args) => iLogger.info(...args);
6
- adapter.warn = (...args) => iLogger.warn(...args);
7
- adapter.error = (...args) => iLogger.error(...args);
8
- adapter.trace = (...args) => iLogger.trace(...args);
9
- adapter.setLogLevel = (level) => iLogger.setLogLevel(level);
10
- adapter.getLevel = () => iLogger.getLevel();
11
- adapter.setSilent = (silent) => iLogger.setSilent(silent);
12
- adapter.setModule = (module) => iLogger.setModule(module);
13
- adapter.logger = { level: iLogger.getLevel() };
14
- adapter.moduleContext = "";
15
- adapter.formatArgs = () => ({ msg: "" });
16
- return adapter;
1
+ import { z } from "zod";
2
+ import { hcs26TopicTypeEnumSchema, HCS26_PROTOCOL, hcs26OperationEnumSchema } from "./standards-sdk.es117.js";
3
+ const HCS26_DEFAULT_TTL_SECONDS = 86400;
4
+ function toPositiveInt(value) {
5
+ if (!Number.isFinite(value)) {
6
+ throw new Error("Expected a finite number");
7
+ }
8
+ const intValue = Math.floor(value);
9
+ if (intValue <= 0) {
10
+ throw new Error("Expected a positive integer");
11
+ }
12
+ return intValue;
17
13
  }
18
- function isConcreteLogger(logger) {
19
- return logger instanceof Logger;
14
+ function buildHcs26TopicMemo(input) {
15
+ const indexed = input.indexed ?? true;
16
+ const ttlSeconds = toPositiveInt(
17
+ input.ttlSeconds ?? HCS26_DEFAULT_TTL_SECONDS
18
+ );
19
+ const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);
20
+ const indexedSegment = indexed ? "0" : "1";
21
+ return `${HCS26_PROTOCOL}:${indexedSegment}:${ttlSeconds}:${topicType}`;
20
22
  }
21
- function ensureLoggerType(logger) {
22
- if (isConcreteLogger(logger)) {
23
- return logger;
23
+ function parseHcs26TopicMemo(memoRaw) {
24
+ const memo = memoRaw.trim();
25
+ if (!memo) {
26
+ return null;
27
+ }
28
+ const match = memo.match(/^hcs-26:(\d+):(\d+):(\d+)$/);
29
+ if (!match) {
30
+ return null;
31
+ }
32
+ const indexedSegment = Number(match[1]);
33
+ const ttlSeconds = Number(match[2]);
34
+ const topicType = Number(match[3]);
35
+ if (![indexedSegment, ttlSeconds, topicType].every(Number.isFinite)) {
36
+ return null;
24
37
  }
25
- return createLoggerAdapter(logger);
38
+ const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);
39
+ if (!parsedTopicType.success) {
40
+ return null;
41
+ }
42
+ if (indexedSegment !== 0 && indexedSegment !== 1) {
43
+ return null;
44
+ }
45
+ return {
46
+ protocol: HCS26_PROTOCOL,
47
+ indexed: indexedSegment === 0,
48
+ ttlSeconds,
49
+ topicType: parsedTopicType.data
50
+ };
26
51
  }
52
+ function buildHcs26TransactionMemo(input) {
53
+ const operation = hcs26OperationEnumSchema.parse(input.operation);
54
+ const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);
55
+ return `${HCS26_PROTOCOL}:op:${operation}:${topicType}`;
56
+ }
57
+ function parseHcs26TransactionMemo(memoRaw) {
58
+ const memo = memoRaw.trim();
59
+ if (!memo) {
60
+ return null;
61
+ }
62
+ const match = memo.match(/^hcs-26:op:(\d+):(\d+)$/);
63
+ if (!match) {
64
+ return null;
65
+ }
66
+ const operation = Number(match[1]);
67
+ const topicType = Number(match[2]);
68
+ if (![operation, topicType].every(Number.isFinite)) {
69
+ return null;
70
+ }
71
+ const parsedOperation = hcs26OperationEnumSchema.safeParse(operation);
72
+ if (!parsedOperation.success) {
73
+ return null;
74
+ }
75
+ const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);
76
+ if (!parsedTopicType.success) {
77
+ return null;
78
+ }
79
+ return {
80
+ protocol: HCS26_PROTOCOL,
81
+ operation: parsedOperation.data,
82
+ topicType: parsedTopicType.data
83
+ };
84
+ }
85
+ const hcs26TopicMemoSchema = z.string().transform((value) => {
86
+ const parsed = parseHcs26TopicMemo(value);
87
+ if (!parsed) {
88
+ throw new Error("Invalid HCS-26 topic memo");
89
+ }
90
+ return parsed;
91
+ });
92
+ const hcs26TransactionMemoSchema = z.string().transform((value) => {
93
+ const parsed = parseHcs26TransactionMemo(value);
94
+ if (!parsed) {
95
+ throw new Error("Invalid HCS-26 transaction memo");
96
+ }
97
+ return parsed;
98
+ });
27
99
  export {
28
- createLoggerAdapter,
29
- ensureLoggerType,
30
- isConcreteLogger
100
+ HCS26_DEFAULT_TTL_SECONDS,
101
+ buildHcs26TopicMemo,
102
+ buildHcs26TransactionMemo,
103
+ hcs26TopicMemoSchema,
104
+ hcs26TransactionMemoSchema,
105
+ parseHcs26TopicMemo,
106
+ parseHcs26TransactionMemo
31
107
  };
32
108
  //# sourceMappingURL=standards-sdk.es119.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es119.js","sources":["../../src/utils/logger-adapter.ts"],"sourcesContent":["import { Logger, ILogger } from './logger';\n\n/**\n * Creates a Logger instance that wraps an ILogger implementation\n * This is needed for compatibility with external libraries that expect the concrete Logger type\n */\nexport function createLoggerAdapter(iLogger: ILogger): Logger {\n const adapter = Object.create(Logger.prototype);\n\n adapter.debug = (...args: any[]) => iLogger.debug(...args);\n adapter.info = (...args: any[]) => iLogger.info(...args);\n adapter.warn = (...args: any[]) => iLogger.warn(...args);\n adapter.error = (...args: any[]) => iLogger.error(...args);\n adapter.trace = (...args: any[]) => iLogger.trace(...args);\n adapter.setLogLevel = (level: any) => iLogger.setLogLevel(level);\n adapter.getLevel = () => iLogger.getLevel();\n adapter.setSilent = (silent: boolean) => iLogger.setSilent(silent);\n adapter.setModule = (module: string) => iLogger.setModule(module);\n\n adapter.logger = { level: iLogger.getLevel() };\n adapter.moduleContext = '';\n adapter.formatArgs = () => ({ msg: '' });\n\n return adapter as Logger;\n}\n\n/**\n * Type guard to check if a logger is the concrete Logger type\n */\nexport function isConcreteLogger(logger: ILogger | Logger): logger is Logger {\n return logger instanceof Logger;\n}\n\n/**\n * Gets a Logger-compatible instance from an ILogger\n * If the ILogger is already a Logger, returns it as-is\n * Otherwise, creates an adapter\n */\nexport function ensureLoggerType(logger: ILogger): Logger {\n if (isConcreteLogger(logger)) {\n return logger;\n }\n return createLoggerAdapter(logger);\n}\n"],"names":[],"mappings":";AAMO,SAAS,oBAAoB,SAA0B;AAC5D,QAAM,UAAU,OAAO,OAAO,OAAO,SAAS;AAE9C,UAAQ,QAAQ,IAAI,SAAgB,QAAQ,MAAM,GAAG,IAAI;AACzD,UAAQ,OAAO,IAAI,SAAgB,QAAQ,KAAK,GAAG,IAAI;AACvD,UAAQ,OAAO,IAAI,SAAgB,QAAQ,KAAK,GAAG,IAAI;AACvD,UAAQ,QAAQ,IAAI,SAAgB,QAAQ,MAAM,GAAG,IAAI;AACzD,UAAQ,QAAQ,IAAI,SAAgB,QAAQ,MAAM,GAAG,IAAI;AACzD,UAAQ,cAAc,CAAC,UAAe,QAAQ,YAAY,KAAK;AAC/D,UAAQ,WAAW,MAAM,QAAQ,SAAA;AACjC,UAAQ,YAAY,CAAC,WAAoB,QAAQ,UAAU,MAAM;AACjE,UAAQ,YAAY,CAAC,WAAmB,QAAQ,UAAU,MAAM;AAEhE,UAAQ,SAAS,EAAE,OAAO,QAAQ,WAAS;AAC3C,UAAQ,gBAAgB;AACxB,UAAQ,aAAa,OAAO,EAAE,KAAK,GAAA;AAEnC,SAAO;AACT;AAKO,SAAS,iBAAiB,QAA4C;AAC3E,SAAO,kBAAkB;AAC3B;AAOO,SAAS,iBAAiB,QAAyB;AACxD,MAAI,iBAAiB,MAAM,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,SAAO,oBAAoB,MAAM;AACnC;"}
1
+ {"version":3,"file":"standards-sdk.es119.js","sources":["../../src/hcs-26/memos.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n HCS26_PROTOCOL,\n hcs26OperationEnumSchema,\n hcs26TopicTypeEnumSchema,\n type Hcs26OperationEnum,\n type Hcs26TopicTypeEnum,\n} from './types';\n\nexport type Hcs26TopicMemo = {\n protocol: typeof HCS26_PROTOCOL;\n indexed: boolean;\n ttlSeconds: number;\n topicType: Hcs26TopicTypeEnum;\n};\n\nexport const HCS26_DEFAULT_TTL_SECONDS = 86400;\n\nfunction toPositiveInt(value: number): number {\n if (!Number.isFinite(value)) {\n throw new Error('Expected a finite number');\n }\n const intValue = Math.floor(value);\n if (intValue <= 0) {\n throw new Error('Expected a positive integer');\n }\n return intValue;\n}\n\nexport function buildHcs26TopicMemo(input: {\n indexed?: boolean;\n ttlSeconds?: number;\n topicType: Hcs26TopicTypeEnum;\n}): string {\n const indexed = input.indexed ?? true;\n const ttlSeconds = toPositiveInt(\n input.ttlSeconds ?? HCS26_DEFAULT_TTL_SECONDS,\n );\n const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);\n\n // HCS-2 memo convention: indexed topics use \"0\" in the second segment.\n const indexedSegment = indexed ? '0' : '1';\n return `${HCS26_PROTOCOL}:${indexedSegment}:${ttlSeconds}:${topicType}`;\n}\n\nexport function parseHcs26TopicMemo(memoRaw: string): Hcs26TopicMemo | null {\n const memo = memoRaw.trim();\n if (!memo) {\n return null;\n }\n\n const match = memo.match(/^hcs-26:(\\d+):(\\d+):(\\d+)$/);\n if (!match) {\n return null;\n }\n\n const indexedSegment = Number(match[1]);\n const ttlSeconds = Number(match[2]);\n const topicType = Number(match[3]);\n\n if (![indexedSegment, ttlSeconds, topicType].every(Number.isFinite)) {\n return null;\n }\n\n const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);\n if (!parsedTopicType.success) {\n return null;\n }\n\n if (indexedSegment !== 0 && indexedSegment !== 1) {\n return null;\n }\n\n return {\n protocol: HCS26_PROTOCOL,\n indexed: indexedSegment === 0,\n ttlSeconds,\n topicType: parsedTopicType.data,\n };\n}\n\nexport function buildHcs26TransactionMemo(input: {\n operation: Hcs26OperationEnum;\n topicType: Hcs26TopicTypeEnum;\n}): string {\n const operation = hcs26OperationEnumSchema.parse(input.operation);\n const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);\n return `${HCS26_PROTOCOL}:op:${operation}:${topicType}`;\n}\n\nexport type Hcs26TransactionMemo = {\n protocol: typeof HCS26_PROTOCOL;\n operation: Hcs26OperationEnum;\n topicType: Hcs26TopicTypeEnum;\n};\n\nexport function parseHcs26TransactionMemo(\n memoRaw: string,\n): Hcs26TransactionMemo | null {\n const memo = memoRaw.trim();\n if (!memo) {\n return null;\n }\n\n const match = memo.match(/^hcs-26:op:(\\d+):(\\d+)$/);\n if (!match) {\n return null;\n }\n\n const operation = Number(match[1]);\n const topicType = Number(match[2]);\n if (![operation, topicType].every(Number.isFinite)) {\n return null;\n }\n\n const parsedOperation = hcs26OperationEnumSchema.safeParse(operation);\n if (!parsedOperation.success) {\n return null;\n }\n const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);\n if (!parsedTopicType.success) {\n return null;\n }\n\n return {\n protocol: HCS26_PROTOCOL,\n operation: parsedOperation.data,\n topicType: parsedTopicType.data,\n };\n}\n\nexport const hcs26TopicMemoSchema = z.string().transform(value => {\n const parsed = parseHcs26TopicMemo(value);\n if (!parsed) {\n throw new Error('Invalid HCS-26 topic memo');\n }\n return parsed;\n});\n\nexport const hcs26TransactionMemoSchema = z.string().transform(value => {\n const parsed = parseHcs26TransactionMemo(value);\n if (!parsed) {\n throw new Error('Invalid HCS-26 transaction memo');\n }\n return parsed;\n});\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es154.js";
1
+ import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es159.js";
2
2
  import { HCS7ConfigType, HCS7Operation } from "./standards-sdk.es8.js";
3
3
  function buildHcs7CreateRegistryTx(params) {
4
4
  const memo = `hcs-7:indexed:${params.ttl}`;
@@ -1,25 +1,163 @@
1
- import { HederaMirrorNode } from "./standards-sdk.es139.js";
2
- async function accountIdsToExemptKeys(accountIds, network, logger) {
3
- const mirrorNode = new HederaMirrorNode(
4
- network,
5
- logger
6
- );
7
- const exemptKeys = [];
8
- for (const accountId of accountIds) {
9
- try {
10
- const publicKey = await mirrorNode.getPublicKey(accountId);
11
- exemptKeys.push(publicKey);
12
- } catch (error) {
13
- if (logger) {
14
- logger.warn(
15
- `Could not get public key for account ${accountId}: ${error}`
1
+ import { Logger } from "./standards-sdk.es123.js";
2
+ import { Hcs26SkillRegistryResolver } from "./standards-sdk.es118.js";
3
+ function getManifestTopicId(entry) {
4
+ const topicIdCandidate = entry.t_id;
5
+ if (typeof topicIdCandidate === "string" && topicIdCandidate.trim()) {
6
+ return topicIdCandidate.trim();
7
+ }
8
+ const hrlCandidate = entry.manifest_hcs1;
9
+ if (typeof hrlCandidate !== "string" || !hrlCandidate.trim()) {
10
+ throw new Error("Missing manifest reference in version register entry");
11
+ }
12
+ const hrl = hrlCandidate.trim();
13
+ const prefix = "hcs://1/";
14
+ if (!hrl.startsWith(prefix)) {
15
+ throw new Error(`Invalid manifest HRL: ${hrl}`);
16
+ }
17
+ return hrl.slice(prefix.length);
18
+ }
19
+ class HCS26BaseClient {
20
+ constructor(config) {
21
+ this.network = config.network;
22
+ this.logger = config.logger ?? Logger.getInstance({
23
+ module: "HCS26Client",
24
+ level: "info"
25
+ });
26
+ this.verificationProvider = config.verificationProvider;
27
+ this.resolver = new Hcs26SkillRegistryResolver({
28
+ network: this.network,
29
+ logger: this.logger,
30
+ mirrorNode: config.mirrorNode
31
+ });
32
+ }
33
+ async resolveSkill(params) {
34
+ const discovery = await this.resolver.resolveDiscoveryRecord({
35
+ directoryTopicId: params.directoryTopicId,
36
+ skillUid: params.skillUid,
37
+ scanLimit: params.discoveryScanLimit
38
+ });
39
+ if (!discovery) {
40
+ return null;
41
+ }
42
+ const versionRegistryTopicId = discovery.t_id;
43
+ const latestVersion = await this.resolver.getLatestVersionRegister({
44
+ versionRegistryTopicId,
45
+ skillUid: params.skillUid
46
+ });
47
+ if (!latestVersion) {
48
+ throw new Error(
49
+ `No active version entries found for skill ${params.skillUid} in version registry ${versionRegistryTopicId}`
50
+ );
51
+ }
52
+ const manifestTopicId = getManifestTopicId(latestVersion);
53
+ const { manifest, sha256Hex } = await this.resolver.resolveManifest({
54
+ manifestTopicId
55
+ });
56
+ await this.resolver.verifyVersionRegisterMatchesManifest({
57
+ versionRegister: latestVersion,
58
+ manifestSha256Hex: sha256Hex
59
+ });
60
+ let verification;
61
+ const provider = this.verificationProvider;
62
+ const includeVerification = params.includeVerification === true;
63
+ const name = typeof discovery.metadata?.name === "string" ? discovery.metadata.name.trim() : "";
64
+ if (includeVerification && provider && name) {
65
+ try {
66
+ verification = await provider.getSkillVerificationStatus({ name });
67
+ } catch (error) {
68
+ const detail = error instanceof Error ? error.message : String(error);
69
+ this.logger.warn(
70
+ `Failed to resolve verification status for skill "${name}": ${detail}`
71
+ );
72
+ verification = null;
73
+ }
74
+ }
75
+ return {
76
+ directoryTopicId: params.directoryTopicId,
77
+ skillUid: params.skillUid,
78
+ discovery,
79
+ versionRegistryTopicId,
80
+ latestVersion,
81
+ manifest,
82
+ manifestSha256Hex: sha256Hex,
83
+ ...includeVerification ? { verification } : {}
84
+ };
85
+ }
86
+ async listSkillVersions(params) {
87
+ const discovery = await this.resolver.resolveDiscoveryRecord({
88
+ directoryTopicId: params.directoryTopicId,
89
+ skillUid: params.skillUid,
90
+ scanLimit: params.discoveryScanLimit
91
+ });
92
+ if (!discovery) {
93
+ return [];
94
+ }
95
+ const versionRegistryTopicId = discovery.t_id;
96
+ return this.resolver.listVersionRegisters({
97
+ versionRegistryTopicId,
98
+ skillUid: params.skillUid,
99
+ limit: params.limit
100
+ });
101
+ }
102
+ async resolveSkillVersion(params) {
103
+ const versionRaw = params.version.trim();
104
+ if (!versionRaw) {
105
+ throw new Error("version is required");
106
+ }
107
+ const discovery = await this.resolver.resolveDiscoveryRecord({
108
+ directoryTopicId: params.directoryTopicId,
109
+ skillUid: params.skillUid,
110
+ scanLimit: params.discoveryScanLimit
111
+ });
112
+ if (!discovery) {
113
+ return null;
114
+ }
115
+ const versionRegistryTopicId = discovery.t_id;
116
+ const entries = await this.resolver.listVersionRegisters({
117
+ versionRegistryTopicId,
118
+ skillUid: params.skillUid,
119
+ limit: 250
120
+ });
121
+ const target = entries.find((entry) => entry.version.trim() === versionRaw);
122
+ if (!target) {
123
+ return null;
124
+ }
125
+ const manifestTopicId = getManifestTopicId(target);
126
+ const { manifest, sha256Hex } = await this.resolver.resolveManifest({
127
+ manifestTopicId
128
+ });
129
+ await this.resolver.verifyVersionRegisterMatchesManifest({
130
+ versionRegister: target,
131
+ manifestSha256Hex: sha256Hex
132
+ });
133
+ let verification;
134
+ const provider = this.verificationProvider;
135
+ const includeVerification = params.includeVerification === true;
136
+ const name = typeof discovery.metadata?.name === "string" ? discovery.metadata.name.trim() : "";
137
+ if (includeVerification && provider && name) {
138
+ try {
139
+ verification = await provider.getSkillVerificationStatus({ name });
140
+ } catch (error) {
141
+ const detail = error instanceof Error ? error.message : String(error);
142
+ this.logger.warn(
143
+ `Failed to resolve verification status for skill "${name}": ${detail}`
16
144
  );
145
+ verification = null;
17
146
  }
18
147
  }
148
+ return {
149
+ directoryTopicId: params.directoryTopicId,
150
+ skillUid: params.skillUid,
151
+ discovery,
152
+ versionRegistryTopicId,
153
+ versionEntry: target,
154
+ manifest,
155
+ manifestSha256Hex: sha256Hex,
156
+ ...includeVerification ? { verification } : {}
157
+ };
19
158
  }
20
- return exemptKeys;
21
159
  }
22
160
  export {
23
- accountIdsToExemptKeys
161
+ HCS26BaseClient
24
162
  };
25
163
  //# sourceMappingURL=standards-sdk.es120.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es120.js","sources":["../../src/utils/topic-fee-utils.ts"],"sourcesContent":["import { PublicKey } from '@hashgraph/sdk';\nimport { ILogger } from './logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\n\n/**\n * Converts account IDs to public keys for fee exemption\n * @param client Hedera client instance\n * @param accountIds Array of account IDs to convert to public keys\n * @param network The network to use for retrieving public keys\n * @param logger Optional logger instance\n * @returns Array of public keys\n */\nexport async function accountIdsToExemptKeys(\n accountIds: string[],\n network: string,\n logger?: ILogger,\n): Promise<PublicKey[]> {\n const mirrorNode = new HederaMirrorNode(\n network as 'mainnet' | 'testnet',\n logger,\n );\n const exemptKeys: PublicKey[] = [];\n\n for (const accountId of accountIds) {\n try {\n const publicKey = await mirrorNode.getPublicKey(accountId);\n exemptKeys.push(publicKey);\n } catch (error) {\n if (logger) {\n logger.warn(\n `Could not get public key for account ${accountId}: ${error}`,\n );\n }\n }\n }\n\n return exemptKeys;\n}\n"],"names":[],"mappings":";AAYA,eAAsB,uBACpB,YACA,SACA,QACsB;AACtB,QAAM,aAAa,IAAI;AAAA,IACrB;AAAA,IACA;AAAA,EAAA;AAEF,QAAM,aAA0B,CAAA;AAEhC,aAAW,aAAa,YAAY;AAClC,QAAI;AACF,YAAM,YAAY,MAAM,WAAW,aAAa,SAAS;AACzD,iBAAW,KAAK,SAAS;AAAA,IAC3B,SAAS,OAAO;AACd,UAAI,QAAQ;AACV,eAAO;AAAA,UACL,wCAAwC,SAAS,KAAK,KAAK;AAAA,QAAA;AAAA,MAE/D;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;"}
1
+ {"version":3,"file":"standards-sdk.es120.js","sources":["../../src/hcs-26/base-client.ts"],"sourcesContent":["import type { ILogger } from '../utils/logger';\nimport { Logger } from '../utils/logger';\nimport type { NetworkType } from '../utils/types';\nimport type { MirrorNodeConfig } from '../services/mirror-node';\nimport { Hcs26SkillRegistryResolver } from './resolver';\nimport type {\n Hcs26SkillManifest,\n Hcs26VersionRegister,\n Hcs26VersionRegisterLegacy,\n} from './types';\n\nexport type HCS26SkillVerificationStatus = {\n name: string;\n verified: boolean;\n previouslyVerified: boolean;\n pendingRequest?: unknown;\n};\n\nexport interface HCS26SkillVerificationProvider {\n getSkillVerificationStatus(params: {\n name: string;\n }): Promise<HCS26SkillVerificationStatus | null>;\n}\n\nexport interface HCS26ClientConfig {\n network: NetworkType;\n logger?: ILogger;\n mirrorNode?: MirrorNodeConfig;\n verificationProvider?: HCS26SkillVerificationProvider;\n}\n\nexport type HCS26DiscoveryRecord = {\n p: 'hcs-26';\n op: 'register';\n t_id: string;\n account_id: string;\n metadata: Record<string, unknown>;\n m?: string;\n sequence_number?: number;\n};\n\nexport type HCS26ResolvedSkill = {\n directoryTopicId: string;\n skillUid: number;\n discovery: HCS26DiscoveryRecord;\n versionRegistryTopicId: string;\n latestVersion:\n | (Hcs26VersionRegister & { sequence_number?: number })\n | (Hcs26VersionRegisterLegacy & { sequence_number?: number });\n manifest: Hcs26SkillManifest;\n manifestSha256Hex: string;\n verification?: HCS26SkillVerificationStatus | null;\n};\n\nexport type HCS26ResolvedSkillVersion = Omit<\n HCS26ResolvedSkill,\n 'latestVersion'\n> & {\n versionEntry:\n | (Hcs26VersionRegister & { sequence_number?: number })\n | (Hcs26VersionRegisterLegacy & { sequence_number?: number });\n};\n\nfunction getManifestTopicId(\n entry: Hcs26VersionRegister | Hcs26VersionRegisterLegacy,\n): string {\n const topicIdCandidate = (entry as { t_id?: unknown }).t_id;\n if (typeof topicIdCandidate === 'string' && topicIdCandidate.trim()) {\n return topicIdCandidate.trim();\n }\n\n const hrlCandidate = (entry as { manifest_hcs1?: unknown }).manifest_hcs1;\n if (typeof hrlCandidate !== 'string' || !hrlCandidate.trim()) {\n throw new Error('Missing manifest reference in version register entry');\n }\n\n const hrl = hrlCandidate.trim();\n const prefix = 'hcs://1/';\n if (!hrl.startsWith(prefix)) {\n throw new Error(`Invalid manifest HRL: ${hrl}`);\n }\n return hrl.slice(prefix.length);\n}\n\nexport class HCS26BaseClient {\n protected readonly network: NetworkType;\n protected readonly logger: ILogger;\n protected readonly resolver: Hcs26SkillRegistryResolver;\n protected readonly verificationProvider?: HCS26SkillVerificationProvider;\n\n constructor(config: HCS26ClientConfig) {\n this.network = config.network;\n this.logger =\n config.logger ??\n Logger.getInstance({\n module: 'HCS26Client',\n level: 'info',\n });\n this.verificationProvider = config.verificationProvider;\n\n this.resolver = new Hcs26SkillRegistryResolver({\n network: this.network,\n logger: this.logger,\n mirrorNode: config.mirrorNode,\n });\n }\n\n async resolveSkill(params: {\n directoryTopicId: string;\n skillUid: number;\n discoveryScanLimit?: number;\n includeVerification?: boolean;\n }): Promise<HCS26ResolvedSkill | null> {\n const discovery = (await this.resolver.resolveDiscoveryRecord({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n scanLimit: params.discoveryScanLimit,\n })) as HCS26DiscoveryRecord | null;\n\n if (!discovery) {\n return null;\n }\n\n const versionRegistryTopicId = discovery.t_id;\n const latestVersion = await this.resolver.getLatestVersionRegister({\n versionRegistryTopicId,\n skillUid: params.skillUid,\n });\n\n if (!latestVersion) {\n throw new Error(\n `No active version entries found for skill ${params.skillUid} in version registry ${versionRegistryTopicId}`,\n );\n }\n\n const manifestTopicId = getManifestTopicId(latestVersion);\n const { manifest, sha256Hex } = await this.resolver.resolveManifest({\n manifestTopicId,\n });\n\n await this.resolver.verifyVersionRegisterMatchesManifest({\n versionRegister: latestVersion,\n manifestSha256Hex: sha256Hex,\n });\n\n let verification: HCS26SkillVerificationStatus | null | undefined;\n const provider = this.verificationProvider;\n const includeVerification = params.includeVerification === true;\n const name =\n typeof discovery.metadata?.name === 'string'\n ? discovery.metadata.name.trim()\n : '';\n\n if (includeVerification && provider && name) {\n try {\n verification = await provider.getSkillVerificationStatus({ name });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n this.logger.warn(\n `Failed to resolve verification status for skill \"${name}\": ${detail}`,\n );\n verification = null;\n }\n }\n\n return {\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n discovery,\n versionRegistryTopicId,\n latestVersion,\n manifest,\n manifestSha256Hex: sha256Hex,\n ...(includeVerification ? { verification } : {}),\n };\n }\n\n async listSkillVersions(params: {\n directoryTopicId: string;\n skillUid: number;\n discoveryScanLimit?: number;\n limit?: number;\n }): Promise<\n Array<\n | (Hcs26VersionRegister & { sequence_number?: number })\n | (Hcs26VersionRegisterLegacy & { sequence_number?: number })\n >\n > {\n const discovery = (await this.resolver.resolveDiscoveryRecord({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n scanLimit: params.discoveryScanLimit,\n })) as HCS26DiscoveryRecord | null;\n\n if (!discovery) {\n return [];\n }\n\n const versionRegistryTopicId = discovery.t_id;\n return this.resolver.listVersionRegisters({\n versionRegistryTopicId,\n skillUid: params.skillUid,\n limit: params.limit,\n });\n }\n\n async resolveSkillVersion(params: {\n directoryTopicId: string;\n skillUid: number;\n version: string;\n discoveryScanLimit?: number;\n includeVerification?: boolean;\n }): Promise<HCS26ResolvedSkillVersion | null> {\n const versionRaw = params.version.trim();\n if (!versionRaw) {\n throw new Error('version is required');\n }\n\n const discovery = (await this.resolver.resolveDiscoveryRecord({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n scanLimit: params.discoveryScanLimit,\n })) as HCS26DiscoveryRecord | null;\n\n if (!discovery) {\n return null;\n }\n\n const versionRegistryTopicId = discovery.t_id;\n const entries = await this.resolver.listVersionRegisters({\n versionRegistryTopicId,\n skillUid: params.skillUid,\n limit: 250,\n });\n\n const target = entries.find(entry => entry.version.trim() === versionRaw);\n if (!target) {\n return null;\n }\n\n const manifestTopicId = getManifestTopicId(target);\n const { manifest, sha256Hex } = await this.resolver.resolveManifest({\n manifestTopicId,\n });\n\n await this.resolver.verifyVersionRegisterMatchesManifest({\n versionRegister: target,\n manifestSha256Hex: sha256Hex,\n });\n\n let verification: HCS26SkillVerificationStatus | null | undefined;\n const provider = this.verificationProvider;\n const includeVerification = params.includeVerification === true;\n const name =\n typeof discovery.metadata?.name === 'string'\n ? discovery.metadata.name.trim()\n : '';\n\n if (includeVerification && provider && name) {\n try {\n verification = await provider.getSkillVerificationStatus({ name });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n this.logger.warn(\n `Failed to resolve verification status for skill \"${name}\": ${detail}`,\n );\n verification = null;\n }\n }\n\n return {\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n discovery,\n versionRegistryTopicId,\n versionEntry: target,\n manifest,\n manifestSha256Hex: sha256Hex,\n ...(includeVerification ? { verification } : {}),\n };\n }\n}\n"],"names":[],"mappings":";;AA+DA,SAAS,mBACP,OACQ;AACR,QAAM,mBAAoB,MAA6B;AACvD,MAAI,OAAO,qBAAqB,YAAY,iBAAiB,QAAQ;AACnE,WAAO,iBAAiB,KAAA;AAAA,EAC1B;AAEA,QAAM,eAAgB,MAAsC;AAC5D,MAAI,OAAO,iBAAiB,YAAY,CAAC,aAAa,QAAQ;AAC5D,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AAEA,QAAM,MAAM,aAAa,KAAA;AACzB,QAAM,SAAS;AACf,MAAI,CAAC,IAAI,WAAW,MAAM,GAAG;AAC3B,UAAM,IAAI,MAAM,yBAAyB,GAAG,EAAE;AAAA,EAChD;AACA,SAAO,IAAI,MAAM,OAAO,MAAM;AAChC;AAEO,MAAM,gBAAgB;AAAA,EAM3B,YAAY,QAA2B;AACrC,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UACP,OAAO,YAAY;AAAA,MACjB,QAAQ;AAAA,MACR,OAAO;AAAA,IAAA,CACR;AACH,SAAK,uBAAuB,OAAO;AAEnC,SAAK,WAAW,IAAI,2BAA2B;AAAA,MAC7C,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,YAAY,OAAO;AAAA,IAAA,CACpB;AAAA,EACH;AAAA,EAEA,MAAM,aAAa,QAKoB;AACrC,UAAM,YAAa,MAAM,KAAK,SAAS,uBAAuB;AAAA,MAC5D,kBAAkB,OAAO;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,IAAA,CACnB;AAED,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACT;AAEA,UAAM,yBAAyB,UAAU;AACzC,UAAM,gBAAgB,MAAM,KAAK,SAAS,yBAAyB;AAAA,MACjE;AAAA,MACA,UAAU,OAAO;AAAA,IAAA,CAClB;AAED,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR,6CAA6C,OAAO,QAAQ,wBAAwB,sBAAsB;AAAA,MAAA;AAAA,IAE9G;AAEA,UAAM,kBAAkB,mBAAmB,aAAa;AACxD,UAAM,EAAE,UAAU,UAAA,IAAc,MAAM,KAAK,SAAS,gBAAgB;AAAA,MAClE;AAAA,IAAA,CACD;AAED,UAAM,KAAK,SAAS,qCAAqC;AAAA,MACvD,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,IAAA,CACpB;AAED,QAAI;AACJ,UAAM,WAAW,KAAK;AACtB,UAAM,sBAAsB,OAAO,wBAAwB;AAC3D,UAAM,OACJ,OAAO,UAAU,UAAU,SAAS,WAChC,UAAU,SAAS,KAAK,KAAA,IACxB;AAEN,QAAI,uBAAuB,YAAY,MAAM;AAC3C,UAAI;AACF,uBAAe,MAAM,SAAS,2BAA2B,EAAE,MAAM;AAAA,MACnE,SAAS,OAAO;AACd,cAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACpE,aAAK,OAAO;AAAA,UACV,oDAAoD,IAAI,MAAM,MAAM;AAAA,QAAA;AAEtE,uBAAe;AAAA,MACjB;AAAA,IACF;AAEA,WAAO;AAAA,MACL,kBAAkB,OAAO;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB,GAAI,sBAAsB,EAAE,iBAAiB,CAAA;AAAA,IAAC;AAAA,EAElD;AAAA,EAEA,MAAM,kBAAkB,QAUtB;AACA,UAAM,YAAa,MAAM,KAAK,SAAS,uBAAuB;AAAA,MAC5D,kBAAkB,OAAO;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,IAAA,CACnB;AAED,QAAI,CAAC,WAAW;AACd,aAAO,CAAA;AAAA,IACT;AAEA,UAAM,yBAAyB,UAAU;AACzC,WAAO,KAAK,SAAS,qBAAqB;AAAA,MACxC;AAAA,MACA,UAAU,OAAO;AAAA,MACjB,OAAO,OAAO;AAAA,IAAA,CACf;AAAA,EACH;AAAA,EAEA,MAAM,oBAAoB,QAMoB;AAC5C,UAAM,aAAa,OAAO,QAAQ,KAAA;AAClC,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,YAAa,MAAM,KAAK,SAAS,uBAAuB;AAAA,MAC5D,kBAAkB,OAAO;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,IAAA,CACnB;AAED,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACT;AAEA,UAAM,yBAAyB,UAAU;AACzC,UAAM,UAAU,MAAM,KAAK,SAAS,qBAAqB;AAAA,MACvD;AAAA,MACA,UAAU,OAAO;AAAA,MACjB,OAAO;AAAA,IAAA,CACR;AAED,UAAM,SAAS,QAAQ,KAAK,CAAA,UAAS,MAAM,QAAQ,KAAA,MAAW,UAAU;AACxE,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AAEA,UAAM,kBAAkB,mBAAmB,MAAM;AACjD,UAAM,EAAE,UAAU,UAAA,IAAc,MAAM,KAAK,SAAS,gBAAgB;AAAA,MAClE;AAAA,IAAA,CACD;AAED,UAAM,KAAK,SAAS,qCAAqC;AAAA,MACvD,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,IAAA,CACpB;AAED,QAAI;AACJ,UAAM,WAAW,KAAK;AACtB,UAAM,sBAAsB,OAAO,wBAAwB;AAC3D,UAAM,OACJ,OAAO,UAAU,UAAU,SAAS,WAChC,UAAU,SAAS,KAAK,KAAA,IACxB;AAEN,QAAI,uBAAuB,YAAY,MAAM;AAC3C,UAAI;AACF,uBAAe,MAAM,SAAS,2BAA2B,EAAE,MAAM;AAAA,MACnE,SAAS,OAAO;AACd,cAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACpE,aAAK,OAAO;AAAA,UACV,oDAAoD,IAAI,MAAM,MAAM;AAAA,QAAA;AAEtE,uBAAe;AAAA,MACjB;AAAA,IACF;AAEA,WAAO;AAAA,MACL,kBAAkB,OAAO;AAAA,MACzB,UAAU,OAAO;AAAA,MACjB;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA,mBAAmB;AAAA,MACnB,GAAI,sBAAsB,EAAE,iBAAiB,CAAA;AAAA,IAAC;AAAA,EAElD;AACF;"}