@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.es138.js","sources":["../../src/inscribe/quote-cache.ts"],"sourcesContent":["/**\n * Performance optimization utilities for quote generation\n */\n\nimport { InscriptionSDK } from '@kiloscribe/inscription-sdk';\nimport {\n InscriptionOptions,\n QuoteResult,\n NodeHederaClientConfig,\n} from './types';\n\ninterface CacheKey {\n inputHash: string;\n clientConfigHash: string;\n optionsHash: string;\n}\n\ninterface CacheEntry {\n quote: QuoteResult;\n timestamp: number;\n ttlMs: number;\n}\n\ninterface SDKCacheEntry {\n sdk: InscriptionSDK;\n timestamp: number;\n config: string;\n}\n\n/**\n * LRU Cache for quote results to improve performance\n */\nclass QuoteCache {\n private cache = new Map<string, CacheEntry>();\n private maxSize = 100;\n private defaultTtlMs = 5 * 60 * 1000; // 5 minutes\n\n /**\n * Generate cache key from input parameters\n */\n private generateKey(key: CacheKey): string {\n return `${key.inputHash}-${key.clientConfigHash}-${key.optionsHash}`;\n }\n\n /**\n * Hash object to string for cache key\n */\n private hashObject(obj: unknown): string {\n return Buffer.from(JSON.stringify(obj)).toString('base64').slice(0, 16);\n }\n\n /**\n * Create cache key from parameters\n */\n createCacheKey(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n ): CacheKey {\n return {\n inputHash: this.hashObject(input),\n clientConfigHash: this.hashObject({\n accountId: clientConfig.accountId,\n network: clientConfig.network,\n }),\n optionsHash: this.hashObject({\n mode: options.mode,\n apiKey: options.apiKey ? 'present' : 'absent',\n network: options.network,\n metadata: options.metadata,\n }),\n };\n }\n\n /**\n * Get cached quote if available and not expired\n */\n get(key: CacheKey): QuoteResult | null {\n const cacheKey = this.generateKey(key);\n const entry = this.cache.get(cacheKey);\n\n if (!entry) {\n return null;\n }\n\n const now = Date.now();\n if (now - entry.timestamp > entry.ttlMs) {\n this.cache.delete(cacheKey);\n return null;\n }\n\n this.cache.delete(cacheKey);\n this.cache.set(cacheKey, entry);\n\n return entry.quote;\n }\n\n /**\n * Store quote in cache\n */\n set(\n key: CacheKey,\n quote: QuoteResult,\n ttlMs: number = this.defaultTtlMs,\n ): void {\n const cacheKey = this.generateKey(key);\n\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(cacheKey, {\n quote,\n timestamp: Date.now(),\n ttlMs,\n });\n }\n\n /**\n * Clear all cached entries\n */\n clear(): void {\n this.cache.clear();\n }\n}\n\n/**\n * SDK instance cache for reuse\n */\nclass SDKCache {\n private cache = new Map<string, SDKCacheEntry>();\n private maxSize = 10;\n private defaultTtlMs = 30 * 60 * 1000; // 30 minutes\n\n /**\n * Generate config key for SDK instance\n */\n private generateConfigKey(config: unknown): string {\n return Buffer.from(JSON.stringify(config)).toString('base64');\n }\n\n /**\n * Get cached SDK instance\n */\n get(config: Record<string, unknown>): InscriptionSDK | null {\n const configKey = this.generateConfigKey(config);\n const entry = this.cache.get(configKey);\n\n if (!entry) {\n return null;\n }\n\n const now = Date.now();\n if (now - entry.timestamp > this.defaultTtlMs) {\n this.cache.delete(configKey);\n return null;\n }\n\n return entry.sdk;\n }\n\n /**\n * Store SDK instance in cache\n */\n set(config: Record<string, unknown>, sdk: InscriptionSDK): void {\n const configKey = this.generateConfigKey(config);\n\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(configKey, {\n sdk,\n timestamp: Date.now(),\n config: configKey,\n });\n }\n\n /**\n * Clear all cached SDK instances\n */\n clear(): void {\n this.cache.clear();\n }\n}\n\nconst quoteCache = new QuoteCache();\nconst sdkCache = new SDKCache();\n\n/**\n * Get or create SDK instance with caching\n */\nexport async function getOrCreateSDK(\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n existingSDK?: InscriptionSDK,\n): Promise<InscriptionSDK> {\n if (existingSDK) {\n return existingSDK;\n }\n\n const connectionMode = options.connectionMode ?? 'websocket';\n\n const cacheConfig = {\n apiKey: options.apiKey,\n accountId: clientConfig.accountId,\n network: clientConfig.network || 'mainnet',\n authType: options.apiKey ? 'api' : 'server',\n connectionMode,\n };\n\n const cachedSDK = sdkCache.get(cacheConfig);\n if (cachedSDK) {\n return cachedSDK;\n }\n\n let sdk: InscriptionSDK;\n\n if (options.apiKey) {\n sdk = new InscriptionSDK({\n apiKey: options.apiKey,\n network: clientConfig.network || 'mainnet',\n connectionMode,\n });\n } else {\n sdk = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId: clientConfig.accountId,\n privateKey:\n typeof clientConfig.privateKey === 'string'\n ? clientConfig.privateKey\n : clientConfig.privateKey.toString(),\n network: clientConfig.network || 'mainnet',\n connectionMode,\n });\n }\n\n sdkCache.set(cacheConfig, sdk);\n return sdk;\n}\n\n/**\n * Check if quote is cached and return it if valid\n */\nexport function getCachedQuote(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n): QuoteResult | null {\n const cacheKey = quoteCache.createCacheKey(input, clientConfig, options);\n return quoteCache.get(cacheKey);\n}\n\n/**\n * Cache a generated quote\n */\nexport function cacheQuote(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n quote: QuoteResult,\n): void {\n const cacheKey = quoteCache.createCacheKey(input, clientConfig, options);\n const quoteTtlMs = 10 * 60 * 1000;\n quoteCache.set(cacheKey, quote, quoteTtlMs);\n}\n\n/**\n * Pre-validate parameters for early error detection\n */\nexport function validateQuoteParameters(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n): void {\n if (!input || typeof input !== 'object' || !('type' in input)) {\n throw new Error('Invalid inscription input: type is required');\n }\n\n if (!clientConfig || !clientConfig.accountId) {\n throw new Error('Invalid client config: accountId is required');\n }\n\n if (!options) {\n throw new Error('Options are required');\n }\n\n if (options.mode === 'hashinal') {\n if (!options.metadata) {\n throw new Error('Hashinal mode requires metadata');\n }\n\n const requiredFields = ['name', 'creator', 'description', 'type'];\n const missingFields = requiredFields.filter(\n field => !options.metadata || !options.metadata[field],\n );\n\n if (missingFields.length > 0) {\n throw new Error(\n `Missing required Hashinal metadata fields: ${missingFields.join(', ')}`,\n );\n }\n }\n}\n\n/**\n * Clear all caches (useful for testing or memory management)\n */\nexport function clearAllCaches(): void {\n quoteCache.clear();\n sdkCache.clear();\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es138.js","sources":["../../src/utils/parsers/hts-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { AccountId, TokenId, Long } from '@hashgraph/sdk';\nimport {\n TokenCreationData,\n TokenMintData,\n TokenBurnData,\n TokenUpdateData,\n TokenFeeScheduleUpdateData,\n TokenFreezeData,\n TokenUnfreezeData,\n TokenGrantKycData,\n TokenRevokeKycData,\n TokenPauseData,\n TokenUnpauseData,\n TokenWipeAccountData,\n TokenDeleteData,\n TokenAssociateData,\n TokenDissociateData,\n TokenAirdropData,\n CustomFeeData,\n FixedFeeData,\n FractionalFeeData,\n RoyaltyFeeData,\n} from '../transaction-parser-types';\nimport { ParsedTransaction } from '../transaction-parser-types';\nimport {\n parseKey,\n extractTransactionBody,\n hasTransactionType,\n} from './parser-utils';\nimport { Buffer } from 'buffer';\n\nimport { Transaction } from '@hashgraph/sdk';\n\nexport class HTSParser {\n /**\n * Main entry point for parsing HTS transactions from a Transaction object\n * This method bridges between the Transaction object and the protobuf parsers\n */\n static parseHTSTransaction(\n transaction: Transaction,\n ): Partial<ParsedTransaction> {\n try {\n const transactionBody = (\n transaction as unknown as { _transactionBody?: proto.ITransactionBody }\n )._transactionBody as proto.ITransactionBody | undefined;\n\n if (!transactionBody) {\n return {};\n }\n\n if (transactionBody.tokenCreation) {\n const tokenCreation = this.parseTokenCreate(\n transactionBody.tokenCreation,\n );\n if (tokenCreation) {\n return {\n type: 'TOKENCREATE',\n humanReadableType: 'Token Creation',\n tokenCreation,\n };\n }\n }\n\n if (transactionBody.tokenMint) {\n const tokenMint = this.parseTokenMint(transactionBody.tokenMint);\n if (tokenMint) {\n return {\n type: 'TOKENMINT',\n humanReadableType: 'Token Mint',\n tokenMint,\n };\n }\n }\n\n if (transactionBody.tokenBurn) {\n const tokenBurn = this.parseTokenBurn(transactionBody.tokenBurn);\n if (tokenBurn) {\n return {\n type: 'TOKENBURN',\n humanReadableType: 'Token Burn',\n tokenBurn,\n };\n }\n }\n\n if (transactionBody.tokenUpdate) {\n const tokenUpdate = this.parseTokenUpdate(transactionBody.tokenUpdate);\n if (tokenUpdate) {\n return {\n type: 'TOKENUPDATE',\n humanReadableType: 'Token Update',\n tokenUpdate,\n };\n }\n }\n\n if (transactionBody.tokenFreeze) {\n const tokenFreeze = this.parseTokenFreeze(transactionBody.tokenFreeze);\n if (tokenFreeze) {\n return {\n type: 'TOKENFREEZE',\n humanReadableType: 'Token Freeze',\n tokenFreeze,\n };\n }\n }\n\n if (transactionBody.tokenUnfreeze) {\n const tokenUnfreeze = this.parseTokenUnfreeze(\n transactionBody.tokenUnfreeze,\n );\n if (tokenUnfreeze) {\n return {\n type: 'TOKENUNFREEZE',\n humanReadableType: 'Token Unfreeze',\n tokenUnfreeze,\n };\n }\n }\n\n if (transactionBody.tokenGrantKyc) {\n const tokenGrantKyc = this.parseTokenGrantKyc(\n transactionBody.tokenGrantKyc,\n );\n if (tokenGrantKyc) {\n return {\n type: 'TOKENGRANTKYC',\n humanReadableType: 'Token Grant KYC',\n tokenGrantKyc,\n };\n }\n }\n\n if (transactionBody.tokenRevokeKyc) {\n const tokenRevokeKyc = this.parseTokenRevokeKyc(\n transactionBody.tokenRevokeKyc,\n );\n if (tokenRevokeKyc) {\n return {\n type: 'TOKENREVOKEKYC',\n humanReadableType: 'Token Revoke KYC',\n tokenRevokeKyc,\n };\n }\n }\n\n if (transactionBody.tokenPause) {\n const tokenPause = this.parseTokenPause(transactionBody.tokenPause);\n if (tokenPause) {\n return {\n type: 'TOKENPAUSE',\n humanReadableType: 'Token Pause',\n tokenPause,\n };\n }\n }\n\n if (transactionBody.tokenUnpause) {\n const tokenUnpause = this.parseTokenUnpause(\n transactionBody.tokenUnpause,\n );\n if (tokenUnpause) {\n return {\n type: 'TOKENUNPAUSE',\n humanReadableType: 'Token Unpause',\n tokenUnpause,\n };\n }\n }\n\n if (transactionBody.tokenWipe) {\n const tokenWipeAccount = this.parseTokenWipeAccount(\n transactionBody.tokenWipe,\n );\n if (tokenWipeAccount) {\n return {\n type: 'TOKENWIPEACCOUNT',\n humanReadableType: 'Token Wipe Account',\n tokenWipeAccount,\n };\n }\n }\n\n if (transactionBody.tokenDeletion) {\n const tokenDelete = this.parseTokenDelete(\n transactionBody.tokenDeletion,\n );\n if (tokenDelete) {\n return {\n type: 'TOKENDELETE',\n humanReadableType: 'Token Delete',\n tokenDelete,\n };\n }\n }\n\n if (transactionBody.tokenAssociate) {\n const tokenAssociate = this.parseTokenAssociate(\n transactionBody.tokenAssociate,\n );\n if (tokenAssociate) {\n return {\n type: 'TOKENASSOCIATE',\n humanReadableType: 'Token Associate',\n tokenAssociate,\n };\n }\n }\n\n if (transactionBody.tokenDissociate) {\n const tokenDissociate = this.parseTokenDissociate(\n transactionBody.tokenDissociate,\n );\n if (tokenDissociate) {\n return {\n type: 'TOKENDISSOCIATE',\n humanReadableType: 'Token Dissociate',\n tokenDissociate,\n };\n }\n }\n\n if (transactionBody.tokenFeeScheduleUpdate) {\n const tokenFeeScheduleUpdate = this.parseTokenFeeScheduleUpdate(\n transactionBody.tokenFeeScheduleUpdate,\n );\n if (tokenFeeScheduleUpdate) {\n return {\n type: 'TOKENFEESCHEDULEUPDATE',\n humanReadableType: 'Token Fee Schedule Update',\n tokenFeeScheduleUpdate,\n };\n }\n }\n\n const airdrop = this.parseTokenAirdrop(transaction);\n if (airdrop) {\n return {\n type: 'TOKENAIRDROP',\n humanReadableType: 'Token Airdrop',\n tokenAirdrop: airdrop,\n };\n }\n\n return {};\n } catch (error) {\n console.warn('[HTSParser] Failed to parse HTS transaction:', error);\n return {};\n }\n }\n\n static parseTokenCreate(\n body: proto.ITokenCreateTransactionBody,\n ): TokenCreationData | undefined {\n if (!body) return undefined;\n const data: TokenCreationData = {};\n if (body.name) {\n data.tokenName = body.name;\n }\n if (body.symbol) {\n data.tokenSymbol = body.symbol;\n }\n if (body.treasury) {\n data.treasuryAccountId = new AccountId(\n body.treasury.shardNum ?? 0,\n body.treasury.realmNum ?? 0,\n body.treasury.accountNum ?? 0,\n ).toString();\n }\n if (body.initialSupply) {\n data.initialSupply = Long.fromValue(body.initialSupply).toString();\n }\n if (body.decimals !== undefined && body.decimals !== null) {\n data.decimals = Long.fromValue(body.decimals).toNumber();\n }\n if (body.maxSupply) {\n data.maxSupply = Long.fromValue(body.maxSupply).toString();\n }\n if (body.memo) {\n data.memo = body.memo;\n }\n if (body.tokenType !== null && body.tokenType !== undefined) {\n data.tokenType = proto.TokenType[body.tokenType];\n }\n if (body.supplyType !== null && body.supplyType !== undefined) {\n data.supplyType = proto.TokenSupplyType[body.supplyType];\n }\n data.adminKey = parseKey(body.adminKey);\n data.kycKey = parseKey(body.kycKey);\n data.freezeKey = parseKey(body.freezeKey);\n data.wipeKey = parseKey(body.wipeKey);\n data.supplyKey = parseKey(body.supplyKey);\n data.feeScheduleKey = parseKey(body.feeScheduleKey);\n data.pauseKey = parseKey(body.pauseKey);\n if (body.autoRenewAccount) {\n data.autoRenewAccount = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.customFees && body.customFees.length > 0) {\n data.customFees = body.customFees.map(fee => {\n const feeCollectorAccountId = fee.feeCollectorAccountId\n ? new AccountId(\n fee.feeCollectorAccountId.shardNum ?? 0,\n fee.feeCollectorAccountId.realmNum ?? 0,\n fee.feeCollectorAccountId.accountNum ?? 0,\n ).toString()\n : 'Not Set';\n const commonFeeData = {\n feeCollectorAccountId,\n allCollectorsAreExempt: fee.allCollectorsAreExempt || false,\n };\n if (fee.fixedFee) {\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: {\n amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),\n denominatingTokenId: fee.fixedFee.denominatingTokenId\n ? new TokenId(\n fee.fixedFee.denominatingTokenId.shardNum ?? 0,\n fee.fixedFee.denominatingTokenId.realmNum ?? 0,\n fee.fixedFee.denominatingTokenId.tokenNum ?? 0,\n ).toString()\n : undefined,\n },\n };\n } else if (fee.fractionalFee) {\n return {\n ...commonFeeData,\n feeType: 'FRACTIONAL_FEE',\n fractionalFee: {\n numerator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.numerator || 0,\n ).toString(),\n denominator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.denominator || 1,\n ).toString(),\n minimumAmount: Long.fromValue(\n fee.fractionalFee.minimumAmount || 0,\n ).toString(),\n maximumAmount: Long.fromValue(\n fee.fractionalFee.maximumAmount || 0,\n ).toString(),\n netOfTransfers: fee.fractionalFee.netOfTransfers || false,\n },\n };\n } else if (fee.royaltyFee) {\n let fallbackFeeData: FixedFeeData | undefined = undefined;\n if (fee.royaltyFee.fallbackFee) {\n fallbackFeeData = {\n amount: Long.fromValue(\n fee.royaltyFee.fallbackFee.amount || 0,\n ).toString(),\n denominatingTokenId: fee.royaltyFee.fallbackFee\n .denominatingTokenId\n ? new TokenId(\n fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ??\n 0,\n ).toString()\n : undefined,\n };\n }\n return {\n ...commonFeeData,\n feeType: 'ROYALTY_FEE',\n royaltyFee: {\n numerator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.numerator || 0,\n ).toString(),\n denominator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.denominator || 1,\n ).toString(),\n fallbackFee: fallbackFeeData,\n },\n };\n }\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: { amount: '0' },\n } as CustomFeeData;\n });\n }\n return data;\n }\n\n static parseTokenMint(\n body: proto.ITokenMintTransactionBody,\n ): TokenMintData | undefined {\n if (\n !body ||\n !body.token ||\n body.amount === null ||\n body.amount === undefined\n ) {\n return undefined;\n }\n const data: TokenMintData = {\n tokenId: new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString(),\n amount: Long.fromValue(body.amount).toNumber(),\n };\n if (body.metadata && body.metadata.length > 0) {\n data.metadata = body.metadata.map(meta =>\n Buffer.from(meta).toString('base64'),\n );\n }\n return data;\n }\n\n static parseTokenBurn(\n body: proto.ITokenBurnTransactionBody,\n ): TokenBurnData | undefined {\n if (\n !body ||\n !body.token ||\n body.amount === null ||\n body.amount === undefined\n ) {\n return undefined;\n }\n const data: TokenBurnData = {\n tokenId: new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString(),\n amount: Long.fromValue(body.amount).toNumber(),\n };\n if (body.serialNumbers && body.serialNumbers.length > 0) {\n data.serialNumbers = body.serialNumbers.map(sn =>\n Long.fromValue(sn).toNumber(),\n );\n }\n return data;\n }\n\n static parseTokenUpdate(\n body: proto.ITokenUpdateTransactionBody,\n ): TokenUpdateData | undefined {\n if (!body) return undefined;\n const data: TokenUpdateData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n if (body.name) {\n data.name = body.name;\n }\n if (body.symbol) {\n data.symbol = body.symbol;\n }\n if (body.treasury) {\n data.treasuryAccountId = new AccountId(\n body.treasury.shardNum ?? 0,\n body.treasury.realmNum ?? 0,\n body.treasury.accountNum ?? 0,\n ).toString();\n }\n data.adminKey = parseKey(body.adminKey);\n data.kycKey = parseKey(body.kycKey);\n data.freezeKey = parseKey(body.freezeKey);\n data.wipeKey = parseKey(body.wipeKey);\n data.supplyKey = parseKey(body.supplyKey);\n data.feeScheduleKey = parseKey(body.feeScheduleKey);\n data.pauseKey = parseKey(body.pauseKey);\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.memo?.value !== undefined) {\n data.memo = body.memo.value;\n }\n if (body.expiry?.seconds) {\n data.expiry = `${Long.fromValue(body.expiry.seconds).toString()}.${\n body.expiry.nanos\n }`;\n }\n return data;\n }\n\n static parseTokenFeeScheduleUpdate(\n body: proto.ITokenFeeScheduleUpdateTransactionBody,\n ): TokenFeeScheduleUpdateData | undefined {\n if (!body) return undefined;\n const data: TokenFeeScheduleUpdateData = {};\n if (body.tokenId) {\n data.tokenId = new TokenId(\n body.tokenId.shardNum ?? 0,\n body.tokenId.realmNum ?? 0,\n body.tokenId.tokenNum ?? 0,\n ).toString();\n }\n if (body.customFees && body.customFees.length > 0) {\n data.customFees = body.customFees.map(fee => {\n const feeCollectorAccountId = fee.feeCollectorAccountId\n ? new AccountId(\n fee.feeCollectorAccountId.shardNum ?? 0,\n fee.feeCollectorAccountId.realmNum ?? 0,\n fee.feeCollectorAccountId.accountNum ?? 0,\n ).toString()\n : 'Not Set';\n const commonFeeData = {\n feeCollectorAccountId,\n allCollectorsAreExempt: fee.allCollectorsAreExempt || false,\n };\n if (fee.fixedFee) {\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: {\n amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),\n denominatingTokenId: fee.fixedFee.denominatingTokenId\n ? new TokenId(\n fee.fixedFee.denominatingTokenId.shardNum ?? 0,\n fee.fixedFee.denominatingTokenId.realmNum ?? 0,\n fee.fixedFee.denominatingTokenId.tokenNum ?? 0,\n ).toString()\n : undefined,\n },\n };\n } else if (fee.fractionalFee) {\n return {\n ...commonFeeData,\n feeType: 'FRACTIONAL_FEE',\n fractionalFee: {\n numerator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.numerator || 0,\n ).toString(),\n denominator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.denominator || 1,\n ).toString(),\n minimumAmount: Long.fromValue(\n fee.fractionalFee.minimumAmount || 0,\n ).toString(),\n maximumAmount: Long.fromValue(\n fee.fractionalFee.maximumAmount || 0,\n ).toString(),\n netOfTransfers: fee.fractionalFee.netOfTransfers || false,\n },\n };\n } else if (fee.royaltyFee) {\n let fallbackFeeData: FixedFeeData | undefined = undefined;\n if (fee.royaltyFee.fallbackFee) {\n fallbackFeeData = {\n amount: Long.fromValue(\n fee.royaltyFee.fallbackFee.amount || 0,\n ).toString(),\n denominatingTokenId: fee.royaltyFee.fallbackFee\n .denominatingTokenId\n ? new TokenId(\n fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ??\n 0,\n ).toString()\n : undefined,\n };\n }\n return {\n ...commonFeeData,\n feeType: 'ROYALTY_FEE',\n royaltyFee: {\n numerator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.numerator || 0,\n ).toString(),\n denominator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.denominator || 1,\n ).toString(),\n fallbackFee: fallbackFeeData,\n },\n };\n }\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: { amount: '0' },\n } as CustomFeeData;\n });\n }\n return data;\n }\n\n static parseTokenFreeze(\n body: proto.ITokenFreezeAccountTransactionBody,\n ): TokenFreezeData | undefined {\n if (!body) return undefined;\n const data: TokenFreezeData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n if (body.account) {\n data.accountId = new AccountId(\n body.account.shardNum ?? 0,\n body.account.realmNum ?? 0,\n body.account.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseTokenUnfreeze(\n body: proto.ITokenUnfreezeAccountTransactionBody,\n ): TokenUnfreezeData | undefined {\n if (!body) return undefined;\n const data: TokenUnfreezeData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n if (body.account) {\n data.accountId = new AccountId(\n body.account.shardNum ?? 0,\n body.account.realmNum ?? 0,\n body.account.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseTokenGrantKyc(\n body: proto.ITokenGrantKycTransactionBody,\n ): TokenGrantKycData | undefined {\n if (!body) return undefined;\n const data: TokenGrantKycData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n if (body.account) {\n data.accountId = new AccountId(\n body.account.shardNum ?? 0,\n body.account.realmNum ?? 0,\n body.account.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseTokenRevokeKyc(\n body: proto.ITokenRevokeKycTransactionBody,\n ): TokenRevokeKycData | undefined {\n if (!body) return undefined;\n const data: TokenRevokeKycData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n if (body.account) {\n data.accountId = new AccountId(\n body.account.shardNum ?? 0,\n body.account.realmNum ?? 0,\n body.account.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseTokenPause(\n body: proto.ITokenPauseTransactionBody,\n ): TokenPauseData | undefined {\n if (!body) return undefined;\n const data: TokenPauseData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseTokenUnpause(\n body: proto.ITokenUnpauseTransactionBody,\n ): TokenUnpauseData | undefined {\n if (!body) return undefined;\n const data: TokenUnpauseData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseTokenWipeAccount(\n body: proto.ITokenWipeAccountTransactionBody,\n ): TokenWipeAccountData | undefined {\n if (!body) return undefined;\n const data: TokenWipeAccountData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n if (body.account) {\n data.accountId = new AccountId(\n body.account.shardNum ?? 0,\n body.account.realmNum ?? 0,\n body.account.accountNum ?? 0,\n ).toString();\n }\n if (body.serialNumbers && body.serialNumbers.length > 0) {\n data.serialNumbers = body.serialNumbers.map(sn =>\n Long.fromValue(sn).toString(),\n );\n }\n if (body.amount) {\n data.amount = Long.fromValue(body.amount).toString();\n }\n return data;\n }\n\n static parseTokenDelete(\n body: proto.ITokenDeleteTransactionBody,\n ): TokenDeleteData | undefined {\n if (!body) return undefined;\n const data: TokenDeleteData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseTokenAssociate(\n body: proto.ITokenAssociateTransactionBody,\n ): TokenAssociateData | undefined {\n if (!body) return undefined;\n const data: TokenAssociateData = {};\n if (body.account) {\n data.accountId = new AccountId(\n body.account.shardNum ?? 0,\n body.account.realmNum ?? 0,\n body.account.accountNum ?? 0,\n ).toString();\n }\n if (body.tokens && body.tokens.length > 0) {\n data.tokenIds = body.tokens.map(t =>\n new TokenId(\n t.shardNum ?? 0,\n t.realmNum ?? 0,\n t.tokenNum ?? 0,\n ).toString(),\n );\n }\n return data;\n }\n\n static parseTokenDissociate(\n body: proto.ITokenDissociateTransactionBody,\n ): TokenDissociateData | undefined {\n if (!body) return undefined;\n const data: TokenDissociateData = {};\n if (body.account) {\n data.accountId = new AccountId(\n body.account.shardNum ?? 0,\n body.account.realmNum ?? 0,\n body.account.accountNum ?? 0,\n ).toString();\n }\n if (body.tokens && body.tokens.length > 0) {\n data.tokenIds = body.tokens.map(t =>\n new TokenId(\n t.shardNum ?? 0,\n t.realmNum ?? 0,\n t.tokenNum ?? 0,\n ).toString(),\n );\n }\n return data;\n }\n\n /**\n * Parse token airdrop transaction for both fungible tokens and NFTs\n * Extracts airdrop transfers from transaction protobuf data\n */\n static parseTokenAirdrop(transaction: Transaction): TokenAirdropData | null {\n try {\n const transactionBody = (\n transaction as unknown as { _transactionBody?: proto.ITransactionBody }\n )._transactionBody as proto.ITransactionBody | undefined;\n\n if (transactionBody?.tokenAirdrop) {\n const airdrop = transactionBody.tokenAirdrop;\n\n return {\n tokenTransfers: (airdrop.tokenTransfers || []).map(\n (transfer: any) => ({\n tokenId: transfer.token?.toString() || 'Unknown',\n transfers: (transfer.transfers || []).map((t: any) => ({\n accountId: t.accountID?.toString() || 'Unknown',\n amount: t.amount?.toString() || '0',\n serialNumbers: t.serialNumbers?.map((sn: any) => sn.toString()),\n })),\n }),\n ),\n };\n }\n\n if (hasTransactionType(transaction, 'tokenAirdrop')) {\n const txBody = extractTransactionBody(transaction);\n if (txBody?.tokenAirdrop) {\n return this.parseTokenAirdropFromProto(txBody.tokenAirdrop);\n }\n }\n\n const tx = transaction as unknown as {\n _tokenTransfers?: Array<{\n tokenId?: { toString(): string } | string;\n transfers?: Array<{\n accountId?: { toString(): string } | string;\n amount?: { toString(): string } | string | number | Long;\n serialNumbers?: Array<\n { toString(): string } | string | number | Long\n >;\n }>;\n }>;\n };\n const tokenTransfersList = tx._tokenTransfers || [];\n\n if (tokenTransfersList.length > 0) {\n return {\n tokenTransfers: tokenTransfersList.map((transfer: any) => ({\n tokenId: transfer.tokenId?.toString() || 'Unknown',\n transfers: (transfer.transfers || []).map((t: any) => ({\n accountId: t.accountId?.toString() || 'Unknown',\n amount: t.amount?.toString() || '0',\n serialNumbers: t.serialNumbers?.map((sn: any) => sn.toString()),\n })),\n })),\n };\n }\n\n return null;\n } catch (error) {\n console.warn('[HTSParser] Failed to parse token airdrop:', error);\n return null;\n }\n }\n\n /**\n * Parse token airdrop from protobuf data for scheduled transactions\n */\n static parseTokenAirdropFromProto(airdrop: any): TokenAirdropData {\n const tokenTransfers = [];\n\n if (airdrop.tokenTransfers) {\n for (const tokenTransfer of airdrop.tokenTransfers) {\n const token = tokenTransfer.token\n ? new TokenId(\n tokenTransfer.token.shardNum ?? 0,\n tokenTransfer.token.realmNum ?? 0,\n tokenTransfer.token.tokenNum ?? 0,\n )\n : null;\n const transfers = [];\n\n if (tokenTransfer.transfers) {\n for (const transfer of tokenTransfer.transfers) {\n const accountId = transfer.accountID\n ? new AccountId(\n transfer.accountID.shardNum ?? 0,\n transfer.accountID.realmNum ?? 0,\n transfer.accountID.accountNum ?? 0,\n )\n : null;\n\n transfers.push({\n accountId: accountId?.toString() || 'Unknown',\n amount: transfer.amount\n ? Long.fromValue(transfer.amount).toString()\n : '0',\n serialNumbers: transfer.serialNumbers?.map((sn: any) =>\n Long.fromValue(sn).toString(),\n ),\n });\n }\n }\n\n tokenTransfers.push({\n tokenId: token?.toString() || 'Unknown',\n transfers,\n });\n }\n }\n\n return { tokenTransfers };\n }\n\n /**\n * Extract token creation data from Transaction object internal fields\n * This handles the case where token creation data is stored in Transaction internals\n */\n static extractTokenCreationFromTransaction(\n transaction: Transaction,\n ): TokenCreationData | null {\n try {\n const tx = transaction as unknown as {\n _tokenName?: string;\n _tokenSymbol?: string;\n _initialSupply?: number | Long;\n _decimals?: number | Long;\n _treasuryAccountId?: AccountId;\n _maxSupply?: number | Long;\n _tokenType?: unknown;\n _supplyType?: unknown;\n _tokenMemo?: string;\n _adminKey?: unknown;\n _kycKey?: unknown;\n _freezeKey?: unknown;\n _wipeKey?: unknown;\n _supplyKey?: unknown;\n _feeScheduleKey?: unknown;\n _pauseKey?: unknown;\n _metadataKey?: unknown;\n _autoRenewAccountId?: AccountId;\n _autoRenewPeriod?: { seconds?: Long; toString(): string };\n _expirationTime?: { seconds?: Long; toString(): string };\n _customFees?: unknown[];\n };\n\n if (tx._tokenName || tx._tokenSymbol) {\n const result: TokenCreationData = {\n tokenName: tx._tokenName || 'Unknown Token',\n tokenSymbol: tx._tokenSymbol || 'UNKNOWN',\n initialSupply: tx._initialSupply?.toString() || '0',\n decimals: Number(tx._decimals || 0),\n treasuryAccountId: tx._treasuryAccountId?.toString() || 'Unknown',\n };\n\n if (tx._maxSupply) {\n result.maxSupply = tx._maxSupply.toString();\n }\n\n if (tx._tokenType) {\n result.tokenType = tx._tokenType.toString\n ? tx._tokenType.toString()\n : String(tx._tokenType);\n }\n\n if (tx._supplyType) {\n result.supplyType = tx._supplyType.toString\n ? tx._supplyType.toString()\n : String(tx._supplyType);\n }\n\n if (tx._tokenMemo) {\n result.memo = tx._tokenMemo;\n }\n\n if (tx._adminKey) {\n result.adminKey = tx._adminKey.toString();\n }\n\n if (tx._kycKey) {\n result.kycKey = tx._kycKey.toString();\n }\n\n if (tx._freezeKey) {\n result.freezeKey = tx._freezeKey.toString();\n }\n\n if (tx._wipeKey) {\n result.wipeKey = tx._wipeKey.toString();\n }\n\n if (tx._supplyKey) {\n result.supplyKey = tx._supplyKey.toString();\n }\n\n if (tx._feeScheduleKey) {\n result.feeScheduleKey = tx._feeScheduleKey.toString();\n }\n\n if (tx._pauseKey) {\n result.pauseKey = tx._pauseKey.toString();\n }\n\n if (tx._metadataKey) {\n result.metadataKey = tx._metadataKey.toString();\n }\n\n if (tx._autoRenewAccountId) {\n result.autoRenewAccount = tx._autoRenewAccountId.toString();\n }\n\n if (tx._autoRenewPeriod) {\n result.autoRenewPeriod =\n tx._autoRenewPeriod.seconds?.toString() ||\n tx._autoRenewPeriod.toString();\n }\n\n if (tx._expirationTime) {\n result.expiry =\n tx._expirationTime.seconds?.toString() ||\n tx._expirationTime.toString();\n }\n\n if (\n tx._customFees &&\n Array.isArray(tx._customFees) &&\n tx._customFees.length > 0\n ) {\n result.customFees = tx._customFees.map((fee: any) => {\n const customFee: CustomFeeData = {\n feeCollectorAccountId:\n fee.feeCollectorAccountId?.toString() || '',\n feeType: 'FIXED_FEE',\n };\n\n if (fee.fixedFee) {\n customFee.feeType = 'FIXED_FEE';\n customFee.fixedFee = {\n amount: fee.fixedFee.amount?.toString() || '0',\n denominatingTokenId:\n fee.fixedFee.denominatingTokenId?.toString(),\n };\n } else if (fee.fractionalFee) {\n customFee.feeType = 'FRACTIONAL_FEE';\n customFee.fractionalFee = {\n numerator: fee.fractionalFee.numerator?.toString() || '0',\n denominator: fee.fractionalFee.denominator?.toString() || '1',\n minimumAmount:\n fee.fractionalFee.minimumAmount?.toString() || '0',\n maximumAmount:\n fee.fractionalFee.maximumAmount?.toString() || '0',\n netOfTransfers: fee.fractionalFee.netOfTransfers || false,\n };\n } else if (fee.royaltyFee) {\n customFee.feeType = 'ROYALTY_FEE';\n customFee.royaltyFee = {\n numerator: fee.royaltyFee.numerator?.toString() || '0',\n denominator: fee.royaltyFee.denominator?.toString() || '1',\n fallbackFee: fee.royaltyFee.fallbackFee\n ? {\n amount:\n fee.royaltyFee.fallbackFee.amount?.toString() || '0',\n denominatingTokenId:\n fee.royaltyFee.fallbackFee.denominatingTokenId?.toString(),\n }\n : undefined,\n };\n }\n\n customFee.allCollectorsAreExempt =\n fee.allCollectorsAreExempt || false;\n return customFee;\n });\n }\n\n return result;\n }\n\n return null;\n } catch (error) {\n return null;\n }\n }\n\n /**\n * Extract token airdrop data from Transaction object internal fields\n * This handles the case where airdrop data is stored in Transaction internals\n */\n static extractTokenAirdropFromTransaction(\n transaction: Transaction,\n ): TokenAirdropData | null {\n try {\n const tx = transaction as unknown as {\n _tokenAirdrops?: Array<{\n tokenId?: { toString(): string };\n transfers?: Array<{\n accountId?: { toString(): string };\n amount?: { toString(): string };\n serialNumbers?: Array<{ toString(): string }>;\n }>;\n }>;\n };\n\n if (tx._tokenAirdrops && Array.isArray(tx._tokenAirdrops)) {\n const tokenTransfers = tx._tokenAirdrops.map(airdrop => ({\n tokenId: airdrop.tokenId?.toString() || 'Unknown',\n transfers: (airdrop.transfers || []).map(transfer => ({\n accountId: transfer.accountId?.toString() || 'Unknown',\n amount: transfer.amount?.toString() || '0',\n serialNumbers: transfer.serialNumbers?.map(s => s.toString()) || [],\n })),\n }));\n\n return { tokenTransfers };\n }\n\n return null;\n } catch (error) {\n return null;\n }\n }\n\n /**\n * Parse HTS transaction from Transaction object with comprehensive extraction\n * This is the unified entry point that handles both protobuf and internal field extraction\n */\n static parseFromTransactionObject(transaction: Transaction): {\n type?: string;\n humanReadableType?: string;\n tokenCreation?: TokenCreationData;\n tokenAirdrop?: TokenAirdropData;\n [key: string]: unknown;\n } {\n try {\n try {\n const bytes = transaction.toBytes ? transaction.toBytes() : undefined;\n if (bytes) {\n const decoded = proto.TransactionList.decode(bytes);\n if (decoded.transactionList && decoded.transactionList.length > 0) {\n const tx = decoded.transactionList[0];\n let txBody: proto.TransactionBody | null = null;\n if (tx.bodyBytes && tx.bodyBytes.length > 0) {\n txBody = proto.TransactionBody.decode(tx.bodyBytes);\n } else if (\n tx.signedTransactionBytes &&\n tx.signedTransactionBytes.length > 0\n ) {\n const signedTx = proto.SignedTransaction.decode(\n tx.signedTransactionBytes,\n );\n if (signedTx.bodyBytes) {\n txBody = proto.TransactionBody.decode(signedTx.bodyBytes);\n }\n }\n\n if (txBody) {\n if (txBody.tokenCreation) {\n const tokenCreation = this.parseTokenCreate(\n txBody.tokenCreation,\n );\n if (tokenCreation) {\n return {\n type: 'TOKENCREATE',\n humanReadableType: 'Token Creation',\n tokenCreation,\n };\n }\n }\n if (txBody.tokenMint) {\n const tokenMint = this.parseTokenMint(txBody.tokenMint);\n if (tokenMint) {\n return {\n type: 'TOKENMINT',\n humanReadableType: 'Token Mint',\n tokenMint,\n };\n }\n }\n if (txBody.tokenBurn) {\n const tokenBurn = this.parseTokenBurn(txBody.tokenBurn);\n if (tokenBurn) {\n return {\n type: 'TOKENBURN',\n humanReadableType: 'Token Burn',\n tokenBurn,\n };\n }\n }\n if (txBody.tokenUpdate) {\n const tokenUpdate = this.parseTokenUpdate(txBody.tokenUpdate);\n if (tokenUpdate) {\n return {\n type: 'TOKENUPDATE',\n humanReadableType: 'Token Update',\n tokenUpdate,\n };\n }\n }\n if (txBody.tokenFreeze) {\n const tokenFreeze = this.parseTokenFreeze(txBody.tokenFreeze);\n if (tokenFreeze) {\n return {\n type: 'TOKENFREEZE',\n humanReadableType: 'Token Freeze',\n tokenFreeze,\n };\n }\n }\n if (txBody.tokenUnfreeze) {\n const tokenUnfreeze = this.parseTokenUnfreeze(\n txBody.tokenUnfreeze,\n );\n if (tokenUnfreeze) {\n return {\n type: 'TOKENUNFREEZE',\n humanReadableType: 'Token Unfreeze',\n tokenUnfreeze,\n };\n }\n }\n if (txBody.tokenGrantKyc) {\n const tokenGrantKyc = this.parseTokenGrantKyc(\n txBody.tokenGrantKyc,\n );\n if (tokenGrantKyc) {\n return {\n type: 'TOKENGRANTKYC',\n humanReadableType: 'Token Grant KYC',\n tokenGrantKyc,\n };\n }\n }\n if (txBody.tokenRevokeKyc) {\n const tokenRevokeKyc = this.parseTokenRevokeKyc(\n txBody.tokenRevokeKyc,\n );\n if (tokenRevokeKyc) {\n return {\n type: 'TOKENREVOKEKYC',\n humanReadableType: 'Token Revoke KYC',\n tokenRevokeKyc,\n };\n }\n }\n if (txBody.tokenPause) {\n const tokenPause = this.parseTokenPause(txBody.tokenPause);\n if (tokenPause) {\n return {\n type: 'TOKENPAUSE',\n humanReadableType: 'Token Pause',\n tokenPause,\n };\n }\n }\n if (txBody.tokenUnpause) {\n const tokenUnpause = this.parseTokenUnpause(\n txBody.tokenUnpause,\n );\n if (tokenUnpause) {\n return {\n type: 'TOKENUNPAUSE',\n humanReadableType: 'Token Unpause',\n tokenUnpause,\n };\n }\n }\n if (txBody.tokenWipe) {\n const tokenWipeAccount = this.parseTokenWipeAccount(\n txBody.tokenWipe,\n );\n if (tokenWipeAccount) {\n return {\n type: 'TOKENWIPEACCOUNT',\n humanReadableType: 'Token Wipe Account',\n tokenWipeAccount,\n } as {\n type?: string;\n humanReadableType?: string;\n tokenWipeAccount?: TokenWipeAccountData;\n };\n }\n }\n if (txBody.tokenDeletion) {\n const tokenDelete = this.parseTokenDelete(txBody.tokenDeletion);\n if (tokenDelete) {\n return {\n type: 'TOKENDELETE',\n humanReadableType: 'Token Delete',\n tokenDelete,\n };\n }\n }\n if (txBody.tokenAssociate) {\n const tokenAssociate = this.parseTokenAssociate(\n txBody.tokenAssociate,\n );\n if (tokenAssociate) {\n return {\n type: 'TOKENASSOCIATE',\n humanReadableType: 'Token Associate',\n tokenAssociate,\n };\n }\n }\n if (txBody.tokenDissociate) {\n const tokenDissociate = this.parseTokenDissociate(\n txBody.tokenDissociate,\n );\n if (tokenDissociate) {\n return {\n type: 'TOKENDISSOCIATE',\n humanReadableType: 'Token Dissociate',\n tokenDissociate,\n };\n }\n }\n if (txBody.tokenFeeScheduleUpdate) {\n const tokenFeeScheduleUpdate = this.parseTokenFeeScheduleUpdate(\n txBody.tokenFeeScheduleUpdate,\n );\n if (tokenFeeScheduleUpdate) {\n return {\n type: 'TOKENFEESCHEDULEUPDATE',\n humanReadableType: 'Token Fee Schedule Update',\n tokenFeeScheduleUpdate,\n };\n }\n }\n if (txBody.tokenAirdrop) {\n const tokenAirdrop = this.parseTokenAirdropFromProto(\n txBody.tokenAirdrop,\n );\n if (tokenAirdrop) {\n return {\n type: 'TOKENAIRDROP',\n humanReadableType: 'Token Airdrop',\n tokenAirdrop,\n };\n }\n }\n }\n }\n }\n } catch (e) {}\n\n const protoResult = this.parseHTSTransaction(transaction);\n if (protoResult.type) {\n return protoResult;\n }\n\n const tokenCreation =\n this.extractTokenCreationFromTransaction(transaction);\n const tokenAirdrop = this.extractTokenAirdropFromTransaction(transaction);\n if (tokenCreation) {\n return {\n type: 'TOKENCREATE',\n humanReadableType: 'Token Creation',\n tokenCreation,\n };\n }\n if (tokenAirdrop) {\n return {\n type: 'TOKENAIRDROP',\n humanReadableType: 'Token Airdrop',\n tokenAirdrop,\n };\n }\n\n return {};\n } catch (error) {\n return {};\n }\n }\n}\n"],"names":["tokenCreation","tokenAirdrop"],"mappings":"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"}