@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 +1 @@
1
- {"version":3,"file":"standards-sdk.es19.js","sources":["../../src/utils/transaction-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { Buffer } from 'buffer';\nimport {\n AccountId,\n ContractId,\n TokenId,\n Hbar,\n HbarUnit,\n Long,\n} from '@hashgraph/sdk';\nimport { ethers } from 'ethers';\n\n/**\n * Types for transaction parsing results\n */\nexport type AccountAmount = {\n accountId: string;\n amount: string;\n isDecimal?: boolean;\n};\n\nexport type TokenAmount = {\n tokenId: string;\n accountId: string;\n amount: number;\n};\n\nexport type ContractCallData = {\n contractId: string;\n gas: number;\n amount: number;\n functionParameters?: string;\n functionName?: string;\n};\n\nexport type TokenMintData = {\n tokenId: string;\n amount: number;\n metadata?: string[];\n};\n\nexport type TokenBurnData = {\n tokenId: string;\n amount: number;\n serialNumbers?: number[];\n};\n\nexport type FixedFeeData = {\n amount: string;\n denominatingTokenId?: string;\n};\n\nexport type FractionalFeeData = {\n numerator: string;\n denominator: string;\n minimumAmount: string;\n maximumAmount: string;\n netOfTransfers: boolean;\n};\n\nexport type RoyaltyFeeData = {\n numerator: string;\n denominator: string;\n fallbackFee?: FixedFeeData;\n};\n\nexport type CustomFeeData = {\n feeCollectorAccountId: string;\n feeType: 'FIXED_FEE' | 'FRACTIONAL_FEE' | 'ROYALTY_FEE';\n fixedFee?: FixedFeeData;\n fractionalFee?: FractionalFeeData;\n royaltyFee?: RoyaltyFeeData;\n allCollectorsAreExempt?: boolean;\n};\n\nexport type TokenCreationData = {\n tokenName?: string;\n tokenSymbol?: string;\n initialSupply?: string;\n decimals?: number;\n maxSupply?: string;\n tokenType?: string;\n supplyType?: string;\n memo?: string;\n treasuryAccountId?: string;\n adminKey?: string;\n kycKey?: string;\n freezeKey?: string;\n wipeKey?: string;\n supplyKey?: string;\n feeScheduleKey?: string;\n pauseKey?: string;\n autoRenewAccount?: string;\n autoRenewPeriod?: string;\n customFees?: CustomFeeData[];\n};\n\nexport type ConsensusCreateTopicData = {\n memo?: string;\n adminKey?: string;\n submitKey?: string;\n autoRenewPeriod?: string;\n autoRenewAccountId?: string;\n};\n\nexport type ConsensusSubmitMessageData = {\n topicId?: string;\n message?: string;\n messageEncoding?: 'utf8' | 'base64';\n chunkInfoInitialTransactionID?: string;\n chunkInfoNumber?: number;\n chunkInfoTotal?: number;\n};\n\nexport type CryptoDeleteData = {\n deleteAccountId?: string;\n transferAccountId?: string;\n};\n\nexport type ScheduleCreateData = {\n scheduledTransaction?: ParsedTransaction;\n payerAccountId?: string;\n adminKey?: string;\n memo?: string;\n waitForExpiry?: boolean;\n};\n\nexport type ScheduleSignData = {\n scheduleId?: string;\n};\n\nexport type EthereumTransactionData = {\n ethereumData?: string;\n callDataFileId?: string;\n maxGasAllowanceHbar?: string;\n};\n\nexport type SystemDeleteData = {\n fileId?: string;\n contractId?: string;\n};\n\nexport type SystemUndeleteData = {\n fileId?: string;\n contractId?: string;\n};\n\nexport type FileCreateData = {\n expirationTime?: string;\n keys?: string;\n contents?: string;\n memo?: string;\n maxSize?: string;\n};\n\nexport type FileAppendData = {\n fileId?: string;\n contents?: string;\n};\n\nexport type FileUpdateData = {\n fileId?: string;\n expirationTime?: string;\n keys?: string;\n contents?: string;\n memo?: string;\n};\n\nexport type FileDeleteData = {\n fileId?: string;\n};\n\nexport type ConsensusUpdateTopicData = {\n topicId?: string;\n memo?: string;\n adminKey?: string;\n submitKey?: string;\n autoRenewPeriod?: string;\n autoRenewAccountId?: string;\n clearAdminKey?: boolean;\n clearSubmitKey?: boolean;\n};\n\nexport type ConsensusDeleteTopicData = {\n topicId?: string;\n};\n\nexport type TokenUpdateData = {\n tokenId?: string;\n name?: string;\n symbol?: string;\n treasuryAccountId?: string;\n adminKey?: string;\n kycKey?: string;\n freezeKey?: string;\n wipeKey?: string;\n supplyKey?: string;\n feeScheduleKey?: string;\n pauseKey?: string;\n autoRenewAccountId?: string;\n autoRenewPeriod?: string;\n memo?: string;\n expiry?: string;\n};\n\nexport type TokenFeeScheduleUpdateData = {\n tokenId?: string;\n customFees?: CustomFeeData[];\n};\n\nexport type UtilPrngData = {\n range?: number;\n prngBytes?: string;\n};\n\nexport type ParsedTransaction = {\n type: string;\n humanReadableType: string;\n transfers: AccountAmount[];\n tokenTransfers: TokenAmount[];\n memo?: string;\n transactionFee?: string;\n contractCall?: ContractCallData;\n tokenMint?: TokenMintData;\n tokenBurn?: TokenBurnData;\n tokenCreation?: TokenCreationData;\n consensusCreateTopic?: ConsensusCreateTopicData;\n consensusSubmitMessage?: ConsensusSubmitMessageData;\n cryptoDelete?: CryptoDeleteData;\n fileCreate?: FileCreateData;\n fileAppend?: FileAppendData;\n fileUpdate?: FileUpdateData;\n fileDelete?: FileDeleteData;\n consensusUpdateTopic?: ConsensusUpdateTopicData;\n consensusDeleteTopic?: ConsensusDeleteTopicData;\n tokenUpdate?: TokenUpdateData;\n tokenFeeScheduleUpdate?: TokenFeeScheduleUpdateData;\n utilPrng?: UtilPrngData;\n raw: proto.SchedulableTransactionBody;\n};\n\nexport class TransactionParser {\n /**\n * Parse a base64 encoded transaction body and return structured data\n * @param transactionBodyBase64 - The base64 encoded transaction body\n * @returns The parsed transaction\n */\n static parseTransactionBody(\n transactionBodyBase64: string\n ): ParsedTransaction {\n try {\n const buffer = ethers.decodeBase64(transactionBodyBase64);\n const txBody = proto.SchedulableTransactionBody.decode(buffer);\n\n const transactionType = this.getTransactionType(txBody);\n\n const result: ParsedTransaction = {\n type: transactionType,\n humanReadableType: this.getHumanReadableType(transactionType),\n transfers: [],\n tokenTransfers: [],\n raw: txBody,\n };\n\n if (txBody.memo) {\n result.memo = txBody.memo;\n }\n\n if (txBody.transactionFee) {\n const hbarAmount = Hbar.fromTinybars(\n Long.fromValue(txBody.transactionFee)\n );\n result.transactionFee = hbarAmount.toString(HbarUnit.Hbar);\n }\n\n if (txBody.cryptoTransfer) {\n this.parseCryptoTransfers(txBody.cryptoTransfer, result);\n }\n\n if (txBody.contractCall) {\n this.parseContractCall(txBody.contractCall, result);\n }\n\n if (txBody.tokenMint) {\n this.parseTokenMint(txBody.tokenMint, result);\n }\n\n if (txBody.tokenBurn) {\n this.parseTokenBurn(txBody.tokenBurn, result);\n }\n\n if (txBody.tokenCreation) {\n this.parseTokenCreation(txBody.tokenCreation, result);\n }\n\n if (txBody.consensusCreateTopic) {\n this.parseConsensusCreateTopic(txBody.consensusCreateTopic, result);\n }\n\n if (txBody.consensusSubmitMessage) {\n this.parseConsensusSubmitMessage(txBody.consensusSubmitMessage, result);\n }\n\n if (txBody.fileCreate) {\n this.parseFileCreate(txBody.fileCreate, result);\n }\n\n if (txBody.fileAppend) {\n this.parseFileAppend(txBody.fileAppend, result);\n }\n\n if (txBody.fileUpdate) {\n this.parseFileUpdate(txBody.fileUpdate, result);\n }\n\n if (txBody.fileDelete) {\n this.parseFileDelete(txBody.fileDelete, result);\n }\n\n if (txBody.consensusUpdateTopic) {\n this.parseConsensusUpdateTopic(txBody.consensusUpdateTopic, result);\n }\n\n if (txBody.consensusDeleteTopic) {\n this.parseConsensusDeleteTopic(txBody.consensusDeleteTopic, result);\n }\n\n if (txBody.tokenUpdate) {\n this.parseTokenUpdate(txBody.tokenUpdate, result);\n }\n\n if (txBody.tokenFeeScheduleUpdate) {\n this.parseTokenFeeScheduleUpdate(txBody.tokenFeeScheduleUpdate, result);\n }\n\n if (txBody.utilPrng) {\n this.parseUtilPrng(txBody.utilPrng, result);\n }\n\n return result;\n } catch (error) {\n throw new Error(`Failed to parse transaction body: ${error}`);\n }\n }\n\n /**\n * Parse details from a complete schedule response\n * @param scheduleResponse - The schedule response to parse\n * @returns The parsed transaction\n */\n static parseScheduleResponse(scheduleResponse: {\n transaction_body: string;\n memo?: string;\n }): ParsedTransaction {\n if (!scheduleResponse.transaction_body) {\n throw new Error('Schedule response missing transaction_body');\n }\n\n const parsed = this.parseTransactionBody(scheduleResponse.transaction_body);\n\n if (scheduleResponse.memo) {\n parsed.memo = scheduleResponse.memo;\n }\n\n return parsed;\n }\n\n /**\n * Determine the transaction type\n * @param txBody - The transaction body to determine the type of\n * @returns The type of the transaction\n */\n private static getTransactionType(\n txBody: proto.SchedulableTransactionBody\n ): string {\n let transactionType = 'unknown';\n\n if (txBody.cryptoTransfer) {\n transactionType = 'cryptoTransfer';\n } else if (txBody.cryptoCreateAccount) {\n transactionType = 'cryptoCreateAccount';\n } else if (txBody.cryptoUpdateAccount) {\n transactionType = 'cryptoUpdateAccount';\n } else if (txBody.cryptoApproveAllowance) {\n transactionType = 'cryptoApproveAllowance';\n } else if (txBody.cryptoDeleteAllowance) {\n transactionType = 'cryptoDeleteAllowance';\n } else if (txBody.cryptoDelete) {\n transactionType = 'cryptoDelete';\n } else if (txBody.consensusCreateTopic) {\n transactionType = 'consensusCreateTopic';\n } else if (txBody.consensusUpdateTopic) {\n transactionType = 'consensusUpdateTopic';\n } else if (txBody.consensusSubmitMessage) {\n transactionType = 'consensusSubmitMessage';\n } else if (txBody.consensusDeleteTopic) {\n transactionType = 'consensusDeleteTopic';\n } else if (txBody.fileCreate) {\n transactionType = 'fileCreate';\n } else if (txBody.fileAppend) {\n transactionType = 'fileAppend';\n } else if (txBody.fileUpdate) {\n transactionType = 'fileUpdate';\n } else if (txBody.fileDelete) {\n transactionType = 'fileDelete';\n } else if (txBody.contractCall) {\n transactionType = 'contractCall';\n } else if (txBody.contractCreateInstance) {\n transactionType = 'contractCreate';\n } else if (txBody.contractUpdateInstance) {\n transactionType = 'contractUpdate';\n } else if (txBody.contractDeleteInstance) {\n transactionType = 'contractDelete';\n } else if (txBody.tokenCreation) {\n transactionType = 'tokenCreate';\n } else if (txBody.tokenUpdate) {\n transactionType = 'tokenUpdate';\n } else if (txBody.tokenDeletion) {\n transactionType = 'tokenDelete';\n } else if (txBody.tokenAssociate) {\n transactionType = 'tokenAssociate';\n } else if (txBody.tokenDissociate) {\n transactionType = 'tokenDissociate';\n } else if (txBody.tokenMint) {\n transactionType = 'tokenMint';\n } else if (txBody.tokenBurn) {\n transactionType = 'tokenBurn';\n } else if (txBody.tokenFeeScheduleUpdate) {\n transactionType = 'tokenFeeScheduleUpdate';\n } else if (txBody.tokenFreeze) {\n transactionType = 'tokenFreeze';\n } else if (txBody.tokenUnfreeze) {\n transactionType = 'tokenUnfreeze';\n } else if (txBody.tokenGrantKyc) {\n transactionType = 'tokenGrantKyc';\n } else if (txBody.tokenRevokeKyc) {\n transactionType = 'tokenRevokeKyc';\n } else if (txBody.tokenPause) {\n transactionType = 'tokenPause';\n } else if (txBody.tokenUnpause) {\n transactionType = 'tokenUnpause';\n } else if (txBody.tokenWipe) {\n transactionType = 'tokenWipe';\n } else if (txBody.utilPrng) {\n transactionType = 'utilPrng';\n }\n\n return transactionType;\n }\n\n /**\n * Convert technical transaction type to human-readable format\n * @param type - The technical transaction type\n * @returns The human-readable transaction type\n */\n private static getHumanReadableType(type: string): string {\n const typeMap: Record<string, string> = {\n cryptoTransfer: 'HBAR Transfer',\n cryptoCreateAccount: 'Create Account',\n cryptoUpdateAccount: 'Update Account',\n cryptoDeleteAccount: 'Delete Account',\n cryptoApproveAllowance: 'Approve Allowance',\n cryptoDeleteAllowance: 'Delete Allowance',\n cryptoDelete: 'Delete Account',\n\n consensusCreateTopic: 'Create Topic',\n consensusUpdateTopic: 'Update Topic',\n consensusSubmitMessage: 'Submit Message',\n consensusDeleteTopic: 'Delete Topic',\n\n fileCreate: 'Create File',\n fileAppend: 'Append File',\n fileUpdate: 'Update File',\n fileDelete: 'Delete File',\n\n contractCall: 'Contract Call',\n contractCreate: 'Create Contract',\n contractUpdate: 'Update Contract',\n contractDelete: 'Delete Contract',\n ethereumTransaction: 'Ethereum Transaction',\n\n tokenCreate: 'Create Token',\n tokenUpdate: 'Update Token',\n tokenDelete: 'Delete Token',\n tokenAssociate: 'Associate Token',\n tokenDissociate: 'Dissociate Token',\n tokenMint: 'Mint Token',\n tokenBurn: 'Burn Token',\n tokenFeeScheduleUpdate: 'Update Token Fee Schedule',\n tokenFreeze: 'Freeze Token',\n tokenUnfreeze: 'Unfreeze Token',\n tokenGrantKyc: 'Grant KYC',\n tokenRevokeKyc: 'Revoke KYC',\n tokenPause: 'Pause Token',\n tokenUnpause: 'Unpause Token',\n tokenWipe: 'Wipe Token',\n\n scheduleCreate: 'Create Schedule',\n scheduleSign: 'Sign Schedule',\n\n utilPrng: 'Generate Random Number',\n\n unknown: 'Unknown Transaction',\n };\n\n let result: string;\n if (typeMap[type]) {\n result = typeMap[type];\n } else {\n result = 'Unknown Transaction';\n }\n\n return result;\n }\n\n /**\n * Parse crypto transfers from the transaction\n * @param cryptoTransfer - The crypto transfer transaction body\n * @param result - The parsed transaction\n */\n private static parseCryptoTransfers(\n cryptoTransfer: proto.ICryptoTransferTransactionBody,\n result: ParsedTransaction\n ): void {\n if (cryptoTransfer.transfers) {\n if (cryptoTransfer.transfers.accountAmounts) {\n result.transfers = cryptoTransfer.transfers.accountAmounts.map(\n (amount) => {\n const shard = amount.accountID?.shardNum\n ? Long.fromValue(amount.accountID.shardNum).toNumber()\n : 0;\n const realm = amount.accountID?.realmNum\n ? Long.fromValue(amount.accountID.realmNum).toNumber()\n : 0;\n const accountNum = amount.accountID?.accountNum\n ? Long.fromValue(amount.accountID.accountNum).toNumber()\n : 0;\n\n const accountId = AccountId.fromString(\n `${shard}.${realm}.${accountNum}`\n );\n\n const hbarValue = amount.amount\n ? Long.fromValue(amount.amount)\n : Long.ZERO;\n const hbarAmount = Hbar.fromTinybars(hbarValue);\n\n return {\n accountId: accountId.toString(),\n amount: hbarAmount.toString(HbarUnit.Hbar),\n isDecimal: true,\n };\n }\n );\n }\n }\n\n if (cryptoTransfer.tokenTransfers) {\n for (const tokenTransfer of cryptoTransfer.tokenTransfers) {\n const shard = tokenTransfer.token?.shardNum\n ? Long.fromValue(tokenTransfer.token.shardNum).toNumber()\n : 0;\n const realm = tokenTransfer.token?.realmNum\n ? Long.fromValue(tokenTransfer.token.realmNum).toNumber()\n : 0;\n const tokenNum = tokenTransfer.token?.tokenNum\n ? Long.fromValue(tokenTransfer.token.tokenNum).toNumber()\n : 0;\n\n const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);\n\n if (tokenTransfer.transfers) {\n for (const transfer of tokenTransfer.transfers) {\n const accShard = transfer.accountID?.shardNum\n ? Long.fromValue(transfer.accountID.shardNum).toNumber()\n : 0;\n const accRealm = transfer.accountID?.realmNum\n ? Long.fromValue(transfer.accountID.realmNum).toNumber()\n : 0;\n const accNum = transfer.accountID?.accountNum\n ? Long.fromValue(transfer.accountID.accountNum).toNumber()\n : 0;\n\n const accountId = AccountId.fromString(\n `${accShard}.${accRealm}.${accNum}`\n );\n\n const tokenAmount = transfer.amount\n ? Long.fromValue(transfer.amount).toNumber()\n : 0;\n\n result.tokenTransfers.push({\n tokenId: tokenId.toString(),\n accountId: accountId.toString(),\n amount: tokenAmount,\n });\n }\n }\n }\n }\n }\n\n /**\n * Parse contract call transaction data\n * @param contractCall - The contract call transaction body\n * @param result - The parsed transaction\n */\n private static parseContractCall(\n contractCall: proto.IContractCallTransactionBody,\n result: ParsedTransaction\n ): void {\n if (contractCall) {\n const shard = contractCall.contractID?.shardNum\n ? Long.fromValue(contractCall.contractID.shardNum).toNumber()\n : 0;\n const realm = contractCall.contractID?.realmNum\n ? Long.fromValue(contractCall.contractID.realmNum).toNumber()\n : 0;\n const contractNum = contractCall.contractID?.contractNum\n ? Long.fromValue(contractCall.contractID.contractNum).toNumber()\n : 0;\n\n const contractId = ContractId.fromString(\n `${shard}.${realm}.${contractNum}`\n );\n\n const gasLimit = contractCall.gas\n ? Long.fromValue(contractCall.gas).toNumber()\n : 0;\n\n let amount = 0;\n if (contractCall.amount) {\n const hbar = Hbar.fromTinybars(Long.fromValue(contractCall.amount));\n amount = parseFloat(hbar.toString(HbarUnit.Hbar));\n }\n\n const functionParameters = contractCall.functionParameters\n ? Buffer.from(contractCall.functionParameters).toString('hex')\n : undefined;\n\n let functionName;\n if (functionParameters && functionParameters.length >= 8) {\n functionName = functionParameters.substring(0, 8);\n }\n\n result.contractCall = {\n contractId: contractId.toString(),\n gas: gasLimit,\n amount: amount,\n functionParameters: functionParameters,\n functionName: functionName,\n };\n }\n }\n\n /**\n * Parse token mint transaction data\n * @param tokenMint - The token mint transaction body\n * @param result - The parsed transaction\n */\n private static parseTokenMint(\n tokenMint: proto.ITokenMintTransactionBody,\n result: ParsedTransaction\n ): void {\n if (tokenMint) {\n const shard = tokenMint.token?.shardNum\n ? Long.fromValue(tokenMint.token.shardNum).toNumber()\n : 0;\n const realm = tokenMint.token?.realmNum\n ? Long.fromValue(tokenMint.token.realmNum).toNumber()\n : 0;\n const tokenNum = tokenMint.token?.tokenNum\n ? Long.fromValue(tokenMint.token.tokenNum).toNumber()\n : 0;\n\n const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);\n\n const amount = tokenMint.amount\n ? Long.fromValue(tokenMint.amount).toNumber()\n : 0;\n\n const metadata: string[] = [];\n if (tokenMint.metadata) {\n for (const meta of tokenMint.metadata) {\n if (meta) {\n metadata.push(Buffer.from(meta).toString('base64'));\n }\n }\n }\n\n result.tokenMint = {\n tokenId: tokenId.toString(),\n amount: amount,\n metadata: metadata.length > 0 ? metadata : undefined,\n };\n }\n }\n\n /**\n * Parse token burn transaction data\n * @param tokenBurn - The token burn transaction body\n * @param result - The parsed transaction\n */\n private static parseTokenBurn(\n tokenBurn: proto.ITokenBurnTransactionBody,\n result: ParsedTransaction\n ): void {\n if (tokenBurn) {\n const shard = tokenBurn.token?.shardNum\n ? Long.fromValue(tokenBurn.token.shardNum).toNumber()\n : 0;\n const realm = tokenBurn.token?.realmNum\n ? Long.fromValue(tokenBurn.token.realmNum).toNumber()\n : 0;\n const tokenNum = tokenBurn.token?.tokenNum\n ? Long.fromValue(tokenBurn.token.tokenNum).toNumber()\n : 0;\n\n const tokenId = TokenId.fromString(`${shard}.${realm}.${tokenNum}`);\n\n const amount = tokenBurn.amount\n ? Long.fromValue(tokenBurn.amount).toNumber()\n : 0;\n\n const serialNumbers: number[] = [];\n if (tokenBurn.serialNumbers) {\n for (const serial of tokenBurn.serialNumbers) {\n if (serial) {\n serialNumbers.push(Long.fromValue(serial).toNumber());\n }\n }\n }\n\n result.tokenBurn = {\n tokenId: tokenId.toString(),\n amount: amount,\n serialNumbers: serialNumbers.length > 0 ? serialNumbers : undefined,\n };\n }\n }\n\n /**\n * Parse token creation transaction data\n * @param tokenCreation - The token creation transaction body\n * @param result - The parsed transaction\n */\n private static parseTokenCreation(\n tokenCreationBody: proto.ITokenCreateTransactionBody,\n result: ParsedTransaction\n ): void {\n if (tokenCreationBody) {\n const creationData: TokenCreationData = {};\n if (tokenCreationBody.name) {\n creationData.tokenName = tokenCreationBody.name;\n }\n if (tokenCreationBody.symbol) {\n creationData.tokenSymbol = tokenCreationBody.symbol;\n }\n if (tokenCreationBody.treasury) {\n const t = tokenCreationBody.treasury;\n creationData.treasuryAccountId = new AccountId(\n t.shardNum ? Long.fromValue(t.shardNum).toNumber() : 0,\n t.realmNum ? Long.fromValue(t.realmNum).toNumber() : 0,\n t.accountNum ? Long.fromValue(t.accountNum).toNumber() : 0\n ).toString();\n }\n if (tokenCreationBody.initialSupply) {\n creationData.initialSupply = Long.fromValue(\n tokenCreationBody.initialSupply\n ).toString();\n }\n if (\n tokenCreationBody.decimals !== undefined &&\n tokenCreationBody.decimals !== null\n ) {\n creationData.decimals = Long.fromValue(\n tokenCreationBody.decimals\n ).toNumber();\n }\n if (tokenCreationBody.maxSupply) {\n creationData.maxSupply = Long.fromValue(\n tokenCreationBody.maxSupply\n ).toString();\n }\n if (tokenCreationBody.memo) {\n creationData.memo = tokenCreationBody.memo;\n }\n if (\n tokenCreationBody.tokenType !== null &&\n tokenCreationBody.tokenType !== undefined\n ) {\n creationData.tokenType = proto.TokenType[tokenCreationBody.tokenType];\n }\n if (\n tokenCreationBody.supplyType !== null &&\n tokenCreationBody.supplyType !== undefined\n ) {\n creationData.supplyType =\n proto.TokenSupplyType[tokenCreationBody.supplyType];\n }\n\n creationData.adminKey = this.parseKey(tokenCreationBody.adminKey);\n creationData.kycKey = this.parseKey(tokenCreationBody.kycKey);\n creationData.freezeKey = this.parseKey(tokenCreationBody.freezeKey);\n creationData.wipeKey = this.parseKey(tokenCreationBody.wipeKey);\n creationData.supplyKey = this.parseKey(tokenCreationBody.supplyKey);\n creationData.feeScheduleKey = this.parseKey(\n tokenCreationBody.feeScheduleKey\n );\n creationData.pauseKey = this.parseKey(tokenCreationBody.pauseKey);\n\n if (tokenCreationBody.autoRenewAccount) {\n const ara = tokenCreationBody.autoRenewAccount;\n creationData.autoRenewAccount = new AccountId(\n ara.shardNum ? Long.fromValue(ara.shardNum).toNumber() : 0,\n ara.realmNum ? Long.fromValue(ara.realmNum).toNumber() : 0,\n ara.accountNum ? Long.fromValue(ara.accountNum).toNumber() : 0\n ).toString();\n }\n if (\n tokenCreationBody.autoRenewPeriod &&\n tokenCreationBody.autoRenewPeriod.seconds\n ) {\n creationData.autoRenewPeriod = Long.fromValue(\n tokenCreationBody.autoRenewPeriod.seconds\n ).toString();\n }\n\n if (\n tokenCreationBody.customFees &&\n tokenCreationBody.customFees.length > 0\n ) {\n creationData.customFees = tokenCreationBody.customFees.map((fee) => {\n const feeCollectorAccountId = fee.feeCollectorAccountId\n ? new AccountId(\n fee.feeCollectorAccountId.shardNum ?? 0,\n fee.feeCollectorAccountId.realmNum ?? 0,\n fee.feeCollectorAccountId.accountNum ?? 0\n ).toString()\n : 'Not Set';\n const commonFeeData = {\n feeCollectorAccountId,\n allCollectorsAreExempt: fee.allCollectorsAreExempt || false,\n };\n if (fee.fixedFee) {\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: {\n amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),\n denominatingTokenId: fee.fixedFee.denominatingTokenId\n ? new TokenId(\n fee.fixedFee.denominatingTokenId.shardNum ?? 0,\n fee.fixedFee.denominatingTokenId.realmNum ?? 0,\n fee.fixedFee.denominatingTokenId.tokenNum ?? 0\n ).toString()\n : undefined,\n },\n };\n } else if (fee.fractionalFee) {\n return {\n ...commonFeeData,\n feeType: 'FRACTIONAL_FEE',\n fractionalFee: {\n numerator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.numerator || 0\n ).toString(),\n denominator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.denominator || 1\n ).toString(),\n minimumAmount: Long.fromValue(\n fee.fractionalFee.minimumAmount || 0\n ).toString(),\n maximumAmount: Long.fromValue(\n fee.fractionalFee.maximumAmount || 0\n ).toString(),\n netOfTransfers: fee.fractionalFee.netOfTransfers || false,\n },\n };\n } else if (fee.royaltyFee) {\n let fallbackFeeData: FixedFeeData | undefined = undefined;\n if (fee.royaltyFee.fallbackFee) {\n fallbackFeeData = {\n amount: Long.fromValue(\n fee.royaltyFee.fallbackFee.amount || 0\n ).toString(),\n denominatingTokenId: fee.royaltyFee.fallbackFee\n .denominatingTokenId\n ? new TokenId(\n fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ??\n 0\n ).toString()\n : undefined,\n };\n }\n return {\n ...commonFeeData,\n feeType: 'ROYALTY_FEE',\n royaltyFee: {\n numerator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.numerator || 0\n ).toString(),\n denominator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.denominator || 1\n ).toString(),\n fallbackFee: fallbackFeeData,\n },\n };\n }\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: { amount: '0' },\n } as CustomFeeData;\n });\n }\n result.tokenCreation = creationData;\n }\n }\n\n /**\n * Parse consensus create topic transaction data\n * @param createTopicBody - The consensus create topic transaction body\n * @param result - The parsed transaction\n */\n private static parseConsensusCreateTopic(\n createTopicBody: proto.IConsensusCreateTopicTransactionBody,\n result: ParsedTransaction\n ): void {\n if (createTopicBody) {\n const topicData: ConsensusCreateTopicData = {};\n if (createTopicBody.memo) {\n topicData.memo = createTopicBody.memo;\n }\n topicData.adminKey = this.parseKey(createTopicBody.adminKey);\n topicData.submitKey = this.parseKey(createTopicBody.submitKey);\n if (createTopicBody.autoRenewPeriod) {\n topicData.autoRenewPeriod = Long.fromValue(\n createTopicBody.autoRenewPeriod.seconds\n ).toString();\n }\n if (createTopicBody.autoRenewAccount) {\n topicData.autoRenewAccountId = new AccountId(\n createTopicBody.autoRenewAccount.shardNum ?? 0,\n createTopicBody.autoRenewAccount.realmNum ?? 0,\n createTopicBody.autoRenewAccount.accountNum ?? 0\n ).toString();\n }\n result.consensusCreateTopic = topicData;\n }\n }\n\n /**\n * Parse consensus submit message transaction data\n * @param submitMessageBody - The consensus submit message transaction body\n * @param result - The parsed transaction\n */\n private static parseConsensusSubmitMessage(\n submitMessageBody: proto.IConsensusSubmitMessageTransactionBody,\n result: ParsedTransaction\n ): void {\n if (submitMessageBody) {\n const messageData: ConsensusSubmitMessageData = {};\n if (submitMessageBody.topicID) {\n const tid = submitMessageBody.topicID;\n messageData.topicId = `${\n tid.shardNum ? Long.fromValue(tid.shardNum).toNumber() : 0\n }.${tid.realmNum ? Long.fromValue(tid.realmNum).toNumber() : 0}.${\n tid.topicNum ? Long.fromValue(tid.topicNum).toNumber() : 0\n }`;\n }\n if (submitMessageBody.message && submitMessageBody.message.length > 0) {\n const messageBuffer = Buffer.from(submitMessageBody.message);\n const utf8String = messageBuffer.toString('utf8');\n\n if (/[\u0000-\b\u000b\f\u000e-\u001f]/.test(utf8String) || utf8String.includes('\\uFFFD')) {\n messageData.message = messageBuffer.toString('base64');\n messageData.messageEncoding = 'base64';\n } else {\n messageData.message = utf8String;\n messageData.messageEncoding = 'utf8';\n }\n }\n if (submitMessageBody.chunkInfo) {\n if (submitMessageBody.chunkInfo.initialTransactionID) {\n const txId =\n submitMessageBody.chunkInfo.initialTransactionID.accountID;\n const taValidStart =\n submitMessageBody.chunkInfo.initialTransactionID\n .transactionValidStart;\n if (txId && taValidStart) {\n messageData.chunkInfoInitialTransactionID = `${\n txId.shardNum ? Long.fromValue(txId.shardNum).toNumber() : 0\n }.${txId.realmNum ? Long.fromValue(txId.realmNum).toNumber() : 0}.${\n txId.accountNum ? Long.fromValue(txId.accountNum).toNumber() : 0\n }@${\n taValidStart.seconds\n ? Long.fromValue(taValidStart.seconds).toNumber()\n : 0\n }.${\n taValidStart.nanos\n ? Long.fromValue(taValidStart.nanos).toNumber()\n : 0\n }`;\n }\n }\n if (\n submitMessageBody.chunkInfo.number !== undefined &&\n submitMessageBody.chunkInfo.number !== null\n ) {\n messageData.chunkInfoNumber = submitMessageBody.chunkInfo.number;\n }\n if (\n submitMessageBody.chunkInfo.total !== undefined &&\n submitMessageBody.chunkInfo.total !== null\n ) {\n messageData.chunkInfoTotal = submitMessageBody.chunkInfo.total;\n }\n }\n result.consensusSubmitMessage = messageData;\n }\n }\n\n private static parseFileCreate(\n fileCreateBody: proto.IFileCreateTransactionBody,\n result: ParsedTransaction\n ): void {\n if (fileCreateBody) {\n const data: FileCreateData = {};\n if (fileCreateBody.expirationTime) {\n data.expirationTime = `${Long.fromValue(\n fileCreateBody.expirationTime.seconds\n ).toString()}.${fileCreateBody.expirationTime.nanos}`;\n }\n if (fileCreateBody.keys) {\n data.keys = this.parseKey({ keyList: fileCreateBody.keys });\n }\n if (fileCreateBody.contents) {\n data.contents = Buffer.from(fileCreateBody.contents).toString('base64');\n }\n if (fileCreateBody.memo) {\n data.memo = fileCreateBody.memo;\n }\n result.fileCreate = data;\n }\n }\n\n private static parseFileAppend(\n fileAppendBody: proto.IFileAppendTransactionBody,\n result: ParsedTransaction\n ): void {\n if (fileAppendBody) {\n const data: FileAppendData = {};\n if (fileAppendBody.fileID) {\n data.fileId = `${fileAppendBody.fileID.shardNum}.${fileAppendBody.fileID.realmNum}.${fileAppendBody.fileID.fileNum}`;\n }\n if (fileAppendBody.contents) {\n data.contents = Buffer.from(fileAppendBody.contents).toString('base64');\n }\n result.fileAppend = data;\n }\n }\n\n private static parseFileUpdate(\n fileUpdateBody: proto.IFileUpdateTransactionBody,\n result: ParsedTransaction\n ): void {\n if (fileUpdateBody) {\n const data: FileUpdateData = {};\n if (fileUpdateBody.fileID) {\n data.fileId = `${fileUpdateBody.fileID.shardNum}.${fileUpdateBody.fileID.realmNum}.${fileUpdateBody.fileID.fileNum}`;\n }\n if (fileUpdateBody.expirationTime) {\n data.expirationTime = `${Long.fromValue(\n fileUpdateBody.expirationTime.seconds\n ).toString()}.${fileUpdateBody.expirationTime.nanos}`;\n }\n if (fileUpdateBody.keys) {\n data.keys = this.parseKey({ keyList: fileUpdateBody.keys });\n }\n if (fileUpdateBody.contents) {\n data.contents = Buffer.from(fileUpdateBody.contents).toString('base64');\n }\n if (fileUpdateBody.memo && fileUpdateBody.memo.value !== undefined) {\n data.memo = fileUpdateBody.memo.value;\n }\n result.fileUpdate = data;\n }\n }\n\n private static parseFileDelete(\n fileDeleteBody: proto.IFileDeleteTransactionBody,\n result: ParsedTransaction\n ): void {\n if (fileDeleteBody) {\n const data: FileDeleteData = {};\n if (fileDeleteBody.fileID) {\n data.fileId = `${fileDeleteBody.fileID.shardNum}.${fileDeleteBody.fileID.realmNum}.${fileDeleteBody.fileID.fileNum}`;\n }\n result.fileDelete = data;\n }\n }\n\n private static parseConsensusUpdateTopic(\n body: proto.IConsensusUpdateTopicTransactionBody,\n result: ParsedTransaction\n ): void {\n if (body) {\n const data: ConsensusUpdateTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;\n }\n if (body.memo?.value !== undefined) {\n data.memo = body.memo.value;\n }\n\n if (body.adminKey === null) {\n data.clearAdminKey = true;\n data.adminKey = undefined;\n } else if (body.adminKey) {\n data.adminKey = this.parseKey(body.adminKey);\n } else {\n data.adminKey = undefined;\n }\n\n if (body.submitKey === null) {\n data.clearSubmitKey = true;\n data.submitKey = undefined;\n } else if (body.submitKey) {\n data.submitKey = this.parseKey(body.submitKey);\n } else {\n data.submitKey = undefined;\n }\n\n if (body.autoRenewPeriod) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0\n ).toString();\n }\n result.consensusUpdateTopic = data;\n }\n }\n\n private static parseConsensusDeleteTopic(\n body: proto.IConsensusDeleteTopicTransactionBody,\n result: ParsedTransaction\n ): void {\n if (body) {\n const data: ConsensusDeleteTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;\n }\n result.consensusDeleteTopic = data;\n }\n }\n\n private static parseTokenUpdate(\n body: proto.ITokenUpdateTransactionBody,\n result: ParsedTransaction\n ): void {\n if (body) {\n const data: TokenUpdateData = {};\n if (body.token) {\n data.tokenId = new TokenId(\n body.token.shardNum ?? 0,\n body.token.realmNum ?? 0,\n body.token.tokenNum ?? 0\n ).toString();\n }\n if (body.name) {\n data.name = body.name;\n }\n if (body.symbol) {\n data.symbol = body.symbol;\n }\n if (body.treasury) {\n data.treasuryAccountId = new AccountId(\n body.treasury.shardNum ?? 0,\n body.treasury.realmNum ?? 0,\n body.treasury.accountNum ?? 0\n ).toString();\n }\n\n data.adminKey = this.parseKey(body.adminKey);\n data.kycKey = this.parseKey(body.kycKey);\n data.freezeKey = this.parseKey(body.freezeKey);\n data.wipeKey = this.parseKey(body.wipeKey);\n data.supplyKey = this.parseKey(body.supplyKey);\n data.feeScheduleKey = this.parseKey(body.feeScheduleKey);\n data.pauseKey = this.parseKey(body.pauseKey);\n\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0\n ).toString();\n }\n if (body.autoRenewPeriod) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds\n ).toString();\n }\n if (body.memo?.value !== undefined) {\n data.memo = body.memo.value;\n }\n if (body.expiry) {\n data.expiry = `${Long.fromValue(body.expiry.seconds).toString()}.${\n body.expiry.nanos\n }`;\n }\n result.tokenUpdate = data;\n }\n }\n\n private static parseTokenFeeScheduleUpdate(\n body: proto.ITokenFeeScheduleUpdateTransactionBody,\n result: ParsedTransaction\n ): void {\n if (body) {\n const data: TokenFeeScheduleUpdateData = {};\n if (body.tokenId)\n data.tokenId = new TokenId(\n body.tokenId.shardNum ?? 0,\n body.tokenId.realmNum ?? 0,\n body.tokenId.tokenNum ?? 0\n ).toString();\n if (body.customFees && body.customFees.length > 0) {\n data.customFees = body.customFees.map((fee) => {\n const feeCollectorAccountId = fee.feeCollectorAccountId\n ? new AccountId(\n fee.feeCollectorAccountId.shardNum ?? 0,\n fee.feeCollectorAccountId.realmNum ?? 0,\n fee.feeCollectorAccountId.accountNum ?? 0\n ).toString()\n : 'Not Set';\n\n const commonFeeData = {\n feeCollectorAccountId,\n allCollectorsAreExempt: fee.allCollectorsAreExempt || false,\n };\n\n if (fee.fixedFee) {\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: {\n amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),\n denominatingTokenId: fee.fixedFee.denominatingTokenId\n ? new TokenId(\n fee.fixedFee.denominatingTokenId.shardNum ?? 0,\n fee.fixedFee.denominatingTokenId.realmNum ?? 0,\n fee.fixedFee.denominatingTokenId.tokenNum ?? 0\n ).toString()\n : undefined,\n },\n };\n } else if (fee.fractionalFee) {\n return {\n ...commonFeeData,\n feeType: 'FRACTIONAL_FEE',\n fractionalFee: {\n numerator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.numerator || 0\n ).toString(),\n denominator: Long.fromValue(\n fee.fractionalFee.fractionalAmount?.denominator || 1\n ).toString(),\n minimumAmount: Long.fromValue(\n fee.fractionalFee.minimumAmount || 0\n ).toString(),\n maximumAmount: Long.fromValue(\n fee.fractionalFee.maximumAmount || 0\n ).toString(),\n netOfTransfers: fee.fractionalFee.netOfTransfers || false,\n },\n };\n } else if (fee.royaltyFee) {\n let fallbackFeeData: FixedFeeData | undefined = undefined;\n if (fee.royaltyFee.fallbackFee) {\n fallbackFeeData = {\n amount: Long.fromValue(\n fee.royaltyFee.fallbackFee.amount || 0\n ).toString(),\n denominatingTokenId: fee.royaltyFee.fallbackFee\n .denominatingTokenId\n ? new TokenId(\n fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ??\n 0,\n fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ??\n 0\n ).toString()\n : undefined,\n };\n }\n return {\n ...commonFeeData,\n feeType: 'ROYALTY_FEE',\n royaltyFee: {\n numerator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.numerator || 0\n ).toString(),\n denominator: Long.fromValue(\n fee.royaltyFee.exchangeValueFraction?.denominator || 1\n ).toString(),\n fallbackFee: fallbackFeeData,\n },\n };\n }\n return {\n ...commonFeeData,\n feeType: 'FIXED_FEE',\n fixedFee: { amount: '0' },\n } as CustomFeeData;\n });\n }\n result.tokenFeeScheduleUpdate = data;\n }\n }\n\n private static parseUtilPrng(\n body: proto.IUtilPrngTransactionBody,\n result: ParsedTransaction\n ): void {\n if (body) {\n const data: UtilPrngData = {};\n if (body.range && body.range !== 0) {\n data.range = body.range;\n }\n result.utilPrng = data;\n }\n }\n\n private static parseKey(\n key: proto.IKey | null | undefined\n ): string | undefined {\n if (!key) {\n return undefined;\n }\n\n if (key.contractID) {\n return `ContractID: ${new ContractId(\n key.contractID.shardNum ?? 0,\n key.contractID.realmNum ?? 0,\n key.contractID.contractNum ?? 0\n ).toString()}`;\n }\n if (key.ed25519) {\n return `ED25519: ${Buffer.from(key.ed25519).toString('hex')}`;\n }\n if (key.ECDSASecp256k1) {\n return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(\n 'hex'\n )}`;\n }\n if (key.keyList && key.keyList.keys && key.keyList.keys.length > 0) {\n const keys = key.keyList.keys\n .map((k) => this.parseKey(k))\n .filter(Boolean);\n return `KeyList (${keys.length} keys): [${keys.join(', ')}]`;\n }\n if (\n key.thresholdKey &&\n key.thresholdKey.keys &&\n key.thresholdKey.keys.keys &&\n key.thresholdKey.keys.keys.length > 0\n ) {\n const keys = key.thresholdKey.keys.keys\n .map((k) => this.parseKey(k))\n .filter(Boolean);\n return `ThresholdKey (${key.thresholdKey.threshold} of ${\n keys.length\n }): [${keys.join(', ')}]`;\n }\n if (key.delegatableContractId) {\n return `DelegatableContractID: ${new ContractId(\n key.delegatableContractId.shardNum ?? 0,\n key.delegatableContractId.realmNum ?? 0,\n key.delegatableContractId.contractNum ?? 0\n ).toString()}`;\n }\n if (Object.keys(key).length === 0) {\n return 'Empty Key Structure';\n }\n\n return 'Unknown or Unset Key Type';\n }\n\n /**\n * Get a human-readable summary of the transaction\n * @param parsedTx - The parsed transaction\n * @returns The human-readable summary of the transaction\n */\n static getTransactionSummary(parsedTx: ParsedTransaction): string {\n let summary: string;\n\n if (parsedTx.type === 'cryptoTransfer') {\n const senders = [];\n const receivers = [];\n\n for (const transfer of parsedTx.transfers) {\n const originalAmountFloat = parseFloat(transfer.amount);\n\n let displayStr = transfer.amount;\n if (displayStr.startsWith('-')) {\n displayStr = displayStr.substring(1);\n }\n displayStr = displayStr.replace(/\\s*ℏ$/, '');\n\n if (originalAmountFloat < 0) {\n senders.push(`${transfer.accountId} (${displayStr} ℏ)`);\n } else if (originalAmountFloat > 0) {\n receivers.push(`${transfer.accountId} (${displayStr} ℏ)`);\n }\n }\n\n if (senders.length > 0 && receivers.length > 0) {\n summary = `Transfer of HBAR from ${senders.join(\n ', '\n )} to ${receivers.join(', ')}`;\n } else {\n summary = parsedTx.humanReadableType;\n }\n } else if (parsedTx.contractCall) {\n let contractCallSummary = `Contract call to ${parsedTx.contractCall.contractId} with ${parsedTx.contractCall.gas} gas`;\n\n if (parsedTx.contractCall.amount > 0) {\n contractCallSummary += ` and ${parsedTx.contractCall.amount} HBAR`;\n }\n\n if (parsedTx.contractCall.functionName) {\n contractCallSummary += ` calling function ${parsedTx.contractCall.functionName}`;\n }\n\n summary = contractCallSummary;\n } else if (parsedTx.tokenMint) {\n summary = `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;\n } else if (parsedTx.tokenBurn) {\n summary = `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;\n } else if (parsedTx.tokenCreation) {\n summary = `Create token ${\n parsedTx.tokenCreation.tokenName || '(No Name)'\n } (${parsedTx.tokenCreation.tokenSymbol || '(No Symbol)'})`;\n if (parsedTx.tokenCreation.initialSupply) {\n summary += ` with initial supply ${parsedTx.tokenCreation.initialSupply}`;\n }\n if (\n parsedTx.tokenCreation.customFees &&\n parsedTx.tokenCreation.customFees.length > 0\n ) {\n summary += ` including ${parsedTx.tokenCreation.customFees.length} custom fee(s)`;\n }\n } else if (parsedTx.tokenTransfers.length > 0) {\n const tokenGroups: Record<string, TokenAmount[]> = {};\n\n for (const transfer of parsedTx.tokenTransfers) {\n if (!tokenGroups[transfer.tokenId]) {\n tokenGroups[transfer.tokenId] = [];\n }\n tokenGroups[transfer.tokenId].push(transfer);\n }\n\n const tokenSummaries = [];\n\n for (const [tokenId, transfers] of Object.entries(tokenGroups)) {\n const tokenSenders = [];\n const tokenReceivers = [];\n\n for (const transfer of transfers) {\n const transferAmountValue = parseFloat(transfer.amount.toString());\n if (transferAmountValue < 0) {\n tokenSenders.push(\n `${transfer.accountId} (${Math.abs(transferAmountValue)})`\n );\n } else if (transferAmountValue > 0) {\n tokenReceivers.push(\n `${transfer.accountId} (${transferAmountValue})`\n );\n }\n }\n\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(\n ', '\n )} to ${tokenReceivers.join(', ')}`\n );\n }\n }\n\n if (tokenSummaries.length > 0) {\n summary = tokenSummaries.join('; ');\n } else {\n summary = parsedTx.humanReadableType;\n }\n } else if (parsedTx.consensusCreateTopic) {\n summary = `Create new topic`;\n if (parsedTx.consensusCreateTopic.memo) {\n summary += ` with memo \"${parsedTx.consensusCreateTopic.memo}\"`;\n }\n if (parsedTx.consensusCreateTopic.autoRenewAccountId) {\n summary += `, auto-renew by ${parsedTx.consensusCreateTopic.autoRenewAccountId}`;\n }\n } else if (parsedTx.consensusSubmitMessage) {\n summary = `Submit message`;\n if (parsedTx.consensusSubmitMessage.topicId) {\n summary += ` to topic ${parsedTx.consensusSubmitMessage.topicId}`;\n }\n if (parsedTx.consensusSubmitMessage.message) {\n if (parsedTx.consensusSubmitMessage.messageEncoding === 'utf8') {\n const messagePreview =\n parsedTx.consensusSubmitMessage.message.substring(0, 70);\n summary += `: \"${messagePreview}${\n parsedTx.consensusSubmitMessage.message.length > 70 ? '...' : ''\n }\"`;\n } else {\n summary += ` (binary message data, length: ${\n Buffer.from(parsedTx.consensusSubmitMessage.message, 'base64')\n .length\n } bytes)`;\n }\n }\n if (\n parsedTx.consensusSubmitMessage.chunkInfoNumber &&\n parsedTx.consensusSubmitMessage.chunkInfoTotal\n ) {\n summary += ` (chunk ${parsedTx.consensusSubmitMessage.chunkInfoNumber}/${parsedTx.consensusSubmitMessage.chunkInfoTotal})`;\n }\n } else if (parsedTx.fileCreate) {\n let summary = 'Create File';\n if (parsedTx.fileCreate.memo)\n summary += ` with memo \"${parsedTx.fileCreate.memo}\"`;\n if (parsedTx.fileCreate.contents) summary += ` (includes content)`;\n return summary;\n } else if (parsedTx.fileAppend) {\n return `Append to File ${parsedTx.fileAppend.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileUpdate) {\n return `Update File ${parsedTx.fileUpdate.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileDelete) {\n return `Delete File ${parsedTx.fileDelete.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.consensusUpdateTopic) {\n return `Update Topic ${\n parsedTx.consensusUpdateTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.consensusDeleteTopic) {\n return `Delete Topic ${\n parsedTx.consensusDeleteTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.tokenUpdate) {\n return `Update Token ${parsedTx.tokenUpdate.tokenId || '(Unknown ID)'}`;\n } else if (parsedTx.tokenFeeScheduleUpdate) {\n return `Update Fee Schedule for Token ${\n parsedTx.tokenFeeScheduleUpdate.tokenId || '(Unknown ID)'\n }`;\n } else if (parsedTx.utilPrng) {\n let summary = 'Generate Random Number';\n if (parsedTx.utilPrng.range && parsedTx.utilPrng.range > 0) {\n summary += ` (range up to ${parsedTx.utilPrng.range - 1})`;\n }\n return summary;\n } else {\n summary = parsedTx.humanReadableType;\n }\n\n return summary;\n }\n}\n"],"names":["ethers.decodeBase64","Buffer","summary"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es19.js","sources":["../../src/utils/transaction-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { Buffer } from 'buffer';\nimport { Hbar, HbarUnit, Long } from '@hashgraph/sdk';\nimport { ethers } from 'ethers';\nimport { TokenAmount, ParsedTransaction } from './transaction-parser-types'; // Import all types\nimport { HTSParser } from './parsers/hts-parser'; // Import HTSParser\nimport { HCSParser } from './parsers/hcs-parser'; // Import HCSParser\nimport { FileParser } from './parsers/file-parser'; // Import FileParser\nimport { CryptoParser } from './parsers/crypto-parser'; // Import CryptoParser\nimport { SCSParser } from './parsers/scs-parser'; // Import SCSParser\nimport { UtilParser } from './parsers/util-parser'; // Import UtilParser\n\n/**\n * Types for transaction parsing results\n */\n\nexport class TransactionParser {\n /**\n * Parse a base64 encoded transaction body and return structured data\n * @param transactionBodyBase64 - The base64 encoded transaction body\n * @returns The parsed transaction\n */\n static parseTransactionBody(\n transactionBodyBase64: string\n ): ParsedTransaction {\n try {\n const buffer = ethers.decodeBase64(transactionBodyBase64);\n const txBody = proto.SchedulableTransactionBody.decode(buffer);\n\n const transactionType = this.getTransactionType(txBody);\n\n const result: ParsedTransaction = {\n type: transactionType,\n humanReadableType: this.getHumanReadableType(transactionType),\n transfers: [],\n tokenTransfers: [],\n raw: txBody,\n };\n\n if (txBody.memo) {\n result.memo = txBody.memo;\n }\n\n if (txBody.transactionFee) {\n const hbarAmount = Hbar.fromTinybars(\n Long.fromValue(txBody.transactionFee)\n );\n result.transactionFee = hbarAmount.toString(HbarUnit.Hbar);\n }\n\n if (txBody.cryptoTransfer) {\n CryptoParser.parseCryptoTransfers(txBody.cryptoTransfer, result);\n }\n\n if (txBody.cryptoDelete) {\n result.cryptoDelete = CryptoParser.parseCryptoDelete(\n txBody.cryptoDelete\n );\n }\n\n if (txBody.cryptoCreateAccount) {\n result.cryptoCreateAccount = CryptoParser.parseCryptoCreateAccount(\n txBody.cryptoCreateAccount\n );\n }\n\n if (txBody.cryptoUpdateAccount) {\n result.cryptoUpdateAccount = CryptoParser.parseCryptoUpdateAccount(\n txBody.cryptoUpdateAccount\n );\n }\n\n if (txBody.cryptoApproveAllowance) {\n result.cryptoApproveAllowance = CryptoParser.parseCryptoApproveAllowance(\n txBody.cryptoApproveAllowance\n );\n }\n\n if (txBody.cryptoDeleteAllowance) {\n result.cryptoDeleteAllowance = CryptoParser.parseCryptoDeleteAllowance(\n txBody.cryptoDeleteAllowance\n );\n }\n\n if (txBody.contractCall) {\n result.contractCall = SCSParser.parseContractCall(txBody.contractCall);\n }\n\n if (txBody.contractCreateInstance) {\n result.contractCreate = SCSParser.parseContractCreate(txBody.contractCreateInstance);\n }\n\n if (txBody.contractUpdateInstance) {\n result.contractUpdate = SCSParser.parseContractUpdate(txBody.contractUpdateInstance);\n }\n\n if (txBody.contractDeleteInstance) {\n result.contractDelete = SCSParser.parseContractDelete(txBody.contractDeleteInstance);\n }\n\n if (txBody.tokenCreation) {\n result.tokenCreation = HTSParser.parseTokenCreate(txBody.tokenCreation);\n }\n\n if (txBody.tokenMint) {\n result.tokenMint = HTSParser.parseTokenMint(txBody.tokenMint);\n }\n\n if (txBody.tokenBurn) {\n result.tokenBurn = HTSParser.parseTokenBurn(txBody.tokenBurn);\n }\n\n if (txBody.tokenUpdate) {\n result.tokenUpdate = HTSParser.parseTokenUpdate(txBody.tokenUpdate);\n }\n\n if (txBody.tokenFeeScheduleUpdate) {\n result.tokenFeeScheduleUpdate = HTSParser.parseTokenFeeScheduleUpdate(\n txBody.tokenFeeScheduleUpdate\n );\n }\n\n if (txBody.tokenFreeze) {\n result.tokenFreeze = HTSParser.parseTokenFreeze(txBody.tokenFreeze);\n }\n\n if (txBody.tokenUnfreeze) {\n result.tokenUnfreeze = HTSParser.parseTokenUnfreeze(\n txBody.tokenUnfreeze\n );\n }\n\n if (txBody.tokenGrantKyc) {\n result.tokenGrantKyc = HTSParser.parseTokenGrantKyc(\n txBody.tokenGrantKyc\n );\n }\n\n if (txBody.tokenRevokeKyc) {\n result.tokenRevokeKyc = HTSParser.parseTokenRevokeKyc(\n txBody.tokenRevokeKyc\n );\n }\n\n if (txBody.tokenPause) {\n result.tokenPause = HTSParser.parseTokenPause(txBody.tokenPause);\n }\n\n if (txBody.tokenUnpause) {\n result.tokenUnpause = HTSParser.parseTokenUnpause(txBody.tokenUnpause);\n }\n\n if (txBody.tokenWipe) {\n result.tokenWipeAccount = HTSParser.parseTokenWipeAccount(\n txBody.tokenWipe\n );\n }\n\n if (txBody.tokenDeletion) {\n result.tokenDelete = HTSParser.parseTokenDelete(txBody.tokenDeletion);\n }\n\n if (txBody.tokenAssociate) {\n result.tokenAssociate = HTSParser.parseTokenAssociate(\n txBody.tokenAssociate\n );\n }\n\n if (txBody.tokenDissociate) {\n result.tokenDissociate = HTSParser.parseTokenDissociate(\n txBody.tokenDissociate\n );\n }\n\n if (txBody.consensusCreateTopic) {\n result.consensusCreateTopic = HCSParser.parseConsensusCreateTopic(\n txBody.consensusCreateTopic\n );\n }\n\n if (txBody.consensusSubmitMessage) {\n result.consensusSubmitMessage = HCSParser.parseConsensusSubmitMessage(\n txBody.consensusSubmitMessage\n );\n }\n\n if (txBody.consensusUpdateTopic) {\n result.consensusUpdateTopic = HCSParser.parseConsensusUpdateTopic(\n txBody.consensusUpdateTopic\n );\n }\n\n if (txBody.consensusDeleteTopic) {\n result.consensusDeleteTopic = HCSParser.parseConsensusDeleteTopic(\n txBody.consensusDeleteTopic\n );\n }\n\n if (txBody.fileCreate) {\n result.fileCreate = FileParser.parseFileCreate(txBody.fileCreate);\n }\n\n if (txBody.fileAppend) {\n result.fileAppend = FileParser.parseFileAppend(txBody.fileAppend);\n }\n\n if (txBody.fileUpdate) {\n result.fileUpdate = FileParser.parseFileUpdate(txBody.fileUpdate);\n }\n\n if (txBody.fileDelete) {\n result.fileDelete = FileParser.parseFileDelete(txBody.fileDelete);\n }\n\n if (txBody.utilPrng) {\n result.utilPrng = UtilParser.parseUtilPrng(txBody.utilPrng);\n }\n\n return result;\n } catch (error) {\n throw new Error(\n `Failed to parse transaction body: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n }\n\n /**\n * Parse details from a complete schedule response\n * @param scheduleResponse - The schedule response to parse\n * @returns The parsed transaction\n */\n static parseScheduleResponse(scheduleResponse: {\n transaction_body: string;\n memo?: string;\n }): ParsedTransaction {\n if (!scheduleResponse.transaction_body) {\n throw new Error('Schedule response missing transaction_body');\n }\n\n const parsed = this.parseTransactionBody(scheduleResponse.transaction_body);\n\n if (scheduleResponse.memo) {\n parsed.memo = scheduleResponse.memo;\n }\n\n return parsed;\n }\n\n /**\n * Determine the transaction type\n * @param txBody - The transaction body to determine the type of\n * @returns The type of the transaction\n */\n private static getTransactionType(\n txBody: proto.SchedulableTransactionBody\n ): string {\n let transactionType = 'unknown';\n\n if (txBody.cryptoTransfer) {\n transactionType = 'cryptoTransfer';\n } else if (txBody.cryptoCreateAccount) {\n transactionType = 'cryptoCreateAccount';\n } else if (txBody.cryptoUpdateAccount) {\n transactionType = 'cryptoUpdateAccount';\n } else if (txBody.cryptoApproveAllowance) {\n transactionType = 'cryptoApproveAllowance';\n } else if (txBody.cryptoDeleteAllowance) {\n transactionType = 'cryptoDeleteAllowance';\n } else if (txBody.cryptoDelete) {\n transactionType = 'cryptoDelete';\n } else if (txBody.consensusCreateTopic) {\n transactionType = 'consensusCreateTopic';\n } else if (txBody.consensusUpdateTopic) {\n transactionType = 'consensusUpdateTopic';\n } else if (txBody.consensusSubmitMessage) {\n transactionType = 'consensusSubmitMessage';\n } else if (txBody.consensusDeleteTopic) {\n transactionType = 'consensusDeleteTopic';\n } else if (txBody.fileCreate) {\n transactionType = 'fileCreate';\n } else if (txBody.fileAppend) {\n transactionType = 'fileAppend';\n } else if (txBody.fileUpdate) {\n transactionType = 'fileUpdate';\n } else if (txBody.fileDelete) {\n transactionType = 'fileDelete';\n } else if (txBody.contractCall) {\n transactionType = 'contractCall';\n } else if (txBody.contractCreateInstance) {\n transactionType = 'contractCreate';\n } else if (txBody.contractUpdateInstance) {\n transactionType = 'contractUpdate';\n } else if (txBody.contractDeleteInstance) {\n transactionType = 'contractDelete';\n } else if (txBody.tokenCreation) {\n transactionType = 'tokenCreate';\n } else if (txBody.tokenUpdate) {\n transactionType = 'tokenUpdate';\n } else if (txBody.tokenDeletion) {\n transactionType = 'tokenDelete';\n } else if (txBody.tokenAssociate) {\n transactionType = 'tokenAssociate';\n } else if (txBody.tokenDissociate) {\n transactionType = 'tokenDissociate';\n } else if (txBody.tokenMint) {\n transactionType = 'tokenMint';\n } else if (txBody.tokenBurn) {\n transactionType = 'tokenBurn';\n } else if (txBody.tokenFeeScheduleUpdate) {\n transactionType = 'tokenFeeScheduleUpdate';\n } else if (txBody.tokenFreeze) {\n transactionType = 'tokenFreeze';\n } else if (txBody.tokenUnfreeze) {\n transactionType = 'tokenUnfreeze';\n } else if (txBody.tokenGrantKyc) {\n transactionType = 'tokenGrantKyc';\n } else if (txBody.tokenRevokeKyc) {\n transactionType = 'tokenRevokeKyc';\n } else if (txBody.tokenPause) {\n transactionType = 'tokenPause';\n } else if (txBody.tokenUnpause) {\n transactionType = 'tokenUnpause';\n } else if (txBody.tokenWipe) {\n transactionType = 'tokenWipe';\n } else if (txBody.utilPrng) {\n transactionType = 'utilPrng';\n }\n\n return transactionType;\n }\n\n /**\n * Convert technical transaction type to human-readable format\n * @param type - The technical transaction type\n * @returns The human-readable transaction type\n */\n private static getHumanReadableType(type: string): string {\n const typeMap: Record<string, string> = {\n cryptoTransfer: 'HBAR Transfer',\n cryptoCreateAccount: 'Create Account',\n cryptoUpdateAccount: 'Update Account',\n cryptoDeleteAccount: 'Delete Account',\n cryptoApproveAllowance: 'Approve Allowance',\n cryptoDeleteAllowance: 'Delete Allowance',\n cryptoDelete: 'Delete Account',\n\n consensusCreateTopic: 'Create Topic',\n consensusUpdateTopic: 'Update Topic',\n consensusSubmitMessage: 'Submit Message',\n consensusDeleteTopic: 'Delete Topic',\n\n fileCreate: 'Create File',\n fileAppend: 'Append File',\n fileUpdate: 'Update File',\n fileDelete: 'Delete File',\n\n contractCall: 'Contract Call',\n contractCreate: 'Create Contract',\n contractUpdate: 'Update Contract',\n contractDelete: 'Delete Contract',\n ethereumTransaction: 'Ethereum Transaction',\n\n tokenCreate: 'Create Token',\n tokenUpdate: 'Update Token',\n tokenDelete: 'Delete Token',\n tokenAssociate: 'Associate Token',\n tokenDissociate: 'Dissociate Token',\n tokenMint: 'Mint Token',\n tokenBurn: 'Burn Token',\n tokenFeeScheduleUpdate: 'Update Token Fee Schedule',\n tokenFreeze: 'Freeze Token',\n tokenUnfreeze: 'Unfreeze Token',\n tokenGrantKyc: 'Grant KYC',\n tokenRevokeKyc: 'Revoke KYC',\n tokenPause: 'Pause Token',\n tokenUnpause: 'Unpause Token',\n tokenWipe: 'Wipe Token',\n\n scheduleCreate: 'Create Schedule',\n scheduleSign: 'Sign Schedule',\n\n utilPrng: 'Generate Random Number',\n\n unknown: 'Unknown Transaction',\n };\n\n let result: string;\n if (typeMap[type]) {\n result = typeMap[type];\n } else {\n result = 'Unknown Transaction';\n }\n\n return result;\n }\n\n /**\n * Get a human-readable summary of the transaction\n * @param parsedTx - The parsed transaction\n * @returns The human-readable summary of the transaction\n */\n static getTransactionSummary(parsedTx: ParsedTransaction): string {\n if (parsedTx.type === 'cryptoTransfer') {\n const senders = [];\n const receivers = [];\n\n for (const transfer of parsedTx.transfers) {\n const originalAmountFloat = parseFloat(transfer.amount);\n\n let displayStr = transfer.amount;\n if (displayStr.startsWith('-')) {\n displayStr = displayStr.substring(1);\n }\n displayStr = displayStr.replace(/\\s*ℏ$/, '');\n\n if (originalAmountFloat < 0) {\n senders.push(`${transfer.accountId} (${displayStr} ℏ)`);\n } else if (originalAmountFloat > 0) {\n receivers.push(`${transfer.accountId} (${displayStr} ℏ)`);\n }\n }\n\n if (senders.length > 0 && receivers.length > 0) {\n return `Transfer of HBAR from ${senders.join(', ')} to ${receivers.join(\n ', '\n )}`;\n } else {\n return parsedTx.humanReadableType;\n }\n } else if (parsedTx.contractCall) {\n let contractCallSummary = `Contract call to ${parsedTx.contractCall.contractId} with ${parsedTx.contractCall.gas} gas`;\n\n if (parsedTx.contractCall.amount > 0) {\n contractCallSummary += ` and ${parsedTx.contractCall.amount} HBAR`;\n }\n\n if (parsedTx.contractCall.functionName) {\n contractCallSummary += ` calling function ${parsedTx.contractCall.functionName}`;\n }\n\n return contractCallSummary;\n } else if (parsedTx.tokenMint) {\n return `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;\n } else if (parsedTx.tokenBurn) {\n return `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;\n } else if (parsedTx.tokenCreation) {\n let summary = `Create token ${\n parsedTx.tokenCreation.tokenName || '(No Name)'\n } (${parsedTx.tokenCreation.tokenSymbol || '(No Symbol)'})`;\n if (parsedTx.tokenCreation.initialSupply) {\n summary += ` with initial supply ${parsedTx.tokenCreation.initialSupply}`;\n }\n if (parsedTx.tokenCreation.customFees?.length) {\n summary += ` including ${parsedTx.tokenCreation.customFees.length} custom fee(s)`;\n }\n return summary;\n } else if (parsedTx.tokenTransfers.length > 0) {\n const tokenGroups: Record<string, TokenAmount[]> = {};\n\n for (const transfer of parsedTx.tokenTransfers) {\n if (!tokenGroups[transfer.tokenId]) {\n tokenGroups[transfer.tokenId] = [];\n }\n tokenGroups[transfer.tokenId].push(transfer);\n }\n\n const tokenSummaries = [];\n\n for (const [tokenId, transfers] of Object.entries(tokenGroups)) {\n const tokenSenders = [];\n const tokenReceivers = [];\n\n for (const transfer of transfers) {\n const transferAmountValue = parseFloat(transfer.amount.toString());\n if (transferAmountValue < 0) {\n tokenSenders.push(\n `${transfer.accountId} (${Math.abs(transferAmountValue)})`\n );\n } else if (transferAmountValue > 0) {\n tokenReceivers.push(\n `${transfer.accountId} (${transferAmountValue})`\n );\n }\n }\n\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(\n ', '\n )} to ${tokenReceivers.join(', ')}`\n );\n }\n }\n\n if (tokenSummaries.length > 0) {\n return tokenSummaries.join('; ');\n } else {\n return parsedTx.humanReadableType;\n }\n } else if (parsedTx.consensusCreateTopic) {\n let summary = `Create new topic`;\n if (parsedTx.consensusCreateTopic.memo) {\n summary += ` with memo \"${parsedTx.consensusCreateTopic.memo}\"`;\n }\n if (parsedTx.consensusCreateTopic.autoRenewAccountId) {\n summary += `, auto-renew by ${parsedTx.consensusCreateTopic.autoRenewAccountId}`;\n }\n return summary;\n } else if (parsedTx.consensusSubmitMessage) {\n let summary = `Submit message`;\n if (parsedTx.consensusSubmitMessage.topicId) {\n summary += ` to topic ${parsedTx.consensusSubmitMessage.topicId}`;\n }\n if (parsedTx.consensusSubmitMessage.message) {\n if (parsedTx.consensusSubmitMessage.messageEncoding === 'utf8') {\n const messagePreview =\n parsedTx.consensusSubmitMessage.message.substring(0, 70);\n summary += `: \"${messagePreview}${\n parsedTx.consensusSubmitMessage.message.length > 70 ? '...' : ''\n }\"`;\n } else {\n summary += ` (binary message data, length: ${\n Buffer.from(parsedTx.consensusSubmitMessage.message, 'base64')\n .length\n } bytes)`;\n }\n }\n if (\n parsedTx.consensusSubmitMessage.chunkInfoNumber &&\n parsedTx.consensusSubmitMessage.chunkInfoTotal\n ) {\n summary += ` (chunk ${parsedTx.consensusSubmitMessage.chunkInfoNumber}/${parsedTx.consensusSubmitMessage.chunkInfoTotal})`;\n }\n return summary;\n } else if (parsedTx.fileCreate) {\n let summary = 'Create File';\n if (parsedTx.fileCreate.memo) {\n summary += ` with memo \"${parsedTx.fileCreate.memo}\"`;\n }\n if (parsedTx.fileCreate.contents) {\n summary += ` (includes content)`;\n }\n return summary;\n } else if (parsedTx.fileAppend) {\n return `Append to File ${parsedTx.fileAppend.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileUpdate) {\n return `Update File ${parsedTx.fileUpdate.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileDelete) {\n return `Delete File ${parsedTx.fileDelete.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.consensusUpdateTopic) {\n return `Update Topic ${\n parsedTx.consensusUpdateTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.consensusDeleteTopic) {\n return `Delete Topic ${\n parsedTx.consensusDeleteTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.tokenUpdate) {\n return `Update Token ${parsedTx.tokenUpdate.tokenId || '(Unknown ID)'}`;\n } else if (parsedTx.tokenFeeScheduleUpdate) {\n return `Update Fee Schedule for Token ${\n parsedTx.tokenFeeScheduleUpdate.tokenId || '(Unknown ID)'\n }`;\n } else if (parsedTx.utilPrng) {\n let summary = 'Generate Random Number';\n if (parsedTx.utilPrng.range && parsedTx.utilPrng.range > 0) {\n summary += ` (range up to ${parsedTx.utilPrng.range - 1})`;\n }\n return summary;\n } else if (parsedTx.tokenFreeze) {\n return `Freeze Token ${parsedTx.tokenFreeze.tokenId} for Account ${parsedTx.tokenFreeze.accountId}`;\n } else if (parsedTx.tokenUnfreeze) {\n return `Unfreeze Token ${parsedTx.tokenUnfreeze.tokenId} for Account ${parsedTx.tokenUnfreeze.accountId}`;\n } else if (parsedTx.tokenGrantKyc) {\n return `Grant KYC for Token ${parsedTx.tokenGrantKyc.tokenId} to Account ${parsedTx.tokenGrantKyc.accountId}`;\n } else if (parsedTx.tokenRevokeKyc) {\n return `Revoke KYC for Token ${parsedTx.tokenRevokeKyc.tokenId} from Account ${parsedTx.tokenRevokeKyc.accountId}`;\n } else if (parsedTx.tokenPause) {\n return `Pause Token ${parsedTx.tokenPause.tokenId}`;\n } else if (parsedTx.tokenUnpause) {\n return `Unpause Token ${parsedTx.tokenUnpause.tokenId}`;\n } else if (parsedTx.tokenWipeAccount) {\n let summary = `Wipe Token ${parsedTx.tokenWipeAccount.tokenId} from Account ${parsedTx.tokenWipeAccount.accountId}`;\n if (parsedTx.tokenWipeAccount.serialNumbers?.length) {\n summary += ` (Serials: ${parsedTx.tokenWipeAccount.serialNumbers.join(\n ', '\n )})`;\n }\n if (parsedTx.tokenWipeAccount.amount) {\n summary += ` (Amount: ${parsedTx.tokenWipeAccount.amount})`;\n }\n return summary;\n } else if (parsedTx.tokenDelete) {\n return `Delete Token ${parsedTx.tokenDelete.tokenId}`;\n } else if (parsedTx.tokenAssociate) {\n return `Associate Account ${\n parsedTx.tokenAssociate.accountId\n } with Tokens: ${parsedTx.tokenAssociate.tokenIds?.join(', ')}`;\n } else if (parsedTx.tokenDissociate) {\n return `Dissociate Account ${\n parsedTx.tokenDissociate.accountId\n } from Tokens: ${parsedTx.tokenDissociate.tokenIds?.join(', ')}`;\n } else if (parsedTx.cryptoDelete) {\n return `Delete Account ${parsedTx.cryptoDelete.deleteAccountId}`;\n }\n if (parsedTx.cryptoCreateAccount) {\n let summary = 'Create Account';\n if (parsedTx.cryptoCreateAccount.initialBalance && parsedTx.cryptoCreateAccount.initialBalance !== '0') {\n summary += ` with balance ${parsedTx.cryptoCreateAccount.initialBalance}`;\n }\n if (parsedTx.cryptoCreateAccount.alias) { summary += ` (Alias: ${parsedTx.cryptoCreateAccount.alias})`;}\n return summary;\n }\n if (parsedTx.cryptoUpdateAccount) {\n return `Update Account ${parsedTx.cryptoUpdateAccount.accountIdToUpdate || '(Unknown ID)'}`;\n }\n if (parsedTx.cryptoApproveAllowance) {\n let count = (parsedTx.cryptoApproveAllowance.hbarAllowances?.length || 0) +\n (parsedTx.cryptoApproveAllowance.tokenAllowances?.length || 0) +\n (parsedTx.cryptoApproveAllowance.nftAllowances?.length || 0);\n return `Approve ${count} Crypto Allowance(s)`;\n }\n if (parsedTx.cryptoDeleteAllowance) {\n return `Delete ${parsedTx.cryptoDeleteAllowance.nftAllowancesToRemove?.length || 0} NFT Crypto Allowance(s)`;\n }\n if (parsedTx.contractCreate) {\n let summary = 'Create Contract';\n if (parsedTx.contractCreate.memo) { summary += ` (Memo: ${parsedTx.contractCreate.memo})`; }\n return summary;\n }\n if (parsedTx.contractUpdate) {\n return `Update Contract ${parsedTx.contractUpdate.contractIdToUpdate || '(Unknown ID)'}`;\n }\n if (parsedTx.contractDelete) {\n let summary = `Delete Contract ${parsedTx.contractDelete.contractIdToDelete || '(Unknown ID)'}`;\n if (parsedTx.contractDelete.transferAccountId) { summary += ` (Transfer to Account: ${parsedTx.contractDelete.transferAccountId})`; }\n else if (parsedTx.contractDelete.transferContractId) { summary += ` (Transfer to Contract: ${parsedTx.contractDelete.transferContractId})`; }\n return summary;\n }\n if (parsedTx.humanReadableType && parsedTx.humanReadableType !== 'Unknown Transaction') {\n return parsedTx.humanReadableType;\n }\n if (parsedTx.tokenTransfers.length > 0) {\n const tokenGroups: Record<string, TokenAmount[]> = {};\n for (const transfer of parsedTx.tokenTransfers) {\n if (!tokenGroups[transfer.tokenId]) {\n tokenGroups[transfer.tokenId] = [];\n }\n tokenGroups[transfer.tokenId].push(transfer);\n }\n const tokenSummaries = [];\n for (const [tokenId, transfers] of Object.entries(tokenGroups)) {\n const tokenSenders = transfers\n .filter((t) => t.amount < 0)\n .map((t) => `${t.accountId} (${Math.abs(t.amount)})`);\n const tokenReceivers = transfers\n .filter((t) => t.amount > 0)\n .map((t) => `${t.accountId} (${t.amount})`);\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(\n ', '\n )} to ${tokenReceivers.join(', ')}`\n );\n } else if (tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Token ${tokenId} received by ${tokenReceivers.join(', ')}`\n );\n } else if (tokenSenders.length > 0) {\n tokenSummaries.push(\n `Token ${tokenId} sent from ${tokenSenders.join(', ')}`\n );\n }\n }\n if (tokenSummaries.length > 0) return tokenSummaries.join('; ');\n }\n\n return 'Unknown Transaction';\n }\n}\n"],"names":["ethers.decodeBase64","Buffer"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import Buffer from "./standards-sdk.es25.js";
2
- import { I as InscriptionSDK } from "./standards-sdk.es28.js";
2
+ import { I as InscriptionSDK } from "./standards-sdk.es26.js";
3
3
  import { Logger } from "./standards-sdk.es15.js";
4
4
  import { ProgressReporter } from "./standards-sdk.es17.js";
5
5
  async function inscribe(input, clientConfig, options, existingSDK) {
@@ -1,9 +1,9 @@
1
1
  import Buffer from "./standards-sdk.es25.js";
2
2
  import { PublicKey, Timestamp, AccountId } from "@hashgraph/sdk";
3
- import "./standards-sdk.es32.js";
3
+ import "./standards-sdk.es31.js";
4
4
  import { Logger } from "./standards-sdk.es15.js";
5
5
  import { proto } from "@hashgraph/proto";
6
- import axios from "./standards-sdk.es33.js";
6
+ import axios from "./standards-sdk.es32.js";
7
7
  class HederaMirrorNode {
8
8
  constructor(network, logger) {
9
9
  this.maxRetries = 3;
@@ -10,16 +10,16 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
10
10
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
11
11
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
12
12
  var _errors, _events, _functions, _abiCoder, _Interface_instances, getFunction_fn, getEvent_fn;
13
- import { keccak256 } from "./standards-sdk.es36.js";
14
- import { AbiCoder } from "./standards-sdk.es39.js";
15
- import { Result } from "./standards-sdk.es40.js";
16
- import { Fragment, ConstructorFragment, FunctionFragment, EventFragment, ErrorFragment, ParamType } from "./standards-sdk.es50.js";
17
- import { Typed } from "./standards-sdk.es56.js";
18
- import { defineProperties } from "./standards-sdk.es53.js";
19
- import { assertArgument, assert } from "./standards-sdk.es51.js";
20
- import { isHexString, dataSlice, concat, getBytesCopy, hexlify, getBytes, zeroPadBytes, zeroPadValue } from "./standards-sdk.es38.js";
21
- import { id } from "./standards-sdk.es54.js";
22
- import { getBigInt, toBeHex } from "./standards-sdk.es55.js";
13
+ import { keccak256 } from "./standards-sdk.es67.js";
14
+ import { AbiCoder } from "./standards-sdk.es53.js";
15
+ import { Result } from "./standards-sdk.es54.js";
16
+ import { Fragment, ConstructorFragment, FunctionFragment, EventFragment, ErrorFragment, ParamType } from "./standards-sdk.es64.js";
17
+ import { Typed } from "./standards-sdk.es68.js";
18
+ import { defineProperties } from "./standards-sdk.es50.js";
19
+ import { assertArgument, assert } from "./standards-sdk.es49.js";
20
+ import { isHexString, dataSlice, concat, getBytesCopy, hexlify, getBytes, zeroPadBytes, zeroPadValue } from "./standards-sdk.es48.js";
21
+ import { id } from "./standards-sdk.es66.js";
22
+ import { getBigInt, toBeHex } from "./standards-sdk.es51.js";
23
23
  class LogDescription {
24
24
  /**
25
25
  * @_ignore: