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