@hashgraphonline/standards-sdk 0.1.141-canary.32 → 0.1.141-canary.36
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/cjs/hcs-21/base-client.d.ts +2 -1
- package/dist/cjs/hcs-21/base-client.d.ts.map +1 -1
- package/dist/cjs/hcs-21/sdk.d.ts +35 -17
- package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-21/types.d.ts +11 -1
- package/dist/cjs/hcs-21/types.d.ts.map +1 -1
- package/dist/cjs/services/types.d.ts +1 -0
- package/dist/cjs/services/types.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +1 -1
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/hcs-21/base-client.d.ts +2 -1
- package/dist/es/hcs-21/base-client.d.ts.map +1 -1
- package/dist/es/hcs-21/sdk.d.ts +35 -17
- package/dist/es/hcs-21/sdk.d.ts.map +1 -1
- package/dist/es/hcs-21/types.d.ts +11 -1
- package/dist/es/hcs-21/types.d.ts.map +1 -1
- package/dist/es/services/types.d.ts +1 -0
- package/dist/es/services/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es111.js +5 -5
- package/dist/es/standards-sdk.es121.js +1 -1
- package/dist/es/standards-sdk.es122.js +1 -1
- package/dist/es/standards-sdk.es123.js +5 -5
- package/dist/es/standards-sdk.es141.js +54 -15
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +13 -168
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +139 -289
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +274 -298
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +262 -369
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +316 -194
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +319 -64
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +69 -49
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es57.js +1 -1
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +1 -1
- package/dist/es/standards-sdk.es80.js +1 -0
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +24 -0
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +70 -46
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { proto } from "@hashgraph/proto";
|
|
2
|
-
import { Long,
|
|
3
|
-
import {
|
|
4
|
-
|
|
2
|
+
import { Long, Hbar, HbarUnit, ContractId, AccountId, FileId } from "@hashgraph/sdk";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
4
|
+
import { hasTransactionType, parseKey } from "./standards-sdk.es148.js";
|
|
5
|
+
class SCSParser {
|
|
5
6
|
/**
|
|
6
|
-
* Parse
|
|
7
|
+
* Parse Smart Contract Service transaction using unified dual-branch approach
|
|
7
8
|
* This handles both regular transactions and signed transaction variants
|
|
8
9
|
*/
|
|
9
|
-
static
|
|
10
|
+
static parseSCSTransaction(transaction, originalBytes) {
|
|
10
11
|
try {
|
|
11
12
|
if (originalBytes || transaction.toBytes) {
|
|
12
13
|
try {
|
|
@@ -39,157 +40,179 @@ class UtilParser {
|
|
|
39
40
|
} catch (error) {
|
|
40
41
|
return {
|
|
41
42
|
type: "UNKNOWN",
|
|
42
|
-
humanReadableType: "Unknown
|
|
43
|
+
humanReadableType: "Unknown Contract Transaction"
|
|
43
44
|
};
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
47
|
-
* Parse
|
|
48
|
-
* Handles all
|
|
48
|
+
* Parse contract transaction from protobuf TransactionBody
|
|
49
|
+
* Handles all contract operations from decoded protobuf data
|
|
49
50
|
*/
|
|
50
51
|
static parseFromProtobufTxBody(txBody) {
|
|
51
|
-
if (txBody.
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
52
|
+
if (txBody.contractCall) {
|
|
53
|
+
const contractCall = this.parseContractCall(txBody.contractCall);
|
|
54
|
+
if (contractCall) {
|
|
54
55
|
return {
|
|
55
|
-
type: "
|
|
56
|
-
humanReadableType: "
|
|
57
|
-
|
|
56
|
+
type: "CONTRACTCALL",
|
|
57
|
+
humanReadableType: "Contract Call",
|
|
58
|
+
contractCall
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
|
-
if (txBody.
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
type: "FREEZE",
|
|
66
|
-
humanReadableType: "Network Freeze",
|
|
67
|
-
freeze: networkFreeze
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (txBody.systemDelete) {
|
|
72
|
-
const systemDelete = this.parseSystemDeleteFromProto(txBody.systemDelete);
|
|
73
|
-
if (systemDelete) {
|
|
74
|
-
return {
|
|
75
|
-
type: "SYSTEMDELETE",
|
|
76
|
-
humanReadableType: "System Delete",
|
|
77
|
-
systemDelete
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (txBody.systemUndelete) {
|
|
82
|
-
const systemUndelete = this.parseSystemUndeleteFromProto(
|
|
83
|
-
txBody.systemUndelete
|
|
62
|
+
if (txBody.contractCreateInstance) {
|
|
63
|
+
const contractCreate = this.parseContractCreate(
|
|
64
|
+
txBody.contractCreateInstance
|
|
84
65
|
);
|
|
85
|
-
if (
|
|
66
|
+
if (contractCreate) {
|
|
86
67
|
return {
|
|
87
|
-
type: "
|
|
88
|
-
humanReadableType: "
|
|
89
|
-
|
|
68
|
+
type: "CONTRACTCREATE",
|
|
69
|
+
humanReadableType: "Contract Create",
|
|
70
|
+
contractCreate
|
|
90
71
|
};
|
|
91
72
|
}
|
|
92
73
|
}
|
|
93
|
-
if (txBody.
|
|
94
|
-
const
|
|
95
|
-
|
|
74
|
+
if (txBody.contractUpdateInstance) {
|
|
75
|
+
const contractUpdate = this.parseContractUpdate(
|
|
76
|
+
txBody.contractUpdateInstance
|
|
77
|
+
);
|
|
78
|
+
if (contractUpdate) {
|
|
96
79
|
return {
|
|
97
|
-
type: "
|
|
98
|
-
humanReadableType: "
|
|
99
|
-
|
|
80
|
+
type: "CONTRACTUPDATE",
|
|
81
|
+
humanReadableType: "Contract Update",
|
|
82
|
+
contractUpdate
|
|
100
83
|
};
|
|
101
84
|
}
|
|
102
85
|
}
|
|
103
|
-
if (txBody.
|
|
104
|
-
const
|
|
105
|
-
|
|
86
|
+
if (txBody.contractDeleteInstance) {
|
|
87
|
+
const contractDelete = this.parseContractDelete(
|
|
88
|
+
txBody.contractDeleteInstance
|
|
89
|
+
);
|
|
90
|
+
if (contractDelete) {
|
|
106
91
|
return {
|
|
107
|
-
type: "
|
|
108
|
-
humanReadableType: "
|
|
109
|
-
|
|
92
|
+
type: "CONTRACTDELETE",
|
|
93
|
+
humanReadableType: "Contract Delete",
|
|
94
|
+
contractDelete
|
|
110
95
|
};
|
|
111
96
|
}
|
|
112
97
|
}
|
|
113
|
-
if (txBody.
|
|
114
|
-
const
|
|
115
|
-
|
|
98
|
+
if (txBody.ethereumTransaction) {
|
|
99
|
+
const ethereumCall = this.parseEthereumTransaction(
|
|
100
|
+
txBody.ethereumTransaction
|
|
101
|
+
);
|
|
102
|
+
if (ethereumCall) {
|
|
116
103
|
return {
|
|
117
|
-
type: "
|
|
118
|
-
humanReadableType: "
|
|
119
|
-
|
|
104
|
+
type: "ETHEREUMTRANSACTION",
|
|
105
|
+
humanReadableType: "Ethereum Transaction",
|
|
106
|
+
ethereumTransaction: ethereumCall
|
|
120
107
|
};
|
|
121
108
|
}
|
|
122
109
|
}
|
|
123
110
|
return {};
|
|
124
111
|
}
|
|
125
112
|
/**
|
|
126
|
-
* Extract
|
|
113
|
+
* Extract contract data from Transaction internal fields
|
|
127
114
|
* This handles cases where data is stored in Transaction object internals
|
|
128
115
|
*/
|
|
129
116
|
static parseFromTransactionInternals(transaction) {
|
|
130
117
|
try {
|
|
131
118
|
const tx = transaction;
|
|
132
|
-
if (
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
119
|
+
if (tx._contractId && tx._gas) {
|
|
120
|
+
const contractCall = {
|
|
121
|
+
contractId: tx._contractId.toString(),
|
|
122
|
+
gas: typeof tx._gas === "number" ? tx._gas : Long.fromValue(tx._gas).toNumber(),
|
|
123
|
+
amount: tx._amount ? parseFloat(tx._amount.toString()) : 0
|
|
124
|
+
};
|
|
125
|
+
if (tx._functionParameters) {
|
|
126
|
+
const funcParams = Buffer.from(tx._functionParameters).toString(
|
|
127
|
+
"hex"
|
|
128
|
+
);
|
|
129
|
+
contractCall.functionParameters = funcParams;
|
|
130
|
+
contractCall.functionName = this.extractFunctionName(funcParams);
|
|
136
131
|
}
|
|
137
132
|
return {
|
|
138
|
-
type: "
|
|
139
|
-
humanReadableType: "
|
|
140
|
-
|
|
133
|
+
type: "CONTRACTCALL",
|
|
134
|
+
humanReadableType: "Contract Call",
|
|
135
|
+
contractCall
|
|
141
136
|
};
|
|
142
137
|
}
|
|
143
|
-
if (hasTransactionType(transaction, "
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
if (tx.
|
|
149
|
-
|
|
138
|
+
if (hasTransactionType(transaction, "contractCreateInstance")) {
|
|
139
|
+
const contractCreate = {
|
|
140
|
+
gas: tx._gas.toString(),
|
|
141
|
+
initialBalance: tx._initialBalance?.toString() || "0"
|
|
142
|
+
};
|
|
143
|
+
if (tx._fileId) {
|
|
144
|
+
contractCreate.initcodeSource = "fileID";
|
|
145
|
+
contractCreate.initcode = tx._fileId.toString();
|
|
146
|
+
} else if (tx._bytecode) {
|
|
147
|
+
contractCreate.initcodeSource = "bytes";
|
|
148
|
+
contractCreate.initcode = Buffer.from(tx._bytecode).toString("hex");
|
|
150
149
|
}
|
|
151
|
-
if (tx.
|
|
152
|
-
|
|
150
|
+
if (tx._constructorParameters) {
|
|
151
|
+
contractCreate.constructorParameters = Buffer.from(
|
|
152
|
+
tx._constructorParameters
|
|
153
|
+
).toString("hex");
|
|
153
154
|
}
|
|
154
|
-
if (tx.
|
|
155
|
-
|
|
155
|
+
if (tx._memo) contractCreate.memo = tx._memo;
|
|
156
|
+
if (tx._adminKey) contractCreate.adminKey = parseKey(tx._adminKey);
|
|
157
|
+
if (tx._maxAutomaticTokenAssociations !== void 0) {
|
|
158
|
+
contractCreate.maxAutomaticTokenAssociations = tx._maxAutomaticTokenAssociations;
|
|
156
159
|
}
|
|
157
|
-
if (tx.
|
|
158
|
-
|
|
160
|
+
if (tx._stakedAccountId) {
|
|
161
|
+
contractCreate.stakedAccountId = tx._stakedAccountId.toString();
|
|
162
|
+
} else if (tx._stakedNodeId !== null && tx._stakedNodeId !== void 0) {
|
|
163
|
+
contractCreate.stakedNodeId = Long.fromValue(
|
|
164
|
+
tx._stakedNodeId
|
|
165
|
+
).toString();
|
|
159
166
|
}
|
|
167
|
+
if (tx._declineReward !== void 0)
|
|
168
|
+
contractCreate.declineReward = tx._declineReward;
|
|
169
|
+
if (tx._autoRenewPeriod)
|
|
170
|
+
contractCreate.autoRenewPeriod = tx._autoRenewPeriod.toString();
|
|
160
171
|
return {
|
|
161
|
-
type: "
|
|
162
|
-
humanReadableType: "
|
|
163
|
-
|
|
172
|
+
type: "CONTRACTCREATE",
|
|
173
|
+
humanReadableType: "Contract Create",
|
|
174
|
+
contractCreate
|
|
164
175
|
};
|
|
165
176
|
}
|
|
166
|
-
if (hasTransactionType(transaction, "
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
177
|
+
if (hasTransactionType(transaction, "contractUpdateInstance")) {
|
|
178
|
+
const contractUpdate = {
|
|
179
|
+
contractIdToUpdate: tx._contractId.toString()
|
|
180
|
+
};
|
|
181
|
+
if (tx._memo) contractUpdate.memo = tx._memo;
|
|
182
|
+
if (tx._adminKey) contractUpdate.adminKey = parseKey(tx._adminKey);
|
|
183
|
+
if (tx._maxAutomaticTokenAssociations !== void 0) {
|
|
184
|
+
contractUpdate.maxAutomaticTokenAssociations = tx._maxAutomaticTokenAssociations;
|
|
172
185
|
}
|
|
173
|
-
if (tx.
|
|
174
|
-
|
|
186
|
+
if (tx._stakedAccountId) {
|
|
187
|
+
contractUpdate.stakedAccountId = tx._stakedAccountId.toString();
|
|
188
|
+
} else if (tx._stakedNodeId !== null && tx._stakedNodeId !== void 0) {
|
|
189
|
+
contractUpdate.stakedNodeId = Long.fromValue(
|
|
190
|
+
tx._stakedNodeId
|
|
191
|
+
).toString();
|
|
175
192
|
}
|
|
193
|
+
if (tx._declineReward !== void 0)
|
|
194
|
+
contractUpdate.declineReward = tx._declineReward;
|
|
195
|
+
if (tx._autoRenewPeriod)
|
|
196
|
+
contractUpdate.autoRenewPeriod = tx._autoRenewPeriod.toString();
|
|
176
197
|
return {
|
|
177
|
-
type: "
|
|
178
|
-
humanReadableType: "
|
|
179
|
-
|
|
198
|
+
type: "CONTRACTUPDATE",
|
|
199
|
+
humanReadableType: "Contract Update",
|
|
200
|
+
contractUpdate
|
|
180
201
|
};
|
|
181
202
|
}
|
|
182
|
-
if (hasTransactionType(transaction, "
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
203
|
+
if (hasTransactionType(transaction, "contractDeleteInstance")) {
|
|
204
|
+
const contractDelete = {
|
|
205
|
+
contractIdToDelete: tx._contractId.toString()
|
|
206
|
+
};
|
|
207
|
+
if (tx._transferAccountId) {
|
|
208
|
+
contractDelete.transferAccountId = tx._transferAccountId.toString();
|
|
209
|
+
} else if (tx._transferContractId) {
|
|
210
|
+
contractDelete.transferContractId = tx._transferContractId.toString();
|
|
188
211
|
}
|
|
189
212
|
return {
|
|
190
|
-
type: "
|
|
191
|
-
humanReadableType: "
|
|
192
|
-
|
|
213
|
+
type: "CONTRACTDELETE",
|
|
214
|
+
humanReadableType: "Contract Delete",
|
|
215
|
+
contractDelete
|
|
193
216
|
};
|
|
194
217
|
}
|
|
195
218
|
return {};
|
|
@@ -198,137 +221,236 @@ class UtilParser {
|
|
|
198
221
|
}
|
|
199
222
|
}
|
|
200
223
|
/**
|
|
201
|
-
*
|
|
224
|
+
* Enhanced function name extraction from contract call parameters
|
|
225
|
+
* Attempts to decode function selector and map to known function names
|
|
202
226
|
*/
|
|
203
|
-
static
|
|
227
|
+
static extractFunctionName(functionParameters) {
|
|
228
|
+
if (functionParameters.length < 8) return "unknown";
|
|
229
|
+
const selector = functionParameters.substring(0, 8);
|
|
230
|
+
const commonSelectors = {
|
|
231
|
+
a9059cbb: "transfer",
|
|
232
|
+
"095ea7b3": "approve",
|
|
233
|
+
"23b872dd": "transferFrom",
|
|
234
|
+
"70a08231": "balanceOf",
|
|
235
|
+
dd62ed3e: "allowance",
|
|
236
|
+
"18160ddd": "totalSupply",
|
|
237
|
+
"06fdde03": "name",
|
|
238
|
+
"95d89b41": "symbol",
|
|
239
|
+
"313ce567": "decimals",
|
|
240
|
+
"42842e0e": "safeTransferFrom",
|
|
241
|
+
b88d4fde: "safeTransferFrom",
|
|
242
|
+
e985e9c5: "isApprovedForAll",
|
|
243
|
+
a22cb465: "setApprovalForAll",
|
|
244
|
+
"6352211e": "ownerOf",
|
|
245
|
+
c87b56dd: "tokenURI",
|
|
246
|
+
"01ffc9a7": "supportsInterface",
|
|
247
|
+
"40c10f19": "mint",
|
|
248
|
+
"42966c68": "burn",
|
|
249
|
+
f2fde38b: "transferOwnership",
|
|
250
|
+
"715018a6": "renounceOwnership",
|
|
251
|
+
"8da5cb5b": "owner"
|
|
252
|
+
};
|
|
253
|
+
return commonSelectors[selector] || selector;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Parse Ethereum Transaction (was completely missing from original parser)
|
|
257
|
+
*/
|
|
258
|
+
static parseEthereumTransaction(body) {
|
|
204
259
|
if (!body) return void 0;
|
|
205
|
-
const data = {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
data.
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
).toString();
|
|
217
|
-
}
|
|
218
|
-
if (body.fileHash && body.fileHash.length > 0) {
|
|
219
|
-
data.fileHash = Buffer.from(body.fileHash).toString("hex");
|
|
220
|
-
}
|
|
221
|
-
if (body.freezeType !== void 0) {
|
|
222
|
-
const freezeTypes = [
|
|
223
|
-
"FREEZE_ONLY",
|
|
224
|
-
"PREPARE_UPGRADE",
|
|
225
|
-
"FREEZE_UPGRADE",
|
|
226
|
-
"FREEZE_ABORT"
|
|
227
|
-
];
|
|
228
|
-
data.freezeType = freezeTypes[body.freezeType] || "FREEZE_ONLY";
|
|
260
|
+
const data = {
|
|
261
|
+
contractId: "EVM",
|
|
262
|
+
gas: body.maxGasAllowance ? Long.fromValue(body.maxGasAllowance).toNumber() : 0,
|
|
263
|
+
amount: 0
|
|
264
|
+
};
|
|
265
|
+
if (body.ethereumData && body.ethereumData.length > 0) {
|
|
266
|
+
const ethData = Buffer.from(body.ethereumData).toString("hex");
|
|
267
|
+
data.functionParameters = ethData;
|
|
268
|
+
if (ethData.length >= 8) {
|
|
269
|
+
data.functionName = this.extractFunctionName(ethData);
|
|
270
|
+
}
|
|
229
271
|
}
|
|
230
272
|
return data;
|
|
231
273
|
}
|
|
232
|
-
|
|
233
|
-
* Parse System Delete from protobuf data
|
|
234
|
-
*/
|
|
235
|
-
static parseSystemDeleteFromProto(body) {
|
|
274
|
+
static parseContractCall(body) {
|
|
236
275
|
if (!body) return void 0;
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
body.fileID.shardNum ?? 0,
|
|
241
|
-
body.fileID.realmNum ?? 0,
|
|
242
|
-
body.fileID.fileNum ?? 0
|
|
243
|
-
).toString();
|
|
244
|
-
} else if (body.contractID) {
|
|
245
|
-
data.contractId = new ContractId(
|
|
276
|
+
const hbarAmount = Hbar.fromTinybars(Long.fromValue(body.amount ?? 0));
|
|
277
|
+
const data = {
|
|
278
|
+
contractId: new ContractId(
|
|
246
279
|
body.contractID.shardNum ?? 0,
|
|
247
280
|
body.contractID.realmNum ?? 0,
|
|
248
281
|
body.contractID.contractNum ?? 0
|
|
249
|
-
).toString()
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
).toString(
|
|
282
|
+
).toString(),
|
|
283
|
+
gas: Long.fromValue(body.gas ?? 0).toNumber(),
|
|
284
|
+
amount: parseFloat(hbarAmount.toString(HbarUnit.Hbar))
|
|
285
|
+
};
|
|
286
|
+
if (body.functionParameters) {
|
|
287
|
+
data.functionParameters = Buffer.from(body.functionParameters).toString(
|
|
288
|
+
"hex"
|
|
289
|
+
);
|
|
290
|
+
if (data.functionParameters.length >= 8) {
|
|
291
|
+
data.functionName = this.extractFunctionName(data.functionParameters);
|
|
292
|
+
}
|
|
255
293
|
}
|
|
256
294
|
return data;
|
|
257
295
|
}
|
|
258
|
-
|
|
259
|
-
* Parse System Undelete from protobuf data
|
|
260
|
-
*/
|
|
261
|
-
static parseSystemUndeleteFromProto(body) {
|
|
296
|
+
static parseContractCreate(body) {
|
|
262
297
|
if (!body) return void 0;
|
|
263
298
|
const data = {};
|
|
299
|
+
if (body.initialBalance) {
|
|
300
|
+
data.initialBalance = Hbar.fromTinybars(
|
|
301
|
+
Long.fromValue(body.initialBalance)
|
|
302
|
+
).toString(HbarUnit.Hbar);
|
|
303
|
+
}
|
|
304
|
+
if (body.gas) {
|
|
305
|
+
data.gas = Long.fromValue(body.gas).toString();
|
|
306
|
+
}
|
|
307
|
+
if (body.adminKey) {
|
|
308
|
+
data.adminKey = parseKey(body.adminKey);
|
|
309
|
+
}
|
|
310
|
+
if (body.constructorParameters) {
|
|
311
|
+
data.constructorParameters = Buffer.from(
|
|
312
|
+
body.constructorParameters
|
|
313
|
+
).toString("hex");
|
|
314
|
+
}
|
|
315
|
+
if (body.memo) {
|
|
316
|
+
data.memo = body.memo;
|
|
317
|
+
}
|
|
318
|
+
if (body.autoRenewPeriod?.seconds) {
|
|
319
|
+
data.autoRenewPeriod = Long.fromValue(
|
|
320
|
+
body.autoRenewPeriod.seconds
|
|
321
|
+
).toString();
|
|
322
|
+
}
|
|
323
|
+
if (body.stakedAccountId) {
|
|
324
|
+
data.stakedAccountId = new AccountId(
|
|
325
|
+
body.stakedAccountId.shardNum ?? 0,
|
|
326
|
+
body.stakedAccountId.realmNum ?? 0,
|
|
327
|
+
body.stakedAccountId.accountNum ?? 0
|
|
328
|
+
).toString();
|
|
329
|
+
} else if (body.stakedNodeId !== null && body.stakedNodeId !== void 0) {
|
|
330
|
+
data.stakedNodeId = Long.fromValue(body.stakedNodeId).toString();
|
|
331
|
+
}
|
|
332
|
+
if (body.declineReward !== void 0) {
|
|
333
|
+
data.declineReward = body.declineReward;
|
|
334
|
+
}
|
|
335
|
+
if (body.maxAutomaticTokenAssociations !== void 0) {
|
|
336
|
+
data.maxAutomaticTokenAssociations = body.maxAutomaticTokenAssociations;
|
|
337
|
+
}
|
|
264
338
|
if (body.fileID) {
|
|
265
|
-
data.
|
|
339
|
+
data.initcodeSource = "fileID";
|
|
340
|
+
data.initcode = new FileId(
|
|
266
341
|
body.fileID.shardNum ?? 0,
|
|
267
342
|
body.fileID.realmNum ?? 0,
|
|
268
343
|
body.fileID.fileNum ?? 0
|
|
269
344
|
).toString();
|
|
270
|
-
} else if (body.
|
|
271
|
-
data.
|
|
272
|
-
|
|
273
|
-
body.contractID.realmNum ?? 0,
|
|
274
|
-
body.contractID.contractNum ?? 0
|
|
275
|
-
).toString();
|
|
345
|
+
} else if (body.initcode && body.initcode.length > 0) {
|
|
346
|
+
data.initcodeSource = "bytes";
|
|
347
|
+
data.initcode = Buffer.from(body.initcode).toString("hex");
|
|
276
348
|
}
|
|
277
349
|
return data;
|
|
278
350
|
}
|
|
279
|
-
|
|
280
|
-
* Parse Node Create from protobuf data
|
|
281
|
-
*/
|
|
282
|
-
static parseNodeCreateFromProto(body) {
|
|
351
|
+
static parseContractUpdate(body) {
|
|
283
352
|
if (!body) return void 0;
|
|
284
353
|
const data = {};
|
|
285
|
-
if (body.
|
|
286
|
-
data.
|
|
354
|
+
if (body.contractID) {
|
|
355
|
+
data.contractIdToUpdate = new ContractId(
|
|
356
|
+
body.contractID.shardNum ?? 0,
|
|
357
|
+
body.contractID.realmNum ?? 0,
|
|
358
|
+
body.contractID.contractNum ?? 0
|
|
359
|
+
).toString();
|
|
287
360
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Parse Node Update from protobuf data
|
|
292
|
-
*/
|
|
293
|
-
static parseNodeUpdateFromProto(body) {
|
|
294
|
-
if (!body) return void 0;
|
|
295
|
-
const data = {};
|
|
296
|
-
if (body.nodeId !== void 0) {
|
|
297
|
-
data.nodeId = Long.fromValue(body.nodeId).toNumber();
|
|
361
|
+
if (body.adminKey) {
|
|
362
|
+
data.adminKey = parseKey(body.adminKey);
|
|
298
363
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
364
|
+
if (body.expirationTime?.seconds) {
|
|
365
|
+
data.expirationTime = `${Long.fromValue(
|
|
366
|
+
body.expirationTime.seconds
|
|
367
|
+
).toString()}.${body.expirationTime.nanos}`;
|
|
368
|
+
}
|
|
369
|
+
if (body.autoRenewPeriod?.seconds) {
|
|
370
|
+
data.autoRenewPeriod = Long.fromValue(
|
|
371
|
+
body.autoRenewPeriod.seconds
|
|
372
|
+
).toString();
|
|
373
|
+
}
|
|
374
|
+
if (body.memo) {
|
|
375
|
+
const memoUnion = body.memo;
|
|
376
|
+
if (memoUnion && typeof memoUnion === "object" && Object.prototype.hasOwnProperty.call(memoUnion, "value")) {
|
|
377
|
+
const value = memoUnion.value;
|
|
378
|
+
if (value === null || value === void 0) {
|
|
379
|
+
data.memo = void 0;
|
|
380
|
+
} else {
|
|
381
|
+
data.memo = String(value);
|
|
382
|
+
}
|
|
383
|
+
} else if (typeof memoUnion === "string") {
|
|
384
|
+
data.memo = memoUnion;
|
|
385
|
+
} else {
|
|
386
|
+
data.memo = void 0;
|
|
387
|
+
}
|
|
388
|
+
} else {
|
|
389
|
+
data.memo = void 0;
|
|
390
|
+
}
|
|
391
|
+
if (body.stakedAccountId) {
|
|
392
|
+
data.stakedAccountId = new AccountId(
|
|
393
|
+
body.stakedAccountId.shardNum ?? 0,
|
|
394
|
+
body.stakedAccountId.realmNum ?? 0,
|
|
395
|
+
body.stakedAccountId.accountNum ?? 0
|
|
396
|
+
).toString();
|
|
397
|
+
data.stakedNodeId = void 0;
|
|
398
|
+
} else if (body.stakedNodeId !== null && body.stakedNodeId !== void 0 && Long.fromValue(body.stakedNodeId).notEquals(-1)) {
|
|
399
|
+
data.stakedNodeId = Long.fromValue(body.stakedNodeId).toString();
|
|
400
|
+
data.stakedAccountId = void 0;
|
|
401
|
+
} else {
|
|
402
|
+
data.stakedNodeId = void 0;
|
|
403
|
+
data.stakedAccountId = void 0;
|
|
404
|
+
}
|
|
405
|
+
if (body.declineReward?.value !== void 0) {
|
|
406
|
+
data.declineReward = body.declineReward.value;
|
|
407
|
+
}
|
|
408
|
+
if (body.maxAutomaticTokenAssociations?.value !== void 0) {
|
|
409
|
+
data.maxAutomaticTokenAssociations = body.maxAutomaticTokenAssociations.value;
|
|
410
|
+
}
|
|
411
|
+
if (body.autoRenewAccountId) {
|
|
412
|
+
data.autoRenewAccountId = new AccountId(
|
|
413
|
+
body.autoRenewAccountId.shardNum ?? 0,
|
|
414
|
+
body.autoRenewAccountId.realmNum ?? 0,
|
|
415
|
+
body.autoRenewAccountId.accountNum ?? 0
|
|
416
|
+
).toString();
|
|
309
417
|
}
|
|
310
418
|
return data;
|
|
311
419
|
}
|
|
312
|
-
static
|
|
420
|
+
static parseContractDelete(body) {
|
|
313
421
|
if (!body) return void 0;
|
|
314
422
|
const data = {};
|
|
315
|
-
if (body.
|
|
316
|
-
data.
|
|
423
|
+
if (body.contractID) {
|
|
424
|
+
data.contractIdToDelete = new ContractId(
|
|
425
|
+
body.contractID.shardNum ?? 0,
|
|
426
|
+
body.contractID.realmNum ?? 0,
|
|
427
|
+
body.contractID.contractNum ?? 0
|
|
428
|
+
).toString();
|
|
429
|
+
}
|
|
430
|
+
if (body.transferAccountID) {
|
|
431
|
+
data.transferAccountId = new AccountId(
|
|
432
|
+
body.transferAccountID.shardNum ?? 0,
|
|
433
|
+
body.transferAccountID.realmNum ?? 0,
|
|
434
|
+
body.transferAccountID.accountNum ?? 0
|
|
435
|
+
).toString();
|
|
436
|
+
} else if (body.transferContractID) {
|
|
437
|
+
data.transferContractId = new ContractId(
|
|
438
|
+
body.transferContractID.shardNum ?? 0,
|
|
439
|
+
body.transferContractID.realmNum ?? 0,
|
|
440
|
+
body.transferContractID.contractNum ?? 0
|
|
441
|
+
).toString();
|
|
317
442
|
}
|
|
318
443
|
return data;
|
|
319
444
|
}
|
|
320
|
-
static parseFreeze(body) {
|
|
321
|
-
return this.parseNetworkFreezeFromProto(body);
|
|
322
|
-
}
|
|
323
445
|
/**
|
|
324
|
-
* Parse
|
|
446
|
+
* Parse SCS (Smart Contract Service) transaction from Transaction object
|
|
325
447
|
* This is the unified entry point that delegates to the comprehensive parsing logic
|
|
326
448
|
*/
|
|
327
449
|
static parseFromTransactionObject(transaction) {
|
|
328
|
-
return this.
|
|
450
|
+
return this.parseSCSTransaction(transaction);
|
|
329
451
|
}
|
|
330
452
|
}
|
|
331
453
|
export {
|
|
332
|
-
|
|
454
|
+
SCSParser
|
|
333
455
|
};
|
|
334
456
|
//# sourceMappingURL=standards-sdk.es146.js.map
|