@hashgraphonline/standards-sdk 0.0.107 → 0.0.108-canary.1

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 (269) hide show
  1. package/dist/es/standards-sdk.es100.js +24 -60
  2. package/dist/es/standards-sdk.es100.js.map +1 -1
  3. package/dist/es/standards-sdk.es101.js +21 -6
  4. package/dist/es/standards-sdk.es101.js.map +1 -1
  5. package/dist/es/standards-sdk.es102.js +41 -12
  6. package/dist/es/standards-sdk.es102.js.map +1 -1
  7. package/dist/es/standards-sdk.es103.js +18 -7
  8. package/dist/es/standards-sdk.es103.js.map +1 -1
  9. package/dist/es/standards-sdk.es104.js +60 -44
  10. package/dist/es/standards-sdk.es104.js.map +1 -1
  11. package/dist/es/standards-sdk.es105.js +1289 -2
  12. package/dist/es/standards-sdk.es105.js.map +1 -1
  13. package/dist/es/standards-sdk.es106.js +28 -132
  14. package/dist/es/standards-sdk.es106.js.map +1 -1
  15. package/dist/es/standards-sdk.es107.js +6 -172
  16. package/dist/es/standards-sdk.es107.js.map +1 -1
  17. package/dist/es/standards-sdk.es108.js +159 -13
  18. package/dist/es/standards-sdk.es108.js.map +1 -1
  19. package/dist/es/standards-sdk.es109.js +793 -13
  20. package/dist/es/standards-sdk.es109.js.map +1 -1
  21. package/dist/es/standards-sdk.es110.js +172 -30
  22. package/dist/es/standards-sdk.es110.js.map +1 -1
  23. package/dist/es/standards-sdk.es111.js +142 -14
  24. package/dist/es/standards-sdk.es111.js.map +1 -1
  25. package/dist/es/standards-sdk.es112.js +3 -4
  26. package/dist/es/standards-sdk.es112.js.map +1 -1
  27. package/dist/es/standards-sdk.es113.js +2 -4
  28. package/dist/es/standards-sdk.es113.js.map +1 -1
  29. package/dist/es/standards-sdk.es114.js +2 -16
  30. package/dist/es/standards-sdk.es114.js.map +1 -1
  31. package/dist/es/standards-sdk.es115.js +33 -4
  32. package/dist/es/standards-sdk.es115.js.map +1 -1
  33. package/dist/es/standards-sdk.es116.js +33 -39
  34. package/dist/es/standards-sdk.es116.js.map +1 -1
  35. package/dist/es/standards-sdk.es117.js +9 -40
  36. package/dist/es/standards-sdk.es117.js.map +1 -1
  37. package/dist/es/standards-sdk.es118.js +33 -36
  38. package/dist/es/standards-sdk.es118.js.map +1 -1
  39. package/dist/es/standards-sdk.es119.js +17 -74
  40. package/dist/es/standards-sdk.es119.js.map +1 -1
  41. package/dist/es/standards-sdk.es120.js +27 -3
  42. package/dist/es/standards-sdk.es120.js.map +1 -1
  43. package/dist/es/standards-sdk.es121.js +26 -2
  44. package/dist/es/standards-sdk.es121.js.map +1 -1
  45. package/dist/es/standards-sdk.es122.js +38 -2
  46. package/dist/es/standards-sdk.es122.js.map +1 -1
  47. package/dist/es/standards-sdk.es123.js +96 -29
  48. package/dist/es/standards-sdk.es123.js.map +1 -1
  49. package/dist/es/standards-sdk.es124.js +2 -33
  50. package/dist/es/standards-sdk.es124.js.map +1 -1
  51. package/dist/es/standards-sdk.es125.js +16 -9
  52. package/dist/es/standards-sdk.es125.js.map +1 -1
  53. package/dist/es/standards-sdk.es126.js +405 -30
  54. package/dist/es/standards-sdk.es126.js.map +1 -1
  55. package/dist/es/standards-sdk.es127.js +2285 -0
  56. package/dist/es/standards-sdk.es127.js.map +1 -0
  57. package/dist/es/standards-sdk.es128.js +7139 -0
  58. package/dist/es/standards-sdk.es128.js.map +1 -0
  59. package/dist/es/standards-sdk.es129.js +13 -0
  60. package/dist/es/standards-sdk.es129.js.map +1 -0
  61. package/dist/es/standards-sdk.es13.js +3 -3
  62. package/dist/es/standards-sdk.es130.js +14 -0
  63. package/dist/es/standards-sdk.es130.js.map +1 -0
  64. package/dist/es/standards-sdk.es131.js +21 -0
  65. package/dist/es/standards-sdk.es131.js.map +1 -0
  66. package/dist/es/standards-sdk.es132.js +9 -0
  67. package/dist/es/standards-sdk.es132.js.map +1 -0
  68. package/dist/es/standards-sdk.es133.js +12 -0
  69. package/dist/es/standards-sdk.es133.js.map +1 -0
  70. package/dist/es/standards-sdk.es15.js +1 -1
  71. package/dist/es/standards-sdk.es18.js +2 -2
  72. package/dist/es/standards-sdk.es19.js +216 -386
  73. package/dist/es/standards-sdk.es19.js.map +1 -1
  74. package/dist/es/standards-sdk.es20.js +2 -2
  75. package/dist/es/standards-sdk.es21.js +3 -3
  76. package/dist/es/standards-sdk.es24.js +10 -10
  77. package/dist/es/standards-sdk.es25.js +5 -1769
  78. package/dist/es/standards-sdk.es25.js.map +1 -1
  79. package/dist/es/standards-sdk.es26.js +36 -3
  80. package/dist/es/standards-sdk.es26.js.map +1 -1
  81. package/dist/es/standards-sdk.es27.js +48 -4168
  82. package/dist/es/standards-sdk.es27.js.map +1 -1
  83. package/dist/es/standards-sdk.es28.js +122 -5543
  84. package/dist/es/standards-sdk.es28.js.map +1 -1
  85. package/dist/es/standards-sdk.es29.js +500 -8
  86. package/dist/es/standards-sdk.es29.js.map +1 -1
  87. package/dist/es/standards-sdk.es30.js +109 -2
  88. package/dist/es/standards-sdk.es30.js.map +1 -1
  89. package/dist/es/standards-sdk.es31.js +66 -36
  90. package/dist/es/standards-sdk.es31.js.map +1 -1
  91. package/dist/es/standards-sdk.es32.js +63 -47
  92. package/dist/es/standards-sdk.es32.js.map +1 -1
  93. package/dist/es/standards-sdk.es33.js +27 -5
  94. package/dist/es/standards-sdk.es33.js.map +1 -1
  95. package/dist/es/standards-sdk.es34.js +9 -8
  96. package/dist/es/standards-sdk.es34.js.map +1 -1
  97. package/dist/es/standards-sdk.es35.js +10 -2
  98. package/dist/es/standards-sdk.es35.js.map +1 -1
  99. package/dist/es/standards-sdk.es36.js +7167 -78
  100. package/dist/es/standards-sdk.es36.js.map +1 -1
  101. package/dist/es/standards-sdk.es37.js +3 -2
  102. package/dist/es/standards-sdk.es37.js.map +1 -1
  103. package/dist/es/standards-sdk.es38.js +8 -15
  104. package/dist/es/standards-sdk.es38.js.map +1 -1
  105. package/dist/es/standards-sdk.es39.js +2 -409
  106. package/dist/es/standards-sdk.es39.js.map +1 -1
  107. package/dist/es/standards-sdk.es40.js +4167 -2281
  108. package/dist/es/standards-sdk.es40.js.map +1 -1
  109. package/dist/es/standards-sdk.es41.js +399 -144
  110. package/dist/es/standards-sdk.es41.js.map +1 -1
  111. package/dist/es/standards-sdk.es42.js +2 -23
  112. package/dist/es/standards-sdk.es42.js.map +1 -1
  113. package/dist/es/standards-sdk.es43.js +112 -166
  114. package/dist/es/standards-sdk.es43.js.map +1 -1
  115. package/dist/es/standards-sdk.es44.js +350 -77
  116. package/dist/es/standards-sdk.es44.js.map +1 -1
  117. package/dist/es/standards-sdk.es45.js +4 -193
  118. package/dist/es/standards-sdk.es45.js.map +1 -1
  119. package/dist/es/standards-sdk.es46.js +158 -417
  120. package/dist/es/standards-sdk.es46.js.map +1 -1
  121. package/dist/es/standards-sdk.es47.js +75 -19
  122. package/dist/es/standards-sdk.es47.js.map +1 -1
  123. package/dist/es/standards-sdk.es48.js +103 -128
  124. package/dist/es/standards-sdk.es48.js.map +1 -1
  125. package/dist/es/standards-sdk.es49.js +48 -14
  126. package/dist/es/standards-sdk.es49.js.map +1 -1
  127. package/dist/es/standards-sdk.es5.js +1 -1
  128. package/dist/es/standards-sdk.es50.js +9 -28
  129. package/dist/es/standards-sdk.es50.js.map +1 -1
  130. package/dist/es/standards-sdk.es51.js +91 -23
  131. package/dist/es/standards-sdk.es51.js.map +1 -1
  132. package/dist/es/standards-sdk.es52.js +3 -20
  133. package/dist/es/standards-sdk.es52.js.map +1 -1
  134. package/dist/es/standards-sdk.es53.js +2 -44
  135. package/dist/es/standards-sdk.es53.js.map +1 -1
  136. package/dist/es/standards-sdk.es54.js +108 -13
  137. package/dist/es/standards-sdk.es54.js.map +1 -1
  138. package/dist/es/standards-sdk.es55.js +71 -58
  139. package/dist/es/standards-sdk.es55.js.map +1 -1
  140. package/dist/es/standards-sdk.es56.js +4 -1287
  141. package/dist/es/standards-sdk.es56.js.map +1 -1
  142. package/dist/es/standards-sdk.es57.js +4 -147
  143. package/dist/es/standards-sdk.es57.js.map +1 -1
  144. package/dist/es/standards-sdk.es58.js +211 -74
  145. package/dist/es/standards-sdk.es58.js.map +1 -1
  146. package/dist/es/standards-sdk.es59.js +55 -29
  147. package/dist/es/standards-sdk.es59.js.map +1 -1
  148. package/dist/es/standards-sdk.es60.js +69 -6
  149. package/dist/es/standards-sdk.es60.js.map +1 -1
  150. package/dist/es/standards-sdk.es61.js +3 -158
  151. package/dist/es/standards-sdk.es61.js.map +1 -1
  152. package/dist/es/standards-sdk.es62.js +41 -792
  153. package/dist/es/standards-sdk.es62.js.map +1 -1
  154. package/dist/es/standards-sdk.es63.js +3 -143
  155. package/dist/es/standards-sdk.es63.js.map +1 -1
  156. package/dist/es/standards-sdk.es64.js +159 -22
  157. package/dist/es/standards-sdk.es64.js.map +1 -1
  158. package/dist/es/standards-sdk.es65.js +29 -23
  159. package/dist/es/standards-sdk.es65.js.map +1 -1
  160. package/dist/es/standards-sdk.es66.js +61 -36
  161. package/dist/es/standards-sdk.es66.js.map +1 -1
  162. package/dist/es/standards-sdk.es67.js +46 -17
  163. package/dist/es/standards-sdk.es67.js.map +1 -1
  164. package/dist/es/standards-sdk.es68.js +10 -3
  165. package/dist/es/standards-sdk.es68.js.map +1 -1
  166. package/dist/es/standards-sdk.es69.js +64 -3
  167. package/dist/es/standards-sdk.es69.js.map +1 -1
  168. package/dist/es/standards-sdk.es7.js +4 -4
  169. package/dist/es/standards-sdk.es70.js +6 -7136
  170. package/dist/es/standards-sdk.es70.js.map +1 -1
  171. package/dist/es/standards-sdk.es71.js +14 -9
  172. package/dist/es/standards-sdk.es71.js.map +1 -1
  173. package/dist/es/standards-sdk.es72.js +7 -11
  174. package/dist/es/standards-sdk.es72.js.map +1 -1
  175. package/dist/es/standards-sdk.es73.js +44 -17
  176. package/dist/es/standards-sdk.es73.js.map +1 -1
  177. package/dist/es/standards-sdk.es74.js +2 -6
  178. package/dist/es/standards-sdk.es74.js.map +1 -1
  179. package/dist/es/standards-sdk.es75.js +136 -9
  180. package/dist/es/standards-sdk.es75.js.map +1 -1
  181. package/dist/es/standards-sdk.es76.js +156 -403
  182. package/dist/es/standards-sdk.es76.js.map +1 -1
  183. package/dist/es/standards-sdk.es77.js +2 -2
  184. package/dist/es/standards-sdk.es77.js.map +1 -1
  185. package/dist/es/standards-sdk.es78.js +13 -120
  186. package/dist/es/standards-sdk.es78.js.map +1 -1
  187. package/dist/es/standards-sdk.es79.js +12 -363
  188. package/dist/es/standards-sdk.es79.js.map +1 -1
  189. package/dist/es/standards-sdk.es8.js +3 -3
  190. package/dist/es/standards-sdk.es80.js +30 -4
  191. package/dist/es/standards-sdk.es80.js.map +1 -1
  192. package/dist/es/standards-sdk.es81.js +14 -178
  193. package/dist/es/standards-sdk.es81.js.map +1 -1
  194. package/dist/es/standards-sdk.es82.js +3 -80
  195. package/dist/es/standards-sdk.es82.js.map +1 -1
  196. package/dist/es/standards-sdk.es83.js +3 -113
  197. package/dist/es/standards-sdk.es83.js.map +1 -1
  198. package/dist/es/standards-sdk.es84.js +14 -50
  199. package/dist/es/standards-sdk.es84.js.map +1 -1
  200. package/dist/es/standards-sdk.es85.js +4 -9
  201. package/dist/es/standards-sdk.es85.js.map +1 -1
  202. package/dist/es/standards-sdk.es86.js +38 -96
  203. package/dist/es/standards-sdk.es86.js.map +1 -1
  204. package/dist/es/standards-sdk.es87.js +40 -4
  205. package/dist/es/standards-sdk.es87.js.map +1 -1
  206. package/dist/es/standards-sdk.es88.js +37 -2
  207. package/dist/es/standards-sdk.es88.js.map +1 -1
  208. package/dist/es/standards-sdk.es89.js +70 -105
  209. package/dist/es/standards-sdk.es89.js.map +1 -1
  210. package/dist/es/standards-sdk.es9.js +1 -1
  211. package/dist/es/standards-sdk.es90.js +80 -70
  212. package/dist/es/standards-sdk.es90.js.map +1 -1
  213. package/dist/es/standards-sdk.es91.js +22 -5
  214. package/dist/es/standards-sdk.es91.js.map +1 -1
  215. package/dist/es/standards-sdk.es92.js +147 -4
  216. package/dist/es/standards-sdk.es92.js.map +1 -1
  217. package/dist/es/standards-sdk.es93.js +78 -208
  218. package/dist/es/standards-sdk.es93.js.map +1 -1
  219. package/dist/es/standards-sdk.es94.js +189 -52
  220. package/dist/es/standards-sdk.es94.js.map +1 -1
  221. package/dist/es/standards-sdk.es95.js +437 -68
  222. package/dist/es/standards-sdk.es95.js.map +1 -1
  223. package/dist/es/standards-sdk.es96.js +20 -27
  224. package/dist/es/standards-sdk.es96.js.map +1 -1
  225. package/dist/es/standards-sdk.es97.js +131 -55
  226. package/dist/es/standards-sdk.es97.js.map +1 -1
  227. package/dist/es/standards-sdk.es98.js +14 -46
  228. package/dist/es/standards-sdk.es98.js.map +1 -1
  229. package/dist/es/standards-sdk.es99.js +28 -9
  230. package/dist/es/standards-sdk.es99.js.map +1 -1
  231. package/dist/es/utils/parsers/crypto-parser.d.ts +10 -0
  232. package/dist/es/utils/parsers/crypto-parser.d.ts.map +1 -0
  233. package/dist/es/utils/parsers/file-parser.d.ts +9 -0
  234. package/dist/es/utils/parsers/file-parser.d.ts.map +1 -0
  235. package/dist/es/utils/parsers/hcs-parser.d.ts +9 -0
  236. package/dist/es/utils/parsers/hcs-parser.d.ts.map +1 -0
  237. package/dist/es/utils/parsers/hts-parser.d.ts +20 -0
  238. package/dist/es/utils/parsers/hts-parser.d.ts.map +1 -0
  239. package/dist/es/utils/parsers/parser-utils.d.ts +3 -0
  240. package/dist/es/utils/parsers/parser-utils.d.ts.map +1 -0
  241. package/dist/es/utils/parsers/scs-parser.d.ts +6 -0
  242. package/dist/es/utils/parsers/scs-parser.d.ts.map +1 -0
  243. package/dist/es/utils/parsers/util-parser.d.ts +6 -0
  244. package/dist/es/utils/parsers/util-parser.d.ts.map +1 -0
  245. package/dist/es/utils/transaction-parser-types.d.ts +226 -0
  246. package/dist/es/utils/transaction-parser-types.d.ts.map +1 -0
  247. package/dist/es/utils/transaction-parser.d.ts +1 -178
  248. package/dist/es/utils/transaction-parser.d.ts.map +1 -1
  249. package/dist/umd/standards-sdk.umd.js +1 -1
  250. package/dist/umd/standards-sdk.umd.js.map +1 -1
  251. package/dist/umd/utils/parsers/crypto-parser.d.ts +10 -0
  252. package/dist/umd/utils/parsers/crypto-parser.d.ts.map +1 -0
  253. package/dist/umd/utils/parsers/file-parser.d.ts +9 -0
  254. package/dist/umd/utils/parsers/file-parser.d.ts.map +1 -0
  255. package/dist/umd/utils/parsers/hcs-parser.d.ts +9 -0
  256. package/dist/umd/utils/parsers/hcs-parser.d.ts.map +1 -0
  257. package/dist/umd/utils/parsers/hts-parser.d.ts +20 -0
  258. package/dist/umd/utils/parsers/hts-parser.d.ts.map +1 -0
  259. package/dist/umd/utils/parsers/parser-utils.d.ts +3 -0
  260. package/dist/umd/utils/parsers/parser-utils.d.ts.map +1 -0
  261. package/dist/umd/utils/parsers/scs-parser.d.ts +6 -0
  262. package/dist/umd/utils/parsers/scs-parser.d.ts.map +1 -0
  263. package/dist/umd/utils/parsers/util-parser.d.ts +6 -0
  264. package/dist/umd/utils/parsers/util-parser.d.ts.map +1 -0
  265. package/dist/umd/utils/transaction-parser-types.d.ts +226 -0
  266. package/dist/umd/utils/transaction-parser-types.d.ts.map +1 -0
  267. package/dist/umd/utils/transaction-parser.d.ts +1 -178
  268. package/dist/umd/utils/transaction-parser.d.ts.map +1 -1
  269. package/package.json +3 -3
@@ -1,7 +1,13 @@
1
1
  import { proto } from "@hashgraph/proto";
2
- import { Buffer as Buffer$1 } from "./standards-sdk.es25.js";
3
- import { Hbar, Long, HbarUnit, AccountId, TokenId, ContractId } from "@hashgraph/sdk";
4
- import { decodeBase64 } from "./standards-sdk.es34.js";
2
+ import { Buffer as Buffer$1 } from "./standards-sdk.es28.js";
3
+ import { Hbar, Long, HbarUnit } from "@hashgraph/sdk";
4
+ import { HTSParser } from "./standards-sdk.es29.js";
5
+ import { HCSParser } from "./standards-sdk.es30.js";
6
+ import { FileParser } from "./standards-sdk.es31.js";
7
+ import { CryptoParser } from "./standards-sdk.es32.js";
8
+ import { SCSParser } from "./standards-sdk.es33.js";
9
+ import { UtilParser } from "./standards-sdk.es34.js";
10
+ import { decodeBase64 } from "./standards-sdk.es35.js";
5
11
  class TransactionParser {
6
12
  /**
7
13
  * Parse a base64 encoded transaction body and return structured data
@@ -30,29 +36,115 @@ class TransactionParser {
30
36
  result.transactionFee = hbarAmount.toString(HbarUnit.Hbar);
31
37
  }
32
38
  if (txBody.cryptoTransfer) {
33
- this.parseCryptoTransfers(txBody.cryptoTransfer, result);
39
+ CryptoParser.parseCryptoTransfers(txBody.cryptoTransfer, result);
40
+ }
41
+ if (txBody.cryptoDelete) {
42
+ result.cryptoDelete = CryptoParser.parseCryptoDelete(
43
+ txBody.cryptoDelete
44
+ );
34
45
  }
35
46
  if (txBody.contractCall) {
36
- this.parseContractCall(txBody.contractCall, result);
47
+ result.contractCall = SCSParser.parseContractCall(txBody.contractCall);
48
+ }
49
+ if (txBody.tokenCreation) {
50
+ result.tokenCreation = HTSParser.parseTokenCreate(txBody.tokenCreation);
37
51
  }
38
52
  if (txBody.tokenMint) {
39
- this.parseTokenMint(txBody.tokenMint, result);
53
+ result.tokenMint = HTSParser.parseTokenMint(txBody.tokenMint);
40
54
  }
41
55
  if (txBody.tokenBurn) {
42
- this.parseTokenBurn(txBody.tokenBurn, result);
56
+ result.tokenBurn = HTSParser.parseTokenBurn(txBody.tokenBurn);
43
57
  }
44
- if (txBody.tokenCreation) {
45
- this.parseTokenCreation(txBody.tokenCreation, result);
58
+ if (txBody.tokenUpdate) {
59
+ result.tokenUpdate = HTSParser.parseTokenUpdate(txBody.tokenUpdate);
60
+ }
61
+ if (txBody.tokenFeeScheduleUpdate) {
62
+ result.tokenFeeScheduleUpdate = HTSParser.parseTokenFeeScheduleUpdate(
63
+ txBody.tokenFeeScheduleUpdate
64
+ );
65
+ }
66
+ if (txBody.tokenFreeze) {
67
+ result.tokenFreeze = HTSParser.parseTokenFreeze(txBody.tokenFreeze);
68
+ }
69
+ if (txBody.tokenUnfreeze) {
70
+ result.tokenUnfreeze = HTSParser.parseTokenUnfreeze(
71
+ txBody.tokenUnfreeze
72
+ );
73
+ }
74
+ if (txBody.tokenGrantKyc) {
75
+ result.tokenGrantKyc = HTSParser.parseTokenGrantKyc(
76
+ txBody.tokenGrantKyc
77
+ );
78
+ }
79
+ if (txBody.tokenRevokeKyc) {
80
+ result.tokenRevokeKyc = HTSParser.parseTokenRevokeKyc(
81
+ txBody.tokenRevokeKyc
82
+ );
83
+ }
84
+ if (txBody.tokenPause) {
85
+ result.tokenPause = HTSParser.parseTokenPause(txBody.tokenPause);
86
+ }
87
+ if (txBody.tokenUnpause) {
88
+ result.tokenUnpause = HTSParser.parseTokenUnpause(txBody.tokenUnpause);
89
+ }
90
+ if (txBody.tokenWipe) {
91
+ result.tokenWipeAccount = HTSParser.parseTokenWipeAccount(
92
+ txBody.tokenWipe
93
+ );
94
+ }
95
+ if (txBody.tokenDeletion) {
96
+ result.tokenDelete = HTSParser.parseTokenDelete(txBody.tokenDeletion);
97
+ }
98
+ if (txBody.tokenAssociate) {
99
+ result.tokenAssociate = HTSParser.parseTokenAssociate(
100
+ txBody.tokenAssociate
101
+ );
102
+ }
103
+ if (txBody.tokenDissociate) {
104
+ result.tokenDissociate = HTSParser.parseTokenDissociate(
105
+ txBody.tokenDissociate
106
+ );
46
107
  }
47
108
  if (txBody.consensusCreateTopic) {
48
- this.parseConsensusCreateTopic(txBody.consensusCreateTopic, result);
109
+ result.consensusCreateTopic = HCSParser.parseConsensusCreateTopic(
110
+ txBody.consensusCreateTopic
111
+ );
49
112
  }
50
113
  if (txBody.consensusSubmitMessage) {
51
- this.parseConsensusSubmitMessage(txBody.consensusSubmitMessage, result);
114
+ result.consensusSubmitMessage = HCSParser.parseConsensusSubmitMessage(
115
+ txBody.consensusSubmitMessage
116
+ );
117
+ }
118
+ if (txBody.consensusUpdateTopic) {
119
+ result.consensusUpdateTopic = HCSParser.parseConsensusUpdateTopic(
120
+ txBody.consensusUpdateTopic
121
+ );
122
+ }
123
+ if (txBody.consensusDeleteTopic) {
124
+ result.consensusDeleteTopic = HCSParser.parseConsensusDeleteTopic(
125
+ txBody.consensusDeleteTopic
126
+ );
127
+ }
128
+ if (txBody.fileCreate) {
129
+ result.fileCreate = FileParser.parseFileCreate(txBody.fileCreate);
130
+ }
131
+ if (txBody.fileAppend) {
132
+ result.fileAppend = FileParser.parseFileAppend(txBody.fileAppend);
133
+ }
134
+ if (txBody.fileUpdate) {
135
+ result.fileUpdate = FileParser.parseFileUpdate(txBody.fileUpdate);
136
+ }
137
+ if (txBody.fileDelete) {
138
+ result.fileDelete = FileParser.parseFileDelete(txBody.fileDelete);
139
+ }
140
+ if (txBody.utilPrng) {
141
+ result.utilPrng = UtilParser.parseUtilPrng(txBody.utilPrng);
52
142
  }
53
143
  return result;
54
144
  } catch (error) {
55
- throw new Error(`Failed to parse transaction body: ${error}`);
145
+ throw new Error(
146
+ `Failed to parse transaction body: ${error instanceof Error ? error.message : String(error)}`
147
+ );
56
148
  }
57
149
  }
58
150
  /**
@@ -143,12 +235,8 @@ class TransactionParser {
143
235
  transactionType = "tokenUnpause";
144
236
  } else if (txBody.tokenWipe) {
145
237
  transactionType = "tokenWipe";
146
- } else if (txBody.scheduleDelete) {
147
- transactionType = "scheduleDelete";
148
- } else if (txBody.systemDelete) {
149
- transactionType = "systemDelete";
150
- } else if (txBody.systemUndelete) {
151
- transactionType = "systemUndelete";
238
+ } else if (txBody.utilPrng) {
239
+ transactionType = "utilPrng";
152
240
  }
153
241
  return transactionType;
154
242
  }
@@ -195,10 +283,8 @@ class TransactionParser {
195
283
  tokenUnpause: "Unpause Token",
196
284
  tokenWipe: "Wipe Token",
197
285
  scheduleCreate: "Create Schedule",
198
- scheduleDelete: "Delete Schedule",
199
286
  scheduleSign: "Sign Schedule",
200
- systemDelete: "System Delete",
201
- systemUndelete: "System Undelete",
287
+ utilPrng: "Generate Random Number",
202
288
  unknown: "Unknown Transaction"
203
289
  };
204
290
  let result;
@@ -209,362 +295,12 @@ class TransactionParser {
209
295
  }
210
296
  return result;
211
297
  }
212
- /**
213
- * Parse crypto transfers from the transaction
214
- * @param cryptoTransfer - The crypto transfer transaction body
215
- * @param result - The parsed transaction
216
- */
217
- static parseCryptoTransfers(cryptoTransfer, result) {
218
- if (cryptoTransfer.transfers) {
219
- if (cryptoTransfer.transfers.accountAmounts) {
220
- result.transfers = cryptoTransfer.transfers.accountAmounts.map(
221
- (amount) => {
222
- const shard = amount.accountID?.shardNum ? Long.fromValue(amount.accountID.shardNum).toNumber() : 0;
223
- const realm = amount.accountID?.realmNum ? Long.fromValue(amount.accountID.realmNum).toNumber() : 0;
224
- const accountNum = amount.accountID?.accountNum ? Long.fromValue(amount.accountID.accountNum).toNumber() : 0;
225
- const accountId = AccountId.fromString(
226
- `${shard}.${realm}.${accountNum}`
227
- );
228
- const hbarValue = amount.amount ? Long.fromValue(amount.amount) : Long.ZERO;
229
- const hbarAmount = Hbar.fromTinybars(hbarValue);
230
- return {
231
- accountId: accountId.toString(),
232
- amount: hbarAmount.toString(HbarUnit.Hbar),
233
- isDecimal: true
234
- };
235
- }
236
- );
237
- }
238
- }
239
- if (cryptoTransfer.tokenTransfers) {
240
- for (const tokenTransfer of cryptoTransfer.tokenTransfers) {
241
- const shard = tokenTransfer.token?.shardNum ? Long.fromValue(tokenTransfer.token.shardNum).toNumber() : 0;
242
- const realm = tokenTransfer.token?.realmNum ? Long.fromValue(tokenTransfer.token.realmNum).toNumber() : 0;
243
- const tokenNum = tokenTransfer.token?.tokenNum ? Long.fromValue(tokenTransfer.token.tokenNum).toNumber() : 0;
244
- const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);
245
- if (tokenTransfer.transfers) {
246
- for (const transfer of tokenTransfer.transfers) {
247
- const accShard = transfer.accountID?.shardNum ? Long.fromValue(transfer.accountID.shardNum).toNumber() : 0;
248
- const accRealm = transfer.accountID?.realmNum ? Long.fromValue(transfer.accountID.realmNum).toNumber() : 0;
249
- const accNum = transfer.accountID?.accountNum ? Long.fromValue(transfer.accountID.accountNum).toNumber() : 0;
250
- const accountId = AccountId.fromString(
251
- `${accShard}.${accRealm}.${accNum}`
252
- );
253
- const tokenAmount = transfer.amount ? Long.fromValue(transfer.amount).toNumber() : 0;
254
- result.tokenTransfers.push({
255
- tokenId: tokenId.toString(),
256
- accountId: accountId.toString(),
257
- amount: tokenAmount
258
- });
259
- }
260
- }
261
- }
262
- }
263
- }
264
- /**
265
- * Parse contract call transaction data
266
- * @param contractCall - The contract call transaction body
267
- * @param result - The parsed transaction
268
- */
269
- static parseContractCall(contractCall, result) {
270
- if (contractCall) {
271
- const shard = contractCall.contractID?.shardNum ? Long.fromValue(contractCall.contractID.shardNum).toNumber() : 0;
272
- const realm = contractCall.contractID?.realmNum ? Long.fromValue(contractCall.contractID.realmNum).toNumber() : 0;
273
- const contractNum = contractCall.contractID?.contractNum ? Long.fromValue(contractCall.contractID.contractNum).toNumber() : 0;
274
- const contractId = ContractId.fromString(
275
- `${shard}.${realm}.${contractNum}`
276
- );
277
- const gasLimit = contractCall.gas ? Long.fromValue(contractCall.gas).toNumber() : 0;
278
- let amount = 0;
279
- if (contractCall.amount) {
280
- const hbar = Hbar.fromTinybars(Long.fromValue(contractCall.amount));
281
- amount = parseFloat(hbar.toString(HbarUnit.Hbar));
282
- }
283
- const functionParameters = contractCall.functionParameters ? Buffer$1.from(contractCall.functionParameters).toString("hex") : void 0;
284
- let functionName;
285
- if (functionParameters && functionParameters.length >= 8) {
286
- functionName = functionParameters.substring(0, 8);
287
- }
288
- result.contractCall = {
289
- contractId: contractId.toString(),
290
- gas: gasLimit,
291
- amount,
292
- functionParameters,
293
- functionName
294
- };
295
- }
296
- }
297
- /**
298
- * Parse token mint transaction data
299
- * @param tokenMint - The token mint transaction body
300
- * @param result - The parsed transaction
301
- */
302
- static parseTokenMint(tokenMint, result) {
303
- if (tokenMint) {
304
- const shard = tokenMint.token?.shardNum ? Long.fromValue(tokenMint.token.shardNum).toNumber() : 0;
305
- const realm = tokenMint.token?.realmNum ? Long.fromValue(tokenMint.token.realmNum).toNumber() : 0;
306
- const tokenNum = tokenMint.token?.tokenNum ? Long.fromValue(tokenMint.token.tokenNum).toNumber() : 0;
307
- const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);
308
- const amount = tokenMint.amount ? Long.fromValue(tokenMint.amount).toNumber() : 0;
309
- const metadata = [];
310
- if (tokenMint.metadata) {
311
- for (const meta of tokenMint.metadata) {
312
- if (meta) {
313
- metadata.push(Buffer$1.from(meta).toString("base64"));
314
- }
315
- }
316
- }
317
- result.tokenMint = {
318
- tokenId: tokenId.toString(),
319
- amount,
320
- metadata: metadata.length > 0 ? metadata : void 0
321
- };
322
- }
323
- }
324
- /**
325
- * Parse token burn transaction data
326
- * @param tokenBurn - The token burn transaction body
327
- * @param result - The parsed transaction
328
- */
329
- static parseTokenBurn(tokenBurn, result) {
330
- if (tokenBurn) {
331
- const shard = tokenBurn.token?.shardNum ? Long.fromValue(tokenBurn.token.shardNum).toNumber() : 0;
332
- const realm = tokenBurn.token?.realmNum ? Long.fromValue(tokenBurn.token.realmNum).toNumber() : 0;
333
- const tokenNum = tokenBurn.token?.tokenNum ? Long.fromValue(tokenBurn.token.tokenNum).toNumber() : 0;
334
- const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);
335
- const amount = tokenBurn.amount ? Long.fromValue(tokenBurn.amount).toNumber() : 0;
336
- const serialNumbers = [];
337
- if (tokenBurn.serialNumbers) {
338
- for (const serial of tokenBurn.serialNumbers) {
339
- if (serial) {
340
- serialNumbers.push(Long.fromValue(serial).toNumber());
341
- }
342
- }
343
- }
344
- result.tokenBurn = {
345
- tokenId: tokenId.toString(),
346
- amount,
347
- serialNumbers: serialNumbers.length > 0 ? serialNumbers : void 0
348
- };
349
- }
350
- }
351
- /**
352
- * Parse token creation transaction data
353
- * @param tokenCreation - The token creation transaction body
354
- * @param result - The parsed transaction
355
- */
356
- static parseTokenCreation(tokenCreation, result) {
357
- if (tokenCreation) {
358
- const creationData = {};
359
- if (tokenCreation.name) creationData.tokenName = tokenCreation.name;
360
- if (tokenCreation.symbol) creationData.tokenSymbol = tokenCreation.symbol;
361
- if (tokenCreation.treasury) {
362
- const t = tokenCreation.treasury;
363
- creationData.treasuryAccountId = new AccountId(
364
- t.shardNum ? Long.fromValue(t.shardNum).toNumber() : 0,
365
- t.realmNum ? Long.fromValue(t.realmNum).toNumber() : 0,
366
- t.accountNum ? Long.fromValue(t.accountNum).toNumber() : 0
367
- ).toString();
368
- }
369
- if (tokenCreation.initialSupply) {
370
- creationData.initialSupply = Long.fromValue(
371
- tokenCreation.initialSupply
372
- ).toString();
373
- }
374
- if (tokenCreation.decimals !== void 0 && tokenCreation.decimals !== null) {
375
- creationData.decimals = Long.fromValue(
376
- tokenCreation.decimals
377
- ).toNumber();
378
- }
379
- if (tokenCreation.maxSupply) {
380
- creationData.maxSupply = Long.fromValue(
381
- tokenCreation.maxSupply
382
- ).toString();
383
- }
384
- if (tokenCreation.memo) creationData.memo = tokenCreation.memo;
385
- if (tokenCreation.tokenType !== null && tokenCreation.tokenType !== void 0) {
386
- creationData.tokenType = proto.TokenType[tokenCreation.tokenType];
387
- }
388
- if (tokenCreation.supplyType !== null && tokenCreation.supplyType !== void 0) {
389
- creationData.supplyType = proto.TokenSupplyType[tokenCreation.supplyType];
390
- }
391
- creationData.adminKey = tokenCreation.adminKey ? "Present" : "Not Present";
392
- creationData.kycKey = tokenCreation.kycKey ? "Present" : "Not Present";
393
- creationData.freezeKey = tokenCreation.freezeKey ? "Present" : "Not Present";
394
- creationData.wipeKey = tokenCreation.wipeKey ? "Present" : "Not Present";
395
- creationData.supplyKey = tokenCreation.supplyKey ? "Present" : "Not Present";
396
- creationData.feeScheduleKey = tokenCreation.feeScheduleKey ? "Present" : "Not Present";
397
- creationData.pauseKey = tokenCreation.pauseKey ? "Present" : "Not Present";
398
- if (tokenCreation.autoRenewAccount) {
399
- const ara = tokenCreation.autoRenewAccount;
400
- creationData.autoRenewAccount = new AccountId(
401
- ara.shardNum ? Long.fromValue(ara.shardNum).toNumber() : 0,
402
- ara.realmNum ? Long.fromValue(ara.realmNum).toNumber() : 0,
403
- ara.accountNum ? Long.fromValue(ara.accountNum).toNumber() : 0
404
- ).toString();
405
- }
406
- if (tokenCreation.autoRenewPeriod && tokenCreation.autoRenewPeriod.seconds) {
407
- creationData.autoRenewPeriod = Long.fromValue(
408
- tokenCreation.autoRenewPeriod.seconds
409
- ).toString();
410
- }
411
- if (tokenCreation.customFees && tokenCreation.customFees.length > 0) {
412
- creationData.customFees = tokenCreation.customFees.map((fee) => {
413
- const feeCollectorAccountId = fee.feeCollectorAccountId ? new AccountId(
414
- fee.feeCollectorAccountId.shardNum ?? 0,
415
- fee.feeCollectorAccountId.realmNum ?? 0,
416
- fee.feeCollectorAccountId.accountNum ?? 0
417
- ).toString() : "Not Set";
418
- const commonFeeData = {
419
- feeCollectorAccountId,
420
- allCollectorsAreExempt: fee.allCollectorsAreExempt || false
421
- };
422
- if (fee.fixedFee) {
423
- return {
424
- ...commonFeeData,
425
- feeType: "FIXED_FEE",
426
- fixedFee: {
427
- amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),
428
- denominatingTokenId: fee.fixedFee.denominatingTokenId ? new TokenId(
429
- fee.fixedFee.denominatingTokenId.shardNum ?? 0,
430
- fee.fixedFee.denominatingTokenId.realmNum ?? 0,
431
- fee.fixedFee.denominatingTokenId.tokenNum ?? 0
432
- ).toString() : void 0
433
- }
434
- };
435
- } else if (fee.fractionalFee) {
436
- return {
437
- ...commonFeeData,
438
- feeType: "FRACTIONAL_FEE",
439
- fractionalFee: {
440
- numerator: Long.fromValue(
441
- fee.fractionalFee.fractionalAmount?.numerator || 0
442
- ).toString(),
443
- denominator: Long.fromValue(
444
- fee.fractionalFee.fractionalAmount?.denominator || 1
445
- ).toString(),
446
- minimumAmount: Long.fromValue(
447
- fee.fractionalFee.minimumAmount || 0
448
- ).toString(),
449
- maximumAmount: Long.fromValue(
450
- fee.fractionalFee.maximumAmount || 0
451
- ).toString(),
452
- netOfTransfers: fee.fractionalFee.netOfTransfers || false
453
- }
454
- };
455
- } else if (fee.royaltyFee) {
456
- let fallbackFeeData = void 0;
457
- if (fee.royaltyFee.fallbackFee) {
458
- fallbackFeeData = {
459
- amount: Long.fromValue(
460
- fee.royaltyFee.fallbackFee.amount || 0
461
- ).toString(),
462
- denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId ? new TokenId(
463
- fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ?? 0,
464
- fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ?? 0,
465
- fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ?? 0
466
- ).toString() : void 0
467
- };
468
- }
469
- return {
470
- ...commonFeeData,
471
- feeType: "ROYALTY_FEE",
472
- royaltyFee: {
473
- numerator: Long.fromValue(
474
- fee.royaltyFee.exchangeValueFraction?.numerator || 0
475
- ).toString(),
476
- denominator: Long.fromValue(
477
- fee.royaltyFee.exchangeValueFraction?.denominator || 1
478
- ).toString(),
479
- fallbackFee: fallbackFeeData
480
- }
481
- };
482
- }
483
- return {
484
- ...commonFeeData,
485
- feeType: "FIXED_FEE",
486
- fixedFee: { amount: "0" }
487
- };
488
- });
489
- }
490
- result.tokenCreation = creationData;
491
- }
492
- }
493
- /**
494
- * Parse consensus create topic transaction data
495
- * @param createTopicBody - The consensus create topic transaction body
496
- * @param result - The parsed transaction
497
- */
498
- static parseConsensusCreateTopic(createTopicBody, result) {
499
- if (createTopicBody) {
500
- const topicData = {};
501
- if (createTopicBody.memo) topicData.memo = createTopicBody.memo;
502
- topicData.adminKey = createTopicBody.adminKey ? "Present" : "Not Present";
503
- topicData.submitKey = createTopicBody.submitKey ? "Present" : "Not Present";
504
- if (createTopicBody.autoRenewAccount) {
505
- const ara = createTopicBody.autoRenewAccount;
506
- topicData.autoRenewAccountId = new AccountId(
507
- ara.shardNum ? Long.fromValue(ara.shardNum).toNumber() : 0,
508
- ara.realmNum ? Long.fromValue(ara.realmNum).toNumber() : 0,
509
- ara.accountNum ? Long.fromValue(ara.accountNum).toNumber() : 0
510
- ).toString();
511
- }
512
- if (createTopicBody.autoRenewPeriod && createTopicBody.autoRenewPeriod.seconds) {
513
- topicData.autoRenewPeriod = Long.fromValue(
514
- createTopicBody.autoRenewPeriod.seconds
515
- ).toString();
516
- }
517
- result.consensusCreateTopic = topicData;
518
- }
519
- }
520
- /**
521
- * Parse consensus submit message transaction data
522
- * @param submitMessageBody - The consensus submit message transaction body
523
- * @param result - The parsed transaction
524
- */
525
- static parseConsensusSubmitMessage(submitMessageBody, result) {
526
- if (submitMessageBody) {
527
- const messageData = {};
528
- if (submitMessageBody.topicID) {
529
- const tid = submitMessageBody.topicID;
530
- messageData.topicId = `${tid.shardNum ? Long.fromValue(tid.shardNum).toNumber() : 0}.${tid.realmNum ? Long.fromValue(tid.realmNum).toNumber() : 0}.${tid.topicNum ? Long.fromValue(tid.topicNum).toNumber() : 0}`;
531
- }
532
- if (submitMessageBody.message && submitMessageBody.message.length > 0) {
533
- const messageBuffer = Buffer$1.from(submitMessageBody.message);
534
- const utf8String = messageBuffer.toString("utf8");
535
- if (/[- -]/.test(utf8String) || utf8String.includes("�")) {
536
- messageData.message = messageBuffer.toString("base64");
537
- messageData.messageEncoding = "base64";
538
- } else {
539
- messageData.message = utf8String;
540
- messageData.messageEncoding = "utf8";
541
- }
542
- }
543
- if (submitMessageBody.chunkInfo) {
544
- if (submitMessageBody.chunkInfo.initialTransactionID) {
545
- const txId = submitMessageBody.chunkInfo.initialTransactionID.accountID;
546
- const taValidStart = submitMessageBody.chunkInfo.initialTransactionID.transactionValidStart;
547
- if (txId && taValidStart) {
548
- messageData.chunkInfoInitialTransactionID = `${txId.shardNum ? Long.fromValue(txId.shardNum).toNumber() : 0}.${txId.realmNum ? Long.fromValue(txId.realmNum).toNumber() : 0}.${txId.accountNum ? Long.fromValue(txId.accountNum).toNumber() : 0}@${taValidStart.seconds ? Long.fromValue(taValidStart.seconds).toNumber() : 0}.${taValidStart.nanos ? Long.fromValue(taValidStart.nanos).toNumber() : 0}`;
549
- }
550
- }
551
- if (submitMessageBody.chunkInfo.number !== void 0 && submitMessageBody.chunkInfo.number !== null) {
552
- messageData.chunkInfoNumber = submitMessageBody.chunkInfo.number;
553
- }
554
- if (submitMessageBody.chunkInfo.total !== void 0 && submitMessageBody.chunkInfo.total !== null) {
555
- messageData.chunkInfoTotal = submitMessageBody.chunkInfo.total;
556
- }
557
- }
558
- result.consensusSubmitMessage = messageData;
559
- }
560
- }
561
298
  /**
562
299
  * Get a human-readable summary of the transaction
563
300
  * @param parsedTx - The parsed transaction
564
301
  * @returns The human-readable summary of the transaction
565
302
  */
566
303
  static getTransactionSummary(parsedTx) {
567
- let summary;
568
304
  if (parsedTx.type === "cryptoTransfer") {
569
305
  const senders = [];
570
306
  const receivers = [];
@@ -582,11 +318,11 @@ class TransactionParser {
582
318
  }
583
319
  }
584
320
  if (senders.length > 0 && receivers.length > 0) {
585
- summary = `Transfer of HBAR from ${senders.join(
321
+ return `Transfer of HBAR from ${senders.join(", ")} to ${receivers.join(
586
322
  ", "
587
- )} to ${receivers.join(", ")}`;
323
+ )}`;
588
324
  } else {
589
- summary = parsedTx.humanReadableType;
325
+ return parsedTx.humanReadableType;
590
326
  }
591
327
  } else if (parsedTx.contractCall) {
592
328
  let contractCallSummary = `Contract call to ${parsedTx.contractCall.contractId} with ${parsedTx.contractCall.gas} gas`;
@@ -596,19 +332,20 @@ class TransactionParser {
596
332
  if (parsedTx.contractCall.functionName) {
597
333
  contractCallSummary += ` calling function ${parsedTx.contractCall.functionName}`;
598
334
  }
599
- summary = contractCallSummary;
335
+ return contractCallSummary;
600
336
  } else if (parsedTx.tokenMint) {
601
- summary = `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;
337
+ return `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;
602
338
  } else if (parsedTx.tokenBurn) {
603
- summary = `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;
339
+ return `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;
604
340
  } else if (parsedTx.tokenCreation) {
605
- summary = `Create token ${parsedTx.tokenCreation.tokenName || "(No Name)"} (${parsedTx.tokenCreation.tokenSymbol || "(No Symbol)"})`;
341
+ let summary = `Create token ${parsedTx.tokenCreation.tokenName || "(No Name)"} (${parsedTx.tokenCreation.tokenSymbol || "(No Symbol)"})`;
606
342
  if (parsedTx.tokenCreation.initialSupply) {
607
343
  summary += ` with initial supply ${parsedTx.tokenCreation.initialSupply}`;
608
344
  }
609
- if (parsedTx.tokenCreation.customFees && parsedTx.tokenCreation.customFees.length > 0) {
345
+ if (parsedTx.tokenCreation.customFees?.length) {
610
346
  summary += ` including ${parsedTx.tokenCreation.customFees.length} custom fee(s)`;
611
347
  }
348
+ return summary;
612
349
  } else if (parsedTx.tokenTransfers.length > 0) {
613
350
  const tokenGroups = {};
614
351
  for (const transfer of parsedTx.tokenTransfers) {
@@ -642,20 +379,21 @@ class TransactionParser {
642
379
  }
643
380
  }
644
381
  if (tokenSummaries.length > 0) {
645
- summary = tokenSummaries.join("; ");
382
+ return tokenSummaries.join("; ");
646
383
  } else {
647
- summary = parsedTx.humanReadableType;
384
+ return parsedTx.humanReadableType;
648
385
  }
649
386
  } else if (parsedTx.consensusCreateTopic) {
650
- summary = `Create new topic`;
387
+ let summary = `Create new topic`;
651
388
  if (parsedTx.consensusCreateTopic.memo) {
652
389
  summary += ` with memo "${parsedTx.consensusCreateTopic.memo}"`;
653
390
  }
654
391
  if (parsedTx.consensusCreateTopic.autoRenewAccountId) {
655
392
  summary += `, auto-renew by ${parsedTx.consensusCreateTopic.autoRenewAccountId}`;
656
393
  }
394
+ return summary;
657
395
  } else if (parsedTx.consensusSubmitMessage) {
658
- summary = `Submit message`;
396
+ let summary = `Submit message`;
659
397
  if (parsedTx.consensusSubmitMessage.topicId) {
660
398
  summary += ` to topic ${parsedTx.consensusSubmitMessage.topicId}`;
661
399
  }
@@ -670,10 +408,102 @@ class TransactionParser {
670
408
  if (parsedTx.consensusSubmitMessage.chunkInfoNumber && parsedTx.consensusSubmitMessage.chunkInfoTotal) {
671
409
  summary += ` (chunk ${parsedTx.consensusSubmitMessage.chunkInfoNumber}/${parsedTx.consensusSubmitMessage.chunkInfoTotal})`;
672
410
  }
673
- } else {
674
- summary = parsedTx.humanReadableType;
411
+ return summary;
412
+ } else if (parsedTx.fileCreate) {
413
+ let summary = "Create File";
414
+ if (parsedTx.fileCreate.memo) {
415
+ summary += ` with memo "${parsedTx.fileCreate.memo}"`;
416
+ }
417
+ if (parsedTx.fileCreate.contents) {
418
+ summary += ` (includes content)`;
419
+ }
420
+ return summary;
421
+ } else if (parsedTx.fileAppend) {
422
+ return `Append to File ${parsedTx.fileAppend.fileId || "(Unknown ID)"}`;
423
+ } else if (parsedTx.fileUpdate) {
424
+ return `Update File ${parsedTx.fileUpdate.fileId || "(Unknown ID)"}`;
425
+ } else if (parsedTx.fileDelete) {
426
+ return `Delete File ${parsedTx.fileDelete.fileId || "(Unknown ID)"}`;
427
+ } else if (parsedTx.consensusUpdateTopic) {
428
+ return `Update Topic ${parsedTx.consensusUpdateTopic.topicId || "(Unknown ID)"}`;
429
+ } else if (parsedTx.consensusDeleteTopic) {
430
+ return `Delete Topic ${parsedTx.consensusDeleteTopic.topicId || "(Unknown ID)"}`;
431
+ } else if (parsedTx.tokenUpdate) {
432
+ return `Update Token ${parsedTx.tokenUpdate.tokenId || "(Unknown ID)"}`;
433
+ } else if (parsedTx.tokenFeeScheduleUpdate) {
434
+ return `Update Fee Schedule for Token ${parsedTx.tokenFeeScheduleUpdate.tokenId || "(Unknown ID)"}`;
435
+ } else if (parsedTx.utilPrng) {
436
+ let summary = "Generate Random Number";
437
+ if (parsedTx.utilPrng.range && parsedTx.utilPrng.range > 0) {
438
+ summary += ` (range up to ${parsedTx.utilPrng.range - 1})`;
439
+ }
440
+ return summary;
441
+ } else if (parsedTx.tokenFreeze) {
442
+ return `Freeze Token ${parsedTx.tokenFreeze.tokenId} for Account ${parsedTx.tokenFreeze.accountId}`;
443
+ } else if (parsedTx.tokenUnfreeze) {
444
+ return `Unfreeze Token ${parsedTx.tokenUnfreeze.tokenId} for Account ${parsedTx.tokenUnfreeze.accountId}`;
445
+ } else if (parsedTx.tokenGrantKyc) {
446
+ return `Grant KYC for Token ${parsedTx.tokenGrantKyc.tokenId} to Account ${parsedTx.tokenGrantKyc.accountId}`;
447
+ } else if (parsedTx.tokenRevokeKyc) {
448
+ return `Revoke KYC for Token ${parsedTx.tokenRevokeKyc.tokenId} from Account ${parsedTx.tokenRevokeKyc.accountId}`;
449
+ } else if (parsedTx.tokenPause) {
450
+ return `Pause Token ${parsedTx.tokenPause.tokenId}`;
451
+ } else if (parsedTx.tokenUnpause) {
452
+ return `Unpause Token ${parsedTx.tokenUnpause.tokenId}`;
453
+ } else if (parsedTx.tokenWipeAccount) {
454
+ let summary = `Wipe Token ${parsedTx.tokenWipeAccount.tokenId} from Account ${parsedTx.tokenWipeAccount.accountId}`;
455
+ if (parsedTx.tokenWipeAccount.serialNumbers?.length) {
456
+ summary += ` (Serials: ${parsedTx.tokenWipeAccount.serialNumbers.join(
457
+ ", "
458
+ )})`;
459
+ }
460
+ if (parsedTx.tokenWipeAccount.amount) {
461
+ summary += ` (Amount: ${parsedTx.tokenWipeAccount.amount})`;
462
+ }
463
+ return summary;
464
+ } else if (parsedTx.tokenDelete) {
465
+ return `Delete Token ${parsedTx.tokenDelete.tokenId}`;
466
+ } else if (parsedTx.tokenAssociate) {
467
+ return `Associate Account ${parsedTx.tokenAssociate.accountId} with Tokens: ${parsedTx.tokenAssociate.tokenIds?.join(", ")}`;
468
+ } else if (parsedTx.tokenDissociate) {
469
+ return `Dissociate Account ${parsedTx.tokenDissociate.accountId} from Tokens: ${parsedTx.tokenDissociate.tokenIds?.join(", ")}`;
470
+ } else if (parsedTx.cryptoDelete) {
471
+ return `Delete Account ${parsedTx.cryptoDelete.deleteAccountId}`;
472
+ }
473
+ if (parsedTx.humanReadableType && parsedTx.humanReadableType !== "Unknown Transaction") {
474
+ return parsedTx.humanReadableType;
475
+ }
476
+ if (parsedTx.tokenTransfers.length > 0) {
477
+ const tokenGroups = {};
478
+ for (const transfer of parsedTx.tokenTransfers) {
479
+ if (!tokenGroups[transfer.tokenId]) {
480
+ tokenGroups[transfer.tokenId] = [];
481
+ }
482
+ tokenGroups[transfer.tokenId].push(transfer);
483
+ }
484
+ const tokenSummaries = [];
485
+ for (const [tokenId, transfers] of Object.entries(tokenGroups)) {
486
+ const tokenSenders = transfers.filter((t) => t.amount < 0).map((t) => `${t.accountId} (${Math.abs(t.amount)})`);
487
+ const tokenReceivers = transfers.filter((t) => t.amount > 0).map((t) => `${t.accountId} (${t.amount})`);
488
+ if (tokenSenders.length > 0 && tokenReceivers.length > 0) {
489
+ tokenSummaries.push(
490
+ `Transfer of token ${tokenId} from ${tokenSenders.join(
491
+ ", "
492
+ )} to ${tokenReceivers.join(", ")}`
493
+ );
494
+ } else if (tokenReceivers.length > 0) {
495
+ tokenSummaries.push(
496
+ `Token ${tokenId} received by ${tokenReceivers.join(", ")}`
497
+ );
498
+ } else if (tokenSenders.length > 0) {
499
+ tokenSummaries.push(
500
+ `Token ${tokenId} sent from ${tokenSenders.join(", ")}`
501
+ );
502
+ }
503
+ }
504
+ if (tokenSummaries.length > 0) return tokenSummaries.join("; ");
675
505
  }
676
- return summary;
506
+ return "Unknown Transaction";
677
507
  }
678
508
  }
679
509
  export {