@hashgraphonline/standards-sdk 0.0.108-canary.0 → 0.0.108-canary.3

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 (266) hide show
  1. package/dist/es/standards-sdk.es100.js +52 -59
  2. package/dist/es/standards-sdk.es100.js.map +1 -1
  3. package/dist/es/standards-sdk.es101.js +68 -5
  4. package/dist/es/standards-sdk.es101.js.map +1 -1
  5. package/dist/es/standards-sdk.es102.js +3 -14
  6. package/dist/es/standards-sdk.es102.js.map +1 -1
  7. package/dist/es/standards-sdk.es103.js +32 -7
  8. package/dist/es/standards-sdk.es103.js.map +1 -1
  9. package/dist/es/standards-sdk.es104.js +61 -43
  10. package/dist/es/standards-sdk.es104.js.map +1 -1
  11. package/dist/es/standards-sdk.es105.js +50 -2
  12. package/dist/es/standards-sdk.es105.js.map +1 -1
  13. package/dist/es/standards-sdk.es106.js +10 -136
  14. package/dist/es/standards-sdk.es106.js.map +1 -1
  15. package/dist/es/standards-sdk.es107.js +57 -164
  16. package/dist/es/standards-sdk.es107.js.map +1 -1
  17. package/dist/es/standards-sdk.es108.js +5 -12
  18. package/dist/es/standards-sdk.es108.js.map +1 -1
  19. package/dist/es/standards-sdk.es109.js +15 -13
  20. package/dist/es/standards-sdk.es109.js.map +1 -1
  21. package/dist/es/standards-sdk.es110.js +6 -31
  22. package/dist/es/standards-sdk.es110.js.map +1 -1
  23. package/dist/es/standards-sdk.es111.js +44 -14
  24. package/dist/es/standards-sdk.es111.js.map +1 -1
  25. package/dist/es/standards-sdk.es112.js +2 -4
  26. package/dist/es/standards-sdk.es112.js.map +1 -1
  27. package/dist/es/standards-sdk.es113.js +136 -4
  28. package/dist/es/standards-sdk.es113.js.map +1 -1
  29. package/dist/es/standards-sdk.es114.js +172 -16
  30. package/dist/es/standards-sdk.es114.js.map +1 -1
  31. package/dist/es/standards-sdk.es115.js +13 -5
  32. package/dist/es/standards-sdk.es115.js.map +1 -1
  33. package/dist/es/standards-sdk.es116.js +13 -39
  34. package/dist/es/standards-sdk.es116.js.map +1 -1
  35. package/dist/es/standards-sdk.es117.js +31 -39
  36. package/dist/es/standards-sdk.es117.js.map +1 -1
  37. package/dist/es/standards-sdk.es118.js +15 -37
  38. package/dist/es/standards-sdk.es118.js.map +1 -1
  39. package/dist/es/standards-sdk.es119.js +4 -78
  40. package/dist/es/standards-sdk.es119.js.map +1 -1
  41. package/dist/es/standards-sdk.es120.js +4 -3
  42. package/dist/es/standards-sdk.es120.js.map +1 -1
  43. package/dist/es/standards-sdk.es121.js +16 -2
  44. package/dist/es/standards-sdk.es121.js.map +1 -1
  45. package/dist/es/standards-sdk.es122.js +5 -2
  46. package/dist/es/standards-sdk.es122.js.map +1 -1
  47. package/dist/es/standards-sdk.es123.js +39 -34
  48. package/dist/es/standards-sdk.es123.js.map +1 -1
  49. package/dist/es/standards-sdk.es124.js +37 -30
  50. package/dist/es/standards-sdk.es124.js.map +1 -1
  51. package/dist/es/standards-sdk.es125.js +37 -9
  52. package/dist/es/standards-sdk.es125.js.map +1 -1
  53. package/dist/es/standards-sdk.es126.js +74 -30
  54. package/dist/es/standards-sdk.es126.js.map +1 -1
  55. package/dist/es/standards-sdk.es127.js +6 -0
  56. package/dist/es/standards-sdk.es127.js.map +1 -0
  57. package/dist/es/standards-sdk.es128.js +5 -0
  58. package/dist/es/standards-sdk.es128.js.map +1 -0
  59. package/dist/es/standards-sdk.es129.js +5 -0
  60. package/dist/es/standards-sdk.es129.js.map +1 -0
  61. package/dist/es/standards-sdk.es13.js +2 -2
  62. package/dist/es/standards-sdk.es130.js +37 -0
  63. package/dist/es/standards-sdk.es130.js.map +1 -0
  64. package/dist/es/standards-sdk.es131.js +36 -0
  65. package/dist/es/standards-sdk.es131.js.map +1 -0
  66. package/dist/es/standards-sdk.es132.js +12 -0
  67. package/dist/es/standards-sdk.es132.js.map +1 -0
  68. package/dist/es/standards-sdk.es133.js +37 -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 +252 -713
  73. package/dist/es/standards-sdk.es19.js.map +1 -1
  74. package/dist/es/standards-sdk.es20.js +1 -1
  75. package/dist/es/standards-sdk.es21.js +2 -2
  76. package/dist/es/standards-sdk.es24.js +10 -10
  77. package/dist/es/standards-sdk.es26.js +7190 -3
  78. package/dist/es/standards-sdk.es26.js.map +1 -1
  79. package/dist/es/standards-sdk.es27.js +3 -4168
  80. package/dist/es/standards-sdk.es27.js.map +1 -1
  81. package/dist/es/standards-sdk.es28.js +8 -7189
  82. package/dist/es/standards-sdk.es28.js.map +1 -1
  83. package/dist/es/standards-sdk.es29.js +2 -9
  84. package/dist/es/standards-sdk.es29.js.map +1 -1
  85. package/dist/es/standards-sdk.es30.js +5 -2
  86. package/dist/es/standards-sdk.es30.js.map +1 -1
  87. package/dist/es/standards-sdk.es31.js +36 -5
  88. package/dist/es/standards-sdk.es31.js.map +1 -1
  89. package/dist/es/standards-sdk.es32.js +48 -36
  90. package/dist/es/standards-sdk.es32.js.map +1 -1
  91. package/dist/es/standards-sdk.es33.js +500 -47
  92. package/dist/es/standards-sdk.es33.js.map +1 -1
  93. package/dist/es/standards-sdk.es34.js +108 -9
  94. package/dist/es/standards-sdk.es34.js.map +1 -1
  95. package/dist/es/standards-sdk.es35.js +66 -2
  96. package/dist/es/standards-sdk.es35.js.map +1 -1
  97. package/dist/es/standards-sdk.es36.js +256 -22
  98. package/dist/es/standards-sdk.es36.js.map +1 -1
  99. package/dist/es/standards-sdk.es37.js +166 -167
  100. package/dist/es/standards-sdk.es37.js.map +1 -1
  101. package/dist/es/standards-sdk.es38.js +8 -88
  102. package/dist/es/standards-sdk.es38.js.map +1 -1
  103. package/dist/es/standards-sdk.es39.js +9 -194
  104. package/dist/es/standards-sdk.es39.js.map +1 -1
  105. package/dist/es/standards-sdk.es40.js +4127 -397
  106. package/dist/es/standards-sdk.es40.js.map +1 -1
  107. package/dist/es/standards-sdk.es41.js +7129 -18
  108. package/dist/es/standards-sdk.es41.js.map +1 -1
  109. package/dist/es/standards-sdk.es42.js +2 -139
  110. package/dist/es/standards-sdk.es42.js.map +1 -1
  111. package/dist/es/standards-sdk.es43.js +3 -18
  112. package/dist/es/standards-sdk.es43.js.map +1 -1
  113. package/dist/es/standards-sdk.es44.js +100 -28
  114. package/dist/es/standards-sdk.es44.js.map +1 -1
  115. package/dist/es/standards-sdk.es45.js +2 -29
  116. package/dist/es/standards-sdk.es45.js.map +1 -1
  117. package/dist/es/standards-sdk.es46.js +15 -20
  118. package/dist/es/standards-sdk.es46.js.map +1 -1
  119. package/dist/es/standards-sdk.es47.js +403 -38
  120. package/dist/es/standards-sdk.es47.js.map +1 -1
  121. package/dist/es/standards-sdk.es48.js +86 -13
  122. package/dist/es/standards-sdk.es48.js.map +1 -1
  123. package/dist/es/standards-sdk.es49.js +140 -53
  124. package/dist/es/standards-sdk.es49.js.map +1 -1
  125. package/dist/es/standards-sdk.es50.js +25 -1282
  126. package/dist/es/standards-sdk.es50.js.map +1 -1
  127. package/dist/es/standards-sdk.es51.js +138 -127
  128. package/dist/es/standards-sdk.es51.js.map +1 -1
  129. package/dist/es/standards-sdk.es52.js +130 -71
  130. package/dist/es/standards-sdk.es52.js.map +1 -1
  131. package/dist/es/standards-sdk.es53.js +190 -27
  132. package/dist/es/standards-sdk.es53.js.map +1 -1
  133. package/dist/es/standards-sdk.es54.js +437 -5
  134. package/dist/es/standards-sdk.es54.js.map +1 -1
  135. package/dist/es/standards-sdk.es55.js +21 -155
  136. package/dist/es/standards-sdk.es55.js.map +1 -1
  137. package/dist/es/standards-sdk.es56.js +123 -777
  138. package/dist/es/standards-sdk.es56.js.map +1 -1
  139. package/dist/es/standards-sdk.es57.js +13 -138
  140. package/dist/es/standards-sdk.es57.js.map +1 -1
  141. package/dist/es/standards-sdk.es58.js +28 -100
  142. package/dist/es/standards-sdk.es58.js.map +1 -1
  143. package/dist/es/standards-sdk.es59.js +29 -2
  144. package/dist/es/standards-sdk.es59.js.map +1 -1
  145. package/dist/es/standards-sdk.es60.js +20 -15
  146. package/dist/es/standards-sdk.es60.js.map +1 -1
  147. package/dist/es/standards-sdk.es61.js +38 -403
  148. package/dist/es/standards-sdk.es61.js.map +1 -1
  149. package/dist/es/standards-sdk.es62.js +16 -25
  150. package/dist/es/standards-sdk.es62.js.map +1 -1
  151. package/dist/es/standards-sdk.es63.js +59 -24
  152. package/dist/es/standards-sdk.es63.js.map +1 -1
  153. package/dist/es/standards-sdk.es64.js +1285 -34
  154. package/dist/es/standards-sdk.es64.js.map +1 -1
  155. package/dist/es/standards-sdk.es65.js +79 -16
  156. package/dist/es/standards-sdk.es65.js.map +1 -1
  157. package/dist/es/standards-sdk.es66.js +6 -2282
  158. package/dist/es/standards-sdk.es66.js.map +1 -1
  159. package/dist/es/standards-sdk.es67.js +19 -160
  160. package/dist/es/standards-sdk.es67.js.map +1 -1
  161. package/dist/es/standards-sdk.es68.js +793 -3
  162. package/dist/es/standards-sdk.es68.js.map +1 -1
  163. package/dist/es/standards-sdk.es69.js +173 -3
  164. package/dist/es/standards-sdk.es69.js.map +1 -1
  165. package/dist/es/standards-sdk.es7.js +3 -3
  166. package/dist/es/standards-sdk.es70.js +2282 -7136
  167. package/dist/es/standards-sdk.es70.js.map +1 -1
  168. package/dist/es/standards-sdk.es71.js +163 -9
  169. package/dist/es/standards-sdk.es71.js.map +1 -1
  170. package/dist/es/standards-sdk.es72.js +9 -10
  171. package/dist/es/standards-sdk.es72.js.map +1 -1
  172. package/dist/es/standards-sdk.es73.js +9 -16
  173. package/dist/es/standards-sdk.es73.js.map +1 -1
  174. package/dist/es/standards-sdk.es74.js +16 -4
  175. package/dist/es/standards-sdk.es74.js.map +1 -1
  176. package/dist/es/standards-sdk.es75.js +5 -8
  177. package/dist/es/standards-sdk.es75.js.map +1 -1
  178. package/dist/es/standards-sdk.es76.js +8 -418
  179. package/dist/es/standards-sdk.es76.js.map +1 -1
  180. package/dist/es/standards-sdk.es77.js +21 -2
  181. package/dist/es/standards-sdk.es77.js.map +1 -1
  182. package/dist/es/standards-sdk.es78.js +25 -118
  183. package/dist/es/standards-sdk.es78.js.map +1 -1
  184. package/dist/es/standards-sdk.es79.js +24 -362
  185. package/dist/es/standards-sdk.es79.js.map +1 -1
  186. package/dist/es/standards-sdk.es8.js +2 -2
  187. package/dist/es/standards-sdk.es80.js +37 -5
  188. package/dist/es/standards-sdk.es80.js.map +1 -1
  189. package/dist/es/standards-sdk.es81.js +400 -160
  190. package/dist/es/standards-sdk.es81.js.map +1 -1
  191. package/dist/es/standards-sdk.es82.js +2 -81
  192. package/dist/es/standards-sdk.es82.js.map +1 -1
  193. package/dist/es/standards-sdk.es83.js +108 -102
  194. package/dist/es/standards-sdk.es83.js.map +1 -1
  195. package/dist/es/standards-sdk.es84.js +41 -51
  196. package/dist/es/standards-sdk.es84.js.map +1 -1
  197. package/dist/es/standards-sdk.es85.js +364 -10
  198. package/dist/es/standards-sdk.es85.js.map +1 -1
  199. package/dist/es/standards-sdk.es86.js +5 -96
  200. package/dist/es/standards-sdk.es86.js.map +1 -1
  201. package/dist/es/standards-sdk.es87.js +178 -3
  202. package/dist/es/standards-sdk.es87.js.map +1 -1
  203. package/dist/es/standards-sdk.es88.js +81 -2
  204. package/dist/es/standards-sdk.es88.js.map +1 -1
  205. package/dist/es/standards-sdk.es89.js +104 -103
  206. package/dist/es/standards-sdk.es89.js.map +1 -1
  207. package/dist/es/standards-sdk.es9.js +1 -1
  208. package/dist/es/standards-sdk.es90.js +49 -71
  209. package/dist/es/standards-sdk.es90.js.map +1 -1
  210. package/dist/es/standards-sdk.es91.js +9 -5
  211. package/dist/es/standards-sdk.es91.js.map +1 -1
  212. package/dist/es/standards-sdk.es92.js +96 -4
  213. package/dist/es/standards-sdk.es92.js.map +1 -1
  214. package/dist/es/standards-sdk.es93.js +3 -220
  215. package/dist/es/standards-sdk.es93.js.map +1 -1
  216. package/dist/es/standards-sdk.es94.js +2 -58
  217. package/dist/es/standards-sdk.es94.js.map +1 -1
  218. package/dist/es/standards-sdk.es95.js +112 -68
  219. package/dist/es/standards-sdk.es95.js.map +1 -1
  220. package/dist/es/standards-sdk.es96.js +70 -28
  221. package/dist/es/standards-sdk.es96.js.map +1 -1
  222. package/dist/es/standards-sdk.es97.js +5 -62
  223. package/dist/es/standards-sdk.es97.js.map +1 -1
  224. package/dist/es/standards-sdk.es98.js +4 -49
  225. package/dist/es/standards-sdk.es98.js.map +1 -1
  226. package/dist/es/standards-sdk.es99.js +219 -8
  227. package/dist/es/standards-sdk.es99.js.map +1 -1
  228. package/dist/es/utils/parsers/crypto-parser.d.ts +14 -0
  229. package/dist/es/utils/parsers/crypto-parser.d.ts.map +1 -0
  230. package/dist/es/utils/parsers/file-parser.d.ts +9 -0
  231. package/dist/es/utils/parsers/file-parser.d.ts.map +1 -0
  232. package/dist/es/utils/parsers/hcs-parser.d.ts +9 -0
  233. package/dist/es/utils/parsers/hcs-parser.d.ts.map +1 -0
  234. package/dist/es/utils/parsers/hts-parser.d.ts +20 -0
  235. package/dist/es/utils/parsers/hts-parser.d.ts.map +1 -0
  236. package/dist/es/utils/parsers/parser-utils.d.ts +3 -0
  237. package/dist/es/utils/parsers/parser-utils.d.ts.map +1 -0
  238. package/dist/es/utils/parsers/scs-parser.d.ts +9 -0
  239. package/dist/es/utils/parsers/scs-parser.d.ts.map +1 -0
  240. package/dist/es/utils/parsers/util-parser.d.ts +6 -0
  241. package/dist/es/utils/parsers/util-parser.d.ts.map +1 -0
  242. package/dist/es/utils/transaction-parser-types.d.ts +317 -0
  243. package/dist/es/utils/transaction-parser-types.d.ts.map +1 -0
  244. package/dist/es/utils/transaction-parser.d.ts +1 -251
  245. package/dist/es/utils/transaction-parser.d.ts.map +1 -1
  246. package/dist/umd/standards-sdk.umd.js +11 -11
  247. package/dist/umd/standards-sdk.umd.js.map +1 -1
  248. package/dist/umd/utils/parsers/crypto-parser.d.ts +14 -0
  249. package/dist/umd/utils/parsers/crypto-parser.d.ts.map +1 -0
  250. package/dist/umd/utils/parsers/file-parser.d.ts +9 -0
  251. package/dist/umd/utils/parsers/file-parser.d.ts.map +1 -0
  252. package/dist/umd/utils/parsers/hcs-parser.d.ts +9 -0
  253. package/dist/umd/utils/parsers/hcs-parser.d.ts.map +1 -0
  254. package/dist/umd/utils/parsers/hts-parser.d.ts +20 -0
  255. package/dist/umd/utils/parsers/hts-parser.d.ts.map +1 -0
  256. package/dist/umd/utils/parsers/parser-utils.d.ts +3 -0
  257. package/dist/umd/utils/parsers/parser-utils.d.ts.map +1 -0
  258. package/dist/umd/utils/parsers/scs-parser.d.ts +9 -0
  259. package/dist/umd/utils/parsers/scs-parser.d.ts.map +1 -0
  260. package/dist/umd/utils/parsers/util-parser.d.ts +6 -0
  261. package/dist/umd/utils/parsers/util-parser.d.ts.map +1 -0
  262. package/dist/umd/utils/transaction-parser-types.d.ts +317 -0
  263. package/dist/umd/utils/transaction-parser-types.d.ts.map +1 -0
  264. package/dist/umd/utils/transaction-parser.d.ts +1 -251
  265. package/dist/umd/utils/transaction-parser.d.ts.map +1 -1
  266. package/package.json +1 -1
@@ -1,7 +1,13 @@
1
1
  import { proto } from "@hashgraph/proto";
2
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";
3
+ import { Hbar, Long, HbarUnit } from "@hashgraph/sdk";
4
+ import { HTSParser } from "./standards-sdk.es33.js";
5
+ import { HCSParser } from "./standards-sdk.es34.js";
6
+ import { FileParser } from "./standards-sdk.es35.js";
7
+ import { CryptoParser } from "./standards-sdk.es36.js";
8
+ import { SCSParser } from "./standards-sdk.es37.js";
9
+ import { UtilParser } from "./standards-sdk.es38.js";
10
+ import { decodeBase64 } from "./standards-sdk.es39.js";
5
11
  class TransactionParser {
6
12
  /**
7
13
  * Parse a base64 encoded transaction body and return structured data
@@ -30,56 +36,144 @@ 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
+ );
45
+ }
46
+ if (txBody.cryptoCreateAccount) {
47
+ result.cryptoCreateAccount = CryptoParser.parseCryptoCreateAccount(
48
+ txBody.cryptoCreateAccount
49
+ );
50
+ }
51
+ if (txBody.cryptoUpdateAccount) {
52
+ result.cryptoUpdateAccount = CryptoParser.parseCryptoUpdateAccount(
53
+ txBody.cryptoUpdateAccount
54
+ );
55
+ }
56
+ if (txBody.cryptoApproveAllowance) {
57
+ result.cryptoApproveAllowance = CryptoParser.parseCryptoApproveAllowance(
58
+ txBody.cryptoApproveAllowance
59
+ );
60
+ }
61
+ if (txBody.cryptoDeleteAllowance) {
62
+ result.cryptoDeleteAllowance = CryptoParser.parseCryptoDeleteAllowance(
63
+ txBody.cryptoDeleteAllowance
64
+ );
34
65
  }
35
66
  if (txBody.contractCall) {
36
- this.parseContractCall(txBody.contractCall, result);
67
+ result.contractCall = SCSParser.parseContractCall(txBody.contractCall);
68
+ }
69
+ if (txBody.contractCreateInstance) {
70
+ result.contractCreate = SCSParser.parseContractCreate(txBody.contractCreateInstance);
71
+ }
72
+ if (txBody.contractUpdateInstance) {
73
+ result.contractUpdate = SCSParser.parseContractUpdate(txBody.contractUpdateInstance);
74
+ }
75
+ if (txBody.contractDeleteInstance) {
76
+ result.contractDelete = SCSParser.parseContractDelete(txBody.contractDeleteInstance);
77
+ }
78
+ if (txBody.tokenCreation) {
79
+ result.tokenCreation = HTSParser.parseTokenCreate(txBody.tokenCreation);
37
80
  }
38
81
  if (txBody.tokenMint) {
39
- this.parseTokenMint(txBody.tokenMint, result);
82
+ result.tokenMint = HTSParser.parseTokenMint(txBody.tokenMint);
40
83
  }
41
84
  if (txBody.tokenBurn) {
42
- this.parseTokenBurn(txBody.tokenBurn, result);
85
+ result.tokenBurn = HTSParser.parseTokenBurn(txBody.tokenBurn);
43
86
  }
44
- if (txBody.tokenCreation) {
45
- this.parseTokenCreation(txBody.tokenCreation, result);
87
+ if (txBody.tokenUpdate) {
88
+ result.tokenUpdate = HTSParser.parseTokenUpdate(txBody.tokenUpdate);
46
89
  }
47
- if (txBody.consensusCreateTopic) {
48
- this.parseConsensusCreateTopic(txBody.consensusCreateTopic, result);
90
+ if (txBody.tokenFeeScheduleUpdate) {
91
+ result.tokenFeeScheduleUpdate = HTSParser.parseTokenFeeScheduleUpdate(
92
+ txBody.tokenFeeScheduleUpdate
93
+ );
49
94
  }
50
- if (txBody.consensusSubmitMessage) {
51
- this.parseConsensusSubmitMessage(txBody.consensusSubmitMessage, result);
95
+ if (txBody.tokenFreeze) {
96
+ result.tokenFreeze = HTSParser.parseTokenFreeze(txBody.tokenFreeze);
52
97
  }
53
- if (txBody.fileCreate) {
54
- this.parseFileCreate(txBody.fileCreate, result);
98
+ if (txBody.tokenUnfreeze) {
99
+ result.tokenUnfreeze = HTSParser.parseTokenUnfreeze(
100
+ txBody.tokenUnfreeze
101
+ );
55
102
  }
56
- if (txBody.fileAppend) {
57
- this.parseFileAppend(txBody.fileAppend, result);
103
+ if (txBody.tokenGrantKyc) {
104
+ result.tokenGrantKyc = HTSParser.parseTokenGrantKyc(
105
+ txBody.tokenGrantKyc
106
+ );
58
107
  }
59
- if (txBody.fileUpdate) {
60
- this.parseFileUpdate(txBody.fileUpdate, result);
108
+ if (txBody.tokenRevokeKyc) {
109
+ result.tokenRevokeKyc = HTSParser.parseTokenRevokeKyc(
110
+ txBody.tokenRevokeKyc
111
+ );
61
112
  }
62
- if (txBody.fileDelete) {
63
- this.parseFileDelete(txBody.fileDelete, result);
113
+ if (txBody.tokenPause) {
114
+ result.tokenPause = HTSParser.parseTokenPause(txBody.tokenPause);
115
+ }
116
+ if (txBody.tokenUnpause) {
117
+ result.tokenUnpause = HTSParser.parseTokenUnpause(txBody.tokenUnpause);
118
+ }
119
+ if (txBody.tokenWipe) {
120
+ result.tokenWipeAccount = HTSParser.parseTokenWipeAccount(
121
+ txBody.tokenWipe
122
+ );
123
+ }
124
+ if (txBody.tokenDeletion) {
125
+ result.tokenDelete = HTSParser.parseTokenDelete(txBody.tokenDeletion);
126
+ }
127
+ if (txBody.tokenAssociate) {
128
+ result.tokenAssociate = HTSParser.parseTokenAssociate(
129
+ txBody.tokenAssociate
130
+ );
131
+ }
132
+ if (txBody.tokenDissociate) {
133
+ result.tokenDissociate = HTSParser.parseTokenDissociate(
134
+ txBody.tokenDissociate
135
+ );
136
+ }
137
+ if (txBody.consensusCreateTopic) {
138
+ result.consensusCreateTopic = HCSParser.parseConsensusCreateTopic(
139
+ txBody.consensusCreateTopic
140
+ );
141
+ }
142
+ if (txBody.consensusSubmitMessage) {
143
+ result.consensusSubmitMessage = HCSParser.parseConsensusSubmitMessage(
144
+ txBody.consensusSubmitMessage
145
+ );
64
146
  }
65
147
  if (txBody.consensusUpdateTopic) {
66
- this.parseConsensusUpdateTopic(txBody.consensusUpdateTopic, result);
148
+ result.consensusUpdateTopic = HCSParser.parseConsensusUpdateTopic(
149
+ txBody.consensusUpdateTopic
150
+ );
67
151
  }
68
152
  if (txBody.consensusDeleteTopic) {
69
- this.parseConsensusDeleteTopic(txBody.consensusDeleteTopic, result);
153
+ result.consensusDeleteTopic = HCSParser.parseConsensusDeleteTopic(
154
+ txBody.consensusDeleteTopic
155
+ );
70
156
  }
71
- if (txBody.tokenUpdate) {
72
- this.parseTokenUpdate(txBody.tokenUpdate, result);
157
+ if (txBody.fileCreate) {
158
+ result.fileCreate = FileParser.parseFileCreate(txBody.fileCreate);
73
159
  }
74
- if (txBody.tokenFeeScheduleUpdate) {
75
- this.parseTokenFeeScheduleUpdate(txBody.tokenFeeScheduleUpdate, result);
160
+ if (txBody.fileAppend) {
161
+ result.fileAppend = FileParser.parseFileAppend(txBody.fileAppend);
162
+ }
163
+ if (txBody.fileUpdate) {
164
+ result.fileUpdate = FileParser.parseFileUpdate(txBody.fileUpdate);
165
+ }
166
+ if (txBody.fileDelete) {
167
+ result.fileDelete = FileParser.parseFileDelete(txBody.fileDelete);
76
168
  }
77
169
  if (txBody.utilPrng) {
78
- this.parseUtilPrng(txBody.utilPrng, result);
170
+ result.utilPrng = UtilParser.parseUtilPrng(txBody.utilPrng);
79
171
  }
80
172
  return result;
81
173
  } catch (error) {
82
- throw new Error(`Failed to parse transaction body: ${error}`);
174
+ throw new Error(
175
+ `Failed to parse transaction body: ${error instanceof Error ? error.message : String(error)}`
176
+ );
83
177
  }
84
178
  }
85
179
  /**
@@ -230,674 +324,12 @@ class TransactionParser {
230
324
  }
231
325
  return result;
232
326
  }
233
- /**
234
- * Parse crypto transfers from the transaction
235
- * @param cryptoTransfer - The crypto transfer transaction body
236
- * @param result - The parsed transaction
237
- */
238
- static parseCryptoTransfers(cryptoTransfer, result) {
239
- if (cryptoTransfer.transfers) {
240
- if (cryptoTransfer.transfers.accountAmounts) {
241
- result.transfers = cryptoTransfer.transfers.accountAmounts.map(
242
- (amount) => {
243
- const shard = amount.accountID?.shardNum ? Long.fromValue(amount.accountID.shardNum).toNumber() : 0;
244
- const realm = amount.accountID?.realmNum ? Long.fromValue(amount.accountID.realmNum).toNumber() : 0;
245
- const accountNum = amount.accountID?.accountNum ? Long.fromValue(amount.accountID.accountNum).toNumber() : 0;
246
- const accountId = AccountId.fromString(
247
- `${shard}.${realm}.${accountNum}`
248
- );
249
- const hbarValue = amount.amount ? Long.fromValue(amount.amount) : Long.ZERO;
250
- const hbarAmount = Hbar.fromTinybars(hbarValue);
251
- return {
252
- accountId: accountId.toString(),
253
- amount: hbarAmount.toString(HbarUnit.Hbar),
254
- isDecimal: true
255
- };
256
- }
257
- );
258
- }
259
- }
260
- if (cryptoTransfer.tokenTransfers) {
261
- for (const tokenTransfer of cryptoTransfer.tokenTransfers) {
262
- const shard = tokenTransfer.token?.shardNum ? Long.fromValue(tokenTransfer.token.shardNum).toNumber() : 0;
263
- const realm = tokenTransfer.token?.realmNum ? Long.fromValue(tokenTransfer.token.realmNum).toNumber() : 0;
264
- const tokenNum = tokenTransfer.token?.tokenNum ? Long.fromValue(tokenTransfer.token.tokenNum).toNumber() : 0;
265
- const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);
266
- if (tokenTransfer.transfers) {
267
- for (const transfer of tokenTransfer.transfers) {
268
- const accShard = transfer.accountID?.shardNum ? Long.fromValue(transfer.accountID.shardNum).toNumber() : 0;
269
- const accRealm = transfer.accountID?.realmNum ? Long.fromValue(transfer.accountID.realmNum).toNumber() : 0;
270
- const accNum = transfer.accountID?.accountNum ? Long.fromValue(transfer.accountID.accountNum).toNumber() : 0;
271
- const accountId = AccountId.fromString(
272
- `${accShard}.${accRealm}.${accNum}`
273
- );
274
- const tokenAmount = transfer.amount ? Long.fromValue(transfer.amount).toNumber() : 0;
275
- result.tokenTransfers.push({
276
- tokenId: tokenId.toString(),
277
- accountId: accountId.toString(),
278
- amount: tokenAmount
279
- });
280
- }
281
- }
282
- }
283
- }
284
- }
285
- /**
286
- * Parse contract call transaction data
287
- * @param contractCall - The contract call transaction body
288
- * @param result - The parsed transaction
289
- */
290
- static parseContractCall(contractCall, result) {
291
- if (contractCall) {
292
- const shard = contractCall.contractID?.shardNum ? Long.fromValue(contractCall.contractID.shardNum).toNumber() : 0;
293
- const realm = contractCall.contractID?.realmNum ? Long.fromValue(contractCall.contractID.realmNum).toNumber() : 0;
294
- const contractNum = contractCall.contractID?.contractNum ? Long.fromValue(contractCall.contractID.contractNum).toNumber() : 0;
295
- const contractId = ContractId.fromString(
296
- `${shard}.${realm}.${contractNum}`
297
- );
298
- const gasLimit = contractCall.gas ? Long.fromValue(contractCall.gas).toNumber() : 0;
299
- let amount = 0;
300
- if (contractCall.amount) {
301
- const hbar = Hbar.fromTinybars(Long.fromValue(contractCall.amount));
302
- amount = parseFloat(hbar.toString(HbarUnit.Hbar));
303
- }
304
- const functionParameters = contractCall.functionParameters ? Buffer$1.from(contractCall.functionParameters).toString("hex") : void 0;
305
- let functionName;
306
- if (functionParameters && functionParameters.length >= 8) {
307
- functionName = functionParameters.substring(0, 8);
308
- }
309
- result.contractCall = {
310
- contractId: contractId.toString(),
311
- gas: gasLimit,
312
- amount,
313
- functionParameters,
314
- functionName
315
- };
316
- }
317
- }
318
- /**
319
- * Parse token mint transaction data
320
- * @param tokenMint - The token mint transaction body
321
- * @param result - The parsed transaction
322
- */
323
- static parseTokenMint(tokenMint, result) {
324
- if (tokenMint) {
325
- const shard = tokenMint.token?.shardNum ? Long.fromValue(tokenMint.token.shardNum).toNumber() : 0;
326
- const realm = tokenMint.token?.realmNum ? Long.fromValue(tokenMint.token.realmNum).toNumber() : 0;
327
- const tokenNum = tokenMint.token?.tokenNum ? Long.fromValue(tokenMint.token.tokenNum).toNumber() : 0;
328
- const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);
329
- const amount = tokenMint.amount ? Long.fromValue(tokenMint.amount).toNumber() : 0;
330
- const metadata = [];
331
- if (tokenMint.metadata) {
332
- for (const meta of tokenMint.metadata) {
333
- if (meta) {
334
- metadata.push(Buffer$1.from(meta).toString("base64"));
335
- }
336
- }
337
- }
338
- result.tokenMint = {
339
- tokenId: tokenId.toString(),
340
- amount,
341
- metadata: metadata.length > 0 ? metadata : void 0
342
- };
343
- }
344
- }
345
- /**
346
- * Parse token burn transaction data
347
- * @param tokenBurn - The token burn transaction body
348
- * @param result - The parsed transaction
349
- */
350
- static parseTokenBurn(tokenBurn, result) {
351
- if (tokenBurn) {
352
- const shard = tokenBurn.token?.shardNum ? Long.fromValue(tokenBurn.token.shardNum).toNumber() : 0;
353
- const realm = tokenBurn.token?.realmNum ? Long.fromValue(tokenBurn.token.realmNum).toNumber() : 0;
354
- const tokenNum = tokenBurn.token?.tokenNum ? Long.fromValue(tokenBurn.token.tokenNum).toNumber() : 0;
355
- const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);
356
- const amount = tokenBurn.amount ? Long.fromValue(tokenBurn.amount).toNumber() : 0;
357
- const serialNumbers = [];
358
- if (tokenBurn.serialNumbers) {
359
- for (const serial of tokenBurn.serialNumbers) {
360
- if (serial) {
361
- serialNumbers.push(Long.fromValue(serial).toNumber());
362
- }
363
- }
364
- }
365
- result.tokenBurn = {
366
- tokenId: tokenId.toString(),
367
- amount,
368
- serialNumbers: serialNumbers.length > 0 ? serialNumbers : void 0
369
- };
370
- }
371
- }
372
- /**
373
- * Parse token creation transaction data
374
- * @param tokenCreation - The token creation transaction body
375
- * @param result - The parsed transaction
376
- */
377
- static parseTokenCreation(tokenCreationBody, result) {
378
- if (tokenCreationBody) {
379
- const creationData = {};
380
- if (tokenCreationBody.name) {
381
- creationData.tokenName = tokenCreationBody.name;
382
- }
383
- if (tokenCreationBody.symbol) {
384
- creationData.tokenSymbol = tokenCreationBody.symbol;
385
- }
386
- if (tokenCreationBody.treasury) {
387
- const t = tokenCreationBody.treasury;
388
- creationData.treasuryAccountId = new AccountId(
389
- t.shardNum ? Long.fromValue(t.shardNum).toNumber() : 0,
390
- t.realmNum ? Long.fromValue(t.realmNum).toNumber() : 0,
391
- t.accountNum ? Long.fromValue(t.accountNum).toNumber() : 0
392
- ).toString();
393
- }
394
- if (tokenCreationBody.initialSupply) {
395
- creationData.initialSupply = Long.fromValue(
396
- tokenCreationBody.initialSupply
397
- ).toString();
398
- }
399
- if (tokenCreationBody.decimals !== void 0 && tokenCreationBody.decimals !== null) {
400
- creationData.decimals = Long.fromValue(
401
- tokenCreationBody.decimals
402
- ).toNumber();
403
- }
404
- if (tokenCreationBody.maxSupply) {
405
- creationData.maxSupply = Long.fromValue(
406
- tokenCreationBody.maxSupply
407
- ).toString();
408
- }
409
- if (tokenCreationBody.memo) {
410
- creationData.memo = tokenCreationBody.memo;
411
- }
412
- if (tokenCreationBody.tokenType !== null && tokenCreationBody.tokenType !== void 0) {
413
- creationData.tokenType = proto.TokenType[tokenCreationBody.tokenType];
414
- }
415
- if (tokenCreationBody.supplyType !== null && tokenCreationBody.supplyType !== void 0) {
416
- creationData.supplyType = proto.TokenSupplyType[tokenCreationBody.supplyType];
417
- }
418
- creationData.adminKey = this.parseKey(tokenCreationBody.adminKey);
419
- creationData.kycKey = this.parseKey(tokenCreationBody.kycKey);
420
- creationData.freezeKey = this.parseKey(tokenCreationBody.freezeKey);
421
- creationData.wipeKey = this.parseKey(tokenCreationBody.wipeKey);
422
- creationData.supplyKey = this.parseKey(tokenCreationBody.supplyKey);
423
- creationData.feeScheduleKey = this.parseKey(
424
- tokenCreationBody.feeScheduleKey
425
- );
426
- creationData.pauseKey = this.parseKey(tokenCreationBody.pauseKey);
427
- if (tokenCreationBody.autoRenewAccount) {
428
- const ara = tokenCreationBody.autoRenewAccount;
429
- creationData.autoRenewAccount = new AccountId(
430
- ara.shardNum ? Long.fromValue(ara.shardNum).toNumber() : 0,
431
- ara.realmNum ? Long.fromValue(ara.realmNum).toNumber() : 0,
432
- ara.accountNum ? Long.fromValue(ara.accountNum).toNumber() : 0
433
- ).toString();
434
- }
435
- if (tokenCreationBody.autoRenewPeriod && tokenCreationBody.autoRenewPeriod.seconds) {
436
- creationData.autoRenewPeriod = Long.fromValue(
437
- tokenCreationBody.autoRenewPeriod.seconds
438
- ).toString();
439
- }
440
- if (tokenCreationBody.customFees && tokenCreationBody.customFees.length > 0) {
441
- creationData.customFees = tokenCreationBody.customFees.map((fee) => {
442
- const feeCollectorAccountId = fee.feeCollectorAccountId ? new AccountId(
443
- fee.feeCollectorAccountId.shardNum ?? 0,
444
- fee.feeCollectorAccountId.realmNum ?? 0,
445
- fee.feeCollectorAccountId.accountNum ?? 0
446
- ).toString() : "Not Set";
447
- const commonFeeData = {
448
- feeCollectorAccountId,
449
- allCollectorsAreExempt: fee.allCollectorsAreExempt || false
450
- };
451
- if (fee.fixedFee) {
452
- return {
453
- ...commonFeeData,
454
- feeType: "FIXED_FEE",
455
- fixedFee: {
456
- amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),
457
- denominatingTokenId: fee.fixedFee.denominatingTokenId ? new TokenId(
458
- fee.fixedFee.denominatingTokenId.shardNum ?? 0,
459
- fee.fixedFee.denominatingTokenId.realmNum ?? 0,
460
- fee.fixedFee.denominatingTokenId.tokenNum ?? 0
461
- ).toString() : void 0
462
- }
463
- };
464
- } else if (fee.fractionalFee) {
465
- return {
466
- ...commonFeeData,
467
- feeType: "FRACTIONAL_FEE",
468
- fractionalFee: {
469
- numerator: Long.fromValue(
470
- fee.fractionalFee.fractionalAmount?.numerator || 0
471
- ).toString(),
472
- denominator: Long.fromValue(
473
- fee.fractionalFee.fractionalAmount?.denominator || 1
474
- ).toString(),
475
- minimumAmount: Long.fromValue(
476
- fee.fractionalFee.minimumAmount || 0
477
- ).toString(),
478
- maximumAmount: Long.fromValue(
479
- fee.fractionalFee.maximumAmount || 0
480
- ).toString(),
481
- netOfTransfers: fee.fractionalFee.netOfTransfers || false
482
- }
483
- };
484
- } else if (fee.royaltyFee) {
485
- let fallbackFeeData = void 0;
486
- if (fee.royaltyFee.fallbackFee) {
487
- fallbackFeeData = {
488
- amount: Long.fromValue(
489
- fee.royaltyFee.fallbackFee.amount || 0
490
- ).toString(),
491
- denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId ? new TokenId(
492
- fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ?? 0,
493
- fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ?? 0,
494
- fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ?? 0
495
- ).toString() : void 0
496
- };
497
- }
498
- return {
499
- ...commonFeeData,
500
- feeType: "ROYALTY_FEE",
501
- royaltyFee: {
502
- numerator: Long.fromValue(
503
- fee.royaltyFee.exchangeValueFraction?.numerator || 0
504
- ).toString(),
505
- denominator: Long.fromValue(
506
- fee.royaltyFee.exchangeValueFraction?.denominator || 1
507
- ).toString(),
508
- fallbackFee: fallbackFeeData
509
- }
510
- };
511
- }
512
- return {
513
- ...commonFeeData,
514
- feeType: "FIXED_FEE",
515
- fixedFee: { amount: "0" }
516
- };
517
- });
518
- }
519
- result.tokenCreation = creationData;
520
- }
521
- }
522
- /**
523
- * Parse consensus create topic transaction data
524
- * @param createTopicBody - The consensus create topic transaction body
525
- * @param result - The parsed transaction
526
- */
527
- static parseConsensusCreateTopic(createTopicBody, result) {
528
- if (createTopicBody) {
529
- const topicData = {};
530
- if (createTopicBody.memo) {
531
- topicData.memo = createTopicBody.memo;
532
- }
533
- topicData.adminKey = this.parseKey(createTopicBody.adminKey);
534
- topicData.submitKey = this.parseKey(createTopicBody.submitKey);
535
- if (createTopicBody.autoRenewPeriod) {
536
- topicData.autoRenewPeriod = Long.fromValue(
537
- createTopicBody.autoRenewPeriod.seconds
538
- ).toString();
539
- }
540
- if (createTopicBody.autoRenewAccount) {
541
- topicData.autoRenewAccountId = new AccountId(
542
- createTopicBody.autoRenewAccount.shardNum ?? 0,
543
- createTopicBody.autoRenewAccount.realmNum ?? 0,
544
- createTopicBody.autoRenewAccount.accountNum ?? 0
545
- ).toString();
546
- }
547
- result.consensusCreateTopic = topicData;
548
- }
549
- }
550
- /**
551
- * Parse consensus submit message transaction data
552
- * @param submitMessageBody - The consensus submit message transaction body
553
- * @param result - The parsed transaction
554
- */
555
- static parseConsensusSubmitMessage(submitMessageBody, result) {
556
- if (submitMessageBody) {
557
- const messageData = {};
558
- if (submitMessageBody.topicID) {
559
- const tid = submitMessageBody.topicID;
560
- 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}`;
561
- }
562
- if (submitMessageBody.message && submitMessageBody.message.length > 0) {
563
- const messageBuffer = Buffer$1.from(submitMessageBody.message);
564
- const utf8String = messageBuffer.toString("utf8");
565
- if (/[- -]/.test(utf8String) || utf8String.includes("�")) {
566
- messageData.message = messageBuffer.toString("base64");
567
- messageData.messageEncoding = "base64";
568
- } else {
569
- messageData.message = utf8String;
570
- messageData.messageEncoding = "utf8";
571
- }
572
- }
573
- if (submitMessageBody.chunkInfo) {
574
- if (submitMessageBody.chunkInfo.initialTransactionID) {
575
- const txId = submitMessageBody.chunkInfo.initialTransactionID.accountID;
576
- const taValidStart = submitMessageBody.chunkInfo.initialTransactionID.transactionValidStart;
577
- if (txId && taValidStart) {
578
- 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}`;
579
- }
580
- }
581
- if (submitMessageBody.chunkInfo.number !== void 0 && submitMessageBody.chunkInfo.number !== null) {
582
- messageData.chunkInfoNumber = submitMessageBody.chunkInfo.number;
583
- }
584
- if (submitMessageBody.chunkInfo.total !== void 0 && submitMessageBody.chunkInfo.total !== null) {
585
- messageData.chunkInfoTotal = submitMessageBody.chunkInfo.total;
586
- }
587
- }
588
- result.consensusSubmitMessage = messageData;
589
- }
590
- }
591
- static parseFileCreate(fileCreateBody, result) {
592
- if (fileCreateBody) {
593
- const data = {};
594
- if (fileCreateBody.expirationTime) {
595
- data.expirationTime = `${Long.fromValue(
596
- fileCreateBody.expirationTime.seconds
597
- ).toString()}.${fileCreateBody.expirationTime.nanos}`;
598
- }
599
- if (fileCreateBody.keys) {
600
- data.keys = this.parseKey({ keyList: fileCreateBody.keys });
601
- }
602
- if (fileCreateBody.contents) {
603
- data.contents = Buffer$1.from(fileCreateBody.contents).toString("base64");
604
- }
605
- if (fileCreateBody.memo) {
606
- data.memo = fileCreateBody.memo;
607
- }
608
- result.fileCreate = data;
609
- }
610
- }
611
- static parseFileAppend(fileAppendBody, result) {
612
- if (fileAppendBody) {
613
- const data = {};
614
- if (fileAppendBody.fileID) {
615
- data.fileId = `${fileAppendBody.fileID.shardNum}.${fileAppendBody.fileID.realmNum}.${fileAppendBody.fileID.fileNum}`;
616
- }
617
- if (fileAppendBody.contents) {
618
- data.contents = Buffer$1.from(fileAppendBody.contents).toString("base64");
619
- }
620
- result.fileAppend = data;
621
- }
622
- }
623
- static parseFileUpdate(fileUpdateBody, result) {
624
- if (fileUpdateBody) {
625
- const data = {};
626
- if (fileUpdateBody.fileID) {
627
- data.fileId = `${fileUpdateBody.fileID.shardNum}.${fileUpdateBody.fileID.realmNum}.${fileUpdateBody.fileID.fileNum}`;
628
- }
629
- if (fileUpdateBody.expirationTime) {
630
- data.expirationTime = `${Long.fromValue(
631
- fileUpdateBody.expirationTime.seconds
632
- ).toString()}.${fileUpdateBody.expirationTime.nanos}`;
633
- }
634
- if (fileUpdateBody.keys) {
635
- data.keys = this.parseKey({ keyList: fileUpdateBody.keys });
636
- }
637
- if (fileUpdateBody.contents) {
638
- data.contents = Buffer$1.from(fileUpdateBody.contents).toString("base64");
639
- }
640
- if (fileUpdateBody.memo && fileUpdateBody.memo.value !== void 0) {
641
- data.memo = fileUpdateBody.memo.value;
642
- }
643
- result.fileUpdate = data;
644
- }
645
- }
646
- static parseFileDelete(fileDeleteBody, result) {
647
- if (fileDeleteBody) {
648
- const data = {};
649
- if (fileDeleteBody.fileID) {
650
- data.fileId = `${fileDeleteBody.fileID.shardNum}.${fileDeleteBody.fileID.realmNum}.${fileDeleteBody.fileID.fileNum}`;
651
- }
652
- result.fileDelete = data;
653
- }
654
- }
655
- static parseConsensusUpdateTopic(body, result) {
656
- if (body) {
657
- const data = {};
658
- if (body.topicID) {
659
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;
660
- }
661
- if (body.memo?.value !== void 0) {
662
- data.memo = body.memo.value;
663
- }
664
- if (body.adminKey === null) {
665
- data.clearAdminKey = true;
666
- data.adminKey = void 0;
667
- } else if (body.adminKey) {
668
- data.adminKey = this.parseKey(body.adminKey);
669
- } else {
670
- data.adminKey = void 0;
671
- }
672
- if (body.submitKey === null) {
673
- data.clearSubmitKey = true;
674
- data.submitKey = void 0;
675
- } else if (body.submitKey) {
676
- data.submitKey = this.parseKey(body.submitKey);
677
- } else {
678
- data.submitKey = void 0;
679
- }
680
- if (body.autoRenewPeriod) {
681
- data.autoRenewPeriod = Long.fromValue(
682
- body.autoRenewPeriod.seconds
683
- ).toString();
684
- }
685
- if (body.autoRenewAccount) {
686
- data.autoRenewAccountId = new AccountId(
687
- body.autoRenewAccount.shardNum ?? 0,
688
- body.autoRenewAccount.realmNum ?? 0,
689
- body.autoRenewAccount.accountNum ?? 0
690
- ).toString();
691
- }
692
- result.consensusUpdateTopic = data;
693
- }
694
- }
695
- static parseConsensusDeleteTopic(body, result) {
696
- if (body) {
697
- const data = {};
698
- if (body.topicID) {
699
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;
700
- }
701
- result.consensusDeleteTopic = data;
702
- }
703
- }
704
- static parseTokenUpdate(body, result) {
705
- if (body) {
706
- const data = {};
707
- if (body.token) {
708
- data.tokenId = new TokenId(
709
- body.token.shardNum ?? 0,
710
- body.token.realmNum ?? 0,
711
- body.token.tokenNum ?? 0
712
- ).toString();
713
- }
714
- if (body.name) {
715
- data.name = body.name;
716
- }
717
- if (body.symbol) {
718
- data.symbol = body.symbol;
719
- }
720
- if (body.treasury) {
721
- data.treasuryAccountId = new AccountId(
722
- body.treasury.shardNum ?? 0,
723
- body.treasury.realmNum ?? 0,
724
- body.treasury.accountNum ?? 0
725
- ).toString();
726
- }
727
- data.adminKey = this.parseKey(body.adminKey);
728
- data.kycKey = this.parseKey(body.kycKey);
729
- data.freezeKey = this.parseKey(body.freezeKey);
730
- data.wipeKey = this.parseKey(body.wipeKey);
731
- data.supplyKey = this.parseKey(body.supplyKey);
732
- data.feeScheduleKey = this.parseKey(body.feeScheduleKey);
733
- data.pauseKey = this.parseKey(body.pauseKey);
734
- if (body.autoRenewAccount) {
735
- data.autoRenewAccountId = new AccountId(
736
- body.autoRenewAccount.shardNum ?? 0,
737
- body.autoRenewAccount.realmNum ?? 0,
738
- body.autoRenewAccount.accountNum ?? 0
739
- ).toString();
740
- }
741
- if (body.autoRenewPeriod) {
742
- data.autoRenewPeriod = Long.fromValue(
743
- body.autoRenewPeriod.seconds
744
- ).toString();
745
- }
746
- if (body.memo?.value !== void 0) {
747
- data.memo = body.memo.value;
748
- }
749
- if (body.expiry) {
750
- data.expiry = `${Long.fromValue(body.expiry.seconds).toString()}.${body.expiry.nanos}`;
751
- }
752
- result.tokenUpdate = data;
753
- }
754
- }
755
- static parseTokenFeeScheduleUpdate(body, result) {
756
- if (body) {
757
- const data = {};
758
- if (body.tokenId)
759
- data.tokenId = new TokenId(
760
- body.tokenId.shardNum ?? 0,
761
- body.tokenId.realmNum ?? 0,
762
- body.tokenId.tokenNum ?? 0
763
- ).toString();
764
- if (body.customFees && body.customFees.length > 0) {
765
- data.customFees = body.customFees.map((fee) => {
766
- const feeCollectorAccountId = fee.feeCollectorAccountId ? new AccountId(
767
- fee.feeCollectorAccountId.shardNum ?? 0,
768
- fee.feeCollectorAccountId.realmNum ?? 0,
769
- fee.feeCollectorAccountId.accountNum ?? 0
770
- ).toString() : "Not Set";
771
- const commonFeeData = {
772
- feeCollectorAccountId,
773
- allCollectorsAreExempt: fee.allCollectorsAreExempt || false
774
- };
775
- if (fee.fixedFee) {
776
- return {
777
- ...commonFeeData,
778
- feeType: "FIXED_FEE",
779
- fixedFee: {
780
- amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),
781
- denominatingTokenId: fee.fixedFee.denominatingTokenId ? new TokenId(
782
- fee.fixedFee.denominatingTokenId.shardNum ?? 0,
783
- fee.fixedFee.denominatingTokenId.realmNum ?? 0,
784
- fee.fixedFee.denominatingTokenId.tokenNum ?? 0
785
- ).toString() : void 0
786
- }
787
- };
788
- } else if (fee.fractionalFee) {
789
- return {
790
- ...commonFeeData,
791
- feeType: "FRACTIONAL_FEE",
792
- fractionalFee: {
793
- numerator: Long.fromValue(
794
- fee.fractionalFee.fractionalAmount?.numerator || 0
795
- ).toString(),
796
- denominator: Long.fromValue(
797
- fee.fractionalFee.fractionalAmount?.denominator || 1
798
- ).toString(),
799
- minimumAmount: Long.fromValue(
800
- fee.fractionalFee.minimumAmount || 0
801
- ).toString(),
802
- maximumAmount: Long.fromValue(
803
- fee.fractionalFee.maximumAmount || 0
804
- ).toString(),
805
- netOfTransfers: fee.fractionalFee.netOfTransfers || false
806
- }
807
- };
808
- } else if (fee.royaltyFee) {
809
- let fallbackFeeData = void 0;
810
- if (fee.royaltyFee.fallbackFee) {
811
- fallbackFeeData = {
812
- amount: Long.fromValue(
813
- fee.royaltyFee.fallbackFee.amount || 0
814
- ).toString(),
815
- denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId ? new TokenId(
816
- fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ?? 0,
817
- fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ?? 0,
818
- fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ?? 0
819
- ).toString() : void 0
820
- };
821
- }
822
- return {
823
- ...commonFeeData,
824
- feeType: "ROYALTY_FEE",
825
- royaltyFee: {
826
- numerator: Long.fromValue(
827
- fee.royaltyFee.exchangeValueFraction?.numerator || 0
828
- ).toString(),
829
- denominator: Long.fromValue(
830
- fee.royaltyFee.exchangeValueFraction?.denominator || 1
831
- ).toString(),
832
- fallbackFee: fallbackFeeData
833
- }
834
- };
835
- }
836
- return {
837
- ...commonFeeData,
838
- feeType: "FIXED_FEE",
839
- fixedFee: { amount: "0" }
840
- };
841
- });
842
- }
843
- result.tokenFeeScheduleUpdate = data;
844
- }
845
- }
846
- static parseUtilPrng(body, result) {
847
- if (body) {
848
- const data = {};
849
- if (body.range && body.range !== 0) {
850
- data.range = body.range;
851
- }
852
- result.utilPrng = data;
853
- }
854
- }
855
- static parseKey(key) {
856
- if (!key) {
857
- return void 0;
858
- }
859
- if (key.contractID) {
860
- return `ContractID: ${new ContractId(
861
- key.contractID.shardNum ?? 0,
862
- key.contractID.realmNum ?? 0,
863
- key.contractID.contractNum ?? 0
864
- ).toString()}`;
865
- }
866
- if (key.ed25519) {
867
- return `ED25519: ${Buffer$1.from(key.ed25519).toString("hex")}`;
868
- }
869
- if (key.ECDSASecp256k1) {
870
- return `ECDSA_secp256k1: ${Buffer$1.from(key.ECDSASecp256k1).toString(
871
- "hex"
872
- )}`;
873
- }
874
- if (key.keyList && key.keyList.keys && key.keyList.keys.length > 0) {
875
- const keys = key.keyList.keys.map((k) => this.parseKey(k)).filter(Boolean);
876
- return `KeyList (${keys.length} keys): [${keys.join(", ")}]`;
877
- }
878
- if (key.thresholdKey && key.thresholdKey.keys && key.thresholdKey.keys.keys && key.thresholdKey.keys.keys.length > 0) {
879
- const keys = key.thresholdKey.keys.keys.map((k) => this.parseKey(k)).filter(Boolean);
880
- return `ThresholdKey (${key.thresholdKey.threshold} of ${keys.length}): [${keys.join(", ")}]`;
881
- }
882
- if (key.delegatableContractId) {
883
- return `DelegatableContractID: ${new ContractId(
884
- key.delegatableContractId.shardNum ?? 0,
885
- key.delegatableContractId.realmNum ?? 0,
886
- key.delegatableContractId.contractNum ?? 0
887
- ).toString()}`;
888
- }
889
- if (Object.keys(key).length === 0) {
890
- return "Empty Key Structure";
891
- }
892
- return "Unknown or Unset Key Type";
893
- }
894
327
  /**
895
328
  * Get a human-readable summary of the transaction
896
329
  * @param parsedTx - The parsed transaction
897
330
  * @returns The human-readable summary of the transaction
898
331
  */
899
332
  static getTransactionSummary(parsedTx) {
900
- let summary;
901
333
  if (parsedTx.type === "cryptoTransfer") {
902
334
  const senders = [];
903
335
  const receivers = [];
@@ -915,11 +347,11 @@ class TransactionParser {
915
347
  }
916
348
  }
917
349
  if (senders.length > 0 && receivers.length > 0) {
918
- summary = `Transfer of HBAR from ${senders.join(
350
+ return `Transfer of HBAR from ${senders.join(", ")} to ${receivers.join(
919
351
  ", "
920
- )} to ${receivers.join(", ")}`;
352
+ )}`;
921
353
  } else {
922
- summary = parsedTx.humanReadableType;
354
+ return parsedTx.humanReadableType;
923
355
  }
924
356
  } else if (parsedTx.contractCall) {
925
357
  let contractCallSummary = `Contract call to ${parsedTx.contractCall.contractId} with ${parsedTx.contractCall.gas} gas`;
@@ -929,19 +361,20 @@ class TransactionParser {
929
361
  if (parsedTx.contractCall.functionName) {
930
362
  contractCallSummary += ` calling function ${parsedTx.contractCall.functionName}`;
931
363
  }
932
- summary = contractCallSummary;
364
+ return contractCallSummary;
933
365
  } else if (parsedTx.tokenMint) {
934
- summary = `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;
366
+ return `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;
935
367
  } else if (parsedTx.tokenBurn) {
936
- summary = `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;
368
+ return `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;
937
369
  } else if (parsedTx.tokenCreation) {
938
- summary = `Create token ${parsedTx.tokenCreation.tokenName || "(No Name)"} (${parsedTx.tokenCreation.tokenSymbol || "(No Symbol)"})`;
370
+ let summary = `Create token ${parsedTx.tokenCreation.tokenName || "(No Name)"} (${parsedTx.tokenCreation.tokenSymbol || "(No Symbol)"})`;
939
371
  if (parsedTx.tokenCreation.initialSupply) {
940
372
  summary += ` with initial supply ${parsedTx.tokenCreation.initialSupply}`;
941
373
  }
942
- if (parsedTx.tokenCreation.customFees && parsedTx.tokenCreation.customFees.length > 0) {
374
+ if (parsedTx.tokenCreation.customFees?.length) {
943
375
  summary += ` including ${parsedTx.tokenCreation.customFees.length} custom fee(s)`;
944
376
  }
377
+ return summary;
945
378
  } else if (parsedTx.tokenTransfers.length > 0) {
946
379
  const tokenGroups = {};
947
380
  for (const transfer of parsedTx.tokenTransfers) {
@@ -975,20 +408,21 @@ class TransactionParser {
975
408
  }
976
409
  }
977
410
  if (tokenSummaries.length > 0) {
978
- summary = tokenSummaries.join("; ");
411
+ return tokenSummaries.join("; ");
979
412
  } else {
980
- summary = parsedTx.humanReadableType;
413
+ return parsedTx.humanReadableType;
981
414
  }
982
415
  } else if (parsedTx.consensusCreateTopic) {
983
- summary = `Create new topic`;
416
+ let summary = `Create new topic`;
984
417
  if (parsedTx.consensusCreateTopic.memo) {
985
418
  summary += ` with memo "${parsedTx.consensusCreateTopic.memo}"`;
986
419
  }
987
420
  if (parsedTx.consensusCreateTopic.autoRenewAccountId) {
988
421
  summary += `, auto-renew by ${parsedTx.consensusCreateTopic.autoRenewAccountId}`;
989
422
  }
423
+ return summary;
990
424
  } else if (parsedTx.consensusSubmitMessage) {
991
- summary = `Submit message`;
425
+ let summary = `Submit message`;
992
426
  if (parsedTx.consensusSubmitMessage.topicId) {
993
427
  summary += ` to topic ${parsedTx.consensusSubmitMessage.topicId}`;
994
428
  }
@@ -1003,12 +437,16 @@ class TransactionParser {
1003
437
  if (parsedTx.consensusSubmitMessage.chunkInfoNumber && parsedTx.consensusSubmitMessage.chunkInfoTotal) {
1004
438
  summary += ` (chunk ${parsedTx.consensusSubmitMessage.chunkInfoNumber}/${parsedTx.consensusSubmitMessage.chunkInfoTotal})`;
1005
439
  }
440
+ return summary;
1006
441
  } else if (parsedTx.fileCreate) {
1007
- let summary2 = "Create File";
1008
- if (parsedTx.fileCreate.memo)
1009
- summary2 += ` with memo "${parsedTx.fileCreate.memo}"`;
1010
- if (parsedTx.fileCreate.contents) summary2 += ` (includes content)`;
1011
- return summary2;
442
+ let summary = "Create File";
443
+ if (parsedTx.fileCreate.memo) {
444
+ summary += ` with memo "${parsedTx.fileCreate.memo}"`;
445
+ }
446
+ if (parsedTx.fileCreate.contents) {
447
+ summary += ` (includes content)`;
448
+ }
449
+ return summary;
1012
450
  } else if (parsedTx.fileAppend) {
1013
451
  return `Append to File ${parsedTx.fileAppend.fileId || "(Unknown ID)"}`;
1014
452
  } else if (parsedTx.fileUpdate) {
@@ -1024,15 +462,116 @@ class TransactionParser {
1024
462
  } else if (parsedTx.tokenFeeScheduleUpdate) {
1025
463
  return `Update Fee Schedule for Token ${parsedTx.tokenFeeScheduleUpdate.tokenId || "(Unknown ID)"}`;
1026
464
  } else if (parsedTx.utilPrng) {
1027
- let summary2 = "Generate Random Number";
465
+ let summary = "Generate Random Number";
1028
466
  if (parsedTx.utilPrng.range && parsedTx.utilPrng.range > 0) {
1029
- summary2 += ` (range up to ${parsedTx.utilPrng.range - 1})`;
467
+ summary += ` (range up to ${parsedTx.utilPrng.range - 1})`;
468
+ }
469
+ return summary;
470
+ } else if (parsedTx.tokenFreeze) {
471
+ return `Freeze Token ${parsedTx.tokenFreeze.tokenId} for Account ${parsedTx.tokenFreeze.accountId}`;
472
+ } else if (parsedTx.tokenUnfreeze) {
473
+ return `Unfreeze Token ${parsedTx.tokenUnfreeze.tokenId} for Account ${parsedTx.tokenUnfreeze.accountId}`;
474
+ } else if (parsedTx.tokenGrantKyc) {
475
+ return `Grant KYC for Token ${parsedTx.tokenGrantKyc.tokenId} to Account ${parsedTx.tokenGrantKyc.accountId}`;
476
+ } else if (parsedTx.tokenRevokeKyc) {
477
+ return `Revoke KYC for Token ${parsedTx.tokenRevokeKyc.tokenId} from Account ${parsedTx.tokenRevokeKyc.accountId}`;
478
+ } else if (parsedTx.tokenPause) {
479
+ return `Pause Token ${parsedTx.tokenPause.tokenId}`;
480
+ } else if (parsedTx.tokenUnpause) {
481
+ return `Unpause Token ${parsedTx.tokenUnpause.tokenId}`;
482
+ } else if (parsedTx.tokenWipeAccount) {
483
+ let summary = `Wipe Token ${parsedTx.tokenWipeAccount.tokenId} from Account ${parsedTx.tokenWipeAccount.accountId}`;
484
+ if (parsedTx.tokenWipeAccount.serialNumbers?.length) {
485
+ summary += ` (Serials: ${parsedTx.tokenWipeAccount.serialNumbers.join(
486
+ ", "
487
+ )})`;
488
+ }
489
+ if (parsedTx.tokenWipeAccount.amount) {
490
+ summary += ` (Amount: ${parsedTx.tokenWipeAccount.amount})`;
491
+ }
492
+ return summary;
493
+ } else if (parsedTx.tokenDelete) {
494
+ return `Delete Token ${parsedTx.tokenDelete.tokenId}`;
495
+ } else if (parsedTx.tokenAssociate) {
496
+ return `Associate Account ${parsedTx.tokenAssociate.accountId} with Tokens: ${parsedTx.tokenAssociate.tokenIds?.join(", ")}`;
497
+ } else if (parsedTx.tokenDissociate) {
498
+ return `Dissociate Account ${parsedTx.tokenDissociate.accountId} from Tokens: ${parsedTx.tokenDissociate.tokenIds?.join(", ")}`;
499
+ } else if (parsedTx.cryptoDelete) {
500
+ return `Delete Account ${parsedTx.cryptoDelete.deleteAccountId}`;
501
+ }
502
+ if (parsedTx.cryptoCreateAccount) {
503
+ let summary = "Create Account";
504
+ if (parsedTx.cryptoCreateAccount.initialBalance && parsedTx.cryptoCreateAccount.initialBalance !== "0") {
505
+ summary += ` with balance ${parsedTx.cryptoCreateAccount.initialBalance}`;
1030
506
  }
1031
- return summary2;
1032
- } else {
1033
- summary = parsedTx.humanReadableType;
507
+ if (parsedTx.cryptoCreateAccount.alias) {
508
+ summary += ` (Alias: ${parsedTx.cryptoCreateAccount.alias})`;
509
+ }
510
+ return summary;
511
+ }
512
+ if (parsedTx.cryptoUpdateAccount) {
513
+ return `Update Account ${parsedTx.cryptoUpdateAccount.accountIdToUpdate || "(Unknown ID)"}`;
514
+ }
515
+ if (parsedTx.cryptoApproveAllowance) {
516
+ let count = (parsedTx.cryptoApproveAllowance.hbarAllowances?.length || 0) + (parsedTx.cryptoApproveAllowance.tokenAllowances?.length || 0) + (parsedTx.cryptoApproveAllowance.nftAllowances?.length || 0);
517
+ return `Approve ${count} Crypto Allowance(s)`;
518
+ }
519
+ if (parsedTx.cryptoDeleteAllowance) {
520
+ return `Delete ${parsedTx.cryptoDeleteAllowance.nftAllowancesToRemove?.length || 0} NFT Crypto Allowance(s)`;
521
+ }
522
+ if (parsedTx.contractCreate) {
523
+ let summary = "Create Contract";
524
+ if (parsedTx.contractCreate.memo) {
525
+ summary += ` (Memo: ${parsedTx.contractCreate.memo})`;
526
+ }
527
+ return summary;
528
+ }
529
+ if (parsedTx.contractUpdate) {
530
+ return `Update Contract ${parsedTx.contractUpdate.contractIdToUpdate || "(Unknown ID)"}`;
531
+ }
532
+ if (parsedTx.contractDelete) {
533
+ let summary = `Delete Contract ${parsedTx.contractDelete.contractIdToDelete || "(Unknown ID)"}`;
534
+ if (parsedTx.contractDelete.transferAccountId) {
535
+ summary += ` (Transfer to Account: ${parsedTx.contractDelete.transferAccountId})`;
536
+ } else if (parsedTx.contractDelete.transferContractId) {
537
+ summary += ` (Transfer to Contract: ${parsedTx.contractDelete.transferContractId})`;
538
+ }
539
+ return summary;
540
+ }
541
+ if (parsedTx.humanReadableType && parsedTx.humanReadableType !== "Unknown Transaction") {
542
+ return parsedTx.humanReadableType;
543
+ }
544
+ if (parsedTx.tokenTransfers.length > 0) {
545
+ const tokenGroups = {};
546
+ for (const transfer of parsedTx.tokenTransfers) {
547
+ if (!tokenGroups[transfer.tokenId]) {
548
+ tokenGroups[transfer.tokenId] = [];
549
+ }
550
+ tokenGroups[transfer.tokenId].push(transfer);
551
+ }
552
+ const tokenSummaries = [];
553
+ for (const [tokenId, transfers] of Object.entries(tokenGroups)) {
554
+ const tokenSenders = transfers.filter((t) => t.amount < 0).map((t) => `${t.accountId} (${Math.abs(t.amount)})`);
555
+ const tokenReceivers = transfers.filter((t) => t.amount > 0).map((t) => `${t.accountId} (${t.amount})`);
556
+ if (tokenSenders.length > 0 && tokenReceivers.length > 0) {
557
+ tokenSummaries.push(
558
+ `Transfer of token ${tokenId} from ${tokenSenders.join(
559
+ ", "
560
+ )} to ${tokenReceivers.join(", ")}`
561
+ );
562
+ } else if (tokenReceivers.length > 0) {
563
+ tokenSummaries.push(
564
+ `Token ${tokenId} received by ${tokenReceivers.join(", ")}`
565
+ );
566
+ } else if (tokenSenders.length > 0) {
567
+ tokenSummaries.push(
568
+ `Token ${tokenId} sent from ${tokenSenders.join(", ")}`
569
+ );
570
+ }
571
+ }
572
+ if (tokenSummaries.length > 0) return tokenSummaries.join("; ");
1034
573
  }
1035
- return summary;
574
+ return "Unknown Transaction";
1036
575
  }
1037
576
  }
1038
577
  export {