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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  2. package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
  3. package/dist/cjs/index.d.ts.map +1 -1
  4. package/dist/cjs/services/registry-broker/schemas.d.ts +153 -153
  5. package/dist/cjs/standards-sdk.cjs +2 -2
  6. package/dist/cjs/standards-sdk.cjs.map +1 -1
  7. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  8. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  9. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  10. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  11. package/dist/es/index.d.ts.map +1 -1
  12. package/dist/es/services/registry-broker/schemas.d.ts +153 -153
  13. package/dist/es/standards-sdk.es.js +134 -135
  14. package/dist/es/standards-sdk.es.js.map +1 -1
  15. package/dist/es/standards-sdk.es10.js +70 -90
  16. package/dist/es/standards-sdk.es10.js.map +1 -1
  17. package/dist/es/standards-sdk.es100.js +229 -27
  18. package/dist/es/standards-sdk.es100.js.map +1 -1
  19. package/dist/es/standards-sdk.es101.js +109 -228
  20. package/dist/es/standards-sdk.es101.js.map +1 -1
  21. package/dist/es/standards-sdk.es102.js +15 -94
  22. package/dist/es/standards-sdk.es102.js.map +1 -1
  23. package/dist/es/standards-sdk.es103.js +80 -30
  24. package/dist/es/standards-sdk.es103.js.map +1 -1
  25. package/dist/es/standards-sdk.es104.js +27 -80
  26. package/dist/es/standards-sdk.es104.js.map +1 -1
  27. package/dist/es/standards-sdk.es105.js +136 -25
  28. package/dist/es/standards-sdk.es105.js.map +1 -1
  29. package/dist/es/standards-sdk.es106.js +27 -140
  30. package/dist/es/standards-sdk.es106.js.map +1 -1
  31. package/dist/es/standards-sdk.es107.js +20 -27
  32. package/dist/es/standards-sdk.es107.js.map +1 -1
  33. package/dist/es/standards-sdk.es108.js +156 -18
  34. package/dist/es/standards-sdk.es108.js.map +1 -1
  35. package/dist/es/standards-sdk.es109.js +198 -148
  36. package/dist/es/standards-sdk.es109.js.map +1 -1
  37. package/dist/es/standards-sdk.es11.js +121 -45
  38. package/dist/es/standards-sdk.es11.js.map +1 -1
  39. package/dist/es/standards-sdk.es110.js +747 -167
  40. package/dist/es/standards-sdk.es110.js.map +1 -1
  41. package/dist/es/standards-sdk.es111.js +9 -786
  42. package/dist/es/standards-sdk.es111.js.map +1 -1
  43. package/dist/es/standards-sdk.es112.js +567 -13
  44. package/dist/es/standards-sdk.es112.js.map +1 -1
  45. package/dist/es/standards-sdk.es113.js +576 -541
  46. package/dist/es/standards-sdk.es113.js.map +1 -1
  47. package/dist/es/standards-sdk.es114.js +12 -601
  48. package/dist/es/standards-sdk.es114.js.map +1 -1
  49. package/dist/es/standards-sdk.es115.js +2 -13
  50. package/dist/es/standards-sdk.es115.js.map +1 -1
  51. package/dist/es/standards-sdk.es116.js +87 -2
  52. package/dist/es/standards-sdk.es116.js.map +1 -1
  53. package/dist/es/standards-sdk.es117.js +37 -84
  54. package/dist/es/standards-sdk.es117.js.map +1 -1
  55. package/dist/es/standards-sdk.es118.js +2 -40
  56. package/dist/es/standards-sdk.es118.js.map +1 -1
  57. package/dist/es/standards-sdk.es119.js +231 -2
  58. package/dist/es/standards-sdk.es119.js.map +1 -1
  59. package/dist/es/standards-sdk.es12.js +60 -159
  60. package/dist/es/standards-sdk.es12.js.map +1 -1
  61. package/dist/es/standards-sdk.es120.js +1110 -201
  62. package/dist/es/standards-sdk.es120.js.map +1 -1
  63. package/dist/es/standards-sdk.es121.js +225 -1059
  64. package/dist/es/standards-sdk.es121.js.map +1 -1
  65. package/dist/es/standards-sdk.es122.js +419 -303
  66. package/dist/es/standards-sdk.es122.js.map +1 -1
  67. package/dist/es/standards-sdk.es123.js +351 -418
  68. package/dist/es/standards-sdk.es123.js.map +1 -1
  69. package/dist/es/standards-sdk.es124.js +872 -347
  70. package/dist/es/standards-sdk.es124.js.map +1 -1
  71. package/dist/es/standards-sdk.es125.js +182 -854
  72. package/dist/es/standards-sdk.es125.js.map +1 -1
  73. package/dist/es/standards-sdk.es126.js +1512 -153
  74. package/dist/es/standards-sdk.es126.js.map +1 -1
  75. package/dist/es/standards-sdk.es127.js +157 -1547
  76. package/dist/es/standards-sdk.es127.js.map +1 -1
  77. package/dist/es/standards-sdk.es128.js +192 -162
  78. package/dist/es/standards-sdk.es128.js.map +1 -1
  79. package/dist/es/standards-sdk.es129.js +61 -164
  80. package/dist/es/standards-sdk.es129.js.map +1 -1
  81. package/dist/es/standards-sdk.es13.js +200 -60
  82. package/dist/es/standards-sdk.es13.js.map +1 -1
  83. package/dist/es/standards-sdk.es130.js +102 -85
  84. package/dist/es/standards-sdk.es130.js.map +1 -1
  85. package/dist/es/standards-sdk.es131.js +222 -96
  86. package/dist/es/standards-sdk.es131.js.map +1 -1
  87. package/dist/es/standards-sdk.es132.js +153 -220
  88. package/dist/es/standards-sdk.es132.js.map +1 -1
  89. package/dist/es/standards-sdk.es133.js +104 -162
  90. package/dist/es/standards-sdk.es133.js.map +1 -1
  91. package/dist/es/standards-sdk.es134.js +296 -92
  92. package/dist/es/standards-sdk.es134.js.map +1 -1
  93. package/dist/es/standards-sdk.es135.js +432 -294
  94. package/dist/es/standards-sdk.es135.js.map +1 -1
  95. package/dist/es/standards-sdk.es136.js +14 -461
  96. package/dist/es/standards-sdk.es136.js.map +1 -1
  97. package/dist/es/standards-sdk.es137.js +79 -15
  98. package/dist/es/standards-sdk.es137.js.map +1 -1
  99. package/dist/es/standards-sdk.es138.js +77 -71
  100. package/dist/es/standards-sdk.es138.js.map +1 -1
  101. package/dist/es/standards-sdk.es139.js +152 -80
  102. package/dist/es/standards-sdk.es139.js.map +1 -1
  103. package/dist/es/standards-sdk.es14.js +149 -178
  104. package/dist/es/standards-sdk.es14.js.map +1 -1
  105. package/dist/es/standards-sdk.es140.js +7 -159
  106. package/dist/es/standards-sdk.es140.js.map +1 -1
  107. package/dist/es/standards-sdk.es141.js +86 -7
  108. package/dist/es/standards-sdk.es141.js.map +1 -1
  109. package/dist/es/standards-sdk.es142.js +44 -65
  110. package/dist/es/standards-sdk.es142.js.map +1 -1
  111. package/dist/es/standards-sdk.es143.js +30 -65
  112. package/dist/es/standards-sdk.es143.js.map +1 -1
  113. package/dist/es/standards-sdk.es144.js +34 -30
  114. package/dist/es/standards-sdk.es144.js.map +1 -1
  115. package/dist/es/standards-sdk.es145.js +28 -34
  116. package/dist/es/standards-sdk.es145.js.map +1 -1
  117. package/dist/es/standards-sdk.es146.js +138 -28
  118. package/dist/es/standards-sdk.es146.js.map +1 -1
  119. package/dist/es/standards-sdk.es147.js +37 -133
  120. package/dist/es/standards-sdk.es147.js.map +1 -1
  121. package/dist/es/standards-sdk.es148.js +12280 -33
  122. package/dist/es/standards-sdk.es148.js.map +1 -1
  123. package/dist/es/standards-sdk.es149.js +1 -1
  124. package/dist/es/standards-sdk.es15.js +152 -151
  125. package/dist/es/standards-sdk.es15.js.map +1 -1
  126. package/dist/es/standards-sdk.es150.js +12 -12284
  127. package/dist/es/standards-sdk.es150.js.map +1 -1
  128. package/dist/es/standards-sdk.es151.js +54 -15
  129. package/dist/es/standards-sdk.es151.js.map +1 -1
  130. package/dist/es/standards-sdk.es152.js +72 -160
  131. package/dist/es/standards-sdk.es152.js.map +1 -1
  132. package/dist/es/standards-sdk.es153.js +139 -289
  133. package/dist/es/standards-sdk.es153.js.map +1 -1
  134. package/dist/es/standards-sdk.es154.js +274 -298
  135. package/dist/es/standards-sdk.es154.js.map +1 -1
  136. package/dist/es/standards-sdk.es155.js +262 -369
  137. package/dist/es/standards-sdk.es155.js.map +1 -1
  138. package/dist/es/standards-sdk.es156.js +316 -194
  139. package/dist/es/standards-sdk.es156.js.map +1 -1
  140. package/dist/es/standards-sdk.es157.js +319 -64
  141. package/dist/es/standards-sdk.es157.js.map +1 -1
  142. package/dist/es/standards-sdk.es158.js +69 -49
  143. package/dist/es/standards-sdk.es158.js.map +1 -1
  144. package/dist/es/standards-sdk.es159.js +222 -65
  145. package/dist/es/standards-sdk.es159.js.map +1 -1
  146. package/dist/es/standards-sdk.es16.js +917 -136
  147. package/dist/es/standards-sdk.es16.js.map +1 -1
  148. package/dist/es/standards-sdk.es160.js +223 -218
  149. package/dist/es/standards-sdk.es160.js.map +1 -1
  150. package/dist/es/standards-sdk.es17.js +23 -948
  151. package/dist/es/standards-sdk.es17.js.map +1 -1
  152. package/dist/es/standards-sdk.es18.js +2422 -24
  153. package/dist/es/standards-sdk.es18.js.map +1 -1
  154. package/dist/es/standards-sdk.es19.js +818 -2092
  155. package/dist/es/standards-sdk.es19.js.map +1 -1
  156. package/dist/es/standards-sdk.es2.js +654 -189
  157. package/dist/es/standards-sdk.es2.js.map +1 -1
  158. package/dist/es/standards-sdk.es20.js +205 -1092
  159. package/dist/es/standards-sdk.es20.js.map +1 -1
  160. package/dist/es/standards-sdk.es21.js +858 -221
  161. package/dist/es/standards-sdk.es21.js.map +1 -1
  162. package/dist/es/standards-sdk.es22.js +179 -903
  163. package/dist/es/standards-sdk.es22.js.map +1 -1
  164. package/dist/es/standards-sdk.es23.js +164 -179
  165. package/dist/es/standards-sdk.es23.js.map +1 -1
  166. package/dist/es/standards-sdk.es24.js +62 -118
  167. package/dist/es/standards-sdk.es24.js.map +1 -1
  168. package/dist/es/standards-sdk.es25.js +377 -57
  169. package/dist/es/standards-sdk.es25.js.map +1 -1
  170. package/dist/es/standards-sdk.es26.js +36 -394
  171. package/dist/es/standards-sdk.es26.js.map +1 -1
  172. package/dist/es/standards-sdk.es27.js +901 -50
  173. package/dist/es/standards-sdk.es27.js.map +1 -1
  174. package/dist/es/standards-sdk.es28.js +134 -922
  175. package/dist/es/standards-sdk.es28.js.map +1 -1
  176. package/dist/es/standards-sdk.es29.js +7 -134
  177. package/dist/es/standards-sdk.es29.js.map +1 -1
  178. package/dist/es/standards-sdk.es3.js +63 -680
  179. package/dist/es/standards-sdk.es3.js.map +1 -1
  180. package/dist/es/standards-sdk.es30.js +344 -7
  181. package/dist/es/standards-sdk.es30.js.map +1 -1
  182. package/dist/es/standards-sdk.es31.js +302 -287
  183. package/dist/es/standards-sdk.es31.js.map +1 -1
  184. package/dist/es/standards-sdk.es32.js +94 -322
  185. package/dist/es/standards-sdk.es32.js.map +1 -1
  186. package/dist/es/standards-sdk.es33.js +458 -101
  187. package/dist/es/standards-sdk.es33.js.map +1 -1
  188. package/dist/es/standards-sdk.es34.js +132 -451
  189. package/dist/es/standards-sdk.es34.js.map +1 -1
  190. package/dist/es/standards-sdk.es35.js +216 -130
  191. package/dist/es/standards-sdk.es35.js.map +1 -1
  192. package/dist/es/standards-sdk.es36.js +273 -196
  193. package/dist/es/standards-sdk.es36.js.map +1 -1
  194. package/dist/es/standards-sdk.es37.js +148 -87
  195. package/dist/es/standards-sdk.es37.js.map +1 -1
  196. package/dist/es/standards-sdk.es38.js +183 -320
  197. package/dist/es/standards-sdk.es38.js.map +1 -1
  198. package/dist/es/standards-sdk.es39.js +238 -161
  199. package/dist/es/standards-sdk.es39.js.map +1 -1
  200. package/dist/es/standards-sdk.es4.js +425 -63
  201. package/dist/es/standards-sdk.es4.js.map +1 -1
  202. package/dist/es/standards-sdk.es40.js +136 -254
  203. package/dist/es/standards-sdk.es40.js.map +1 -1
  204. package/dist/es/standards-sdk.es41.js +225 -176
  205. package/dist/es/standards-sdk.es41.js.map +1 -1
  206. package/dist/es/standards-sdk.es42.js +199 -261
  207. package/dist/es/standards-sdk.es42.js.map +1 -1
  208. package/dist/es/standards-sdk.es43.js +237 -199
  209. package/dist/es/standards-sdk.es43.js.map +1 -1
  210. package/dist/es/standards-sdk.es44.js +209 -201
  211. package/dist/es/standards-sdk.es44.js.map +1 -1
  212. package/dist/es/standards-sdk.es45.js +305 -201
  213. package/dist/es/standards-sdk.es45.js.map +1 -1
  214. package/dist/es/standards-sdk.es46.js +371 -261
  215. package/dist/es/standards-sdk.es46.js.map +1 -1
  216. package/dist/es/standards-sdk.es47.js +316 -372
  217. package/dist/es/standards-sdk.es47.js.map +1 -1
  218. package/dist/es/standards-sdk.es48.js +404 -336
  219. package/dist/es/standards-sdk.es48.js.map +1 -1
  220. package/dist/es/standards-sdk.es49.js +83 -449
  221. package/dist/es/standards-sdk.es49.js.map +1 -1
  222. package/dist/es/standards-sdk.es5.js +232 -354
  223. package/dist/es/standards-sdk.es5.js.map +1 -1
  224. package/dist/es/standards-sdk.es50.js +179 -89
  225. package/dist/es/standards-sdk.es50.js.map +1 -1
  226. package/dist/es/standards-sdk.es51.js +231 -165
  227. package/dist/es/standards-sdk.es51.js.map +1 -1
  228. package/dist/es/standards-sdk.es52.js +25 -262
  229. package/dist/es/standards-sdk.es52.js.map +1 -1
  230. package/dist/es/standards-sdk.es53.js +56 -26
  231. package/dist/es/standards-sdk.es53.js.map +1 -1
  232. package/dist/es/standards-sdk.es54.js +12 -57
  233. package/dist/es/standards-sdk.es54.js.map +1 -1
  234. package/dist/es/standards-sdk.es55.js +49 -12
  235. package/dist/es/standards-sdk.es55.js.map +1 -1
  236. package/dist/es/standards-sdk.es56.js +115 -43
  237. package/dist/es/standards-sdk.es56.js.map +1 -1
  238. package/dist/es/standards-sdk.es57.js +42 -115
  239. package/dist/es/standards-sdk.es57.js.map +1 -1
  240. package/dist/es/standards-sdk.es58.js +52 -43
  241. package/dist/es/standards-sdk.es58.js.map +1 -1
  242. package/dist/es/standards-sdk.es59.js +36 -50
  243. package/dist/es/standards-sdk.es59.js.map +1 -1
  244. package/dist/es/standards-sdk.es6.js +125 -246
  245. package/dist/es/standards-sdk.es6.js.map +1 -1
  246. package/dist/es/standards-sdk.es60.js +207 -39
  247. package/dist/es/standards-sdk.es60.js.map +1 -1
  248. package/dist/es/standards-sdk.es61.js +24 -201
  249. package/dist/es/standards-sdk.es61.js.map +1 -1
  250. package/dist/es/standards-sdk.es62.js +87 -25
  251. package/dist/es/standards-sdk.es62.js.map +1 -1
  252. package/dist/es/standards-sdk.es63.js +3 -51
  253. package/dist/es/standards-sdk.es63.js.map +1 -1
  254. package/dist/es/standards-sdk.es64.js +100 -3
  255. package/dist/es/standards-sdk.es64.js.map +1 -1
  256. package/dist/es/standards-sdk.es65.js +61 -62
  257. package/dist/es/standards-sdk.es65.js.map +1 -1
  258. package/dist/es/standards-sdk.es66.js +17 -98
  259. package/dist/es/standards-sdk.es66.js.map +1 -1
  260. package/dist/es/standards-sdk.es67.js +77 -19
  261. package/dist/es/standards-sdk.es67.js.map +1 -1
  262. package/dist/es/standards-sdk.es68.js +458 -77
  263. package/dist/es/standards-sdk.es68.js.map +1 -1
  264. package/dist/es/standards-sdk.es69.js +106 -240
  265. package/dist/es/standards-sdk.es69.js.map +1 -1
  266. package/dist/es/standards-sdk.es7.js +28 -183
  267. package/dist/es/standards-sdk.es7.js.map +1 -1
  268. package/dist/es/standards-sdk.es70.js +170 -286
  269. package/dist/es/standards-sdk.es70.js.map +1 -1
  270. package/dist/es/standards-sdk.es71.js +71 -207
  271. package/dist/es/standards-sdk.es71.js.map +1 -1
  272. package/dist/es/standards-sdk.es72.js +71 -72
  273. package/dist/es/standards-sdk.es72.js.map +1 -1
  274. package/dist/es/standards-sdk.es73.js +143 -71
  275. package/dist/es/standards-sdk.es73.js.map +1 -1
  276. package/dist/es/standards-sdk.es74.js +62 -136
  277. package/dist/es/standards-sdk.es74.js.map +1 -1
  278. package/dist/es/standards-sdk.es75.js +380 -45
  279. package/dist/es/standards-sdk.es75.js.map +1 -1
  280. package/dist/es/standards-sdk.es76.js +222 -130
  281. package/dist/es/standards-sdk.es76.js.map +1 -1
  282. package/dist/es/standards-sdk.es77.js +320 -444
  283. package/dist/es/standards-sdk.es77.js.map +1 -1
  284. package/dist/es/standards-sdk.es78.js +88 -371
  285. package/dist/es/standards-sdk.es78.js.map +1 -1
  286. package/dist/es/standards-sdk.es79.js +125 -89
  287. package/dist/es/standards-sdk.es79.js.map +1 -1
  288. package/dist/es/standards-sdk.es8.js +80 -29
  289. package/dist/es/standards-sdk.es8.js.map +1 -1
  290. package/dist/es/standards-sdk.es80.js +8 -125
  291. package/dist/es/standards-sdk.es80.js.map +1 -1
  292. package/dist/es/standards-sdk.es81.js +45 -6
  293. package/dist/es/standards-sdk.es81.js.map +1 -1
  294. package/dist/es/standards-sdk.es82.js +98 -44
  295. package/dist/es/standards-sdk.es82.js.map +1 -1
  296. package/dist/es/standards-sdk.es83.js +331 -84
  297. package/dist/es/standards-sdk.es83.js.map +1 -1
  298. package/dist/es/standards-sdk.es84.js +93 -160
  299. package/dist/es/standards-sdk.es84.js.map +1 -1
  300. package/dist/es/standards-sdk.es85.js +55 -275
  301. package/dist/es/standards-sdk.es85.js.map +1 -1
  302. package/dist/es/standards-sdk.es86.js +43 -55
  303. package/dist/es/standards-sdk.es86.js.map +1 -1
  304. package/dist/es/standards-sdk.es87.js +145 -44
  305. package/dist/es/standards-sdk.es87.js.map +1 -1
  306. package/dist/es/standards-sdk.es88.js +30 -113
  307. package/dist/es/standards-sdk.es88.js.map +1 -1
  308. package/dist/es/standards-sdk.es89.js +22 -59
  309. package/dist/es/standards-sdk.es89.js.map +1 -1
  310. package/dist/es/standards-sdk.es9.js +104 -80
  311. package/dist/es/standards-sdk.es9.js.map +1 -1
  312. package/dist/es/standards-sdk.es90.js +23 -28
  313. package/dist/es/standards-sdk.es90.js.map +1 -1
  314. package/dist/es/standards-sdk.es91.js +238 -23
  315. package/dist/es/standards-sdk.es91.js.map +1 -1
  316. package/dist/es/standards-sdk.es92.js +267 -225
  317. package/dist/es/standards-sdk.es92.js.map +1 -1
  318. package/dist/es/standards-sdk.es93.js +95 -220
  319. package/dist/es/standards-sdk.es93.js.map +1 -1
  320. package/dist/es/standards-sdk.es94.js +124 -136
  321. package/dist/es/standards-sdk.es94.js.map +1 -1
  322. package/dist/es/standards-sdk.es95.js +42 -138
  323. package/dist/es/standards-sdk.es95.js.map +1 -1
  324. package/dist/es/standards-sdk.es96.js +259 -43
  325. package/dist/es/standards-sdk.es96.js.map +1 -1
  326. package/dist/es/standards-sdk.es97.js +82 -245
  327. package/dist/es/standards-sdk.es97.js.map +1 -1
  328. package/dist/es/standards-sdk.es98.js +49 -50
  329. package/dist/es/standards-sdk.es98.js.map +1 -1
  330. package/dist/es/standards-sdk.es99.js +29 -100
  331. package/dist/es/standards-sdk.es99.js.map +1 -1
  332. package/dist/es/utils/dynamic-import.d.ts +5 -1
  333. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  334. package/package.json +4 -4
  335. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  336. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  337. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  338. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
  339. package/dist/es/standards-sdk.es161.js +0 -247
  340. package/dist/es/standards-sdk.es161.js.map +0 -1
@@ -1,213 +1,793 @@
1
- import axios from "axios";
2
- import { Logger } from "./standards-sdk.es106.js";
3
- import { HederaMirrorNode } from "./standards-sdk.es127.js";
4
- import "./standards-sdk.es128.js";
5
- import "./standards-sdk.es129.js";
6
- import "./standards-sdk.es130.js";
7
- import "./standards-sdk.es131.js";
8
- import "./standards-sdk.es132.js";
9
- import "./standards-sdk.es133.js";
10
- import "./standards-sdk.es134.js";
11
- import "./standards-sdk.es135.js";
12
- import "buffer";
13
- import "crypto";
14
- import "@noble/curves/secp256k1.js";
15
- import "zod";
16
- import "./standards-sdk.es149.js";
17
- import "./standards-sdk.es139.js";
18
- class HRLResolver {
19
- constructor(logLevel = "info") {
20
- this.defaultEndpoint = "https://kiloscribe.com/api/inscription-cdn";
21
- this.logger = Logger.getInstance({
22
- level: logLevel,
23
- module: "HRLResolver"
24
- });
25
- }
1
+ import { proto } from "@hashgraph/proto";
2
+ import { Buffer } from "buffer";
3
+ import { Hbar, Long, HbarUnit, Transaction } from "@hashgraph/sdk";
4
+ import { ethers } from "ethers";
5
+ import { TransactionParsingError } from "./standards-sdk.es111.js";
6
+ import { resolveTransactionSummary } from "./standards-sdk.es112.js";
7
+ import { HTSParser } from "./standards-sdk.es120.js";
8
+ import { HCSParser } from "./standards-sdk.es153.js";
9
+ import { FileParser } from "./standards-sdk.es154.js";
10
+ import { CryptoParser } from "./standards-sdk.es155.js";
11
+ import { SCSParser } from "./standards-sdk.es156.js";
12
+ import { UtilParser } from "./standards-sdk.es157.js";
13
+ import { ScheduleParser } from "./standards-sdk.es121.js";
14
+ import { transactionParserRegistry } from "./standards-sdk.es122.js";
15
+ import { getTransactionTypeFromBody, getHumanReadableTransactionType } from "./standards-sdk.es123.js";
16
+ class TransactionParser {
26
17
  /**
27
- * Determines if a MIME type represents binary content
28
- */
29
- isBinaryContentType(mimeType) {
30
- const binaryTypes = [
31
- "image/",
32
- "audio/",
33
- "video/",
34
- "application/octet-stream",
35
- "application/pdf",
36
- "application/zip",
37
- "application/gzip",
38
- "application/x-binary",
39
- "application/vnd.ms-",
40
- "application/x-msdownload",
41
- "application/x-shockwave-flash",
42
- "font/",
43
- "application/wasm"
44
- ];
45
- return binaryTypes.some((prefix) => mimeType.startsWith(prefix));
18
+ * Parse transaction bytes in any supported format (base64 or hex, regular or scheduled)
19
+ * This is the main entry point for transaction parsing with enhanced retry logic
20
+ *
21
+ * @param transactionBytes - Transaction bytes in base64 or hex format
22
+ * @param options - Parsing options and configuration
23
+ * @returns Promise resolving to ParsedTransaction
24
+ */
25
+ static async parseTransactionBytes(transactionBytes, options = {}) {
26
+ const {
27
+ enableFallback = true,
28
+ strictMode = false,
29
+ includeRaw = true,
30
+ maxRetries = 2
31
+ } = options;
32
+ const validation = this.validateTransactionBytes(transactionBytes);
33
+ if (!validation.isValid && strictMode) {
34
+ throw new TransactionParsingError(
35
+ `Invalid transaction bytes format: ${validation.error}`,
36
+ "INVALID_FORMAT",
37
+ void 0,
38
+ transactionBytes
39
+ );
40
+ }
41
+ let lastError;
42
+ let retryCount = 0;
43
+ while (retryCount <= maxRetries) {
44
+ try {
45
+ const result = await this.parseTransaction(transactionBytes, options);
46
+ result.formatDetection = {
47
+ originalFormat: validation.format || "base64",
48
+ wasConverted: validation.format === "hex",
49
+ length: transactionBytes.length
50
+ };
51
+ return result;
52
+ } catch (error) {
53
+ lastError = error instanceof Error ? error : new Error(String(error));
54
+ retryCount++;
55
+ if (!enableFallback || retryCount > maxRetries) {
56
+ if (strictMode) {
57
+ throw new TransactionParsingError(
58
+ "Failed to parse transaction after all attempts",
59
+ "PARSING_FAILED",
60
+ lastError,
61
+ transactionBytes
62
+ );
63
+ }
64
+ break;
65
+ }
66
+ try {
67
+ const result = this.parseScheduledTransaction(
68
+ transactionBytes,
69
+ options
70
+ );
71
+ result.formatDetection = {
72
+ originalFormat: validation.format || "base64",
73
+ wasConverted: false,
74
+ length: transactionBytes.length
75
+ };
76
+ return result;
77
+ } catch (scheduledError) {
78
+ }
79
+ }
80
+ }
81
+ const fallbackResult = this.createFallbackResult(
82
+ transactionBytes,
83
+ lastError,
84
+ void 0
85
+ );
86
+ if (fallbackResult.details) {
87
+ fallbackResult.details.parseAttempts = Math.max(retryCount, 1);
88
+ }
89
+ return fallbackResult;
46
90
  }
47
91
  /**
48
- * Parses an HRL string into its components
92
+ * Parse a Transaction object directly using unified delegation approach
93
+ * This method delegates to specialized parsers for clean separation of concerns
94
+ *
95
+ * @param transaction - The Transaction object to parse
96
+ * @param originalBytes - The original transaction bytes (optional, for protobuf parsing)
97
+ * @param options - Parsing options
98
+ * @returns Parsed transaction data
49
99
  */
50
- parseHRL(hrl) {
51
- if (!hrl) {
52
- return null;
100
+ static parseTransactionObject(transaction, originalBytesOrOptions, options = {}) {
101
+ let originalBytes;
102
+ let actualOptions;
103
+ if (originalBytesOrOptions && !Buffer.isBuffer(originalBytesOrOptions) && !(originalBytesOrOptions instanceof Uint8Array)) {
104
+ actualOptions = originalBytesOrOptions;
105
+ originalBytes = void 0;
106
+ } else {
107
+ originalBytes = originalBytesOrOptions;
108
+ actualOptions = options;
53
109
  }
54
- const hrlPattern = /^hcs:\/\/(\d+)\/([0-9]+\.[0-9]+\.[0-9]+)$/;
55
- const match = hrl.match(hrlPattern);
56
- if (!match) {
57
- return null;
110
+ try {
111
+ const metadata = this.extractTransactionMetadata(transaction);
112
+ const htsResult = HTSParser.parseFromTransactionObject(transaction);
113
+ const cryptoResult = CryptoParser.parseFromTransactionObject(transaction);
114
+ const hcsResult = HCSParser.parseFromTransactionObject(transaction);
115
+ const fileResult = FileParser.parseFromTransactionObject(transaction);
116
+ const scsResult = SCSParser.parseFromTransactionObject(transaction);
117
+ const scheduleResult = ScheduleParser.parseFromTransactionObject(transaction);
118
+ const utilResult = UtilParser.parseFromTransactionObject(transaction);
119
+ const results = [
120
+ htsResult,
121
+ cryptoResult,
122
+ hcsResult,
123
+ fileResult,
124
+ scsResult,
125
+ scheduleResult,
126
+ utilResult
127
+ ];
128
+ const primaryResult = results.find((result2) => result2.type && result2.type !== "UNKNOWN") || {};
129
+ let finalType = "UNKNOWN";
130
+ let finalHumanReadableType = "Unknown Transaction";
131
+ let parsedTokenCreation;
132
+ let protoParsingResult = {};
133
+ if (originalBytes || transaction.toBytes) {
134
+ try {
135
+ const bytesToParse = originalBytes || transaction.toBytes();
136
+ const decoded = proto.TransactionList.decode(bytesToParse);
137
+ if (decoded.transactionList && decoded.transactionList.length > 0) {
138
+ const tx = decoded.transactionList[0];
139
+ if (tx.bodyBytes && tx.bodyBytes.length > 0) {
140
+ const txBody = proto.TransactionBody.decode(tx.bodyBytes);
141
+ const typeResult = this.detectTransactionTypeFromBody(txBody);
142
+ finalType = typeResult.type;
143
+ finalHumanReadableType = typeResult.humanReadableType;
144
+ protoParsingResult = this.parseTransactionBodyDetails(
145
+ txBody,
146
+ finalType
147
+ );
148
+ if (protoParsingResult.tokenCreation) {
149
+ parsedTokenCreation = protoParsingResult.tokenCreation;
150
+ }
151
+ } else if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
152
+ const signedTx = proto.SignedTransaction.decode(
153
+ tx.signedTransactionBytes
154
+ );
155
+ if (signedTx.bodyBytes) {
156
+ const txBody = proto.TransactionBody.decode(signedTx.bodyBytes);
157
+ const typeResult = this.detectTransactionTypeFromBody(txBody);
158
+ finalType = typeResult.type;
159
+ finalHumanReadableType = typeResult.humanReadableType;
160
+ protoParsingResult = this.parseTransactionBodyDetails(
161
+ txBody,
162
+ finalType
163
+ );
164
+ if (protoParsingResult.tokenCreation) {
165
+ parsedTokenCreation = protoParsingResult.tokenCreation;
166
+ }
167
+ }
168
+ }
169
+ }
170
+ } catch (protoError) {
171
+ }
172
+ }
173
+ if (finalType === "UNKNOWN" && primaryResult.type) {
174
+ finalType = primaryResult.type;
175
+ finalHumanReadableType = primaryResult.humanReadableType || finalHumanReadableType;
176
+ }
177
+ const result = {
178
+ type: finalType,
179
+ humanReadableType: finalHumanReadableType,
180
+ transfers: [],
181
+ tokenTransfers: [],
182
+ ...metadata,
183
+ ...primaryResult,
184
+ raw: actualOptions.includeRaw ? transaction._transactionBody || {} : void 0
185
+ };
186
+ this.mergeProtoParsingResults(
187
+ result,
188
+ protoParsingResult,
189
+ htsResult,
190
+ transaction,
191
+ originalBytes
192
+ );
193
+ result.transfers = cryptoResult.transfers || result.transfers || [];
194
+ result.tokenTransfers = cryptoResult.tokenTransfers || result.tokenTransfers || [];
195
+ return result;
196
+ } catch (error) {
197
+ return {
198
+ type: "UNKNOWN",
199
+ humanReadableType: "Unknown Transaction",
200
+ transfers: [],
201
+ tokenTransfers: [],
202
+ raw: actualOptions.includeRaw ? {} : void 0,
203
+ details: {
204
+ error: `Failed to parse Transaction object: ${error instanceof Error ? error.message : String(error)}`
205
+ }
206
+ };
58
207
  }
59
- return {
60
- standard: match[1],
61
- topicId: match[2]
62
- };
63
208
  }
64
209
  /**
65
- * Validates if a string is a valid HRL
210
+ * Parse a base64 encoded transaction body using registry pattern
211
+ * @param transactionBodyBase64 - The base64 encoded transaction body
212
+ * @returns The parsed transaction
66
213
  */
67
- isValidHRL(hrl) {
68
- if (!hrl || typeof hrl !== "string") {
69
- return false;
214
+ static parseTransactionBody(transactionBodyBase64) {
215
+ try {
216
+ const buffer = ethers.decodeBase64(transactionBodyBase64);
217
+ const txBody = proto.SchedulableTransactionBody.decode(buffer);
218
+ const transactionType = this.getTransactionType(txBody);
219
+ const result = {
220
+ type: transactionType,
221
+ humanReadableType: this.getHumanReadableType(transactionType),
222
+ transfers: [],
223
+ tokenTransfers: [],
224
+ raw: txBody
225
+ };
226
+ if (txBody.memo) {
227
+ result.memo = txBody.memo;
228
+ }
229
+ if (txBody.transactionFee) {
230
+ const hbarAmount = Hbar.fromTinybars(
231
+ Long.fromValue(txBody.transactionFee)
232
+ );
233
+ result.transactionFee = hbarAmount.toString(HbarUnit.Hbar);
234
+ }
235
+ this.applySchedulableTransactionParsing(txBody, result);
236
+ return result;
237
+ } catch (error) {
238
+ return {
239
+ type: "UNKNOWN",
240
+ humanReadableType: "Unknown Transaction",
241
+ transfers: [],
242
+ tokenTransfers: [],
243
+ raw: void 0,
244
+ details: {
245
+ error: `Failed to parse transaction body: ${error instanceof Error ? error.message : String(error)}`
246
+ }
247
+ };
70
248
  }
71
- const parsed = this.parseHRL(hrl);
72
- if (!parsed) {
73
- return false;
249
+ }
250
+ /**
251
+ * Detect transaction type and human-readable type from transaction body protobuf
252
+ * Uses registry pattern to eliminate massive if-else chain
253
+ */
254
+ static detectTransactionTypeFromBody(txBody) {
255
+ return getTransactionTypeFromBody(txBody);
256
+ }
257
+ /**
258
+ * Parse details from a complete schedule response
259
+ * @param scheduleResponse - The schedule response to parse
260
+ * @returns The parsed transaction
261
+ */
262
+ static parseScheduleResponse(scheduleResponse) {
263
+ if (!scheduleResponse.transaction_body) {
264
+ return {
265
+ type: "UNKNOWN",
266
+ humanReadableType: "Unknown Transaction",
267
+ transfers: [],
268
+ tokenTransfers: [],
269
+ raw: void 0,
270
+ details: {
271
+ error: "Schedule response missing transaction_body"
272
+ }
273
+ };
74
274
  }
75
- const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
76
- if (!topicIdPattern.test(parsed.topicId)) {
77
- return false;
275
+ const parsed = this.parseTransactionBody(scheduleResponse.transaction_body);
276
+ if (scheduleResponse.memo) {
277
+ parsed.memo = scheduleResponse.memo;
78
278
  }
79
- return true;
279
+ return parsed;
280
+ }
281
+ /**
282
+ * Determine the transaction type using registry pattern
283
+ * @param txBody - The transaction body to determine the type of
284
+ * @returns The type of the transaction
285
+ */
286
+ static getTransactionType(txBody) {
287
+ return getTransactionTypeFromBody(txBody).type;
288
+ }
289
+ /**
290
+ * Convert technical transaction type to human-readable format using registry pattern
291
+ * @param type - The technical transaction type
292
+ * @returns The human-readable transaction type
293
+ */
294
+ static getHumanReadableType(type) {
295
+ return getHumanReadableTransactionType(type);
80
296
  }
81
297
  /**
82
- * Validates if a string is a valid topic ID
298
+ * Get a human-readable summary of the transaction
299
+ * @param parsedTx - The parsed transaction
300
+ * @returns The human-readable summary of the transaction
83
301
  */
84
- isValidTopicId(topicId) {
85
- const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
86
- return topicIdPattern.test(topicId);
302
+ static getTransactionSummary(parsedTx) {
303
+ return resolveTransactionSummary(parsedTx);
87
304
  }
88
305
  /**
89
- * Resolves content from either an HRL or a topic ID
90
- * If a topic ID is provided, it queries the topic memo to determine the HCS standard
306
+ * Validate transaction bytes format and encoding
307
+ * Enhanced validation with better format detection
91
308
  */
92
- async resolve(hrlOrTopicId, options) {
93
- if (this.isValidHRL(hrlOrTopicId)) {
94
- return this.resolveHRL(hrlOrTopicId, options);
309
+ static validateTransactionBytes(transactionBytes) {
310
+ if (!transactionBytes || typeof transactionBytes !== "string") {
311
+ return {
312
+ isValid: false,
313
+ error: "Transaction bytes must be a non-empty string"
314
+ };
95
315
  }
96
- if (!this.isValidTopicId(hrlOrTopicId)) {
97
- throw new Error(`Invalid HRL or topic ID format: ${hrlOrTopicId}`);
316
+ const format = this.detectTransactionFormat(transactionBytes);
317
+ const base64Regex = /^[A-Za-z0-9+/]*={0,2}$/;
318
+ const hexRegex = /^0x[0-9a-fA-F]+$/;
319
+ let isValid = false;
320
+ let error;
321
+ if (format === "hex") {
322
+ isValid = hexRegex.test(transactionBytes) && transactionBytes.length > 2;
323
+ if (!isValid) {
324
+ error = "Invalid hex format";
325
+ }
326
+ } else {
327
+ isValid = base64Regex.test(transactionBytes) && transactionBytes.length > 0;
328
+ if (!isValid) {
329
+ error = "Invalid base64 format";
330
+ }
98
331
  }
332
+ return {
333
+ isValid,
334
+ format,
335
+ error,
336
+ length: transactionBytes.length
337
+ };
338
+ }
339
+ /**
340
+ * Detects the format of transaction bytes
341
+ * @param transactionBytes - The transaction bytes to analyze
342
+ * @returns The detected format ('base64' or 'hex')
343
+ */
344
+ static detectTransactionFormat(transactionBytes) {
345
+ return transactionBytes.startsWith("0x") ? "hex" : "base64";
346
+ }
347
+ /**
348
+ * Decodes transaction bytes from string to Uint8Array
349
+ * @param transactionBytes - The transaction bytes string (base64 or hex)
350
+ * @returns Decoded Uint8Array
351
+ * @throws TransactionParsingError if decoding fails
352
+ */
353
+ static decodeTransactionBytes(transactionBytes) {
99
354
  try {
100
- const mirrorNode = new HederaMirrorNode(options.network, this.logger);
101
- const topicInfo = await mirrorNode.getTopicInfo(hrlOrTopicId);
102
- const memo = topicInfo?.memo || "";
103
- let standard = "1";
104
- if (memo) {
105
- const hcsMatch = memo.match(/^hcs-(\d+)/);
106
- if (hcsMatch && hcsMatch[1]) {
107
- standard = hcsMatch[1];
108
- }
355
+ const format = this.detectTransactionFormat(transactionBytes);
356
+ if (format === "hex") {
357
+ const hexString = transactionBytes.slice(2);
358
+ return new Uint8Array(Buffer.from(hexString, "hex"));
359
+ } else {
360
+ return new Uint8Array(Buffer.from(transactionBytes, "base64"));
109
361
  }
110
- const hrl = `hcs://${standard}/${hrlOrTopicId}`;
111
- return this.resolveHRL(hrl, options);
112
362
  } catch (error) {
113
- this.logger.error(
114
- `Failed to get topic info for ${hrlOrTopicId}: ${error.message}`
363
+ throw new TransactionParsingError(
364
+ "Failed to decode transaction bytes",
365
+ "DECODE_ERROR",
366
+ error instanceof Error ? error : void 0,
367
+ transactionBytes
115
368
  );
116
- const hrl = `hcs://1/${hrlOrTopicId}`;
117
- return this.resolveHRL(hrl, options);
118
369
  }
119
370
  }
120
- async getContentWithType(hrl, options) {
121
- if (!this.isValidHRL(hrl)) {
122
- return {
123
- content: hrl,
124
- contentType: "text/plain",
125
- isBinary: false
126
- };
371
+ /**
372
+ * Check if transaction bytes represent a valid Hedera transaction
373
+ */
374
+ static async isValidHederaTransaction(transactionBytes) {
375
+ try {
376
+ if (!this.validateTransactionBytes(transactionBytes).isValid) {
377
+ return false;
378
+ }
379
+ const bytes = this.decodeTransactionBytes(transactionBytes);
380
+ Transaction.fromBytes(bytes);
381
+ return true;
382
+ } catch {
383
+ return false;
127
384
  }
385
+ }
386
+ /**
387
+ * Legacy alias for decodeTransactionBytes - keeping for backward compatibility
388
+ */
389
+ static decodeBytesLegacy(transactionBytes) {
390
+ return this.decodeTransactionBytes(transactionBytes);
391
+ }
392
+ /**
393
+ * Parse transaction bytes into structured data using thin orchestration
394
+ * Delegates to specialized parsers for clean separation of concerns
395
+ */
396
+ static async parseTransaction(transactionBytes, options = {}) {
128
397
  try {
129
- const result = await this.resolveHRL(hrl, options);
130
- return {
131
- content: result.content,
132
- contentType: result.contentType,
133
- isBinary: result.isBinary
398
+ const bytes = this.decodeTransactionBytes(transactionBytes);
399
+ const transaction = Transaction.fromBytes(bytes);
400
+ const metadata = this.extractTransactionMetadataEnhanced(transaction);
401
+ const parserResults = this.runAllParsers(transaction);
402
+ const primaryResult = parserResults.find(
403
+ (result2) => result2.type && result2.type !== "UNKNOWN"
404
+ ) || {};
405
+ const protoParsingResult = this.parseFromProtobuf(bytes);
406
+ const finalType = protoParsingResult.type || primaryResult.type || "UNKNOWN";
407
+ const finalHumanReadableType = protoParsingResult.humanReadableType || primaryResult.humanReadableType || "Unknown Transaction";
408
+ const result = {
409
+ type: finalType,
410
+ humanReadableType: finalHumanReadableType,
411
+ transfers: [],
412
+ tokenTransfers: [],
413
+ details: { ...metadata },
414
+ memo: typeof metadata.memo === "string" ? metadata.memo : void 0,
415
+ transactionId: typeof metadata.transactionId === "string" ? metadata.transactionId : void 0,
416
+ nodeAccountIds: Array.isArray(metadata.nodeAccountIds) ? metadata.nodeAccountIds : [],
417
+ maxTransactionFee: typeof metadata.maxTransactionFee === "string" ? metadata.maxTransactionFee : void 0,
418
+ validStart: typeof metadata.validStart === "string" ? metadata.validStart : void 0,
419
+ validDuration: typeof metadata.validDuration === "string" ? metadata.validDuration : void 0,
420
+ raw: options.includeRaw ? {} : void 0
134
421
  };
135
- } catch (e) {
136
- const error = e;
137
- const logMessage = `Error resolving HRL for content and type: ${error.message}`;
138
- this.logger.error(logMessage);
139
- throw new Error(logMessage);
422
+ this.mergeAllResults(
423
+ result,
424
+ protoParsingResult,
425
+ primaryResult,
426
+ parserResults
427
+ );
428
+ return result;
429
+ } catch (error) {
430
+ throw new TransactionParsingError(
431
+ "Failed to parse as regular transaction",
432
+ "REGULAR_PARSING_FAILED",
433
+ error instanceof Error ? error : void 0,
434
+ transactionBytes
435
+ );
140
436
  }
141
437
  }
142
438
  /**
143
- * Resolves HRL content with proper content type detection
439
+ * Parse scheduled transaction body
144
440
  */
145
- async resolveHRL(hrl, options) {
146
- const parsed = this.parseHRL(hrl);
147
- if (!parsed) {
148
- throw new Error(`Invalid HRL format: ${hrl}`);
441
+ static parseScheduledTransaction(transactionBytes, options = {}) {
442
+ try {
443
+ const parsedTx = this.parseTransactionBody(transactionBytes);
444
+ const validation = this.validateTransactionBytes(transactionBytes);
445
+ const enhancedResult = {
446
+ ...parsedTx,
447
+ details: {
448
+ ...parsedTx.details || {},
449
+ parseMethod: "scheduled",
450
+ validation,
451
+ parseAttempts: parsedTx.details?.parseAttempts || 1
452
+ },
453
+ formatDetection: {
454
+ originalFormat: validation.format || "base64",
455
+ wasConverted: false,
456
+ length: transactionBytes.length
457
+ }
458
+ };
459
+ return enhancedResult;
460
+ } catch (error) {
461
+ throw new TransactionParsingError(
462
+ "Failed to parse as scheduled transaction",
463
+ "SCHEDULED_PARSING_FAILED",
464
+ error instanceof Error ? error : void 0,
465
+ transactionBytes
466
+ );
149
467
  }
150
- const { standard, topicId } = parsed;
151
- this.logger.debug(
152
- `Resolving HRL reference: standard=${standard}, topicId=${topicId}`
153
- );
468
+ }
469
+ /**
470
+ * Extract metadata from Transaction object (legacy method - keeping for backward compatibility)
471
+ */
472
+ static extractTransactionMetadata(transaction) {
473
+ return {
474
+ transactionId: transaction.transactionId?.toString(),
475
+ nodeAccountIds: transaction.nodeAccountIds?.map((id) => id.toString()) || [],
476
+ maxTransactionFee: transaction.maxTransactionFee?.toTinybars().toString() || "0",
477
+ memo: transaction._transactionMemo || void 0,
478
+ transfers: [],
479
+ tokenTransfers: []
480
+ };
481
+ }
482
+ /**
483
+ * Extract enhanced metadata from Transaction object
484
+ */
485
+ static extractTransactionMetadataEnhanced(transaction) {
486
+ return {
487
+ transactionId: transaction.transactionId?.toString(),
488
+ nodeAccountIds: transaction.nodeAccountIds?.map((id) => id.toString()) || [],
489
+ maxTransactionFee: transaction.maxTransactionFee?.toTinybars().toString() || "0",
490
+ memo: transaction._transactionMemo || void 0,
491
+ validStart: transaction._transactionValidStart?.toString(),
492
+ validDuration: transaction._transactionValidDuration?.toString()
493
+ };
494
+ }
495
+ /**
496
+ * Run all available parsers on a transaction
497
+ */
498
+ static runAllParsers(transaction) {
499
+ return [
500
+ HTSParser.parseFromTransactionObject(transaction),
501
+ CryptoParser.parseFromTransactionObject(transaction),
502
+ HCSParser.parseFromTransactionObject(transaction),
503
+ FileParser.parseFromTransactionObject(transaction),
504
+ SCSParser.parseFromTransactionObject(transaction),
505
+ ScheduleParser.parseFromTransactionObject(transaction),
506
+ UtilParser.parseFromTransactionObject(transaction)
507
+ ];
508
+ }
509
+ /**
510
+ * Parse transaction from protobuf bytes
511
+ */
512
+ static parseFromProtobuf(bytes) {
513
+ const result = {};
154
514
  try {
155
- const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;
156
- const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;
157
- this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);
158
- const headResponse = await axios.head(cdnUrl);
159
- const contentType = headResponse.headers["content-type"] || "";
160
- const isBinary = this.isBinaryContentType(contentType);
161
- if (isBinary || options.returnRaw) {
162
- const response2 = await axios.get(cdnUrl, {
163
- responseType: "arraybuffer"
164
- });
165
- return {
166
- content: response2.data,
167
- contentType,
168
- topicId,
169
- isBinary: true
170
- };
171
- }
172
- if (contentType === "application/json") {
173
- const response2 = await axios.get(cdnUrl, {
174
- responseType: "json"
175
- });
176
- if (!response2.data) {
177
- throw new Error(`Failed to fetch content from topic: ${topicId}`);
515
+ const decoded = proto.TransactionList.decode(bytes);
516
+ if (decoded.transactionList && decoded.transactionList.length > 0) {
517
+ const tx = decoded.transactionList[0];
518
+ let txBody = null;
519
+ if (tx.bodyBytes && tx.bodyBytes.length > 0) {
520
+ txBody = proto.TransactionBody.decode(tx.bodyBytes);
521
+ } else if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
522
+ const signedTx = proto.SignedTransaction.decode(
523
+ tx.signedTransactionBytes
524
+ );
525
+ if (signedTx.bodyBytes) {
526
+ txBody = proto.TransactionBody.decode(signedTx.bodyBytes);
527
+ }
528
+ }
529
+ if (txBody) {
530
+ const typeResult = this.detectTransactionTypeFromBody(txBody);
531
+ result.type = typeResult.type;
532
+ result.humanReadableType = typeResult.humanReadableType;
533
+ const details = this.parseTransactionBodyDetails(
534
+ txBody,
535
+ typeResult.type
536
+ );
537
+ Object.assign(result, details);
178
538
  }
179
- return {
180
- content: response2.data,
181
- contentType,
182
- topicId,
183
- isBinary: false
184
- };
185
539
  }
186
- const response = await axios.get(cdnUrl);
187
- if (!response.data) {
188
- throw new Error(`Failed to fetch content from topic: ${topicId}`);
540
+ } catch (error) {
541
+ }
542
+ return result;
543
+ }
544
+ /**
545
+ * Intelligently merge all parsing results
546
+ */
547
+ static mergeAllResults(result, protoResult, primaryResult, parserResults) {
548
+ const cryptoResult = parserResults.find((r) => r.transfers || r.tokenTransfers) || {};
549
+ result.transfers = cryptoResult.transfers || result.transfers || [];
550
+ result.tokenTransfers = cryptoResult.tokenTransfers || result.tokenTransfers || [];
551
+ Object.keys(protoResult).forEach((key) => {
552
+ if (protoResult[key] !== void 0 && key !== "type" && key !== "humanReadableType") {
553
+ result[key] = protoResult[key];
189
554
  }
190
- let content;
191
- if (typeof response.data === "object") {
192
- content = response.data.content || response.data.text || JSON.stringify(response.data);
555
+ });
556
+ Object.keys(primaryResult).forEach((key) => {
557
+ if (primaryResult[key] !== void 0 && !(key in result) && key !== "type" && key !== "humanReadableType") {
558
+ result[key] = primaryResult[key];
559
+ }
560
+ });
561
+ }
562
+ /**
563
+ * Apply schedulable transaction parsing using registry pattern
564
+ * Eliminates conditional logic in parseTransactionBody
565
+ */
566
+ static applySchedulableTransactionParsing(txBody, result) {
567
+ if (txBody.cryptoTransfer) {
568
+ CryptoParser.parseCryptoTransfers(txBody.cryptoTransfer, result);
569
+ }
570
+ if (txBody.cryptoDelete) {
571
+ result.cryptoDelete = CryptoParser.parseCryptoDelete(txBody.cryptoDelete);
572
+ }
573
+ if (txBody.cryptoCreateAccount) {
574
+ result.cryptoCreateAccount = CryptoParser.parseCryptoCreateAccount(
575
+ txBody.cryptoCreateAccount
576
+ );
577
+ }
578
+ if (txBody.cryptoUpdateAccount) {
579
+ result.cryptoUpdateAccount = CryptoParser.parseCryptoUpdateAccount(
580
+ txBody.cryptoUpdateAccount
581
+ );
582
+ }
583
+ if (txBody.cryptoApproveAllowance) {
584
+ result.cryptoApproveAllowance = CryptoParser.parseCryptoApproveAllowance(
585
+ txBody.cryptoApproveAllowance
586
+ );
587
+ }
588
+ if (txBody.cryptoDeleteAllowance) {
589
+ result.cryptoDeleteAllowance = CryptoParser.parseCryptoDeleteAllowance(
590
+ txBody.cryptoDeleteAllowance
591
+ );
592
+ }
593
+ if (txBody.contractCall) {
594
+ result.contractCall = SCSParser.parseContractCall(txBody.contractCall);
595
+ }
596
+ if (txBody.contractCreateInstance) {
597
+ result.contractCreate = SCSParser.parseContractCreate(
598
+ txBody.contractCreateInstance
599
+ );
600
+ }
601
+ if (txBody.contractUpdateInstance) {
602
+ result.contractUpdate = SCSParser.parseContractUpdate(
603
+ txBody.contractUpdateInstance
604
+ );
605
+ }
606
+ if (txBody.contractDeleteInstance) {
607
+ result.contractDelete = SCSParser.parseContractDelete(
608
+ txBody.contractDeleteInstance
609
+ );
610
+ }
611
+ if (txBody.tokenCreation) {
612
+ result.tokenCreation = HTSParser.parseTokenCreate(txBody.tokenCreation);
613
+ }
614
+ if (txBody.tokenMint) {
615
+ result.tokenMint = HTSParser.parseTokenMint(txBody.tokenMint);
616
+ }
617
+ if (txBody.tokenBurn) {
618
+ result.tokenBurn = HTSParser.parseTokenBurn(txBody.tokenBurn);
619
+ }
620
+ if (txBody.tokenUpdate) {
621
+ result.tokenUpdate = HTSParser.parseTokenUpdate(txBody.tokenUpdate);
622
+ }
623
+ if (txBody.tokenFeeScheduleUpdate) {
624
+ result.tokenFeeScheduleUpdate = HTSParser.parseTokenFeeScheduleUpdate(
625
+ txBody.tokenFeeScheduleUpdate
626
+ );
627
+ }
628
+ if (txBody.tokenFreeze) {
629
+ result.tokenFreeze = HTSParser.parseTokenFreeze(txBody.tokenFreeze);
630
+ }
631
+ if (txBody.tokenUnfreeze) {
632
+ result.tokenUnfreeze = HTSParser.parseTokenUnfreeze(txBody.tokenUnfreeze);
633
+ }
634
+ if (txBody.tokenGrantKyc) {
635
+ result.tokenGrantKyc = HTSParser.parseTokenGrantKyc(txBody.tokenGrantKyc);
636
+ }
637
+ if (txBody.tokenRevokeKyc) {
638
+ result.tokenRevokeKyc = HTSParser.parseTokenRevokeKyc(
639
+ txBody.tokenRevokeKyc
640
+ );
641
+ }
642
+ if (txBody.tokenPause) {
643
+ result.tokenPause = HTSParser.parseTokenPause(txBody.tokenPause);
644
+ }
645
+ if (txBody.tokenUnpause) {
646
+ result.tokenUnpause = HTSParser.parseTokenUnpause(txBody.tokenUnpause);
647
+ }
648
+ if (txBody.tokenWipe) {
649
+ result.tokenWipeAccount = HTSParser.parseTokenWipeAccount(
650
+ txBody.tokenWipe
651
+ );
652
+ }
653
+ if (txBody.tokenDeletion) {
654
+ result.tokenDelete = HTSParser.parseTokenDelete(txBody.tokenDeletion);
655
+ }
656
+ if (txBody.tokenAssociate) {
657
+ result.tokenAssociate = HTSParser.parseTokenAssociate(
658
+ txBody.tokenAssociate
659
+ );
660
+ }
661
+ if (txBody.tokenDissociate) {
662
+ result.tokenDissociate = HTSParser.parseTokenDissociate(
663
+ txBody.tokenDissociate
664
+ );
665
+ }
666
+ if (txBody.tokenAirdrop) {
667
+ result.tokenAirdrop = HTSParser.parseTokenAirdropFromProto(
668
+ txBody.tokenAirdrop
669
+ );
670
+ }
671
+ if (txBody.consensusCreateTopic) {
672
+ result.consensusCreateTopic = HCSParser.parseConsensusCreateTopic(
673
+ txBody.consensusCreateTopic
674
+ );
675
+ }
676
+ if (txBody.consensusSubmitMessage) {
677
+ result.consensusSubmitMessage = HCSParser.parseConsensusSubmitMessage(
678
+ txBody.consensusSubmitMessage
679
+ );
680
+ }
681
+ if (txBody.consensusUpdateTopic) {
682
+ result.consensusUpdateTopic = HCSParser.parseConsensusUpdateTopic(
683
+ txBody.consensusUpdateTopic
684
+ );
685
+ }
686
+ if (txBody.consensusDeleteTopic) {
687
+ result.consensusDeleteTopic = HCSParser.parseConsensusDeleteTopic(
688
+ txBody.consensusDeleteTopic
689
+ );
690
+ }
691
+ if (txBody.fileCreate) {
692
+ result.fileCreate = FileParser.parseFileCreate(txBody.fileCreate);
693
+ }
694
+ if (txBody.fileAppend) {
695
+ result.fileAppend = FileParser.parseFileAppend(txBody.fileAppend);
696
+ }
697
+ if (txBody.fileUpdate) {
698
+ result.fileUpdate = FileParser.parseFileUpdate(txBody.fileUpdate);
699
+ }
700
+ if (txBody.fileDelete) {
701
+ result.fileDelete = FileParser.parseFileDelete(txBody.fileDelete);
702
+ }
703
+ if (txBody.utilPrng) {
704
+ result.utilPrng = UtilParser.parseUtilPrng(txBody.utilPrng);
705
+ }
706
+ }
707
+ /**
708
+ * Parse transaction body details for all supported transaction types
709
+ * Uses a scalable registry pattern instead of if-else chains
710
+ */
711
+ static parseTransactionBodyDetails(txBody, transactionType) {
712
+ const result = {};
713
+ const parserConfig = transactionParserRegistry[transactionType];
714
+ if (parserConfig) {
715
+ const bodyData = txBody[parserConfig.bodyField];
716
+ if (bodyData) {
717
+ const parserResult = parserConfig.parser(bodyData);
718
+ if (parserConfig.spreadResult) {
719
+ Object.assign(result, parserResult);
720
+ } else {
721
+ result[parserConfig.resultField] = parserResult;
722
+ }
723
+ }
724
+ }
725
+ return result;
726
+ }
727
+ /**
728
+ * Merge protobuf parsing results with parser results using registry pattern
729
+ * Eliminates transactionFields array and forEach logic
730
+ */
731
+ static mergeProtoParsingResults(result, protoResult, htsResult, transaction, originalBytes) {
732
+ const fieldsToMerge = Object.values(transactionParserRegistry).map(
733
+ (config) => config.resultField
734
+ );
735
+ for (const field of fieldsToMerge) {
736
+ const protoValue = protoResult[field];
737
+ const htsValue = htsResult[field];
738
+ if (protoValue !== void 0) {
739
+ result[field] = protoValue;
740
+ } else if (htsValue !== void 0) {
741
+ result[field] = htsValue;
193
742
  } else {
194
- content = response.data;
743
+ this.handleSpecialFieldExtraction(result, field, transaction);
744
+ }
745
+ }
746
+ }
747
+ /**
748
+ * Handle special field extraction cases using registry pattern
749
+ */
750
+ static handleSpecialFieldExtraction(result, field, transaction) {
751
+ if (field === "tokenCreation" && result.type === "TOKENCREATE") {
752
+ const extracted = HTSParser.extractTokenCreationFromTransaction(transaction);
753
+ if (extracted) {
754
+ result[field] = extracted;
755
+ }
756
+ } else if (field === "tokenAirdrop" && result.type === "TOKENAIRDROP") {
757
+ const extracted = HTSParser.extractTokenAirdropFromTransaction(transaction);
758
+ if (extracted) {
759
+ result[field] = extracted;
195
760
  }
196
- return {
197
- content,
198
- contentType,
199
- topicId,
200
- isBinary: false
201
- };
202
- } catch (e) {
203
- const error = e;
204
- const logMessage = `Error resolving HRL reference: ${error.message}`;
205
- this.logger.error(logMessage);
206
- throw new Error(logMessage);
207
761
  }
208
762
  }
763
+ /**
764
+ * Create fallback result when all parsing methods fail
765
+ */
766
+ static createFallbackResult(transactionBytes, primaryError, secondaryError) {
767
+ const validation = this.validateTransactionBytes(transactionBytes);
768
+ return {
769
+ type: "UNKNOWN",
770
+ humanReadableType: "Unknown Transaction",
771
+ transfers: [],
772
+ tokenTransfers: [],
773
+ details: {
774
+ rawBytes: transactionBytes.length > 100 ? transactionBytes.substring(0, 100) + "..." : transactionBytes,
775
+ primaryError: primaryError?.message,
776
+ secondaryError: secondaryError?.message,
777
+ parseAttempts: secondaryError ? 2 : 1,
778
+ validation
779
+ },
780
+ formatDetection: {
781
+ originalFormat: validation.format || "base64",
782
+ wasConverted: false,
783
+ length: transactionBytes.length
784
+ },
785
+ raw: {}
786
+ };
787
+ }
209
788
  }
210
789
  export {
211
- HRLResolver
790
+ TransactionParser,
791
+ TransactionParsingError
212
792
  };
213
793
  //# sourceMappingURL=standards-sdk.es110.js.map