@hashgraphonline/standards-sdk 0.1.136-fix-hol-env.canary.a285980.31 → 0.1.137-feat-hcs-21.canary.5802d65.32

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 (227) hide show
  1. package/dist/cjs/hcs-21/base-client.d.ts +31 -0
  2. package/dist/cjs/hcs-21/base-client.d.ts.map +1 -0
  3. package/dist/cjs/hcs-21/browser.d.ts +20 -0
  4. package/dist/cjs/hcs-21/browser.d.ts.map +1 -0
  5. package/dist/cjs/hcs-21/errors.d.ts +6 -0
  6. package/dist/cjs/hcs-21/errors.d.ts.map +1 -0
  7. package/dist/cjs/hcs-21/index.d.ts +7 -0
  8. package/dist/cjs/hcs-21/index.d.ts.map +1 -0
  9. package/dist/cjs/hcs-21/sdk.d.ts +48 -0
  10. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -0
  11. package/dist/cjs/hcs-21/tx.d.ts +20 -0
  12. package/dist/cjs/hcs-21/tx.d.ts.map +1 -0
  13. package/dist/cjs/hcs-21/types.d.ts +72 -0
  14. package/dist/cjs/hcs-21/types.d.ts.map +1 -0
  15. package/dist/cjs/index.d.ts +1 -0
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/services/types.d.ts +1 -1
  18. package/dist/cjs/services/types.d.ts.map +1 -1
  19. package/dist/cjs/standards-sdk.cjs +2 -2
  20. package/dist/cjs/standards-sdk.cjs.map +1 -1
  21. package/dist/es/hcs-21/base-client.d.ts +31 -0
  22. package/dist/es/hcs-21/base-client.d.ts.map +1 -0
  23. package/dist/es/hcs-21/browser.d.ts +20 -0
  24. package/dist/es/hcs-21/browser.d.ts.map +1 -0
  25. package/dist/es/hcs-21/errors.d.ts +6 -0
  26. package/dist/es/hcs-21/errors.d.ts.map +1 -0
  27. package/dist/es/hcs-21/index.d.ts +7 -0
  28. package/dist/es/hcs-21/index.d.ts.map +1 -0
  29. package/dist/es/hcs-21/sdk.d.ts +48 -0
  30. package/dist/es/hcs-21/sdk.d.ts.map +1 -0
  31. package/dist/es/hcs-21/tx.d.ts +20 -0
  32. package/dist/es/hcs-21/tx.d.ts.map +1 -0
  33. package/dist/es/hcs-21/types.d.ts +72 -0
  34. package/dist/es/hcs-21/types.d.ts.map +1 -0
  35. package/dist/es/index.d.ts +1 -0
  36. package/dist/es/index.d.ts.map +1 -1
  37. package/dist/es/services/types.d.ts +1 -1
  38. package/dist/es/services/types.d.ts.map +1 -1
  39. package/dist/es/standards-sdk.es.js +66 -48
  40. package/dist/es/standards-sdk.es.js.map +1 -1
  41. package/dist/es/standards-sdk.es10.js +2 -2
  42. package/dist/es/standards-sdk.es100.js +231 -28
  43. package/dist/es/standards-sdk.es100.js.map +1 -1
  44. package/dist/es/standards-sdk.es101.js +109 -18
  45. package/dist/es/standards-sdk.es101.js.map +1 -1
  46. package/dist/es/standards-sdk.es102.js +32 -158
  47. package/dist/es/standards-sdk.es102.js.map +1 -1
  48. package/dist/es/standards-sdk.es103.js +80 -204
  49. package/dist/es/standards-sdk.es103.js.map +1 -1
  50. package/dist/es/standards-sdk.es104.js +21 -780
  51. package/dist/es/standards-sdk.es104.js.map +1 -1
  52. package/dist/es/standards-sdk.es105.js +140 -11
  53. package/dist/es/standards-sdk.es105.js.map +1 -1
  54. package/dist/es/standards-sdk.es106.js +29 -567
  55. package/dist/es/standards-sdk.es106.js.map +1 -1
  56. package/dist/es/standards-sdk.es107.js +17 -597
  57. package/dist/es/standards-sdk.es107.js.map +1 -1
  58. package/dist/es/standards-sdk.es108.js +159 -12
  59. package/dist/es/standards-sdk.es108.js.map +1 -1
  60. package/dist/es/standards-sdk.es109.js +208 -2
  61. package/dist/es/standards-sdk.es109.js.map +1 -1
  62. package/dist/es/standards-sdk.es110.js +774 -67
  63. package/dist/es/standards-sdk.es110.js.map +1 -1
  64. package/dist/es/standards-sdk.es111.js +11 -37
  65. package/dist/es/standards-sdk.es111.js.map +1 -1
  66. package/dist/es/standards-sdk.es112.js +567 -2
  67. package/dist/es/standards-sdk.es112.js.map +1 -1
  68. package/dist/es/standards-sdk.es113.js +576 -197
  69. package/dist/es/standards-sdk.es113.js.map +1 -1
  70. package/dist/es/standards-sdk.es114.js +12 -1139
  71. package/dist/es/standards-sdk.es114.js.map +1 -1
  72. package/dist/es/standards-sdk.es115.js +2 -306
  73. package/dist/es/standards-sdk.es115.js.map +1 -1
  74. package/dist/es/standards-sdk.es116.js +79 -418
  75. package/dist/es/standards-sdk.es116.js.map +1 -1
  76. package/dist/es/standards-sdk.es117.js +35 -351
  77. package/dist/es/standards-sdk.es117.js.map +1 -1
  78. package/dist/es/standards-sdk.es118.js +2 -761
  79. package/dist/es/standards-sdk.es118.js.map +1 -1
  80. package/dist/es/standards-sdk.es119.js +204 -185
  81. package/dist/es/standards-sdk.es119.js.map +1 -1
  82. package/dist/es/standards-sdk.es12.js +1 -1
  83. package/dist/es/standards-sdk.es120.js +1055 -1482
  84. package/dist/es/standards-sdk.es120.js.map +1 -1
  85. package/dist/es/standards-sdk.es121.js +265 -2042
  86. package/dist/es/standards-sdk.es121.js.map +1 -1
  87. package/dist/es/standards-sdk.es122.js +420 -50
  88. package/dist/es/standards-sdk.es122.js.map +1 -1
  89. package/dist/es/standards-sdk.es123.js +350 -82
  90. package/dist/es/standards-sdk.es123.js.map +1 -1
  91. package/dist/es/standards-sdk.es124.js +741 -139
  92. package/dist/es/standards-sdk.es124.js.map +1 -1
  93. package/dist/es/standards-sdk.es125.js +204 -7
  94. package/dist/es/standards-sdk.es125.js.map +1 -1
  95. package/dist/es/standards-sdk.es126.js +1533 -52
  96. package/dist/es/standards-sdk.es126.js.map +1 -1
  97. package/dist/es/standards-sdk.es127.js +2077 -59
  98. package/dist/es/standards-sdk.es127.js.map +1 -1
  99. package/dist/es/standards-sdk.es128.js +52 -28
  100. package/dist/es/standards-sdk.es128.js.map +1 -1
  101. package/dist/es/standards-sdk.es129.js +85 -692
  102. package/dist/es/standards-sdk.es129.js.map +1 -1
  103. package/dist/es/standards-sdk.es13.js +1 -1
  104. package/dist/es/standards-sdk.es130.js +135 -12250
  105. package/dist/es/standards-sdk.es130.js.map +1 -1
  106. package/dist/es/standards-sdk.es131.js +7 -138
  107. package/dist/es/standards-sdk.es131.js.map +1 -1
  108. package/dist/es/standards-sdk.es132.js +80 -36
  109. package/dist/es/standards-sdk.es132.js.map +1 -1
  110. package/dist/es/standards-sdk.es133.js +58 -49
  111. package/dist/es/standards-sdk.es133.js.map +1 -1
  112. package/dist/es/standards-sdk.es134.js +28 -64
  113. package/dist/es/standards-sdk.es134.js.map +1 -1
  114. package/dist/es/standards-sdk.es135.js +118 -152
  115. package/dist/es/standards-sdk.es135.js.map +1 -1
  116. package/dist/es/standards-sdk.es136.js +34 -314
  117. package/dist/es/standards-sdk.es136.js.map +1 -1
  118. package/dist/es/standards-sdk.es137.js +694 -346
  119. package/dist/es/standards-sdk.es137.js.map +1 -1
  120. package/dist/es/standards-sdk.es138.js +12216 -395
  121. package/dist/es/standards-sdk.es138.js.map +1 -1
  122. package/dist/es/standards-sdk.es139.js +55 -330
  123. package/dist/es/standards-sdk.es139.js.map +1 -1
  124. package/dist/es/standards-sdk.es14.js +1 -1
  125. package/dist/es/standards-sdk.es140.js +50 -62
  126. package/dist/es/standards-sdk.es140.js.map +1 -1
  127. package/dist/es/standards-sdk.es141.js +168 -13
  128. package/dist/es/standards-sdk.es141.js.map +1 -1
  129. package/dist/es/standards-sdk.es142.js +325 -0
  130. package/dist/es/standards-sdk.es142.js.map +1 -0
  131. package/dist/es/standards-sdk.es143.js +349 -0
  132. package/dist/es/standards-sdk.es143.js.map +1 -0
  133. package/dist/es/standards-sdk.es144.js +456 -0
  134. package/dist/es/standards-sdk.es144.js.map +1 -0
  135. package/dist/es/standards-sdk.es145.js +334 -0
  136. package/dist/es/standards-sdk.es145.js.map +1 -0
  137. package/dist/es/standards-sdk.es146.js +79 -0
  138. package/dist/es/standards-sdk.es146.js.map +1 -0
  139. package/dist/es/standards-sdk.es147.js +20 -0
  140. package/dist/es/standards-sdk.es147.js.map +1 -0
  141. package/dist/es/standards-sdk.es15.js +1 -1
  142. package/dist/es/standards-sdk.es16.js +1 -1
  143. package/dist/es/standards-sdk.es17.js +5 -5
  144. package/dist/es/standards-sdk.es19.js +12 -12
  145. package/dist/es/standards-sdk.es20.js +9 -9
  146. package/dist/es/standards-sdk.es21.js +1 -1
  147. package/dist/es/standards-sdk.es22.js +1 -1
  148. package/dist/es/standards-sdk.es23.js +1 -1
  149. package/dist/es/standards-sdk.es24.js +1 -1
  150. package/dist/es/standards-sdk.es25.js +1 -1
  151. package/dist/es/standards-sdk.es26.js +1 -1
  152. package/dist/es/standards-sdk.es27.js +1 -1
  153. package/dist/es/standards-sdk.es28.js +12 -12
  154. package/dist/es/standards-sdk.es3.js +2 -2
  155. package/dist/es/standards-sdk.es31.js +2 -2
  156. package/dist/es/standards-sdk.es32.js +4 -4
  157. package/dist/es/standards-sdk.es33.js +1 -1
  158. package/dist/es/standards-sdk.es36.js +6 -6
  159. package/dist/es/standards-sdk.es37.js +4 -4
  160. package/dist/es/standards-sdk.es38.js +2 -2
  161. package/dist/es/standards-sdk.es39.js +2 -2
  162. package/dist/es/standards-sdk.es40.js +1 -1
  163. package/dist/es/standards-sdk.es41.js +1 -1
  164. package/dist/es/standards-sdk.es42.js +2 -2
  165. package/dist/es/standards-sdk.es47.js +1 -1
  166. package/dist/es/standards-sdk.es5.js +2 -2
  167. package/dist/es/standards-sdk.es52.js +1 -1
  168. package/dist/es/standards-sdk.es54.js +1 -1
  169. package/dist/es/standards-sdk.es57.js +2 -2
  170. package/dist/es/standards-sdk.es59.js +1 -1
  171. package/dist/es/standards-sdk.es6.js +2 -2
  172. package/dist/es/standards-sdk.es60.js +1 -1
  173. package/dist/es/standards-sdk.es61.js +7 -7
  174. package/dist/es/standards-sdk.es63.js +1 -1
  175. package/dist/es/standards-sdk.es65.js +2 -2
  176. package/dist/es/standards-sdk.es66.js +3 -3
  177. package/dist/es/standards-sdk.es69.js +2 -2
  178. package/dist/es/standards-sdk.es7.js +2 -2
  179. package/dist/es/standards-sdk.es70.js +3 -3
  180. package/dist/es/standards-sdk.es71.js +2 -2
  181. package/dist/es/standards-sdk.es72.js +1 -1
  182. package/dist/es/standards-sdk.es75.js +2 -2
  183. package/dist/es/standards-sdk.es77.js +2 -2
  184. package/dist/es/standards-sdk.es78.js +4 -4
  185. package/dist/es/standards-sdk.es79.js +1 -1
  186. package/dist/es/standards-sdk.es8.js +1 -1
  187. package/dist/es/standards-sdk.es80.js +25 -27
  188. package/dist/es/standards-sdk.es80.js.map +1 -1
  189. package/dist/es/standards-sdk.es81.js +6 -78
  190. package/dist/es/standards-sdk.es81.js.map +1 -1
  191. package/dist/es/standards-sdk.es82.js +27 -64
  192. package/dist/es/standards-sdk.es82.js.map +1 -1
  193. package/dist/es/standards-sdk.es83.js +67 -23
  194. package/dist/es/standards-sdk.es83.js.map +1 -1
  195. package/dist/es/standards-sdk.es84.js +165 -23
  196. package/dist/es/standards-sdk.es84.js.map +1 -1
  197. package/dist/es/standards-sdk.es85.js +31 -166
  198. package/dist/es/standards-sdk.es85.js.map +1 -1
  199. package/dist/es/standards-sdk.es86.js +24 -127
  200. package/dist/es/standards-sdk.es86.js.map +1 -1
  201. package/dist/es/standards-sdk.es87.js +65 -142
  202. package/dist/es/standards-sdk.es87.js.map +1 -1
  203. package/dist/es/standards-sdk.es88.js +52 -127
  204. package/dist/es/standards-sdk.es88.js.map +1 -1
  205. package/dist/es/standards-sdk.es89.js +26 -41
  206. package/dist/es/standards-sdk.es89.js.map +1 -1
  207. package/dist/es/standards-sdk.es90.js +23 -261
  208. package/dist/es/standards-sdk.es90.js.map +1 -1
  209. package/dist/es/standards-sdk.es91.js +162 -93
  210. package/dist/es/standards-sdk.es91.js.map +1 -1
  211. package/dist/es/standards-sdk.es92.js +112 -83
  212. package/dist/es/standards-sdk.es92.js.map +1 -1
  213. package/dist/es/standards-sdk.es93.js +156 -28
  214. package/dist/es/standards-sdk.es93.js.map +1 -1
  215. package/dist/es/standards-sdk.es94.js +133 -225
  216. package/dist/es/standards-sdk.es94.js.map +1 -1
  217. package/dist/es/standards-sdk.es95.js +40 -108
  218. package/dist/es/standards-sdk.es95.js.map +1 -1
  219. package/dist/es/standards-sdk.es96.js +253 -24
  220. package/dist/es/standards-sdk.es96.js.map +1 -1
  221. package/dist/es/standards-sdk.es97.js +96 -80
  222. package/dist/es/standards-sdk.es97.js.map +1 -1
  223. package/dist/es/standards-sdk.es98.js +91 -21
  224. package/dist/es/standards-sdk.es98.js.map +1 -1
  225. package/dist/es/standards-sdk.es99.js +28 -141
  226. package/dist/es/standards-sdk.es99.js.map +1 -1
  227. package/package.json +2 -1
@@ -1,1143 +1,16 @@
1
- import { proto } from "@hashgraph/proto";
2
- import { AccountId, Long, TokenId } from "@hashgraph/sdk";
3
- import { parseKey, hasTransactionType, extractTransactionBody } from "./standards-sdk.es140.js";
4
- import { Buffer } from "buffer";
5
- class HTSParser {
6
- /**
7
- * Main entry point for parsing HTS transactions from a Transaction object
8
- * This method bridges between the Transaction object and the protobuf parsers
9
- */
10
- static parseHTSTransaction(transaction) {
11
- try {
12
- const transactionBody = transaction._transactionBody;
13
- if (!transactionBody) {
14
- return {};
15
- }
16
- if (transactionBody.tokenCreation) {
17
- const tokenCreation = this.parseTokenCreate(
18
- transactionBody.tokenCreation
19
- );
20
- if (tokenCreation) {
21
- return {
22
- type: "TOKENCREATE",
23
- humanReadableType: "Token Creation",
24
- tokenCreation
25
- };
26
- }
27
- }
28
- if (transactionBody.tokenMint) {
29
- const tokenMint = this.parseTokenMint(transactionBody.tokenMint);
30
- if (tokenMint) {
31
- return {
32
- type: "TOKENMINT",
33
- humanReadableType: "Token Mint",
34
- tokenMint
35
- };
36
- }
37
- }
38
- if (transactionBody.tokenBurn) {
39
- const tokenBurn = this.parseTokenBurn(transactionBody.tokenBurn);
40
- if (tokenBurn) {
41
- return {
42
- type: "TOKENBURN",
43
- humanReadableType: "Token Burn",
44
- tokenBurn
45
- };
46
- }
47
- }
48
- if (transactionBody.tokenUpdate) {
49
- const tokenUpdate = this.parseTokenUpdate(transactionBody.tokenUpdate);
50
- if (tokenUpdate) {
51
- return {
52
- type: "TOKENUPDATE",
53
- humanReadableType: "Token Update",
54
- tokenUpdate
55
- };
56
- }
57
- }
58
- if (transactionBody.tokenFreeze) {
59
- const tokenFreeze = this.parseTokenFreeze(transactionBody.tokenFreeze);
60
- if (tokenFreeze) {
61
- return {
62
- type: "TOKENFREEZE",
63
- humanReadableType: "Token Freeze",
64
- tokenFreeze
65
- };
66
- }
67
- }
68
- if (transactionBody.tokenUnfreeze) {
69
- const tokenUnfreeze = this.parseTokenUnfreeze(
70
- transactionBody.tokenUnfreeze
71
- );
72
- if (tokenUnfreeze) {
73
- return {
74
- type: "TOKENUNFREEZE",
75
- humanReadableType: "Token Unfreeze",
76
- tokenUnfreeze
77
- };
78
- }
79
- }
80
- if (transactionBody.tokenGrantKyc) {
81
- const tokenGrantKyc = this.parseTokenGrantKyc(
82
- transactionBody.tokenGrantKyc
83
- );
84
- if (tokenGrantKyc) {
85
- return {
86
- type: "TOKENGRANTKYC",
87
- humanReadableType: "Token Grant KYC",
88
- tokenGrantKyc
89
- };
90
- }
91
- }
92
- if (transactionBody.tokenRevokeKyc) {
93
- const tokenRevokeKyc = this.parseTokenRevokeKyc(
94
- transactionBody.tokenRevokeKyc
95
- );
96
- if (tokenRevokeKyc) {
97
- return {
98
- type: "TOKENREVOKEKYC",
99
- humanReadableType: "Token Revoke KYC",
100
- tokenRevokeKyc
101
- };
102
- }
103
- }
104
- if (transactionBody.tokenPause) {
105
- const tokenPause = this.parseTokenPause(transactionBody.tokenPause);
106
- if (tokenPause) {
107
- return {
108
- type: "TOKENPAUSE",
109
- humanReadableType: "Token Pause",
110
- tokenPause
111
- };
112
- }
113
- }
114
- if (transactionBody.tokenUnpause) {
115
- const tokenUnpause = this.parseTokenUnpause(
116
- transactionBody.tokenUnpause
117
- );
118
- if (tokenUnpause) {
119
- return {
120
- type: "TOKENUNPAUSE",
121
- humanReadableType: "Token Unpause",
122
- tokenUnpause
123
- };
124
- }
125
- }
126
- if (transactionBody.tokenWipe) {
127
- const tokenWipeAccount = this.parseTokenWipeAccount(
128
- transactionBody.tokenWipe
129
- );
130
- if (tokenWipeAccount) {
131
- return {
132
- type: "TOKENWIPEACCOUNT",
133
- humanReadableType: "Token Wipe Account",
134
- tokenWipeAccount
135
- };
136
- }
137
- }
138
- if (transactionBody.tokenDeletion) {
139
- const tokenDelete = this.parseTokenDelete(
140
- transactionBody.tokenDeletion
141
- );
142
- if (tokenDelete) {
143
- return {
144
- type: "TOKENDELETE",
145
- humanReadableType: "Token Delete",
146
- tokenDelete
147
- };
148
- }
149
- }
150
- if (transactionBody.tokenAssociate) {
151
- const tokenAssociate = this.parseTokenAssociate(
152
- transactionBody.tokenAssociate
153
- );
154
- if (tokenAssociate) {
155
- return {
156
- type: "TOKENASSOCIATE",
157
- humanReadableType: "Token Associate",
158
- tokenAssociate
159
- };
160
- }
161
- }
162
- if (transactionBody.tokenDissociate) {
163
- const tokenDissociate = this.parseTokenDissociate(
164
- transactionBody.tokenDissociate
165
- );
166
- if (tokenDissociate) {
167
- return {
168
- type: "TOKENDISSOCIATE",
169
- humanReadableType: "Token Dissociate",
170
- tokenDissociate
171
- };
172
- }
173
- }
174
- if (transactionBody.tokenFeeScheduleUpdate) {
175
- const tokenFeeScheduleUpdate = this.parseTokenFeeScheduleUpdate(
176
- transactionBody.tokenFeeScheduleUpdate
177
- );
178
- if (tokenFeeScheduleUpdate) {
179
- return {
180
- type: "TOKENFEESCHEDULEUPDATE",
181
- humanReadableType: "Token Fee Schedule Update",
182
- tokenFeeScheduleUpdate
183
- };
184
- }
185
- }
186
- const airdrop = this.parseTokenAirdrop(transaction);
187
- if (airdrop) {
188
- return {
189
- type: "TOKENAIRDROP",
190
- humanReadableType: "Token Airdrop",
191
- tokenAirdrop: airdrop
192
- };
193
- }
194
- return {};
195
- } catch (error) {
196
- console.warn("[HTSParser] Failed to parse HTS transaction:", error);
197
- return {};
198
- }
199
- }
200
- static parseTokenCreate(body) {
201
- if (!body) return void 0;
202
- const data = {};
203
- if (body.name) {
204
- data.tokenName = body.name;
205
- }
206
- if (body.symbol) {
207
- data.tokenSymbol = body.symbol;
208
- }
209
- if (body.treasury) {
210
- data.treasuryAccountId = new AccountId(
211
- body.treasury.shardNum ?? 0,
212
- body.treasury.realmNum ?? 0,
213
- body.treasury.accountNum ?? 0
214
- ).toString();
215
- }
216
- if (body.initialSupply) {
217
- data.initialSupply = Long.fromValue(body.initialSupply).toString();
218
- }
219
- if (body.decimals !== void 0 && body.decimals !== null) {
220
- data.decimals = Long.fromValue(body.decimals).toNumber();
221
- }
222
- if (body.maxSupply) {
223
- data.maxSupply = Long.fromValue(body.maxSupply).toString();
224
- }
225
- if (body.memo) {
226
- data.memo = body.memo;
227
- }
228
- if (body.tokenType !== null && body.tokenType !== void 0) {
229
- data.tokenType = proto.TokenType[body.tokenType];
230
- }
231
- if (body.supplyType !== null && body.supplyType !== void 0) {
232
- data.supplyType = proto.TokenSupplyType[body.supplyType];
233
- }
234
- data.adminKey = parseKey(body.adminKey);
235
- data.kycKey = parseKey(body.kycKey);
236
- data.freezeKey = parseKey(body.freezeKey);
237
- data.wipeKey = parseKey(body.wipeKey);
238
- data.supplyKey = parseKey(body.supplyKey);
239
- data.feeScheduleKey = parseKey(body.feeScheduleKey);
240
- data.pauseKey = parseKey(body.pauseKey);
241
- if (body.autoRenewAccount) {
242
- data.autoRenewAccount = new AccountId(
243
- body.autoRenewAccount.shardNum ?? 0,
244
- body.autoRenewAccount.realmNum ?? 0,
245
- body.autoRenewAccount.accountNum ?? 0
246
- ).toString();
247
- }
248
- if (body.autoRenewPeriod?.seconds) {
249
- data.autoRenewPeriod = Long.fromValue(
250
- body.autoRenewPeriod.seconds
251
- ).toString();
252
- }
253
- if (body.customFees && body.customFees.length > 0) {
254
- data.customFees = body.customFees.map((fee) => {
255
- const feeCollectorAccountId = fee.feeCollectorAccountId ? new AccountId(
256
- fee.feeCollectorAccountId.shardNum ?? 0,
257
- fee.feeCollectorAccountId.realmNum ?? 0,
258
- fee.feeCollectorAccountId.accountNum ?? 0
259
- ).toString() : "Not Set";
260
- const commonFeeData = {
261
- feeCollectorAccountId,
262
- allCollectorsAreExempt: fee.allCollectorsAreExempt || false
263
- };
264
- if (fee.fixedFee) {
265
- return {
266
- ...commonFeeData,
267
- feeType: "FIXED_FEE",
268
- fixedFee: {
269
- amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),
270
- denominatingTokenId: fee.fixedFee.denominatingTokenId ? new TokenId(
271
- fee.fixedFee.denominatingTokenId.shardNum ?? 0,
272
- fee.fixedFee.denominatingTokenId.realmNum ?? 0,
273
- fee.fixedFee.denominatingTokenId.tokenNum ?? 0
274
- ).toString() : void 0
275
- }
276
- };
277
- } else if (fee.fractionalFee) {
278
- return {
279
- ...commonFeeData,
280
- feeType: "FRACTIONAL_FEE",
281
- fractionalFee: {
282
- numerator: Long.fromValue(
283
- fee.fractionalFee.fractionalAmount?.numerator || 0
284
- ).toString(),
285
- denominator: Long.fromValue(
286
- fee.fractionalFee.fractionalAmount?.denominator || 1
287
- ).toString(),
288
- minimumAmount: Long.fromValue(
289
- fee.fractionalFee.minimumAmount || 0
290
- ).toString(),
291
- maximumAmount: Long.fromValue(
292
- fee.fractionalFee.maximumAmount || 0
293
- ).toString(),
294
- netOfTransfers: fee.fractionalFee.netOfTransfers || false
295
- }
296
- };
297
- } else if (fee.royaltyFee) {
298
- let fallbackFeeData = void 0;
299
- if (fee.royaltyFee.fallbackFee) {
300
- fallbackFeeData = {
301
- amount: Long.fromValue(
302
- fee.royaltyFee.fallbackFee.amount || 0
303
- ).toString(),
304
- denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId ? new TokenId(
305
- fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ?? 0,
306
- fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ?? 0,
307
- fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ?? 0
308
- ).toString() : void 0
309
- };
310
- }
311
- return {
312
- ...commonFeeData,
313
- feeType: "ROYALTY_FEE",
314
- royaltyFee: {
315
- numerator: Long.fromValue(
316
- fee.royaltyFee.exchangeValueFraction?.numerator || 0
317
- ).toString(),
318
- denominator: Long.fromValue(
319
- fee.royaltyFee.exchangeValueFraction?.denominator || 1
320
- ).toString(),
321
- fallbackFee: fallbackFeeData
322
- }
323
- };
324
- }
325
- return {
326
- ...commonFeeData,
327
- feeType: "FIXED_FEE",
328
- fixedFee: { amount: "0" }
329
- };
330
- });
331
- }
332
- return data;
333
- }
334
- static parseTokenMint(body) {
335
- if (!body || !body.token || body.amount === null || body.amount === void 0) {
336
- return void 0;
337
- }
338
- const data = {
339
- tokenId: new TokenId(
340
- body.token.shardNum ?? 0,
341
- body.token.realmNum ?? 0,
342
- body.token.tokenNum ?? 0
343
- ).toString(),
344
- amount: Long.fromValue(body.amount).toNumber()
345
- };
346
- if (body.metadata && body.metadata.length > 0) {
347
- data.metadata = body.metadata.map(
348
- (meta) => Buffer.from(meta).toString("base64")
349
- );
350
- }
351
- return data;
352
- }
353
- static parseTokenBurn(body) {
354
- if (!body || !body.token || body.amount === null || body.amount === void 0) {
355
- return void 0;
356
- }
357
- const data = {
358
- tokenId: new TokenId(
359
- body.token.shardNum ?? 0,
360
- body.token.realmNum ?? 0,
361
- body.token.tokenNum ?? 0
362
- ).toString(),
363
- amount: Long.fromValue(body.amount).toNumber()
364
- };
365
- if (body.serialNumbers && body.serialNumbers.length > 0) {
366
- data.serialNumbers = body.serialNumbers.map(
367
- (sn) => Long.fromValue(sn).toNumber()
368
- );
369
- }
370
- return data;
371
- }
372
- static parseTokenUpdate(body) {
373
- if (!body) return void 0;
374
- const data = {};
375
- if (body.token) {
376
- data.tokenId = new TokenId(
377
- body.token.shardNum ?? 0,
378
- body.token.realmNum ?? 0,
379
- body.token.tokenNum ?? 0
380
- ).toString();
381
- }
382
- if (body.name) {
383
- data.name = body.name;
384
- }
385
- if (body.symbol) {
386
- data.symbol = body.symbol;
387
- }
388
- if (body.treasury) {
389
- data.treasuryAccountId = new AccountId(
390
- body.treasury.shardNum ?? 0,
391
- body.treasury.realmNum ?? 0,
392
- body.treasury.accountNum ?? 0
393
- ).toString();
394
- }
395
- data.adminKey = parseKey(body.adminKey);
396
- data.kycKey = parseKey(body.kycKey);
397
- data.freezeKey = parseKey(body.freezeKey);
398
- data.wipeKey = parseKey(body.wipeKey);
399
- data.supplyKey = parseKey(body.supplyKey);
400
- data.feeScheduleKey = parseKey(body.feeScheduleKey);
401
- data.pauseKey = parseKey(body.pauseKey);
402
- if (body.autoRenewAccount) {
403
- data.autoRenewAccountId = new AccountId(
404
- body.autoRenewAccount.shardNum ?? 0,
405
- body.autoRenewAccount.realmNum ?? 0,
406
- body.autoRenewAccount.accountNum ?? 0
407
- ).toString();
408
- }
409
- if (body.autoRenewPeriod?.seconds) {
410
- data.autoRenewPeriod = Long.fromValue(
411
- body.autoRenewPeriod.seconds
412
- ).toString();
413
- }
414
- if (body.memo?.value !== void 0) {
415
- data.memo = body.memo.value;
416
- }
417
- if (body.expiry?.seconds) {
418
- data.expiry = `${Long.fromValue(body.expiry.seconds).toString()}.${body.expiry.nanos}`;
419
- }
420
- return data;
421
- }
422
- static parseTokenFeeScheduleUpdate(body) {
423
- if (!body) return void 0;
424
- const data = {};
425
- if (body.tokenId) {
426
- data.tokenId = new TokenId(
427
- body.tokenId.shardNum ?? 0,
428
- body.tokenId.realmNum ?? 0,
429
- body.tokenId.tokenNum ?? 0
430
- ).toString();
431
- }
432
- if (body.customFees && body.customFees.length > 0) {
433
- data.customFees = body.customFees.map((fee) => {
434
- const feeCollectorAccountId = fee.feeCollectorAccountId ? new AccountId(
435
- fee.feeCollectorAccountId.shardNum ?? 0,
436
- fee.feeCollectorAccountId.realmNum ?? 0,
437
- fee.feeCollectorAccountId.accountNum ?? 0
438
- ).toString() : "Not Set";
439
- const commonFeeData = {
440
- feeCollectorAccountId,
441
- allCollectorsAreExempt: fee.allCollectorsAreExempt || false
442
- };
443
- if (fee.fixedFee) {
444
- return {
445
- ...commonFeeData,
446
- feeType: "FIXED_FEE",
447
- fixedFee: {
448
- amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),
449
- denominatingTokenId: fee.fixedFee.denominatingTokenId ? new TokenId(
450
- fee.fixedFee.denominatingTokenId.shardNum ?? 0,
451
- fee.fixedFee.denominatingTokenId.realmNum ?? 0,
452
- fee.fixedFee.denominatingTokenId.tokenNum ?? 0
453
- ).toString() : void 0
454
- }
455
- };
456
- } else if (fee.fractionalFee) {
457
- return {
458
- ...commonFeeData,
459
- feeType: "FRACTIONAL_FEE",
460
- fractionalFee: {
461
- numerator: Long.fromValue(
462
- fee.fractionalFee.fractionalAmount?.numerator || 0
463
- ).toString(),
464
- denominator: Long.fromValue(
465
- fee.fractionalFee.fractionalAmount?.denominator || 1
466
- ).toString(),
467
- minimumAmount: Long.fromValue(
468
- fee.fractionalFee.minimumAmount || 0
469
- ).toString(),
470
- maximumAmount: Long.fromValue(
471
- fee.fractionalFee.maximumAmount || 0
472
- ).toString(),
473
- netOfTransfers: fee.fractionalFee.netOfTransfers || false
474
- }
475
- };
476
- } else if (fee.royaltyFee) {
477
- let fallbackFeeData = void 0;
478
- if (fee.royaltyFee.fallbackFee) {
479
- fallbackFeeData = {
480
- amount: Long.fromValue(
481
- fee.royaltyFee.fallbackFee.amount || 0
482
- ).toString(),
483
- denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId ? new TokenId(
484
- fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ?? 0,
485
- fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ?? 0,
486
- fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ?? 0
487
- ).toString() : void 0
488
- };
489
- }
490
- return {
491
- ...commonFeeData,
492
- feeType: "ROYALTY_FEE",
493
- royaltyFee: {
494
- numerator: Long.fromValue(
495
- fee.royaltyFee.exchangeValueFraction?.numerator || 0
496
- ).toString(),
497
- denominator: Long.fromValue(
498
- fee.royaltyFee.exchangeValueFraction?.denominator || 1
499
- ).toString(),
500
- fallbackFee: fallbackFeeData
501
- }
502
- };
503
- }
504
- return {
505
- ...commonFeeData,
506
- feeType: "FIXED_FEE",
507
- fixedFee: { amount: "0" }
508
- };
509
- });
510
- }
511
- return data;
512
- }
513
- static parseTokenFreeze(body) {
514
- if (!body) return void 0;
515
- const data = {};
516
- if (body.token) {
517
- data.tokenId = new TokenId(
518
- body.token.shardNum ?? 0,
519
- body.token.realmNum ?? 0,
520
- body.token.tokenNum ?? 0
521
- ).toString();
522
- }
523
- if (body.account) {
524
- data.accountId = new AccountId(
525
- body.account.shardNum ?? 0,
526
- body.account.realmNum ?? 0,
527
- body.account.accountNum ?? 0
528
- ).toString();
529
- }
530
- return data;
531
- }
532
- static parseTokenUnfreeze(body) {
533
- if (!body) return void 0;
534
- const data = {};
535
- if (body.token) {
536
- data.tokenId = new TokenId(
537
- body.token.shardNum ?? 0,
538
- body.token.realmNum ?? 0,
539
- body.token.tokenNum ?? 0
540
- ).toString();
541
- }
542
- if (body.account) {
543
- data.accountId = new AccountId(
544
- body.account.shardNum ?? 0,
545
- body.account.realmNum ?? 0,
546
- body.account.accountNum ?? 0
547
- ).toString();
548
- }
549
- return data;
550
- }
551
- static parseTokenGrantKyc(body) {
552
- if (!body) return void 0;
553
- const data = {};
554
- if (body.token) {
555
- data.tokenId = new TokenId(
556
- body.token.shardNum ?? 0,
557
- body.token.realmNum ?? 0,
558
- body.token.tokenNum ?? 0
559
- ).toString();
560
- }
561
- if (body.account) {
562
- data.accountId = new AccountId(
563
- body.account.shardNum ?? 0,
564
- body.account.realmNum ?? 0,
565
- body.account.accountNum ?? 0
566
- ).toString();
567
- }
568
- return data;
569
- }
570
- static parseTokenRevokeKyc(body) {
571
- if (!body) return void 0;
572
- const data = {};
573
- if (body.token) {
574
- data.tokenId = new TokenId(
575
- body.token.shardNum ?? 0,
576
- body.token.realmNum ?? 0,
577
- body.token.tokenNum ?? 0
578
- ).toString();
579
- }
580
- if (body.account) {
581
- data.accountId = new AccountId(
582
- body.account.shardNum ?? 0,
583
- body.account.realmNum ?? 0,
584
- body.account.accountNum ?? 0
585
- ).toString();
586
- }
587
- return data;
588
- }
589
- static parseTokenPause(body) {
590
- if (!body) return void 0;
591
- const data = {};
592
- if (body.token) {
593
- data.tokenId = new TokenId(
594
- body.token.shardNum ?? 0,
595
- body.token.realmNum ?? 0,
596
- body.token.tokenNum ?? 0
597
- ).toString();
598
- }
599
- return data;
600
- }
601
- static parseTokenUnpause(body) {
602
- if (!body) return void 0;
603
- const data = {};
604
- if (body.token) {
605
- data.tokenId = new TokenId(
606
- body.token.shardNum ?? 0,
607
- body.token.realmNum ?? 0,
608
- body.token.tokenNum ?? 0
609
- ).toString();
610
- }
611
- return data;
612
- }
613
- static parseTokenWipeAccount(body) {
614
- if (!body) return void 0;
615
- const data = {};
616
- if (body.token) {
617
- data.tokenId = new TokenId(
618
- body.token.shardNum ?? 0,
619
- body.token.realmNum ?? 0,
620
- body.token.tokenNum ?? 0
621
- ).toString();
622
- }
623
- if (body.account) {
624
- data.accountId = new AccountId(
625
- body.account.shardNum ?? 0,
626
- body.account.realmNum ?? 0,
627
- body.account.accountNum ?? 0
628
- ).toString();
629
- }
630
- if (body.serialNumbers && body.serialNumbers.length > 0) {
631
- data.serialNumbers = body.serialNumbers.map(
632
- (sn) => Long.fromValue(sn).toString()
633
- );
634
- }
635
- if (body.amount) {
636
- data.amount = Long.fromValue(body.amount).toString();
637
- }
638
- return data;
639
- }
640
- static parseTokenDelete(body) {
641
- if (!body) return void 0;
642
- const data = {};
643
- if (body.token) {
644
- data.tokenId = new TokenId(
645
- body.token.shardNum ?? 0,
646
- body.token.realmNum ?? 0,
647
- body.token.tokenNum ?? 0
648
- ).toString();
649
- }
650
- return data;
651
- }
652
- static parseTokenAssociate(body) {
653
- if (!body) return void 0;
654
- const data = {};
655
- if (body.account) {
656
- data.accountId = new AccountId(
657
- body.account.shardNum ?? 0,
658
- body.account.realmNum ?? 0,
659
- body.account.accountNum ?? 0
660
- ).toString();
661
- }
662
- if (body.tokens && body.tokens.length > 0) {
663
- data.tokenIds = body.tokens.map(
664
- (t) => new TokenId(
665
- t.shardNum ?? 0,
666
- t.realmNum ?? 0,
667
- t.tokenNum ?? 0
668
- ).toString()
669
- );
670
- }
671
- return data;
672
- }
673
- static parseTokenDissociate(body) {
674
- if (!body) return void 0;
675
- const data = {};
676
- if (body.account) {
677
- data.accountId = new AccountId(
678
- body.account.shardNum ?? 0,
679
- body.account.realmNum ?? 0,
680
- body.account.accountNum ?? 0
681
- ).toString();
682
- }
683
- if (body.tokens && body.tokens.length > 0) {
684
- data.tokenIds = body.tokens.map(
685
- (t) => new TokenId(
686
- t.shardNum ?? 0,
687
- t.realmNum ?? 0,
688
- t.tokenNum ?? 0
689
- ).toString()
690
- );
691
- }
692
- return data;
693
- }
694
- /**
695
- * Parse token airdrop transaction for both fungible tokens and NFTs
696
- * Extracts airdrop transfers from transaction protobuf data
697
- */
698
- static parseTokenAirdrop(transaction) {
699
- try {
700
- const transactionBody = transaction._transactionBody;
701
- if (transactionBody?.tokenAirdrop) {
702
- const airdrop = transactionBody.tokenAirdrop;
703
- return {
704
- tokenTransfers: (airdrop.tokenTransfers || []).map(
705
- (transfer) => ({
706
- tokenId: transfer.token?.toString() || "Unknown",
707
- transfers: (transfer.transfers || []).map((t) => ({
708
- accountId: t.accountID?.toString() || "Unknown",
709
- amount: t.amount?.toString() || "0",
710
- serialNumbers: t.serialNumbers?.map((sn) => sn.toString())
711
- }))
712
- })
713
- )
714
- };
715
- }
716
- if (hasTransactionType(transaction, "tokenAirdrop")) {
717
- const txBody = extractTransactionBody(transaction);
718
- if (txBody?.tokenAirdrop) {
719
- return this.parseTokenAirdropFromProto(txBody.tokenAirdrop);
720
- }
721
- }
722
- const tx = transaction;
723
- const tokenTransfersList = tx._tokenTransfers || [];
724
- if (tokenTransfersList.length > 0) {
725
- return {
726
- tokenTransfers: tokenTransfersList.map((transfer) => ({
727
- tokenId: transfer.tokenId?.toString() || "Unknown",
728
- transfers: (transfer.transfers || []).map((t) => ({
729
- accountId: t.accountId?.toString() || "Unknown",
730
- amount: t.amount?.toString() || "0",
731
- serialNumbers: t.serialNumbers?.map((sn) => sn.toString())
732
- }))
733
- }))
734
- };
735
- }
736
- return null;
737
- } catch (error) {
738
- console.warn("[HTSParser] Failed to parse token airdrop:", error);
739
- return null;
740
- }
741
- }
742
- /**
743
- * Parse token airdrop from protobuf data for scheduled transactions
744
- */
745
- static parseTokenAirdropFromProto(airdrop) {
746
- const tokenTransfers = [];
747
- if (airdrop.tokenTransfers) {
748
- for (const tokenTransfer of airdrop.tokenTransfers) {
749
- const token = tokenTransfer.token ? new TokenId(
750
- tokenTransfer.token.shardNum ?? 0,
751
- tokenTransfer.token.realmNum ?? 0,
752
- tokenTransfer.token.tokenNum ?? 0
753
- ) : null;
754
- const transfers = [];
755
- if (tokenTransfer.transfers) {
756
- for (const transfer of tokenTransfer.transfers) {
757
- const accountId = transfer.accountID ? new AccountId(
758
- transfer.accountID.shardNum ?? 0,
759
- transfer.accountID.realmNum ?? 0,
760
- transfer.accountID.accountNum ?? 0
761
- ) : null;
762
- transfers.push({
763
- accountId: accountId?.toString() || "Unknown",
764
- amount: transfer.amount ? Long.fromValue(transfer.amount).toString() : "0",
765
- serialNumbers: transfer.serialNumbers?.map(
766
- (sn) => Long.fromValue(sn).toString()
767
- )
768
- });
769
- }
770
- }
771
- tokenTransfers.push({
772
- tokenId: token?.toString() || "Unknown",
773
- transfers
774
- });
775
- }
776
- }
777
- return { tokenTransfers };
778
- }
779
- /**
780
- * Extract token creation data from Transaction object internal fields
781
- * This handles the case where token creation data is stored in Transaction internals
782
- */
783
- static extractTokenCreationFromTransaction(transaction) {
784
- try {
785
- const tx = transaction;
786
- if (tx._tokenName || tx._tokenSymbol) {
787
- const result = {
788
- tokenName: tx._tokenName || "Unknown Token",
789
- tokenSymbol: tx._tokenSymbol || "UNKNOWN",
790
- initialSupply: tx._initialSupply?.toString() || "0",
791
- decimals: Number(tx._decimals || 0),
792
- treasuryAccountId: tx._treasuryAccountId?.toString() || "Unknown"
793
- };
794
- if (tx._maxSupply) {
795
- result.maxSupply = tx._maxSupply.toString();
796
- }
797
- if (tx._tokenType) {
798
- result.tokenType = tx._tokenType.toString ? tx._tokenType.toString() : String(tx._tokenType);
799
- }
800
- if (tx._supplyType) {
801
- result.supplyType = tx._supplyType.toString ? tx._supplyType.toString() : String(tx._supplyType);
802
- }
803
- if (tx._tokenMemo) {
804
- result.memo = tx._tokenMemo;
805
- }
806
- if (tx._adminKey) {
807
- result.adminKey = tx._adminKey.toString();
808
- }
809
- if (tx._kycKey) {
810
- result.kycKey = tx._kycKey.toString();
811
- }
812
- if (tx._freezeKey) {
813
- result.freezeKey = tx._freezeKey.toString();
814
- }
815
- if (tx._wipeKey) {
816
- result.wipeKey = tx._wipeKey.toString();
817
- }
818
- if (tx._supplyKey) {
819
- result.supplyKey = tx._supplyKey.toString();
820
- }
821
- if (tx._feeScheduleKey) {
822
- result.feeScheduleKey = tx._feeScheduleKey.toString();
823
- }
824
- if (tx._pauseKey) {
825
- result.pauseKey = tx._pauseKey.toString();
826
- }
827
- if (tx._metadataKey) {
828
- result.metadataKey = tx._metadataKey.toString();
829
- }
830
- if (tx._autoRenewAccountId) {
831
- result.autoRenewAccount = tx._autoRenewAccountId.toString();
832
- }
833
- if (tx._autoRenewPeriod) {
834
- result.autoRenewPeriod = tx._autoRenewPeriod.seconds?.toString() || tx._autoRenewPeriod.toString();
835
- }
836
- if (tx._expirationTime) {
837
- result.expiry = tx._expirationTime.seconds?.toString() || tx._expirationTime.toString();
838
- }
839
- if (tx._customFees && Array.isArray(tx._customFees) && tx._customFees.length > 0) {
840
- result.customFees = tx._customFees.map((fee) => {
841
- const customFee = {
842
- feeCollectorAccountId: fee.feeCollectorAccountId?.toString() || "",
843
- feeType: "FIXED_FEE"
844
- };
845
- if (fee.fixedFee) {
846
- customFee.feeType = "FIXED_FEE";
847
- customFee.fixedFee = {
848
- amount: fee.fixedFee.amount?.toString() || "0",
849
- denominatingTokenId: fee.fixedFee.denominatingTokenId?.toString()
850
- };
851
- } else if (fee.fractionalFee) {
852
- customFee.feeType = "FRACTIONAL_FEE";
853
- customFee.fractionalFee = {
854
- numerator: fee.fractionalFee.numerator?.toString() || "0",
855
- denominator: fee.fractionalFee.denominator?.toString() || "1",
856
- minimumAmount: fee.fractionalFee.minimumAmount?.toString() || "0",
857
- maximumAmount: fee.fractionalFee.maximumAmount?.toString() || "0",
858
- netOfTransfers: fee.fractionalFee.netOfTransfers || false
859
- };
860
- } else if (fee.royaltyFee) {
861
- customFee.feeType = "ROYALTY_FEE";
862
- customFee.royaltyFee = {
863
- numerator: fee.royaltyFee.numerator?.toString() || "0",
864
- denominator: fee.royaltyFee.denominator?.toString() || "1",
865
- fallbackFee: fee.royaltyFee.fallbackFee ? {
866
- amount: fee.royaltyFee.fallbackFee.amount?.toString() || "0",
867
- denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId?.toString()
868
- } : void 0
869
- };
870
- }
871
- customFee.allCollectorsAreExempt = fee.allCollectorsAreExempt || false;
872
- return customFee;
873
- });
874
- }
875
- return result;
876
- }
877
- return null;
878
- } catch (error) {
879
- return null;
880
- }
881
- }
882
- /**
883
- * Extract token airdrop data from Transaction object internal fields
884
- * This handles the case where airdrop data is stored in Transaction internals
885
- */
886
- static extractTokenAirdropFromTransaction(transaction) {
887
- try {
888
- const tx = transaction;
889
- if (tx._tokenAirdrops && Array.isArray(tx._tokenAirdrops)) {
890
- const tokenTransfers = tx._tokenAirdrops.map((airdrop) => ({
891
- tokenId: airdrop.tokenId?.toString() || "Unknown",
892
- transfers: (airdrop.transfers || []).map((transfer) => ({
893
- accountId: transfer.accountId?.toString() || "Unknown",
894
- amount: transfer.amount?.toString() || "0",
895
- serialNumbers: transfer.serialNumbers?.map((s) => s.toString()) || []
896
- }))
897
- }));
898
- return { tokenTransfers };
899
- }
900
- return null;
901
- } catch (error) {
902
- return null;
903
- }
904
- }
905
- /**
906
- * Parse HTS transaction from Transaction object with comprehensive extraction
907
- * This is the unified entry point that handles both protobuf and internal field extraction
908
- */
909
- static parseFromTransactionObject(transaction) {
910
- try {
911
- try {
912
- const bytes = transaction.toBytes ? transaction.toBytes() : void 0;
913
- if (bytes) {
914
- const decoded = proto.TransactionList.decode(bytes);
915
- if (decoded.transactionList && decoded.transactionList.length > 0) {
916
- const tx = decoded.transactionList[0];
917
- let txBody = null;
918
- if (tx.bodyBytes && tx.bodyBytes.length > 0) {
919
- txBody = proto.TransactionBody.decode(tx.bodyBytes);
920
- } else if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
921
- const signedTx = proto.SignedTransaction.decode(
922
- tx.signedTransactionBytes
923
- );
924
- if (signedTx.bodyBytes) {
925
- txBody = proto.TransactionBody.decode(signedTx.bodyBytes);
926
- }
927
- }
928
- if (txBody) {
929
- if (txBody.tokenCreation) {
930
- const tokenCreation2 = this.parseTokenCreate(
931
- txBody.tokenCreation
932
- );
933
- if (tokenCreation2) {
934
- return {
935
- type: "TOKENCREATE",
936
- humanReadableType: "Token Creation",
937
- tokenCreation: tokenCreation2
938
- };
939
- }
940
- }
941
- if (txBody.tokenMint) {
942
- const tokenMint = this.parseTokenMint(txBody.tokenMint);
943
- if (tokenMint) {
944
- return {
945
- type: "TOKENMINT",
946
- humanReadableType: "Token Mint",
947
- tokenMint
948
- };
949
- }
950
- }
951
- if (txBody.tokenBurn) {
952
- const tokenBurn = this.parseTokenBurn(txBody.tokenBurn);
953
- if (tokenBurn) {
954
- return {
955
- type: "TOKENBURN",
956
- humanReadableType: "Token Burn",
957
- tokenBurn
958
- };
959
- }
960
- }
961
- if (txBody.tokenUpdate) {
962
- const tokenUpdate = this.parseTokenUpdate(txBody.tokenUpdate);
963
- if (tokenUpdate) {
964
- return {
965
- type: "TOKENUPDATE",
966
- humanReadableType: "Token Update",
967
- tokenUpdate
968
- };
969
- }
970
- }
971
- if (txBody.tokenFreeze) {
972
- const tokenFreeze = this.parseTokenFreeze(txBody.tokenFreeze);
973
- if (tokenFreeze) {
974
- return {
975
- type: "TOKENFREEZE",
976
- humanReadableType: "Token Freeze",
977
- tokenFreeze
978
- };
979
- }
980
- }
981
- if (txBody.tokenUnfreeze) {
982
- const tokenUnfreeze = this.parseTokenUnfreeze(
983
- txBody.tokenUnfreeze
984
- );
985
- if (tokenUnfreeze) {
986
- return {
987
- type: "TOKENUNFREEZE",
988
- humanReadableType: "Token Unfreeze",
989
- tokenUnfreeze
990
- };
991
- }
992
- }
993
- if (txBody.tokenGrantKyc) {
994
- const tokenGrantKyc = this.parseTokenGrantKyc(
995
- txBody.tokenGrantKyc
996
- );
997
- if (tokenGrantKyc) {
998
- return {
999
- type: "TOKENGRANTKYC",
1000
- humanReadableType: "Token Grant KYC",
1001
- tokenGrantKyc
1002
- };
1003
- }
1004
- }
1005
- if (txBody.tokenRevokeKyc) {
1006
- const tokenRevokeKyc = this.parseTokenRevokeKyc(
1007
- txBody.tokenRevokeKyc
1008
- );
1009
- if (tokenRevokeKyc) {
1010
- return {
1011
- type: "TOKENREVOKEKYC",
1012
- humanReadableType: "Token Revoke KYC",
1013
- tokenRevokeKyc
1014
- };
1015
- }
1016
- }
1017
- if (txBody.tokenPause) {
1018
- const tokenPause = this.parseTokenPause(txBody.tokenPause);
1019
- if (tokenPause) {
1020
- return {
1021
- type: "TOKENPAUSE",
1022
- humanReadableType: "Token Pause",
1023
- tokenPause
1024
- };
1025
- }
1026
- }
1027
- if (txBody.tokenUnpause) {
1028
- const tokenUnpause = this.parseTokenUnpause(
1029
- txBody.tokenUnpause
1030
- );
1031
- if (tokenUnpause) {
1032
- return {
1033
- type: "TOKENUNPAUSE",
1034
- humanReadableType: "Token Unpause",
1035
- tokenUnpause
1036
- };
1037
- }
1038
- }
1039
- if (txBody.tokenWipe) {
1040
- const tokenWipeAccount = this.parseTokenWipeAccount(
1041
- txBody.tokenWipe
1042
- );
1043
- if (tokenWipeAccount) {
1044
- return {
1045
- type: "TOKENWIPEACCOUNT",
1046
- humanReadableType: "Token Wipe Account",
1047
- tokenWipeAccount
1048
- };
1049
- }
1050
- }
1051
- if (txBody.tokenDeletion) {
1052
- const tokenDelete = this.parseTokenDelete(txBody.tokenDeletion);
1053
- if (tokenDelete) {
1054
- return {
1055
- type: "TOKENDELETE",
1056
- humanReadableType: "Token Delete",
1057
- tokenDelete
1058
- };
1059
- }
1060
- }
1061
- if (txBody.tokenAssociate) {
1062
- const tokenAssociate = this.parseTokenAssociate(
1063
- txBody.tokenAssociate
1064
- );
1065
- if (tokenAssociate) {
1066
- return {
1067
- type: "TOKENASSOCIATE",
1068
- humanReadableType: "Token Associate",
1069
- tokenAssociate
1070
- };
1071
- }
1072
- }
1073
- if (txBody.tokenDissociate) {
1074
- const tokenDissociate = this.parseTokenDissociate(
1075
- txBody.tokenDissociate
1076
- );
1077
- if (tokenDissociate) {
1078
- return {
1079
- type: "TOKENDISSOCIATE",
1080
- humanReadableType: "Token Dissociate",
1081
- tokenDissociate
1082
- };
1083
- }
1084
- }
1085
- if (txBody.tokenFeeScheduleUpdate) {
1086
- const tokenFeeScheduleUpdate = this.parseTokenFeeScheduleUpdate(
1087
- txBody.tokenFeeScheduleUpdate
1088
- );
1089
- if (tokenFeeScheduleUpdate) {
1090
- return {
1091
- type: "TOKENFEESCHEDULEUPDATE",
1092
- humanReadableType: "Token Fee Schedule Update",
1093
- tokenFeeScheduleUpdate
1094
- };
1095
- }
1096
- }
1097
- if (txBody.tokenAirdrop) {
1098
- const tokenAirdrop2 = this.parseTokenAirdropFromProto(
1099
- txBody.tokenAirdrop
1100
- );
1101
- if (tokenAirdrop2) {
1102
- return {
1103
- type: "TOKENAIRDROP",
1104
- humanReadableType: "Token Airdrop",
1105
- tokenAirdrop: tokenAirdrop2
1106
- };
1107
- }
1108
- }
1109
- }
1110
- }
1111
- }
1112
- } catch (e) {
1113
- }
1114
- const protoResult = this.parseHTSTransaction(transaction);
1115
- if (protoResult.type) {
1116
- return protoResult;
1117
- }
1118
- const tokenCreation = this.extractTokenCreationFromTransaction(transaction);
1119
- const tokenAirdrop = this.extractTokenAirdropFromTransaction(transaction);
1120
- if (tokenCreation) {
1121
- return {
1122
- type: "TOKENCREATE",
1123
- humanReadableType: "Token Creation",
1124
- tokenCreation
1125
- };
1126
- }
1127
- if (tokenAirdrop) {
1128
- return {
1129
- type: "TOKENAIRDROP",
1130
- humanReadableType: "Token Airdrop",
1131
- tokenAirdrop
1132
- };
1133
- }
1134
- return {};
1135
- } catch (error) {
1136
- return {};
1137
- }
1138
- }
1
+ function getTopicId(inscription) {
2
+ if (!inscription || typeof inscription !== "object") return void 0;
3
+ const obj = inscription;
4
+ const direct = obj.topicId || obj.topic_id;
5
+ if (typeof direct === "string" && direct.trim()) return direct;
6
+ const rec = obj;
7
+ const t1 = rec["topicId"];
8
+ if (typeof t1 === "string" && t1.trim()) return t1;
9
+ const t2 = rec["topic_id"];
10
+ if (typeof t2 === "string" && t2.trim()) return t2;
11
+ return void 0;
1139
12
  }
1140
13
  export {
1141
- HTSParser
14
+ getTopicId
1142
15
  };
1143
16
  //# sourceMappingURL=standards-sdk.es114.js.map