@hashgraphonline/standards-sdk 0.1.160 → 0.1.162

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 (329) hide show
  1. package/dist/cjs/hcs-14/index.d.ts +1 -0
  2. package/dist/cjs/hcs-14/index.d.ts.map +1 -1
  3. package/dist/cjs/hcs-14/resolvers/aid-dns-web-profile.d.ts +1 -0
  4. package/dist/cjs/hcs-14/resolvers/aid-dns-web-profile.d.ts.map +1 -1
  5. package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts +23 -0
  6. package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts.map +1 -0
  7. package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile.d.ts +32 -0
  8. package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile.d.ts.map +1 -0
  9. package/dist/cjs/hcs-14/resolvers/hcs-11-profile.d.ts +1 -0
  10. package/dist/cjs/hcs-14/resolvers/hcs-11-profile.d.ts.map +1 -1
  11. package/dist/cjs/hcs-14/resolvers/hiero.d.ts +1 -0
  12. package/dist/cjs/hcs-14/resolvers/hiero.d.ts.map +1 -1
  13. package/dist/cjs/hcs-14/resolvers/registry.d.ts +39 -1
  14. package/dist/cjs/hcs-14/resolvers/registry.d.ts.map +1 -1
  15. package/dist/cjs/hcs-14/resolvers/types.d.ts +52 -0
  16. package/dist/cjs/hcs-14/resolvers/types.d.ts.map +1 -1
  17. package/dist/cjs/hcs-14/resolvers/uaid-did-resolution-profile.d.ts +1 -0
  18. package/dist/cjs/hcs-14/resolvers/uaid-did-resolution-profile.d.ts.map +1 -1
  19. package/dist/cjs/hcs-14/resolvers/uaid-dns-web-profile.d.ts +1 -0
  20. package/dist/cjs/hcs-14/resolvers/uaid-dns-web-profile.d.ts.map +1 -1
  21. package/dist/cjs/hcs-14/sdk.d.ts +46 -13
  22. package/dist/cjs/hcs-14/sdk.d.ts.map +1 -1
  23. package/dist/cjs/standards-sdk.cjs +3 -3
  24. package/dist/cjs/standards-sdk.cjs.map +1 -1
  25. package/dist/es/hcs-14/index.d.ts +1 -0
  26. package/dist/es/hcs-14/index.d.ts.map +1 -1
  27. package/dist/es/hcs-14/resolvers/aid-dns-web-profile.d.ts +1 -0
  28. package/dist/es/hcs-14/resolvers/aid-dns-web-profile.d.ts.map +1 -1
  29. package/dist/es/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts +23 -0
  30. package/dist/es/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts.map +1 -0
  31. package/dist/es/hcs-14/resolvers/ans-dns-web-profile.d.ts +32 -0
  32. package/dist/es/hcs-14/resolvers/ans-dns-web-profile.d.ts.map +1 -0
  33. package/dist/es/hcs-14/resolvers/hcs-11-profile.d.ts +1 -0
  34. package/dist/es/hcs-14/resolvers/hcs-11-profile.d.ts.map +1 -1
  35. package/dist/es/hcs-14/resolvers/hiero.d.ts +1 -0
  36. package/dist/es/hcs-14/resolvers/hiero.d.ts.map +1 -1
  37. package/dist/es/hcs-14/resolvers/registry.d.ts +39 -1
  38. package/dist/es/hcs-14/resolvers/registry.d.ts.map +1 -1
  39. package/dist/es/hcs-14/resolvers/types.d.ts +52 -0
  40. package/dist/es/hcs-14/resolvers/types.d.ts.map +1 -1
  41. package/dist/es/hcs-14/resolvers/uaid-did-resolution-profile.d.ts +1 -0
  42. package/dist/es/hcs-14/resolvers/uaid-did-resolution-profile.d.ts.map +1 -1
  43. package/dist/es/hcs-14/resolvers/uaid-dns-web-profile.d.ts +1 -0
  44. package/dist/es/hcs-14/resolvers/uaid-dns-web-profile.d.ts.map +1 -1
  45. package/dist/es/hcs-14/sdk.d.ts +46 -13
  46. package/dist/es/hcs-14/sdk.d.ts.map +1 -1
  47. package/dist/es/standards-sdk.es.js +97 -90
  48. package/dist/es/standards-sdk.es.js.map +1 -1
  49. package/dist/es/standards-sdk.es100.js +151 -43
  50. package/dist/es/standards-sdk.es100.js.map +1 -1
  51. package/dist/es/standards-sdk.es101.js +114 -234
  52. package/dist/es/standards-sdk.es101.js.map +1 -1
  53. package/dist/es/standards-sdk.es102.js +43 -96
  54. package/dist/es/standards-sdk.es102.js.map +1 -1
  55. package/dist/es/standards-sdk.es103.js +244 -80
  56. package/dist/es/standards-sdk.es103.js.map +1 -1
  57. package/dist/es/standards-sdk.es104.js +101 -29
  58. package/dist/es/standards-sdk.es104.js.map +1 -1
  59. package/dist/es/standards-sdk.es105.js +94 -225
  60. package/dist/es/standards-sdk.es105.js.map +1 -1
  61. package/dist/es/standards-sdk.es106.js +29 -112
  62. package/dist/es/standards-sdk.es106.js.map +1 -1
  63. package/dist/es/standards-sdk.es107.js +224 -26
  64. package/dist/es/standards-sdk.es107.js.map +1 -1
  65. package/dist/es/standards-sdk.es108.js +109 -80
  66. package/dist/es/standards-sdk.es108.js.map +1 -1
  67. package/dist/es/standards-sdk.es109.js +29 -26
  68. package/dist/es/standards-sdk.es109.js.map +1 -1
  69. package/dist/es/standards-sdk.es11.js +1 -1
  70. package/dist/es/standards-sdk.es110.js +80 -248
  71. package/dist/es/standards-sdk.es110.js.map +1 -1
  72. package/dist/es/standards-sdk.es111.js +28 -475
  73. package/dist/es/standards-sdk.es111.js.map +1 -1
  74. package/dist/es/standards-sdk.es112.js +244 -97
  75. package/dist/es/standards-sdk.es112.js.map +1 -1
  76. package/dist/es/standards-sdk.es113.js +451 -133
  77. package/dist/es/standards-sdk.es113.js.map +1 -1
  78. package/dist/es/standards-sdk.es114.js +98 -27
  79. package/dist/es/standards-sdk.es114.js.map +1 -1
  80. package/dist/es/standards-sdk.es115.js +156 -8
  81. package/dist/es/standards-sdk.es115.js.map +1 -1
  82. package/dist/es/standards-sdk.es116.js +31 -139
  83. package/dist/es/standards-sdk.es116.js.map +1 -1
  84. package/dist/es/standards-sdk.es117.js +10 -27
  85. package/dist/es/standards-sdk.es117.js.map +1 -1
  86. package/dist/es/standards-sdk.es118.js +139 -19
  87. package/dist/es/standards-sdk.es118.js.map +1 -1
  88. package/dist/es/standards-sdk.es119.js +27 -158
  89. package/dist/es/standards-sdk.es119.js.map +1 -1
  90. package/dist/es/standards-sdk.es12.js +1 -1
  91. package/dist/es/standards-sdk.es120.js +16 -197
  92. package/dist/es/standards-sdk.es120.js.map +1 -1
  93. package/dist/es/standards-sdk.es121.js +133 -763
  94. package/dist/es/standards-sdk.es121.js.map +1 -1
  95. package/dist/es/standards-sdk.es122.js +200 -10
  96. package/dist/es/standards-sdk.es122.js.map +1 -1
  97. package/dist/es/standards-sdk.es123.js +762 -539
  98. package/dist/es/standards-sdk.es123.js.map +1 -1
  99. package/dist/es/standards-sdk.es124.js +10 -599
  100. package/dist/es/standards-sdk.es124.js.map +1 -1
  101. package/dist/es/standards-sdk.es125.js +567 -13
  102. package/dist/es/standards-sdk.es125.js.map +1 -1
  103. package/dist/es/standards-sdk.es126.js +602 -2
  104. package/dist/es/standards-sdk.es126.js.map +1 -1
  105. package/dist/es/standards-sdk.es127.js +12 -86
  106. package/dist/es/standards-sdk.es127.js.map +1 -1
  107. package/dist/es/standards-sdk.es128.js +2 -40
  108. package/dist/es/standards-sdk.es128.js.map +1 -1
  109. package/dist/es/standards-sdk.es129.js +87 -2
  110. package/dist/es/standards-sdk.es129.js.map +1 -1
  111. package/dist/es/standards-sdk.es13.js +1 -1
  112. package/dist/es/standards-sdk.es130.js +37 -232
  113. package/dist/es/standards-sdk.es130.js.map +1 -1
  114. package/dist/es/standards-sdk.es131.js +2 -1140
  115. package/dist/es/standards-sdk.es131.js.map +1 -1
  116. package/dist/es/standards-sdk.es132.js +213 -284
  117. package/dist/es/standards-sdk.es132.js.map +1 -1
  118. package/dist/es/standards-sdk.es133.js +1138 -420
  119. package/dist/es/standards-sdk.es133.js.map +1 -1
  120. package/dist/es/standards-sdk.es134.js +301 -350
  121. package/dist/es/standards-sdk.es134.js.map +1 -1
  122. package/dist/es/standards-sdk.es135.js +417 -1111
  123. package/dist/es/standards-sdk.es135.js.map +1 -1
  124. package/dist/es/standards-sdk.es136.js +348 -201
  125. package/dist/es/standards-sdk.es136.js.map +1 -1
  126. package/dist/es/standards-sdk.es137.js +1029 -1480
  127. package/dist/es/standards-sdk.es137.js.map +1 -1
  128. package/dist/es/standards-sdk.es138.js +207 -1254
  129. package/dist/es/standards-sdk.es138.js.map +1 -1
  130. package/dist/es/standards-sdk.es139.js +1564 -14
  131. package/dist/es/standards-sdk.es139.js.map +1 -1
  132. package/dist/es/standards-sdk.es14.js +1 -1
  133. package/dist/es/standards-sdk.es140.js +1253 -85
  134. package/dist/es/standards-sdk.es140.js.map +1 -1
  135. package/dist/es/standards-sdk.es141.js +15 -79
  136. package/dist/es/standards-sdk.es141.js.map +1 -1
  137. package/dist/es/standards-sdk.es142.js +83 -889
  138. package/dist/es/standards-sdk.es142.js.map +1 -1
  139. package/dist/es/standards-sdk.es143.js +73 -52
  140. package/dist/es/standards-sdk.es143.js.map +1 -1
  141. package/dist/es/standards-sdk.es144.js +877 -143
  142. package/dist/es/standards-sdk.es144.js.map +1 -1
  143. package/dist/es/standards-sdk.es145.js +60 -7
  144. package/dist/es/standards-sdk.es145.js.map +1 -1
  145. package/dist/es/standards-sdk.es146.js +138 -65
  146. package/dist/es/standards-sdk.es146.js.map +1 -1
  147. package/dist/es/standards-sdk.es147.js +7 -65
  148. package/dist/es/standards-sdk.es147.js.map +1 -1
  149. package/dist/es/standards-sdk.es148.js +86 -30
  150. package/dist/es/standards-sdk.es148.js.map +1 -1
  151. package/dist/es/standards-sdk.es149.js +65 -34
  152. package/dist/es/standards-sdk.es149.js.map +1 -1
  153. package/dist/es/standards-sdk.es15.js +1 -1
  154. package/dist/es/standards-sdk.es150.js +30 -41
  155. package/dist/es/standards-sdk.es150.js.map +1 -1
  156. package/dist/es/standards-sdk.es151.js +34 -138
  157. package/dist/es/standards-sdk.es151.js.map +1 -1
  158. package/dist/es/standards-sdk.es152.js +48 -42
  159. package/dist/es/standards-sdk.es152.js.map +1 -1
  160. package/dist/es/standards-sdk.es153.js +106 -12450
  161. package/dist/es/standards-sdk.es153.js.map +1 -1
  162. package/dist/es/standards-sdk.es154.js +38 -168
  163. package/dist/es/standards-sdk.es154.js.map +1 -1
  164. package/dist/es/standards-sdk.es155.js +12423 -263
  165. package/dist/es/standards-sdk.es155.js.map +1 -1
  166. package/dist/es/standards-sdk.es156.js +13 -342
  167. package/dist/es/standards-sdk.es156.js.map +1 -1
  168. package/dist/es/standards-sdk.es157.js +55 -452
  169. package/dist/es/standards-sdk.es157.js.map +1 -1
  170. package/dist/es/standards-sdk.es158.js +70 -317
  171. package/dist/es/standards-sdk.es158.js.map +1 -1
  172. package/dist/es/standards-sdk.es159.js +70 -65
  173. package/dist/es/standards-sdk.es159.js.map +1 -1
  174. package/dist/es/standards-sdk.es16.js +4 -4
  175. package/dist/es/standards-sdk.es160.js +197 -14
  176. package/dist/es/standards-sdk.es160.js.map +1 -1
  177. package/dist/es/standards-sdk.es161.js +60 -229
  178. package/dist/es/standards-sdk.es161.js.map +1 -1
  179. package/dist/es/standards-sdk.es162.js +237 -51
  180. package/dist/es/standards-sdk.es162.js.map +1 -1
  181. package/dist/es/standards-sdk.es163.js +160 -72
  182. package/dist/es/standards-sdk.es163.js.map +1 -1
  183. package/dist/es/standards-sdk.es164.js +312 -71
  184. package/dist/es/standards-sdk.es164.js.map +1 -1
  185. package/dist/es/standards-sdk.es165.js +337 -64
  186. package/dist/es/standards-sdk.es165.js.map +1 -1
  187. package/dist/es/standards-sdk.es166.js +436 -155
  188. package/dist/es/standards-sdk.es166.js.map +1 -1
  189. package/dist/es/standards-sdk.es167.js +319 -210
  190. package/dist/es/standards-sdk.es167.js.map +1 -1
  191. package/dist/es/standards-sdk.es168.js +68 -231
  192. package/dist/es/standards-sdk.es168.js.map +1 -1
  193. package/dist/es/standards-sdk.es169.js +154 -101
  194. package/dist/es/standards-sdk.es169.js.map +1 -1
  195. package/dist/es/standards-sdk.es170.js +200 -104
  196. package/dist/es/standards-sdk.es170.js.map +1 -1
  197. package/dist/es/standards-sdk.es171.js +225 -147
  198. package/dist/es/standards-sdk.es171.js.map +1 -1
  199. package/dist/es/standards-sdk.es172.js +100 -166
  200. package/dist/es/standards-sdk.es172.js.map +1 -1
  201. package/dist/es/standards-sdk.es173.js +110 -123
  202. package/dist/es/standards-sdk.es173.js.map +1 -1
  203. package/dist/es/standards-sdk.es174.js +122 -292
  204. package/dist/es/standards-sdk.es174.js.map +1 -1
  205. package/dist/es/standards-sdk.es175.js +166 -240
  206. package/dist/es/standards-sdk.es175.js.map +1 -1
  207. package/dist/es/standards-sdk.es176.js +125 -102
  208. package/dist/es/standards-sdk.es176.js.map +1 -1
  209. package/dist/es/standards-sdk.es177.js +334 -0
  210. package/dist/es/standards-sdk.es177.js.map +1 -0
  211. package/dist/es/standards-sdk.es178.js +262 -0
  212. package/dist/es/standards-sdk.es178.js.map +1 -0
  213. package/dist/es/standards-sdk.es179.js +119 -0
  214. package/dist/es/standards-sdk.es179.js.map +1 -0
  215. package/dist/es/standards-sdk.es18.js +11 -11
  216. package/dist/es/standards-sdk.es19.js +8 -8
  217. package/dist/es/standards-sdk.es2.js +2 -2
  218. package/dist/es/standards-sdk.es20.js +1 -1
  219. package/dist/es/standards-sdk.es21.js +1 -1
  220. package/dist/es/standards-sdk.es22.js +1 -1
  221. package/dist/es/standards-sdk.es23.js +1 -1
  222. package/dist/es/standards-sdk.es24.js +1 -1
  223. package/dist/es/standards-sdk.es25.js +1 -1
  224. package/dist/es/standards-sdk.es26.js +1 -1
  225. package/dist/es/standards-sdk.es27.js +11 -11
  226. package/dist/es/standards-sdk.es30.js +2 -2
  227. package/dist/es/standards-sdk.es31.js +4 -4
  228. package/dist/es/standards-sdk.es32.js +1 -1
  229. package/dist/es/standards-sdk.es35.js +5 -5
  230. package/dist/es/standards-sdk.es36.js +4 -4
  231. package/dist/es/standards-sdk.es37.js +2 -2
  232. package/dist/es/standards-sdk.es38.js +2 -2
  233. package/dist/es/standards-sdk.es39.js +1 -1
  234. package/dist/es/standards-sdk.es4.js +2 -2
  235. package/dist/es/standards-sdk.es40.js +1 -1
  236. package/dist/es/standards-sdk.es41.js +2 -2
  237. package/dist/es/standards-sdk.es46.js +1 -1
  238. package/dist/es/standards-sdk.es5.js +2 -2
  239. package/dist/es/standards-sdk.es51.js +1 -1
  240. package/dist/es/standards-sdk.es53.js +1 -1
  241. package/dist/es/standards-sdk.es56.js +2 -2
  242. package/dist/es/standards-sdk.es58.js +39 -231
  243. package/dist/es/standards-sdk.es58.js.map +1 -1
  244. package/dist/es/standards-sdk.es59.js +328 -35
  245. package/dist/es/standards-sdk.es59.js.map +1 -1
  246. package/dist/es/standards-sdk.es6.js +2 -2
  247. package/dist/es/standards-sdk.es60.js +33 -101
  248. package/dist/es/standards-sdk.es60.js.map +1 -1
  249. package/dist/es/standards-sdk.es61.js +87 -156
  250. package/dist/es/standards-sdk.es61.js.map +1 -1
  251. package/dist/es/standards-sdk.es62.js +126 -153
  252. package/dist/es/standards-sdk.es62.js.map +1 -1
  253. package/dist/es/standards-sdk.es63.js +234 -81
  254. package/dist/es/standards-sdk.es63.js.map +1 -1
  255. package/dist/es/standards-sdk.es64.js +244 -39
  256. package/dist/es/standards-sdk.es64.js.map +1 -1
  257. package/dist/es/standards-sdk.es65.js +122 -247
  258. package/dist/es/standards-sdk.es65.js.map +1 -1
  259. package/dist/es/standards-sdk.es66.js +41 -28
  260. package/dist/es/standards-sdk.es66.js.map +1 -1
  261. package/dist/es/standards-sdk.es67.js +266 -90
  262. package/dist/es/standards-sdk.es67.js.map +1 -1
  263. package/dist/es/standards-sdk.es68.js +33 -3
  264. package/dist/es/standards-sdk.es68.js.map +1 -1
  265. package/dist/es/standards-sdk.es69.js +84 -89
  266. package/dist/es/standards-sdk.es69.js.map +1 -1
  267. package/dist/es/standards-sdk.es7.js +1 -1
  268. package/dist/es/standards-sdk.es70.js +3 -99
  269. package/dist/es/standards-sdk.es70.js.map +1 -1
  270. package/dist/es/standards-sdk.es71.js +99 -17
  271. package/dist/es/standards-sdk.es71.js.map +1 -1
  272. package/dist/es/standards-sdk.es72.js +100 -77
  273. package/dist/es/standards-sdk.es72.js.map +1 -1
  274. package/dist/es/standards-sdk.es73.js +19 -458
  275. package/dist/es/standards-sdk.es73.js.map +1 -1
  276. package/dist/es/standards-sdk.es74.js +77 -324
  277. package/dist/es/standards-sdk.es74.js.map +1 -1
  278. package/dist/es/standards-sdk.es75.js +420 -170
  279. package/dist/es/standards-sdk.es75.js.map +1 -1
  280. package/dist/es/standards-sdk.es76.js +323 -71
  281. package/dist/es/standards-sdk.es76.js.map +1 -1
  282. package/dist/es/standards-sdk.es77.js +208 -71
  283. package/dist/es/standards-sdk.es77.js.map +1 -1
  284. package/dist/es/standards-sdk.es78.js +67 -138
  285. package/dist/es/standards-sdk.es78.js.map +1 -1
  286. package/dist/es/standards-sdk.es79.js +71 -69
  287. package/dist/es/standards-sdk.es79.js.map +1 -1
  288. package/dist/es/standards-sdk.es80.js +132 -393
  289. package/dist/es/standards-sdk.es80.js.map +1 -1
  290. package/dist/es/standards-sdk.es81.js +44 -471
  291. package/dist/es/standards-sdk.es81.js.map +1 -1
  292. package/dist/es/standards-sdk.es82.js +361 -322
  293. package/dist/es/standards-sdk.es82.js.map +1 -1
  294. package/dist/es/standards-sdk.es83.js +495 -88
  295. package/dist/es/standards-sdk.es83.js.map +1 -1
  296. package/dist/es/standards-sdk.es84.js +365 -125
  297. package/dist/es/standards-sdk.es84.js.map +1 -1
  298. package/dist/es/standards-sdk.es85.js +88 -7
  299. package/dist/es/standards-sdk.es85.js.map +1 -1
  300. package/dist/es/standards-sdk.es86.js +125 -47
  301. package/dist/es/standards-sdk.es86.js.map +1 -1
  302. package/dist/es/standards-sdk.es87.js +6 -99
  303. package/dist/es/standards-sdk.es87.js.map +1 -1
  304. package/dist/es/standards-sdk.es88.js +43 -344
  305. package/dist/es/standards-sdk.es88.js.map +1 -1
  306. package/dist/es/standards-sdk.es89.js +73 -253
  307. package/dist/es/standards-sdk.es89.js.map +1 -1
  308. package/dist/es/standards-sdk.es9.js +2 -2
  309. package/dist/es/standards-sdk.es90.js +340 -53
  310. package/dist/es/standards-sdk.es90.js.map +1 -1
  311. package/dist/es/standards-sdk.es91.js +280 -48
  312. package/dist/es/standards-sdk.es91.js.map +1 -1
  313. package/dist/es/standards-sdk.es92.js +54 -143
  314. package/dist/es/standards-sdk.es92.js.map +1 -1
  315. package/dist/es/standards-sdk.es93.js +44 -62
  316. package/dist/es/standards-sdk.es93.js.map +1 -1
  317. package/dist/es/standards-sdk.es94.js +140 -20
  318. package/dist/es/standards-sdk.es94.js.map +1 -1
  319. package/dist/es/standards-sdk.es95.js +65 -23
  320. package/dist/es/standards-sdk.es95.js.map +1 -1
  321. package/dist/es/standards-sdk.es96.js +26 -236
  322. package/dist/es/standards-sdk.es96.js.map +1 -1
  323. package/dist/es/standards-sdk.es97.js +23 -280
  324. package/dist/es/standards-sdk.es97.js.map +1 -1
  325. package/dist/es/standards-sdk.es98.js +229 -146
  326. package/dist/es/standards-sdk.es98.js.map +1 -1
  327. package/dist/es/standards-sdk.es99.js +254 -117
  328. package/dist/es/standards-sdk.es99.js.map +1 -1
  329. package/package.json +8 -1
@@ -1,16 +1,570 @@
1
- function getTopicId(inscription) {
2
- if (!inscription || typeof inscription !== "object") return void 0;
3
- const obj = inscription;
4
- const direct = obj.topicId || obj.topic_id;
5
- if (typeof direct === "string" && direct.trim()) return direct;
6
- const rec = obj;
7
- const t1 = rec["topicId"];
8
- if (typeof t1 === "string" && t1.trim()) return t1;
9
- const t2 = rec["topic_id"];
10
- if (typeof t2 === "string" && t2.trim()) return t2;
11
- return void 0;
12
- }
1
+ const getNested = (tx, path) => {
2
+ const parts = path.split(".");
3
+ let current = tx;
4
+ for (const p of parts) {
5
+ if (current == null) {
6
+ return void 0;
7
+ }
8
+ current = current[p];
9
+ }
10
+ return current;
11
+ };
12
+ const renderTemplate = (template, tx) => {
13
+ return template.replace(/\{([^}]+)\}/g, (_m, path) => {
14
+ const value = getNested(tx, String(path).trim());
15
+ if (value === null || value === void 0) {
16
+ return "(Unknown)";
17
+ }
18
+ return String(value);
19
+ });
20
+ };
21
+ const summarizeCryptoTransfer = (tx) => {
22
+ const senders = [];
23
+ const receivers = [];
24
+ if (Array.isArray(tx.transfers)) {
25
+ for (const transfer of tx.transfers) {
26
+ const originalAmountFloat = parseFloat(transfer.amount);
27
+ let displayStr = transfer.amount;
28
+ if (displayStr.startsWith("-")) {
29
+ displayStr = displayStr.substring(1);
30
+ }
31
+ displayStr = displayStr.replace(/\s*ℏ$/, "");
32
+ if (originalAmountFloat < 0) {
33
+ senders.push(`${transfer.accountId} (${displayStr} ℏ)`);
34
+ } else if (originalAmountFloat > 0) {
35
+ receivers.push(`${transfer.accountId} (${displayStr} ℏ)`);
36
+ }
37
+ }
38
+ }
39
+ if (senders.length > 0 && receivers.length > 0) {
40
+ return `Transfer of HBAR from ${senders.join(", ")} to ${receivers.join(", ")}`;
41
+ }
42
+ return tx.humanReadableType;
43
+ };
44
+ const groupTokenTransfers = (tokenTransfers) => {
45
+ const groups = {};
46
+ for (const t of tokenTransfers) {
47
+ if (!groups[t.tokenId]) {
48
+ groups[t.tokenId] = [];
49
+ }
50
+ groups[t.tokenId].push(t);
51
+ }
52
+ return groups;
53
+ };
54
+ const summarizeTokenTransfers = (tx) => {
55
+ const tokenSummaries = [];
56
+ const groups = groupTokenTransfers(tx.tokenTransfers || []);
57
+ for (const [tokenId, transfers] of Object.entries(groups)) {
58
+ const tokenSenders = [];
59
+ const tokenReceivers = [];
60
+ for (const t of transfers) {
61
+ const amt = parseFloat(String(t.amount));
62
+ if (amt < 0) {
63
+ tokenSenders.push(`${t.accountId} (${Math.abs(amt)})`);
64
+ } else if (amt > 0) {
65
+ tokenReceivers.push(`${t.accountId} (${amt})`);
66
+ }
67
+ }
68
+ if (tokenSenders.length > 0 && tokenReceivers.length > 0) {
69
+ tokenSummaries.push(
70
+ `Transfer of token ${tokenId} from ${tokenSenders.join(", ")} to ${tokenReceivers.join(", ")}`
71
+ );
72
+ }
73
+ }
74
+ if (tokenSummaries.length > 0) {
75
+ return tokenSummaries.join("; ");
76
+ }
77
+ return tx.humanReadableType;
78
+ };
79
+ const summarizeContractCall = (tx) => {
80
+ if (!tx.contractCall) {
81
+ return tx.humanReadableType;
82
+ }
83
+ let summary = `Contract call to ${tx.contractCall.contractId} with ${tx.contractCall.gas} gas`;
84
+ if (tx.contractCall.amount > 0) {
85
+ summary += ` and ${tx.contractCall.amount} HBAR`;
86
+ }
87
+ if (tx.contractCall.functionName) {
88
+ summary += ` calling function ${tx.contractCall.functionName}`;
89
+ }
90
+ return summary;
91
+ };
92
+ const summarizeTokenMint = (tx) => {
93
+ if (tx.tokenMint) {
94
+ return `Mint ${tx.tokenMint.amount} tokens for token ${tx.tokenMint.tokenId}`;
95
+ }
96
+ return tx.humanReadableType;
97
+ };
98
+ const summarizeTokenBurn = (tx) => {
99
+ if (tx.tokenBurn) {
100
+ return `Burn ${tx.tokenBurn.amount} tokens for token ${tx.tokenBurn.tokenId}`;
101
+ }
102
+ return tx.humanReadableType;
103
+ };
104
+ const summarizeTokenCreate = (tx) => {
105
+ if (!tx.tokenCreation) {
106
+ return tx.humanReadableType;
107
+ }
108
+ let summary = `Create token ${tx.tokenCreation.tokenName || "(No Name)"} (${tx.tokenCreation.tokenSymbol || "(No Symbol)"})`;
109
+ if (tx.tokenCreation.initialSupply) {
110
+ summary += ` with initial supply ${tx.tokenCreation.initialSupply}`;
111
+ }
112
+ if (tx.tokenCreation.customFees && tx.tokenCreation.customFees.length > 0) {
113
+ summary += ` including ${tx.tokenCreation.customFees.length} custom fee(s)`;
114
+ }
115
+ return summary;
116
+ };
117
+ const summarizeConsensusCreateTopic = (tx) => {
118
+ if (!tx.consensusCreateTopic) {
119
+ return tx.humanReadableType;
120
+ }
121
+ let summary = "Create new topic";
122
+ if (tx.consensusCreateTopic.memo) {
123
+ summary += ` with memo "${tx.consensusCreateTopic.memo}"`;
124
+ }
125
+ if (tx.consensusCreateTopic.autoRenewAccountId) {
126
+ summary += `, auto-renew by ${tx.consensusCreateTopic.autoRenewAccountId}`;
127
+ }
128
+ return summary;
129
+ };
130
+ const summarizeConsensusSubmitMessage = (tx) => {
131
+ if (!tx.consensusSubmitMessage) {
132
+ return tx.humanReadableType;
133
+ }
134
+ let summary = "Submit message";
135
+ if (tx.consensusSubmitMessage.topicId) {
136
+ summary += ` to topic ${tx.consensusSubmitMessage.topicId}`;
137
+ }
138
+ if (tx.consensusSubmitMessage.message) {
139
+ if (tx.consensusSubmitMessage.messageEncoding === "utf8") {
140
+ const preview = tx.consensusSubmitMessage.message.substring(0, 70);
141
+ const needsEllipsis = tx.consensusSubmitMessage.message.length > 70;
142
+ summary += `: "${preview}${needsEllipsis ? "..." : ""}"`;
143
+ } else {
144
+ const byteLength = Buffer.from(
145
+ tx.consensusSubmitMessage.message,
146
+ "base64"
147
+ ).length;
148
+ summary += ` (binary message data, length: ${byteLength} bytes)`;
149
+ }
150
+ }
151
+ if (tx.consensusSubmitMessage.chunkInfoNumber && tx.consensusSubmitMessage.chunkInfoTotal) {
152
+ summary += ` (chunk ${tx.consensusSubmitMessage.chunkInfoNumber}/${tx.consensusSubmitMessage.chunkInfoTotal})`;
153
+ }
154
+ return summary;
155
+ };
156
+ const summarizeFileCreate = (tx) => {
157
+ if (!tx.fileCreate) {
158
+ return tx.humanReadableType;
159
+ }
160
+ let summary = "Create File";
161
+ if (tx.fileCreate.memo) {
162
+ summary += ` with memo "${tx.fileCreate.memo}"`;
163
+ }
164
+ if (tx.fileCreate.contents) {
165
+ summary += " (includes content)";
166
+ }
167
+ return summary;
168
+ };
169
+ const summarizeFileAppend = (tx) => {
170
+ if (tx.fileAppend) {
171
+ return `Append to File ${tx.fileAppend.fileId || "(Unknown ID)"}`;
172
+ }
173
+ return tx.humanReadableType;
174
+ };
175
+ const summarizeFileUpdate = (tx) => {
176
+ if (tx.fileUpdate) {
177
+ return `Update File ${tx.fileUpdate.fileId || "(Unknown ID)"}`;
178
+ }
179
+ return tx.humanReadableType;
180
+ };
181
+ const summarizeFileDelete = (tx) => {
182
+ if (tx.fileDelete) {
183
+ return `Delete File ${tx.fileDelete.fileId || "(Unknown ID)"}`;
184
+ }
185
+ return tx.humanReadableType;
186
+ };
187
+ const summarizeConsensusUpdateTopic = (tx) => {
188
+ if (tx.consensusUpdateTopic) {
189
+ return `Update Topic ${tx.consensusUpdateTopic.topicId || "(Unknown ID)"}`;
190
+ }
191
+ return tx.humanReadableType;
192
+ };
193
+ const summarizeConsensusDeleteTopic = (tx) => {
194
+ if (tx.consensusDeleteTopic) {
195
+ return `Delete Topic ${tx.consensusDeleteTopic.topicId || "(Unknown ID)"}`;
196
+ }
197
+ return tx.humanReadableType;
198
+ };
199
+ const summarizeTokenFreeze = (tx) => {
200
+ if (tx.tokenFreeze) {
201
+ return `Freeze Token ${tx.tokenFreeze.tokenId} for Account ${tx.tokenFreeze.accountId}`;
202
+ }
203
+ return tx.humanReadableType;
204
+ };
205
+ const summarizeTokenUnfreeze = (tx) => {
206
+ if (tx.tokenUnfreeze) {
207
+ return `Unfreeze Token ${tx.tokenUnfreeze.tokenId} for Account ${tx.tokenUnfreeze.accountId}`;
208
+ }
209
+ return tx.humanReadableType;
210
+ };
211
+ const summarizeTokenGrantKyc = (tx) => {
212
+ if (tx.tokenGrantKyc) {
213
+ return `Grant KYC for Token ${tx.tokenGrantKyc.tokenId} to Account ${tx.tokenGrantKyc.accountId}`;
214
+ }
215
+ return tx.humanReadableType;
216
+ };
217
+ const summarizeTokenRevokeKyc = (tx) => {
218
+ if (tx.tokenRevokeKyc) {
219
+ return `Revoke KYC for Token ${tx.tokenRevokeKyc.tokenId} from Account ${tx.tokenRevokeKyc.accountId}`;
220
+ }
221
+ return tx.humanReadableType;
222
+ };
223
+ const summarizeTokenPause = (tx) => {
224
+ if (tx.tokenPause) {
225
+ return `Pause Token ${tx.tokenPause.tokenId}`;
226
+ }
227
+ return tx.humanReadableType;
228
+ };
229
+ const summarizeTokenUnpause = (tx) => {
230
+ if (tx.tokenUnpause) {
231
+ return `Unpause Token ${tx.tokenUnpause.tokenId}`;
232
+ }
233
+ return tx.humanReadableType;
234
+ };
235
+ const summarizeTokenWipe = (tx) => {
236
+ if (tx.tokenWipeAccount) {
237
+ let summary = `Wipe Token ${tx.tokenWipeAccount.tokenId} from Account ${tx.tokenWipeAccount.accountId}`;
238
+ if (tx.tokenWipeAccount.serialNumbers && tx.tokenWipeAccount.serialNumbers.length > 0) {
239
+ summary += ` (Serials: ${tx.tokenWipeAccount.serialNumbers.join(", ")})`;
240
+ }
241
+ if (tx.tokenWipeAccount.amount) {
242
+ summary += ` (Amount: ${tx.tokenWipeAccount.amount})`;
243
+ }
244
+ return summary;
245
+ }
246
+ return tx.humanReadableType;
247
+ };
248
+ const summarizeTokenDelete = (tx) => {
249
+ if (tx.tokenDelete) {
250
+ return `Delete Token ${tx.tokenDelete.tokenId}`;
251
+ }
252
+ return tx.humanReadableType;
253
+ };
254
+ const summarizeTokenAssociate = (tx) => {
255
+ if (tx.tokenAssociate) {
256
+ return `Associate Account ${tx.tokenAssociate.accountId} with Tokens: ${(tx.tokenAssociate.tokenIds || []).join(", ")}`;
257
+ }
258
+ return tx.humanReadableType;
259
+ };
260
+ const summarizeTokenDissociate = (tx) => {
261
+ if (tx.tokenDissociate) {
262
+ return `Dissociate Account ${tx.tokenDissociate.accountId} from Tokens: ${(tx.tokenDissociate.tokenIds || []).join(", ")}`;
263
+ }
264
+ return tx.humanReadableType;
265
+ };
266
+ const summarizeAccountDelete = (tx) => {
267
+ if (tx.cryptoDelete) {
268
+ return `Delete Account ${tx.cryptoDelete.deleteAccountId}`;
269
+ }
270
+ return tx.humanReadableType;
271
+ };
272
+ const summarizeAccountCreate = (tx) => {
273
+ if (!tx.cryptoCreateAccount) {
274
+ return tx.humanReadableType;
275
+ }
276
+ let summary = "Create Account";
277
+ if (tx.cryptoCreateAccount.initialBalance && tx.cryptoCreateAccount.initialBalance !== "0") {
278
+ summary += ` with balance ${tx.cryptoCreateAccount.initialBalance}`;
279
+ }
280
+ if (tx.cryptoCreateAccount.alias) {
281
+ summary += ` (Alias: ${tx.cryptoCreateAccount.alias})`;
282
+ }
283
+ return summary;
284
+ };
285
+ const summarizeAccountUpdate = (tx) => {
286
+ if (tx.cryptoUpdateAccount) {
287
+ return `Update Account ${tx.cryptoUpdateAccount.accountIdToUpdate || "(Unknown ID)"}`;
288
+ }
289
+ return tx.humanReadableType;
290
+ };
291
+ const summarizeApproveAllowance = (tx) => {
292
+ if (tx.cryptoApproveAllowance) {
293
+ let count = 0;
294
+ if (tx.cryptoApproveAllowance.hbarAllowances) {
295
+ count += tx.cryptoApproveAllowance.hbarAllowances.length;
296
+ }
297
+ if (tx.cryptoApproveAllowance.tokenAllowances) {
298
+ count += tx.cryptoApproveAllowance.tokenAllowances.length;
299
+ }
300
+ if (tx.cryptoApproveAllowance.nftAllowances) {
301
+ count += tx.cryptoApproveAllowance.nftAllowances.length;
302
+ }
303
+ return `Approve ${count} Crypto Allowance(s)`;
304
+ }
305
+ return tx.humanReadableType;
306
+ };
307
+ const summarizeDeleteAllowance = (tx) => {
308
+ if (tx.cryptoDeleteAllowance) {
309
+ const count = (tx.cryptoDeleteAllowance.nftAllowancesToRemove || []).length;
310
+ return `Delete ${count} NFT Crypto Allowance(s)`;
311
+ }
312
+ return tx.humanReadableType;
313
+ };
314
+ const summarizeContractCreate = (tx) => {
315
+ if (tx.contractCreate) {
316
+ let summary = "Create Contract";
317
+ if (tx.contractCreate.memo) {
318
+ summary += ` (Memo: ${tx.contractCreate.memo})`;
319
+ }
320
+ return summary;
321
+ }
322
+ return tx.humanReadableType;
323
+ };
324
+ const summarizeContractUpdate = (tx) => {
325
+ if (tx.contractUpdate) {
326
+ return `Update Contract ${tx.contractUpdate.contractIdToUpdate || "(Unknown ID)"}`;
327
+ }
328
+ return tx.humanReadableType;
329
+ };
330
+ const summarizeContractDelete = (tx) => {
331
+ if (tx.contractDelete) {
332
+ let summary = `Delete Contract ${tx.contractDelete.contractIdToDelete || "(Unknown ID)"}`;
333
+ if (tx.contractDelete.transferAccountId) {
334
+ summary += ` (Transfer to Account: ${tx.contractDelete.transferAccountId})`;
335
+ } else if (tx.contractDelete.transferContractId) {
336
+ summary += ` (Transfer to Contract: ${tx.contractDelete.transferContractId})`;
337
+ }
338
+ return summary;
339
+ }
340
+ return tx.humanReadableType;
341
+ };
342
+ const summarizeTokenUpdate = (tx) => {
343
+ if (tx.tokenUpdate) {
344
+ return `Update Token ${tx.tokenUpdate.tokenId || "(Unknown ID)"}`;
345
+ }
346
+ return tx.humanReadableType;
347
+ };
348
+ const summarizeTokenFeeScheduleUpdate = (tx) => {
349
+ if (tx.tokenFeeScheduleUpdate) {
350
+ return `Update Fee Schedule for Token ${tx.tokenFeeScheduleUpdate.tokenId || "(Unknown ID)"}`;
351
+ }
352
+ return tx.humanReadableType;
353
+ };
354
+ const summarizeTokenAirdrop = (tx) => {
355
+ if (!tx.tokenAirdrop || !tx.tokenAirdrop.tokenTransfers) {
356
+ return tx.humanReadableType;
357
+ }
358
+ let tokenTypes = 0;
359
+ let totalTransfers = 0;
360
+ for (const t of tx.tokenAirdrop.tokenTransfers) {
361
+ tokenTypes += 1;
362
+ totalTransfers += Array.isArray(t.transfers) ? t.transfers.length : 0;
363
+ }
364
+ return `Token Airdrop across ${tokenTypes} token(s), ${totalTransfers} transfer(s)`;
365
+ };
366
+ const summarizeScheduleCreate = (tx) => {
367
+ if (!tx.scheduleCreate) {
368
+ return tx.humanReadableType;
369
+ }
370
+ let summary = "Create Schedule";
371
+ if (tx.scheduleCreate.memo) {
372
+ summary += ` (Memo: ${tx.scheduleCreate.memo})`;
373
+ }
374
+ return summary;
375
+ };
376
+ const summarizeScheduleSign = (tx) => {
377
+ if (tx.scheduleSign) {
378
+ return "Sign Schedule";
379
+ }
380
+ return tx.humanReadableType;
381
+ };
382
+ const summarizeScheduleDelete = (tx) => {
383
+ if (tx.scheduleDelete) {
384
+ return "Delete Schedule";
385
+ }
386
+ return tx.humanReadableType;
387
+ };
388
+ const summarizeSystemDelete = (tx) => {
389
+ if (!tx.systemDelete) {
390
+ return tx.humanReadableType;
391
+ }
392
+ if (tx.systemDelete.fileId) {
393
+ return `System Delete File ${tx.systemDelete.fileId}`;
394
+ }
395
+ if (tx.systemDelete.contractId) {
396
+ return `System Delete Contract ${tx.systemDelete.contractId}`;
397
+ }
398
+ return "System Delete";
399
+ };
400
+ const summarizeSystemUndelete = (tx) => {
401
+ if (!tx.systemUndelete) {
402
+ return tx.humanReadableType;
403
+ }
404
+ if (tx.systemUndelete.fileId) {
405
+ return `System Undelete File ${tx.systemUndelete.fileId}`;
406
+ }
407
+ if (tx.systemUndelete.contractId) {
408
+ return `System Undelete Contract ${tx.systemUndelete.contractId}`;
409
+ }
410
+ return "System Undelete";
411
+ };
412
+ const summarizeFreeze = (tx) => {
413
+ return "Network Freeze";
414
+ };
415
+ const summarizeEthereumTransaction = (tx) => {
416
+ return "Ethereum Transaction";
417
+ };
418
+ const summarizeUncheckedSubmit = (tx) => {
419
+ if (tx.uncheckedSubmit && tx.uncheckedSubmit.topicId) {
420
+ return `Unchecked Submit to topic ${tx.uncheckedSubmit.topicId}`;
421
+ }
422
+ return "Unchecked Submit";
423
+ };
424
+ const summarizeNodeCreate = (tx) => {
425
+ return "Create Node";
426
+ };
427
+ const summarizeNodeUpdate = (tx) => {
428
+ return "Update Node";
429
+ };
430
+ const summarizeNodeDelete = (tx) => {
431
+ return "Delete Node";
432
+ };
433
+ const summarizeAtomicBatch = (tx) => {
434
+ const count = Array.isArray(tx.atomicBatch?.transactions) ? tx.atomicBatch.transactions.length : 0;
435
+ return `Atomic Batch (${count} transaction(s))`;
436
+ };
437
+ const transactionSummaryRegistry = {
438
+ CRYPTOTRANSFER: { fn: summarizeCryptoTransfer },
439
+ cryptoTransfer: { fn: summarizeCryptoTransfer },
440
+ CONTRACTCALL: { fn: summarizeContractCall },
441
+ contractCall: { fn: summarizeContractCall },
442
+ TOKENMINT: { fn: summarizeTokenMint },
443
+ tokenMint: { fn: summarizeTokenMint },
444
+ TOKENBURN: { fn: summarizeTokenBurn },
445
+ tokenBurn: { fn: summarizeTokenBurn },
446
+ TOKENCREATE: { fn: summarizeTokenCreate },
447
+ tokenCreation: { fn: summarizeTokenCreate },
448
+ TOPICCREATE: { fn: summarizeConsensusCreateTopic },
449
+ consensusCreateTopic: { fn: summarizeConsensusCreateTopic },
450
+ CONSENSUSSUBMITMESSAGE: { fn: summarizeConsensusSubmitMessage },
451
+ consensusSubmitMessage: { fn: summarizeConsensusSubmitMessage },
452
+ TOPICUPDATE: { fn: summarizeConsensusUpdateTopic },
453
+ consensusUpdateTopic: { fn: summarizeConsensusUpdateTopic },
454
+ TOPICDELETE: { fn: summarizeConsensusDeleteTopic },
455
+ consensusDeleteTopic: { fn: summarizeConsensusDeleteTopic },
456
+ FILECREATE: { fn: summarizeFileCreate },
457
+ fileCreate: { fn: summarizeFileCreate },
458
+ FILEAPPEND: { fn: summarizeFileAppend },
459
+ fileAppend: { fn: summarizeFileAppend },
460
+ FILEUPDATE: { fn: summarizeFileUpdate },
461
+ fileUpdate: { fn: summarizeFileUpdate },
462
+ FILEDELETE: { fn: summarizeFileDelete },
463
+ fileDelete: { fn: summarizeFileDelete },
464
+ TOKENUPDATE: { fn: summarizeTokenUpdate },
465
+ tokenUpdate: { fn: summarizeTokenUpdate },
466
+ TOKENFEESCHEDULEUPDATE: { fn: summarizeTokenFeeScheduleUpdate },
467
+ tokenFeeScheduleUpdate: { fn: summarizeTokenFeeScheduleUpdate },
468
+ TOKENFREEZE: { fn: summarizeTokenFreeze },
469
+ tokenFreeze: { fn: summarizeTokenFreeze },
470
+ TOKENUNFREEZE: { fn: summarizeTokenUnfreeze },
471
+ tokenUnfreeze: { fn: summarizeTokenUnfreeze },
472
+ TOKENGRANTKYC: { fn: summarizeTokenGrantKyc },
473
+ tokenGrantKyc: { fn: summarizeTokenGrantKyc },
474
+ TOKENREVOKEKYC: { fn: summarizeTokenRevokeKyc },
475
+ tokenRevokeKyc: { fn: summarizeTokenRevokeKyc },
476
+ TOKENPAUSE: { fn: summarizeTokenPause },
477
+ tokenPause: { fn: summarizeTokenPause },
478
+ TOKENUNPAUSE: { fn: summarizeTokenUnpause },
479
+ tokenUnpause: { fn: summarizeTokenUnpause },
480
+ TOKENWIPE: { fn: summarizeTokenWipe },
481
+ TOKENWIPEACCOUNT: { fn: summarizeTokenWipe },
482
+ tokenWipe: { fn: summarizeTokenWipe },
483
+ tokenWipeAccount: { fn: summarizeTokenWipe },
484
+ TOKENDELETE: { fn: summarizeTokenDelete },
485
+ tokenDelete: { fn: summarizeTokenDelete },
486
+ TOKENASSOCIATE: { fn: summarizeTokenAssociate },
487
+ tokenAssociate: { fn: summarizeTokenAssociate },
488
+ TOKENDISSOCIATE: { fn: summarizeTokenDissociate },
489
+ tokenDissociate: { fn: summarizeTokenDissociate },
490
+ ACCOUNTDELETE: { fn: summarizeAccountDelete },
491
+ cryptoDelete: { fn: summarizeAccountDelete },
492
+ ACCOUNTCREATE: { fn: summarizeAccountCreate },
493
+ cryptoCreateAccount: { fn: summarizeAccountCreate },
494
+ ACCOUNTUPDATE: { fn: summarizeAccountUpdate },
495
+ cryptoUpdateAccount: { fn: summarizeAccountUpdate },
496
+ APPROVEALLOWANCE: { fn: summarizeApproveAllowance },
497
+ cryptoApproveAllowance: { fn: summarizeApproveAllowance },
498
+ DELETEALLOWANCE: { fn: summarizeDeleteAllowance },
499
+ cryptoDeleteAllowance: { fn: summarizeDeleteAllowance },
500
+ CONTRACTCREATE: { fn: summarizeContractCreate },
501
+ contractCreate: { fn: summarizeContractCreate },
502
+ CONTRACTUPDATE: { fn: summarizeContractUpdate },
503
+ contractUpdate: { fn: summarizeContractUpdate },
504
+ CONTRACTDELETE: { fn: summarizeContractDelete },
505
+ contractDelete: { fn: summarizeContractDelete },
506
+ TOKENAIRDROP: { fn: summarizeTokenAirdrop },
507
+ tokenAirdrop: { fn: summarizeTokenAirdrop },
508
+ SCHEDULECREATE: { fn: summarizeScheduleCreate },
509
+ scheduleCreate: { fn: summarizeScheduleCreate },
510
+ SCHEDULESIGN: { fn: summarizeScheduleSign },
511
+ scheduleSign: { fn: summarizeScheduleSign },
512
+ SCHEDULEDELETE: { fn: summarizeScheduleDelete },
513
+ scheduleDelete: { fn: summarizeScheduleDelete },
514
+ SYSTEMDELETE: { fn: summarizeSystemDelete },
515
+ systemDelete: { fn: summarizeSystemDelete },
516
+ SYSTEMUNDELETE: { fn: summarizeSystemUndelete },
517
+ systemUndelete: { fn: summarizeSystemUndelete },
518
+ FREEZE: { fn: summarizeFreeze },
519
+ freeze: { fn: summarizeFreeze },
520
+ ETHEREUMTRANSACTION: { fn: summarizeEthereumTransaction },
521
+ ethereumTransaction: { fn: summarizeEthereumTransaction },
522
+ UNCHECKEDSUBMIT: { fn: summarizeUncheckedSubmit },
523
+ uncheckedSubmit: { fn: summarizeUncheckedSubmit },
524
+ NODECREATE: { fn: summarizeNodeCreate },
525
+ nodeCreate: { fn: summarizeNodeCreate },
526
+ NODEUPDATE: { fn: summarizeNodeUpdate },
527
+ nodeUpdate: { fn: summarizeNodeUpdate },
528
+ NODEDELETE: { fn: summarizeNodeDelete },
529
+ nodeDelete: { fn: summarizeNodeDelete },
530
+ ATOMICBATCH: { fn: summarizeAtomicBatch },
531
+ atomicBatch: { fn: summarizeAtomicBatch }
532
+ };
533
+ const resolveTransactionSummary = (tx) => {
534
+ const spec = transactionSummaryRegistry[tx.type];
535
+ if (spec) {
536
+ if (spec.fn) {
537
+ return spec.fn(tx);
538
+ }
539
+ if (spec.template) {
540
+ return renderTemplate(spec.template, tx);
541
+ }
542
+ }
543
+ const hrSpec = transactionSummaryRegistry[tx.humanReadableType];
544
+ if (hrSpec) {
545
+ if (hrSpec.fn) {
546
+ return hrSpec.fn(tx);
547
+ }
548
+ if (hrSpec.template) {
549
+ return renderTemplate(hrSpec.template, tx);
550
+ }
551
+ }
552
+ if (tx.type === "cryptoTransfer" || tx.type === "CRYPTOTRANSFER") {
553
+ return summarizeCryptoTransfer(tx);
554
+ }
555
+ if (tx.contractCall) {
556
+ return summarizeContractCall(tx);
557
+ }
558
+ if (Array.isArray(tx.tokenTransfers) && tx.tokenTransfers.length > 0) {
559
+ return summarizeTokenTransfers(tx);
560
+ }
561
+ if (tx.humanReadableType && tx.humanReadableType !== "Unknown Transaction") {
562
+ return tx.humanReadableType;
563
+ }
564
+ return "Unknown Transaction";
565
+ };
13
566
  export {
14
- getTopicId
567
+ resolveTransactionSummary,
568
+ transactionSummaryRegistry
15
569
  };
16
570
  //# sourceMappingURL=standards-sdk.es125.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es125.js","sources":["../../src/utils/topic-id-utils.ts"],"sourcesContent":["/**\n * Utility functions for safely handling topic ID properties that may use different naming conventions\n */\n\n/**\n * Safely extracts topic ID from an inscription result object that may have either `topicId` or `topic_id`\n * @param inscription - The inscription result object\n * @returns The topic ID string or undefined if not found\n */\ntype TopicIdCarrier =\n | { topicId?: string; topic_id?: string }\n | Record<string, unknown>\n | null\n | undefined;\n\nexport function getTopicId(inscription: unknown): string | undefined {\n if (!inscription || typeof inscription !== 'object') return undefined;\n const obj = inscription as TopicIdCarrier;\n const direct =\n (obj as { topicId?: string }).topicId ||\n (obj as { topic_id?: string }).topic_id;\n if (typeof direct === 'string' && direct.trim()) return direct;\n const rec = obj as Record<string, unknown>;\n const t1 = rec['topicId'];\n if (typeof t1 === 'string' && t1.trim()) return t1;\n const t2 = rec['topic_id'];\n if (typeof t2 === 'string' && t2.trim()) return t2;\n return undefined;\n}\n"],"names":[],"mappings":"AAeO,SAAS,WAAW,aAA0C;AACnE,MAAI,CAAC,eAAe,OAAO,gBAAgB,SAAU,QAAO;AAC5D,QAAM,MAAM;AACZ,QAAM,SACH,IAA6B,WAC7B,IAA8B;AACjC,MAAI,OAAO,WAAW,YAAY,OAAO,KAAA,EAAQ,QAAO;AACxD,QAAM,MAAM;AACZ,QAAM,KAAK,IAAI,SAAS;AACxB,MAAI,OAAO,OAAO,YAAY,GAAG,KAAA,EAAQ,QAAO;AAChD,QAAM,KAAK,IAAI,UAAU;AACzB,MAAI,OAAO,OAAO,YAAY,GAAG,KAAA,EAAQ,QAAO;AAChD,SAAO;AACT;"}
1
+ {"version":3,"file":"standards-sdk.es125.js","sources":["../../src/utils/transaction-summary-registry.ts"],"sourcesContent":["import type {\n ParsedTransaction,\n TokenAmount,\n} from './transaction-parser-types';\n\nexport type TransactionSummaryFn = (tx: ParsedTransaction) => string;\nexport type TransactionSummarySpec = {\n template?: string;\n fn?: TransactionSummaryFn;\n};\n\nconst getNested = (tx: ParsedTransaction, path: string): unknown => {\n const parts = path.split('.');\n let current: any = tx as any;\n for (const p of parts) {\n if (current == null) {\n return undefined;\n }\n current = current[p];\n }\n return current;\n};\n\nconst renderTemplate = (template: string, tx: ParsedTransaction): string => {\n return template.replace(/\\{([^}]+)\\}/g, (_m, path) => {\n const value = getNested(tx, String(path).trim());\n if (value === null || value === undefined) {\n return '(Unknown)';\n }\n return String(value);\n });\n};\n\nconst summarizeCryptoTransfer = (tx: ParsedTransaction): string => {\n const senders: string[] = [];\n const receivers: string[] = [];\n\n if (Array.isArray(tx.transfers)) {\n for (const transfer of tx.transfers) {\n const originalAmountFloat = parseFloat(transfer.amount);\n let displayStr = transfer.amount;\n if (displayStr.startsWith('-')) {\n displayStr = displayStr.substring(1);\n }\n displayStr = displayStr.replace(/\\s*ℏ$/, '');\n if (originalAmountFloat < 0) {\n senders.push(`${transfer.accountId} (${displayStr} ℏ)`);\n } else if (originalAmountFloat > 0) {\n receivers.push(`${transfer.accountId} (${displayStr} ℏ)`);\n }\n }\n }\n\n if (senders.length > 0 && receivers.length > 0) {\n return `Transfer of HBAR from ${senders.join(', ')} to ${receivers.join(', ')}`;\n }\n return tx.humanReadableType;\n};\n\nconst groupTokenTransfers = (\n tokenTransfers: TokenAmount[],\n): Record<string, TokenAmount[]> => {\n const groups: Record<string, TokenAmount[]> = {};\n for (const t of tokenTransfers) {\n if (!groups[t.tokenId]) {\n groups[t.tokenId] = [];\n }\n groups[t.tokenId].push(t);\n }\n return groups;\n};\n\nconst summarizeTokenTransfers = (tx: ParsedTransaction): string => {\n const tokenSummaries: string[] = [];\n const groups = groupTokenTransfers(tx.tokenTransfers || []);\n for (const [tokenId, transfers] of Object.entries(groups)) {\n const tokenSenders: string[] = [];\n const tokenReceivers: string[] = [];\n for (const t of transfers) {\n const amt = parseFloat(String(t.amount));\n if (amt < 0) {\n tokenSenders.push(`${t.accountId} (${Math.abs(amt)})`);\n } else if (amt > 0) {\n tokenReceivers.push(`${t.accountId} (${amt})`);\n }\n }\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(', ')} to ${tokenReceivers.join(', ')}`,\n );\n }\n }\n if (tokenSummaries.length > 0) {\n return tokenSummaries.join('; ');\n }\n return tx.humanReadableType;\n};\n\nconst summarizeContractCall = (tx: ParsedTransaction): string => {\n if (!tx.contractCall) {\n return tx.humanReadableType;\n }\n let summary = `Contract call to ${tx.contractCall.contractId} with ${tx.contractCall.gas} gas`;\n if (tx.contractCall.amount > 0) {\n summary += ` and ${tx.contractCall.amount} HBAR`;\n }\n if (tx.contractCall.functionName) {\n summary += ` calling function ${tx.contractCall.functionName}`;\n }\n return summary;\n};\n\nconst summarizeTokenMint = (tx: ParsedTransaction): string => {\n if (tx.tokenMint) {\n return `Mint ${tx.tokenMint.amount} tokens for token ${tx.tokenMint.tokenId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenBurn = (tx: ParsedTransaction): string => {\n if (tx.tokenBurn) {\n return `Burn ${tx.tokenBurn.amount} tokens for token ${tx.tokenBurn.tokenId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenCreate = (tx: ParsedTransaction): string => {\n if (!tx.tokenCreation) {\n return tx.humanReadableType;\n }\n let summary = `Create token ${tx.tokenCreation.tokenName || '(No Name)'} (${tx.tokenCreation.tokenSymbol || '(No Symbol)'})`;\n if (tx.tokenCreation.initialSupply) {\n summary += ` with initial supply ${tx.tokenCreation.initialSupply}`;\n }\n if (tx.tokenCreation.customFees && tx.tokenCreation.customFees.length > 0) {\n summary += ` including ${tx.tokenCreation.customFees.length} custom fee(s)`;\n }\n return summary;\n};\n\nconst summarizeConsensusCreateTopic = (tx: ParsedTransaction): string => {\n if (!tx.consensusCreateTopic) {\n return tx.humanReadableType;\n }\n let summary = 'Create new topic';\n if (tx.consensusCreateTopic.memo) {\n summary += ` with memo \"${tx.consensusCreateTopic.memo}\"`;\n }\n if (tx.consensusCreateTopic.autoRenewAccountId) {\n summary += `, auto-renew by ${tx.consensusCreateTopic.autoRenewAccountId}`;\n }\n return summary;\n};\n\nconst summarizeConsensusSubmitMessage = (tx: ParsedTransaction): string => {\n if (!tx.consensusSubmitMessage) {\n return tx.humanReadableType;\n }\n let summary = 'Submit message';\n if (tx.consensusSubmitMessage.topicId) {\n summary += ` to topic ${tx.consensusSubmitMessage.topicId}`;\n }\n if (tx.consensusSubmitMessage.message) {\n if (tx.consensusSubmitMessage.messageEncoding === 'utf8') {\n const preview = tx.consensusSubmitMessage.message.substring(0, 70);\n const needsEllipsis = tx.consensusSubmitMessage.message.length > 70;\n summary += `: \"${preview}${needsEllipsis ? '...' : ''}\"`;\n } else {\n const byteLength = Buffer.from(\n tx.consensusSubmitMessage.message,\n 'base64',\n ).length;\n summary += ` (binary message data, length: ${byteLength} bytes)`;\n }\n }\n if (\n tx.consensusSubmitMessage.chunkInfoNumber &&\n tx.consensusSubmitMessage.chunkInfoTotal\n ) {\n summary += ` (chunk ${tx.consensusSubmitMessage.chunkInfoNumber}/${tx.consensusSubmitMessage.chunkInfoTotal})`;\n }\n return summary;\n};\n\nconst summarizeFileCreate = (tx: ParsedTransaction): string => {\n if (!tx.fileCreate) {\n return tx.humanReadableType;\n }\n let summary = 'Create File';\n if (tx.fileCreate.memo) {\n summary += ` with memo \"${tx.fileCreate.memo}\"`;\n }\n if (tx.fileCreate.contents) {\n summary += ' (includes content)';\n }\n return summary;\n};\n\nconst summarizeFileAppend = (tx: ParsedTransaction): string => {\n if (tx.fileAppend) {\n return `Append to File ${tx.fileAppend.fileId || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeFileUpdate = (tx: ParsedTransaction): string => {\n if (tx.fileUpdate) {\n return `Update File ${tx.fileUpdate.fileId || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeFileDelete = (tx: ParsedTransaction): string => {\n if (tx.fileDelete) {\n return `Delete File ${tx.fileDelete.fileId || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeConsensusUpdateTopic = (tx: ParsedTransaction): string => {\n if (tx.consensusUpdateTopic) {\n return `Update Topic ${tx.consensusUpdateTopic.topicId || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeConsensusDeleteTopic = (tx: ParsedTransaction): string => {\n if (tx.consensusDeleteTopic) {\n return `Delete Topic ${tx.consensusDeleteTopic.topicId || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenFreeze = (tx: ParsedTransaction): string => {\n if (tx.tokenFreeze) {\n return `Freeze Token ${tx.tokenFreeze.tokenId} for Account ${tx.tokenFreeze.accountId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenUnfreeze = (tx: ParsedTransaction): string => {\n if (tx.tokenUnfreeze) {\n return `Unfreeze Token ${tx.tokenUnfreeze.tokenId} for Account ${tx.tokenUnfreeze.accountId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenGrantKyc = (tx: ParsedTransaction): string => {\n if (tx.tokenGrantKyc) {\n return `Grant KYC for Token ${tx.tokenGrantKyc.tokenId} to Account ${tx.tokenGrantKyc.accountId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenRevokeKyc = (tx: ParsedTransaction): string => {\n if (tx.tokenRevokeKyc) {\n return `Revoke KYC for Token ${tx.tokenRevokeKyc.tokenId} from Account ${tx.tokenRevokeKyc.accountId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenPause = (tx: ParsedTransaction): string => {\n if (tx.tokenPause) {\n return `Pause Token ${tx.tokenPause.tokenId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenUnpause = (tx: ParsedTransaction): string => {\n if (tx.tokenUnpause) {\n return `Unpause Token ${tx.tokenUnpause.tokenId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenWipe = (tx: ParsedTransaction): string => {\n if (tx.tokenWipeAccount) {\n let summary = `Wipe Token ${tx.tokenWipeAccount.tokenId} from Account ${tx.tokenWipeAccount.accountId}`;\n if (\n tx.tokenWipeAccount.serialNumbers &&\n tx.tokenWipeAccount.serialNumbers.length > 0\n ) {\n summary += ` (Serials: ${tx.tokenWipeAccount.serialNumbers.join(', ')})`;\n }\n if (tx.tokenWipeAccount.amount) {\n summary += ` (Amount: ${tx.tokenWipeAccount.amount})`;\n }\n return summary;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenDelete = (tx: ParsedTransaction): string => {\n if (tx.tokenDelete) {\n return `Delete Token ${tx.tokenDelete.tokenId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenAssociate = (tx: ParsedTransaction): string => {\n if (tx.tokenAssociate) {\n return `Associate Account ${tx.tokenAssociate.accountId} with Tokens: ${(tx.tokenAssociate.tokenIds || []).join(', ')}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenDissociate = (tx: ParsedTransaction): string => {\n if (tx.tokenDissociate) {\n return `Dissociate Account ${tx.tokenDissociate.accountId} from Tokens: ${(tx.tokenDissociate.tokenIds || []).join(', ')}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeAccountDelete = (tx: ParsedTransaction): string => {\n if (tx.cryptoDelete) {\n return `Delete Account ${tx.cryptoDelete.deleteAccountId}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeAccountCreate = (tx: ParsedTransaction): string => {\n if (!tx.cryptoCreateAccount) {\n return tx.humanReadableType;\n }\n let summary = 'Create Account';\n if (\n tx.cryptoCreateAccount.initialBalance &&\n tx.cryptoCreateAccount.initialBalance !== '0'\n ) {\n summary += ` with balance ${tx.cryptoCreateAccount.initialBalance}`;\n }\n if (tx.cryptoCreateAccount.alias) {\n summary += ` (Alias: ${tx.cryptoCreateAccount.alias})`;\n }\n return summary;\n};\n\nconst summarizeAccountUpdate = (tx: ParsedTransaction): string => {\n if (tx.cryptoUpdateAccount) {\n return `Update Account ${tx.cryptoUpdateAccount.accountIdToUpdate || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeApproveAllowance = (tx: ParsedTransaction): string => {\n if (tx.cryptoApproveAllowance) {\n let count = 0;\n if (tx.cryptoApproveAllowance.hbarAllowances) {\n count += tx.cryptoApproveAllowance.hbarAllowances.length;\n }\n if (tx.cryptoApproveAllowance.tokenAllowances) {\n count += tx.cryptoApproveAllowance.tokenAllowances.length;\n }\n if (tx.cryptoApproveAllowance.nftAllowances) {\n count += tx.cryptoApproveAllowance.nftAllowances.length;\n }\n return `Approve ${count} Crypto Allowance(s)`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeDeleteAllowance = (tx: ParsedTransaction): string => {\n if (tx.cryptoDeleteAllowance) {\n const count = (tx.cryptoDeleteAllowance.nftAllowancesToRemove || []).length;\n return `Delete ${count} NFT Crypto Allowance(s)`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeContractCreate = (tx: ParsedTransaction): string => {\n if (tx.contractCreate) {\n let summary = 'Create Contract';\n if (tx.contractCreate.memo) {\n summary += ` (Memo: ${tx.contractCreate.memo})`;\n }\n return summary;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeContractUpdate = (tx: ParsedTransaction): string => {\n if (tx.contractUpdate) {\n return `Update Contract ${tx.contractUpdate.contractIdToUpdate || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeContractDelete = (tx: ParsedTransaction): string => {\n if (tx.contractDelete) {\n let summary = `Delete Contract ${tx.contractDelete.contractIdToDelete || '(Unknown ID)'}`;\n if (tx.contractDelete.transferAccountId) {\n summary += ` (Transfer to Account: ${tx.contractDelete.transferAccountId})`;\n } else if (tx.contractDelete.transferContractId) {\n summary += ` (Transfer to Contract: ${tx.contractDelete.transferContractId})`;\n }\n return summary;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenUpdate = (tx: ParsedTransaction): string => {\n if (tx.tokenUpdate) {\n return `Update Token ${tx.tokenUpdate.tokenId || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizeTokenFeeScheduleUpdate = (tx: ParsedTransaction): string => {\n if (tx.tokenFeeScheduleUpdate) {\n return `Update Fee Schedule for Token ${tx.tokenFeeScheduleUpdate.tokenId || '(Unknown ID)'}`;\n }\n return tx.humanReadableType;\n};\n\nconst summarizePrng = (tx: ParsedTransaction): string => {\n let summary = 'Generate Random Number';\n if (tx.utilPrng && tx.utilPrng.range && tx.utilPrng.range > 0) {\n summary += ` (range up to ${tx.utilPrng.range - 1})`;\n }\n return summary;\n};\n\nconst summarizeTokenAirdrop = (tx: ParsedTransaction): string => {\n if (!tx.tokenAirdrop || !tx.tokenAirdrop.tokenTransfers) {\n return tx.humanReadableType;\n }\n let tokenTypes = 0;\n let totalTransfers = 0;\n for (const t of tx.tokenAirdrop.tokenTransfers) {\n tokenTypes += 1;\n totalTransfers += Array.isArray(t.transfers) ? t.transfers.length : 0;\n }\n return `Token Airdrop across ${tokenTypes} token(s), ${totalTransfers} transfer(s)`;\n};\n\nconst summarizeScheduleCreate = (tx: ParsedTransaction): string => {\n if (!tx.scheduleCreate) {\n return tx.humanReadableType;\n }\n let summary = 'Create Schedule';\n if (tx.scheduleCreate.memo) {\n summary += ` (Memo: ${tx.scheduleCreate.memo})`;\n }\n return summary;\n};\n\nconst summarizeScheduleSign = (tx: ParsedTransaction): string => {\n if (tx.scheduleSign) {\n return 'Sign Schedule';\n }\n return tx.humanReadableType;\n};\n\nconst summarizeScheduleDelete = (tx: ParsedTransaction): string => {\n if (tx.scheduleDelete) {\n return 'Delete Schedule';\n }\n return tx.humanReadableType;\n};\n\nconst summarizeSystemDelete = (tx: ParsedTransaction): string => {\n if (!tx.systemDelete) {\n return tx.humanReadableType;\n }\n if (tx.systemDelete.fileId) {\n return `System Delete File ${tx.systemDelete.fileId}`;\n }\n if (tx.systemDelete.contractId) {\n return `System Delete Contract ${tx.systemDelete.contractId}`;\n }\n return 'System Delete';\n};\n\nconst summarizeSystemUndelete = (tx: ParsedTransaction): string => {\n if (!tx.systemUndelete) {\n return tx.humanReadableType;\n }\n if (tx.systemUndelete.fileId) {\n return `System Undelete File ${tx.systemUndelete.fileId}`;\n }\n if (tx.systemUndelete.contractId) {\n return `System Undelete Contract ${tx.systemUndelete.contractId}`;\n }\n return 'System Undelete';\n};\n\nconst summarizeFreeze = (tx: ParsedTransaction): string => {\n return 'Network Freeze';\n};\n\nconst summarizeEthereumTransaction = (tx: ParsedTransaction): string => {\n return 'Ethereum Transaction';\n};\n\nconst summarizeUncheckedSubmit = (tx: ParsedTransaction): string => {\n if (tx.uncheckedSubmit && tx.uncheckedSubmit.topicId) {\n return `Unchecked Submit to topic ${tx.uncheckedSubmit.topicId}`;\n }\n return 'Unchecked Submit';\n};\n\nconst summarizeNodeCreate = (tx: ParsedTransaction): string => {\n return 'Create Node';\n};\n\nconst summarizeNodeUpdate = (tx: ParsedTransaction): string => {\n return 'Update Node';\n};\n\nconst summarizeNodeDelete = (tx: ParsedTransaction): string => {\n return 'Delete Node';\n};\n\nconst summarizeAtomicBatch = (tx: ParsedTransaction): string => {\n const count = Array.isArray(tx.atomicBatch?.transactions)\n ? tx.atomicBatch!.transactions!.length\n : 0;\n return `Atomic Batch (${count} transaction(s))`;\n};\n\nexport const transactionSummaryRegistry: Record<\n string,\n TransactionSummarySpec\n> = {\n CRYPTOTRANSFER: { fn: summarizeCryptoTransfer },\n cryptoTransfer: { fn: summarizeCryptoTransfer },\n CONTRACTCALL: { fn: summarizeContractCall },\n contractCall: { fn: summarizeContractCall },\n TOKENMINT: { fn: summarizeTokenMint },\n tokenMint: { fn: summarizeTokenMint },\n TOKENBURN: { fn: summarizeTokenBurn },\n tokenBurn: { fn: summarizeTokenBurn },\n TOKENCREATE: { fn: summarizeTokenCreate },\n tokenCreation: { fn: summarizeTokenCreate },\n TOPICCREATE: { fn: summarizeConsensusCreateTopic },\n consensusCreateTopic: { fn: summarizeConsensusCreateTopic },\n CONSENSUSSUBMITMESSAGE: { fn: summarizeConsensusSubmitMessage },\n consensusSubmitMessage: { fn: summarizeConsensusSubmitMessage },\n TOPICUPDATE: { fn: summarizeConsensusUpdateTopic },\n consensusUpdateTopic: { fn: summarizeConsensusUpdateTopic },\n TOPICDELETE: { fn: summarizeConsensusDeleteTopic },\n consensusDeleteTopic: { fn: summarizeConsensusDeleteTopic },\n FILECREATE: { fn: summarizeFileCreate },\n fileCreate: { fn: summarizeFileCreate },\n FILEAPPEND: { fn: summarizeFileAppend },\n fileAppend: { fn: summarizeFileAppend },\n FILEUPDATE: { fn: summarizeFileUpdate },\n fileUpdate: { fn: summarizeFileUpdate },\n FILEDELETE: { fn: summarizeFileDelete },\n fileDelete: { fn: summarizeFileDelete },\n TOKENUPDATE: { fn: summarizeTokenUpdate },\n tokenUpdate: { fn: summarizeTokenUpdate },\n TOKENFEESCHEDULEUPDATE: { fn: summarizeTokenFeeScheduleUpdate },\n tokenFeeScheduleUpdate: { fn: summarizeTokenFeeScheduleUpdate },\n TOKENFREEZE: { fn: summarizeTokenFreeze },\n tokenFreeze: { fn: summarizeTokenFreeze },\n TOKENUNFREEZE: { fn: summarizeTokenUnfreeze },\n tokenUnfreeze: { fn: summarizeTokenUnfreeze },\n TOKENGRANTKYC: { fn: summarizeTokenGrantKyc },\n tokenGrantKyc: { fn: summarizeTokenGrantKyc },\n TOKENREVOKEKYC: { fn: summarizeTokenRevokeKyc },\n tokenRevokeKyc: { fn: summarizeTokenRevokeKyc },\n TOKENPAUSE: { fn: summarizeTokenPause },\n tokenPause: { fn: summarizeTokenPause },\n TOKENUNPAUSE: { fn: summarizeTokenUnpause },\n tokenUnpause: { fn: summarizeTokenUnpause },\n TOKENWIPE: { fn: summarizeTokenWipe },\n TOKENWIPEACCOUNT: { fn: summarizeTokenWipe },\n tokenWipe: { fn: summarizeTokenWipe },\n tokenWipeAccount: { fn: summarizeTokenWipe },\n TOKENDELETE: { fn: summarizeTokenDelete },\n tokenDelete: { fn: summarizeTokenDelete },\n TOKENASSOCIATE: { fn: summarizeTokenAssociate },\n tokenAssociate: { fn: summarizeTokenAssociate },\n TOKENDISSOCIATE: { fn: summarizeTokenDissociate },\n tokenDissociate: { fn: summarizeTokenDissociate },\n ACCOUNTDELETE: { fn: summarizeAccountDelete },\n cryptoDelete: { fn: summarizeAccountDelete },\n ACCOUNTCREATE: { fn: summarizeAccountCreate },\n cryptoCreateAccount: { fn: summarizeAccountCreate },\n ACCOUNTUPDATE: { fn: summarizeAccountUpdate },\n cryptoUpdateAccount: { fn: summarizeAccountUpdate },\n APPROVEALLOWANCE: { fn: summarizeApproveAllowance },\n cryptoApproveAllowance: { fn: summarizeApproveAllowance },\n DELETEALLOWANCE: { fn: summarizeDeleteAllowance },\n cryptoDeleteAllowance: { fn: summarizeDeleteAllowance },\n CONTRACTCREATE: { fn: summarizeContractCreate },\n contractCreate: { fn: summarizeContractCreate },\n CONTRACTUPDATE: { fn: summarizeContractUpdate },\n contractUpdate: { fn: summarizeContractUpdate },\n CONTRACTDELETE: { fn: summarizeContractDelete },\n contractDelete: { fn: summarizeContractDelete },\n TOKENAIRDROP: { fn: summarizeTokenAirdrop },\n tokenAirdrop: { fn: summarizeTokenAirdrop },\n SCHEDULECREATE: { fn: summarizeScheduleCreate },\n scheduleCreate: { fn: summarizeScheduleCreate },\n SCHEDULESIGN: { fn: summarizeScheduleSign },\n scheduleSign: { fn: summarizeScheduleSign },\n SCHEDULEDELETE: { fn: summarizeScheduleDelete },\n scheduleDelete: { fn: summarizeScheduleDelete },\n SYSTEMDELETE: { fn: summarizeSystemDelete },\n systemDelete: { fn: summarizeSystemDelete },\n SYSTEMUNDELETE: { fn: summarizeSystemUndelete },\n systemUndelete: { fn: summarizeSystemUndelete },\n FREEZE: { fn: summarizeFreeze },\n freeze: { fn: summarizeFreeze },\n ETHEREUMTRANSACTION: { fn: summarizeEthereumTransaction },\n ethereumTransaction: { fn: summarizeEthereumTransaction },\n UNCHECKEDSUBMIT: { fn: summarizeUncheckedSubmit },\n uncheckedSubmit: { fn: summarizeUncheckedSubmit },\n NODECREATE: { fn: summarizeNodeCreate },\n nodeCreate: { fn: summarizeNodeCreate },\n NODEUPDATE: { fn: summarizeNodeUpdate },\n nodeUpdate: { fn: summarizeNodeUpdate },\n NODEDELETE: { fn: summarizeNodeDelete },\n nodeDelete: { fn: summarizeNodeDelete },\n ATOMICBATCH: { fn: summarizeAtomicBatch },\n atomicBatch: { fn: summarizeAtomicBatch },\n};\n\n/**\n * Resolve a human-readable summary string for a parsed transaction using the summary registry.\n */\nexport const resolveTransactionSummary = (tx: ParsedTransaction): string => {\n const spec = transactionSummaryRegistry[tx.type];\n if (spec) {\n if (spec.fn) {\n return spec.fn(tx);\n }\n if (spec.template) {\n return renderTemplate(spec.template, tx);\n }\n }\n const hrSpec = transactionSummaryRegistry[tx.humanReadableType];\n if (hrSpec) {\n if (hrSpec.fn) {\n return hrSpec.fn(tx);\n }\n if (hrSpec.template) {\n return renderTemplate(hrSpec.template, tx);\n }\n }\n if (tx.type === 'cryptoTransfer' || tx.type === 'CRYPTOTRANSFER') {\n return summarizeCryptoTransfer(tx);\n }\n if (tx.contractCall) {\n return summarizeContractCall(tx);\n }\n if (Array.isArray(tx.tokenTransfers) && tx.tokenTransfers.length > 0) {\n return summarizeTokenTransfers(tx);\n }\n if (tx.humanReadableType && tx.humanReadableType !== 'Unknown Transaction') {\n return tx.humanReadableType;\n }\n return 'Unknown Transaction';\n};\n"],"names":[],"mappings":"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"}