@qevm/abi 5.7.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/LICENSE.md +21 -0
- package/README.md +52 -0
- package/lib/_version.d.ts +2 -0
- package/lib/_version.d.ts.map +1 -0
- package/lib/_version.js +5 -0
- package/lib/_version.js.map +1 -0
- package/lib/abi-coder.d.ts +17 -0
- package/lib/abi-coder.d.ts.map +1 -0
- package/lib/abi-coder.js +99 -0
- package/lib/abi-coder.js.map +1 -0
- package/lib/coders/abstract-coder.d.ts +53 -0
- package/lib/coders/abstract-coder.d.ts.map +1 -0
- package/lib/coders/abstract-coder.js +153 -0
- package/lib/coders/abstract-coder.js.map +1 -0
- package/lib/coders/address.d.ts +8 -0
- package/lib/coders/address.d.ts.map +1 -0
- package/lib/coders/address.js +28 -0
- package/lib/coders/address.js.map +1 -0
- package/lib/coders/anonymous.d.ts +9 -0
- package/lib/coders/anonymous.d.ts.map +1 -0
- package/lib/coders/anonymous.js +22 -0
- package/lib/coders/anonymous.js.map +1 -0
- package/lib/coders/array.d.ts +14 -0
- package/lib/coders/array.d.ts.map +1 -0
- package/lib/coders/array.js +214 -0
- package/lib/coders/array.js.map +1 -0
- package/lib/coders/boolean.d.ts +8 -0
- package/lib/coders/boolean.d.ts.map +1 -0
- package/lib/coders/boolean.js +20 -0
- package/lib/coders/boolean.js.map +1 -0
- package/lib/coders/bytes.d.ts +12 -0
- package/lib/coders/bytes.d.ts.map +1 -0
- package/lib/coders/bytes.js +33 -0
- package/lib/coders/bytes.js.map +1 -0
- package/lib/coders/fixed-bytes.d.ts +10 -0
- package/lib/coders/fixed-bytes.d.ts.map +1 -0
- package/lib/coders/fixed-bytes.js +28 -0
- package/lib/coders/fixed-bytes.js.map +1 -0
- package/lib/coders/null.d.ts +8 -0
- package/lib/coders/null.d.ts.map +1 -0
- package/lib/coders/null.js +24 -0
- package/lib/coders/null.js.map +1 -0
- package/lib/coders/number.d.ts +11 -0
- package/lib/coders/number.d.ts.map +1 -0
- package/lib/coders/number.js +45 -0
- package/lib/coders/number.js.map +1 -0
- package/lib/coders/string.d.ts +9 -0
- package/lib/coders/string.d.ts.map +1 -0
- package/lib/coders/string.js +21 -0
- package/lib/coders/string.js.map +1 -0
- package/lib/coders/tuple.d.ts +11 -0
- package/lib/coders/tuple.d.ts.map +1 -0
- package/lib/coders/tuple.js +60 -0
- package/lib/coders/tuple.js.map +1 -0
- package/lib/fragments.d.ts +85 -0
- package/lib/fragments.d.ts.map +1 -0
- package/lib/fragments.js +863 -0
- package/lib/fragments.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +21 -0
- package/lib/index.js.map +1 -0
- package/lib/interface.d.ts +89 -0
- package/lib/interface.d.ts.map +1 -0
- package/lib/interface.js +617 -0
- package/lib/interface.js.map +1 -0
- package/package.json +33 -0
- package/src.ts/_version.ts +1 -0
- package/src.ts/abi-coder.ts +123 -0
- package/src.ts/coders/abstract-coder.ts +207 -0
- package/src.ts/coders/address.ts +31 -0
- package/src.ts/coders/anonymous.ts +25 -0
- package/src.ts/coders/array.ts +236 -0
- package/src.ts/coders/boolean.ts +23 -0
- package/src.ts/coders/bytes.ts +38 -0
- package/src.ts/coders/fixed-bytes.ts +30 -0
- package/src.ts/coders/null.ts +24 -0
- package/src.ts/coders/number.ts +57 -0
- package/src.ts/coders/string.ts +25 -0
- package/src.ts/coders/tuple.ts +61 -0
- package/src.ts/fragments.ts +1070 -0
- package/src.ts/index.ts +34 -0
- package/src.ts/interface.ts +715 -0
package/lib/interface.js
ADDED
|
@@ -0,0 +1,617 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Interface = exports.Indexed = exports.ErrorDescription = exports.TransactionDescription = exports.LogDescription = exports.checkResultErrors = void 0;
|
|
4
|
+
const address_1 = require("@qevm/address");
|
|
5
|
+
const bignumber_1 = require("@qevm/bignumber");
|
|
6
|
+
const bytes_1 = require("@qevm/bytes");
|
|
7
|
+
const hash_1 = require("@qevm/hash");
|
|
8
|
+
const keccak256_1 = require("@ethersproject/keccak256");
|
|
9
|
+
const properties_1 = require("@ethersproject/properties");
|
|
10
|
+
const abi_coder_1 = require("./abi-coder");
|
|
11
|
+
const abstract_coder_1 = require("./coders/abstract-coder");
|
|
12
|
+
Object.defineProperty(exports, "checkResultErrors", { enumerable: true, get: function () { return abstract_coder_1.checkResultErrors; } });
|
|
13
|
+
const fragments_1 = require("./fragments");
|
|
14
|
+
const logger_1 = require("@ethersproject/logger");
|
|
15
|
+
const _version_1 = require("./_version");
|
|
16
|
+
const logger = new logger_1.Logger(_version_1.version);
|
|
17
|
+
class LogDescription extends properties_1.Description {
|
|
18
|
+
}
|
|
19
|
+
exports.LogDescription = LogDescription;
|
|
20
|
+
class TransactionDescription extends properties_1.Description {
|
|
21
|
+
}
|
|
22
|
+
exports.TransactionDescription = TransactionDescription;
|
|
23
|
+
class ErrorDescription extends properties_1.Description {
|
|
24
|
+
}
|
|
25
|
+
exports.ErrorDescription = ErrorDescription;
|
|
26
|
+
class Indexed extends properties_1.Description {
|
|
27
|
+
static isIndexed(value) {
|
|
28
|
+
return !!(value && value._isIndexed);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.Indexed = Indexed;
|
|
32
|
+
const BuiltinErrors = {
|
|
33
|
+
"0x08c379a0": { signature: "Error(string)", name: "Error", inputs: ["string"], reason: true },
|
|
34
|
+
"0x4e487b71": { signature: "Panic(uint256)", name: "Panic", inputs: ["uint256"] }
|
|
35
|
+
};
|
|
36
|
+
function wrapAccessError(property, error) {
|
|
37
|
+
const wrap = new Error(`deferred error during ABI decoding triggered accessing ${property}`);
|
|
38
|
+
wrap.error = error;
|
|
39
|
+
return wrap;
|
|
40
|
+
}
|
|
41
|
+
/*
|
|
42
|
+
function checkNames(fragment: Fragment, type: "input" | "output", params: Array<ParamType>): void {
|
|
43
|
+
params.reduce((accum, param) => {
|
|
44
|
+
if (param.name) {
|
|
45
|
+
if (accum[param.name]) {
|
|
46
|
+
logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format("full") }`, "fragment", fragment);
|
|
47
|
+
}
|
|
48
|
+
accum[param.name] = true;
|
|
49
|
+
}
|
|
50
|
+
return accum;
|
|
51
|
+
}, <{ [ name: string ]: boolean }>{ });
|
|
52
|
+
}
|
|
53
|
+
*/
|
|
54
|
+
class Interface {
|
|
55
|
+
constructor(fragments) {
|
|
56
|
+
let abi = [];
|
|
57
|
+
if (typeof (fragments) === "string") {
|
|
58
|
+
abi = JSON.parse(fragments);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
abi = fragments;
|
|
62
|
+
}
|
|
63
|
+
(0, properties_1.defineReadOnly)(this, "fragments", abi.map((fragment) => {
|
|
64
|
+
return fragments_1.Fragment.from(fragment);
|
|
65
|
+
}).filter((fragment) => (fragment != null)));
|
|
66
|
+
(0, properties_1.defineReadOnly)(this, "_abiCoder", (0, properties_1.getStatic)(new.target, "getAbiCoder")());
|
|
67
|
+
(0, properties_1.defineReadOnly)(this, "functions", {});
|
|
68
|
+
(0, properties_1.defineReadOnly)(this, "errors", {});
|
|
69
|
+
(0, properties_1.defineReadOnly)(this, "events", {});
|
|
70
|
+
(0, properties_1.defineReadOnly)(this, "structs", {});
|
|
71
|
+
// Add all fragments by their signature
|
|
72
|
+
this.fragments.forEach((fragment) => {
|
|
73
|
+
let bucket = null;
|
|
74
|
+
switch (fragment.type) {
|
|
75
|
+
case "constructor":
|
|
76
|
+
if (this.deploy) {
|
|
77
|
+
logger.warn("duplicate definition - constructor");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
//checkNames(fragment, "input", fragment.inputs);
|
|
81
|
+
(0, properties_1.defineReadOnly)(this, "deploy", fragment);
|
|
82
|
+
return;
|
|
83
|
+
case "function":
|
|
84
|
+
//checkNames(fragment, "input", fragment.inputs);
|
|
85
|
+
//checkNames(fragment, "output", (<FunctionFragment>fragment).outputs);
|
|
86
|
+
bucket = this.functions;
|
|
87
|
+
break;
|
|
88
|
+
case "event":
|
|
89
|
+
//checkNames(fragment, "input", fragment.inputs);
|
|
90
|
+
bucket = this.events;
|
|
91
|
+
break;
|
|
92
|
+
case "error":
|
|
93
|
+
bucket = this.errors;
|
|
94
|
+
break;
|
|
95
|
+
default:
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
let signature = fragment.format();
|
|
99
|
+
if (bucket[signature]) {
|
|
100
|
+
logger.warn("duplicate definition - " + signature);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
bucket[signature] = fragment;
|
|
104
|
+
});
|
|
105
|
+
// If we do not have a constructor add a default
|
|
106
|
+
if (!this.deploy) {
|
|
107
|
+
(0, properties_1.defineReadOnly)(this, "deploy", fragments_1.ConstructorFragment.from({
|
|
108
|
+
payable: false,
|
|
109
|
+
type: "constructor"
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
(0, properties_1.defineReadOnly)(this, "_isInterface", true);
|
|
113
|
+
}
|
|
114
|
+
format(format) {
|
|
115
|
+
if (!format) {
|
|
116
|
+
format = fragments_1.FormatTypes.full;
|
|
117
|
+
}
|
|
118
|
+
if (format === fragments_1.FormatTypes.sighash) {
|
|
119
|
+
logger.throwArgumentError("interface does not support formatting sighash", "format", format);
|
|
120
|
+
}
|
|
121
|
+
const abi = this.fragments.map((fragment) => fragment.format(format));
|
|
122
|
+
// We need to re-bundle the JSON fragments a bit
|
|
123
|
+
if (format === fragments_1.FormatTypes.json) {
|
|
124
|
+
return JSON.stringify(abi.map((j) => JSON.parse(j)));
|
|
125
|
+
}
|
|
126
|
+
return abi;
|
|
127
|
+
}
|
|
128
|
+
// Sub-classes can override these to handle other blockchains
|
|
129
|
+
static getAbiCoder() {
|
|
130
|
+
return abi_coder_1.defaultAbiCoder;
|
|
131
|
+
}
|
|
132
|
+
static getAddress(address) {
|
|
133
|
+
return (0, address_1.getAddress)(address);
|
|
134
|
+
}
|
|
135
|
+
static getSighash(fragment) {
|
|
136
|
+
return (0, bytes_1.hexDataSlice)((0, hash_1.id)(fragment.format()), 0, 4);
|
|
137
|
+
}
|
|
138
|
+
static getEventTopic(eventFragment) {
|
|
139
|
+
return (0, hash_1.id)(eventFragment.format());
|
|
140
|
+
}
|
|
141
|
+
// Find a function definition by any means necessary (unless it is ambiguous)
|
|
142
|
+
getFunction(nameOrSignatureOrSighash) {
|
|
143
|
+
if ((0, bytes_1.isHexString)(nameOrSignatureOrSighash)) {
|
|
144
|
+
for (const name in this.functions) {
|
|
145
|
+
if (nameOrSignatureOrSighash === this.getSighash(name)) {
|
|
146
|
+
return this.functions[name];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
logger.throwArgumentError("no matching function", "sighash", nameOrSignatureOrSighash);
|
|
150
|
+
}
|
|
151
|
+
// It is a bare name, look up the function (will return null if ambiguous)
|
|
152
|
+
if (nameOrSignatureOrSighash.indexOf("(") === -1) {
|
|
153
|
+
const name = nameOrSignatureOrSighash.trim();
|
|
154
|
+
const matching = Object.keys(this.functions).filter((f) => (f.split("(" /* fix:) */)[0] === name));
|
|
155
|
+
if (matching.length === 0) {
|
|
156
|
+
logger.throwArgumentError("no matching function", "name", name);
|
|
157
|
+
}
|
|
158
|
+
else if (matching.length > 1) {
|
|
159
|
+
logger.throwArgumentError("multiple matching functions", "name", name);
|
|
160
|
+
}
|
|
161
|
+
return this.functions[matching[0]];
|
|
162
|
+
}
|
|
163
|
+
// Normalize the signature and lookup the function
|
|
164
|
+
const result = this.functions[fragments_1.FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
|
|
165
|
+
if (!result) {
|
|
166
|
+
logger.throwArgumentError("no matching function", "signature", nameOrSignatureOrSighash);
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
// Find an event definition by any means necessary (unless it is ambiguous)
|
|
171
|
+
getEvent(nameOrSignatureOrTopic) {
|
|
172
|
+
if ((0, bytes_1.isHexString)(nameOrSignatureOrTopic)) {
|
|
173
|
+
const topichash = nameOrSignatureOrTopic.toLowerCase();
|
|
174
|
+
for (const name in this.events) {
|
|
175
|
+
if (topichash === this.getEventTopic(name)) {
|
|
176
|
+
return this.events[name];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
logger.throwArgumentError("no matching event", "topichash", topichash);
|
|
180
|
+
}
|
|
181
|
+
// It is a bare name, look up the function (will return null if ambiguous)
|
|
182
|
+
if (nameOrSignatureOrTopic.indexOf("(") === -1) {
|
|
183
|
+
const name = nameOrSignatureOrTopic.trim();
|
|
184
|
+
const matching = Object.keys(this.events).filter((f) => (f.split("(" /* fix:) */)[0] === name));
|
|
185
|
+
if (matching.length === 0) {
|
|
186
|
+
logger.throwArgumentError("no matching event", "name", name);
|
|
187
|
+
}
|
|
188
|
+
else if (matching.length > 1) {
|
|
189
|
+
logger.throwArgumentError("multiple matching events", "name", name);
|
|
190
|
+
}
|
|
191
|
+
return this.events[matching[0]];
|
|
192
|
+
}
|
|
193
|
+
// Normalize the signature and lookup the function
|
|
194
|
+
const result = this.events[fragments_1.EventFragment.fromString(nameOrSignatureOrTopic).format()];
|
|
195
|
+
if (!result) {
|
|
196
|
+
logger.throwArgumentError("no matching event", "signature", nameOrSignatureOrTopic);
|
|
197
|
+
}
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
// Find a function definition by any means necessary (unless it is ambiguous)
|
|
201
|
+
getError(nameOrSignatureOrSighash) {
|
|
202
|
+
if ((0, bytes_1.isHexString)(nameOrSignatureOrSighash)) {
|
|
203
|
+
const getSighash = (0, properties_1.getStatic)(this.constructor, "getSighash");
|
|
204
|
+
for (const name in this.errors) {
|
|
205
|
+
const error = this.errors[name];
|
|
206
|
+
if (nameOrSignatureOrSighash === getSighash(error)) {
|
|
207
|
+
return this.errors[name];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
logger.throwArgumentError("no matching error", "sighash", nameOrSignatureOrSighash);
|
|
211
|
+
}
|
|
212
|
+
// It is a bare name, look up the function (will return null if ambiguous)
|
|
213
|
+
if (nameOrSignatureOrSighash.indexOf("(") === -1) {
|
|
214
|
+
const name = nameOrSignatureOrSighash.trim();
|
|
215
|
+
const matching = Object.keys(this.errors).filter((f) => (f.split("(" /* fix:) */)[0] === name));
|
|
216
|
+
if (matching.length === 0) {
|
|
217
|
+
logger.throwArgumentError("no matching error", "name", name);
|
|
218
|
+
}
|
|
219
|
+
else if (matching.length > 1) {
|
|
220
|
+
logger.throwArgumentError("multiple matching errors", "name", name);
|
|
221
|
+
}
|
|
222
|
+
return this.errors[matching[0]];
|
|
223
|
+
}
|
|
224
|
+
// Normalize the signature and lookup the function
|
|
225
|
+
const result = this.errors[fragments_1.FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
|
|
226
|
+
if (!result) {
|
|
227
|
+
logger.throwArgumentError("no matching error", "signature", nameOrSignatureOrSighash);
|
|
228
|
+
}
|
|
229
|
+
return result;
|
|
230
|
+
}
|
|
231
|
+
// Get the sighash (the bytes4 selector) used by Solidity to identify a function
|
|
232
|
+
getSighash(fragment) {
|
|
233
|
+
if (typeof (fragment) === "string") {
|
|
234
|
+
try {
|
|
235
|
+
fragment = this.getFunction(fragment);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
try {
|
|
239
|
+
fragment = this.getError(fragment);
|
|
240
|
+
}
|
|
241
|
+
catch (_) {
|
|
242
|
+
throw error;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return (0, properties_1.getStatic)(this.constructor, "getSighash")(fragment);
|
|
247
|
+
}
|
|
248
|
+
// Get the topic (the bytes32 hash) used by Solidity to identify an event
|
|
249
|
+
getEventTopic(eventFragment) {
|
|
250
|
+
if (typeof (eventFragment) === "string") {
|
|
251
|
+
eventFragment = this.getEvent(eventFragment);
|
|
252
|
+
}
|
|
253
|
+
return (0, properties_1.getStatic)(this.constructor, "getEventTopic")(eventFragment);
|
|
254
|
+
}
|
|
255
|
+
_decodeParams(params, data) {
|
|
256
|
+
return this._abiCoder.decode(params, data);
|
|
257
|
+
}
|
|
258
|
+
_encodeParams(params, values) {
|
|
259
|
+
return this._abiCoder.encode(params, values);
|
|
260
|
+
}
|
|
261
|
+
encodeDeploy(values) {
|
|
262
|
+
return this._encodeParams(this.deploy.inputs, values || []);
|
|
263
|
+
}
|
|
264
|
+
decodeErrorResult(fragment, data) {
|
|
265
|
+
if (typeof (fragment) === "string") {
|
|
266
|
+
fragment = this.getError(fragment);
|
|
267
|
+
}
|
|
268
|
+
const bytes = (0, bytes_1.arrayify)(data);
|
|
269
|
+
if ((0, bytes_1.hexlify)(bytes.slice(0, 4)) !== this.getSighash(fragment)) {
|
|
270
|
+
logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, "data", (0, bytes_1.hexlify)(bytes));
|
|
271
|
+
}
|
|
272
|
+
return this._decodeParams(fragment.inputs, bytes.slice(4));
|
|
273
|
+
}
|
|
274
|
+
encodeErrorResult(fragment, values) {
|
|
275
|
+
if (typeof (fragment) === "string") {
|
|
276
|
+
fragment = this.getError(fragment);
|
|
277
|
+
}
|
|
278
|
+
return (0, bytes_1.hexlify)((0, bytes_1.concat)([
|
|
279
|
+
this.getSighash(fragment),
|
|
280
|
+
this._encodeParams(fragment.inputs, values || [])
|
|
281
|
+
]));
|
|
282
|
+
}
|
|
283
|
+
// Decode the data for a function call (e.g. tx.data)
|
|
284
|
+
decodeFunctionData(functionFragment, data) {
|
|
285
|
+
if (typeof (functionFragment) === "string") {
|
|
286
|
+
functionFragment = this.getFunction(functionFragment);
|
|
287
|
+
}
|
|
288
|
+
const bytes = (0, bytes_1.arrayify)(data);
|
|
289
|
+
if ((0, bytes_1.hexlify)(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {
|
|
290
|
+
logger.throwArgumentError(`data signature does not match function ${functionFragment.name}.`, "data", (0, bytes_1.hexlify)(bytes));
|
|
291
|
+
}
|
|
292
|
+
return this._decodeParams(functionFragment.inputs, bytes.slice(4));
|
|
293
|
+
}
|
|
294
|
+
// Encode the data for a function call (e.g. tx.data)
|
|
295
|
+
encodeFunctionData(functionFragment, values) {
|
|
296
|
+
if (typeof (functionFragment) === "string") {
|
|
297
|
+
functionFragment = this.getFunction(functionFragment);
|
|
298
|
+
}
|
|
299
|
+
return (0, bytes_1.hexlify)((0, bytes_1.concat)([
|
|
300
|
+
this.getSighash(functionFragment),
|
|
301
|
+
this._encodeParams(functionFragment.inputs, values || [])
|
|
302
|
+
]));
|
|
303
|
+
}
|
|
304
|
+
// Decode the result from a function call (e.g. from eth_call)
|
|
305
|
+
decodeFunctionResult(functionFragment, data) {
|
|
306
|
+
if (typeof (functionFragment) === "string") {
|
|
307
|
+
functionFragment = this.getFunction(functionFragment);
|
|
308
|
+
}
|
|
309
|
+
let bytes = (0, bytes_1.arrayify)(data);
|
|
310
|
+
let reason = null;
|
|
311
|
+
let message = "";
|
|
312
|
+
let errorArgs = null;
|
|
313
|
+
let errorName = null;
|
|
314
|
+
let errorSignature = null;
|
|
315
|
+
switch (bytes.length % this._abiCoder._getWordSize()) {
|
|
316
|
+
case 0:
|
|
317
|
+
try {
|
|
318
|
+
return this._abiCoder.decode(functionFragment.outputs, bytes);
|
|
319
|
+
}
|
|
320
|
+
catch (error) { }
|
|
321
|
+
break;
|
|
322
|
+
case 4: {
|
|
323
|
+
const selector = (0, bytes_1.hexlify)(bytes.slice(0, 4));
|
|
324
|
+
const builtin = BuiltinErrors[selector];
|
|
325
|
+
if (builtin) {
|
|
326
|
+
errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));
|
|
327
|
+
errorName = builtin.name;
|
|
328
|
+
errorSignature = builtin.signature;
|
|
329
|
+
if (builtin.reason) {
|
|
330
|
+
reason = errorArgs[0];
|
|
331
|
+
}
|
|
332
|
+
if (errorName === "Error") {
|
|
333
|
+
message = `; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(errorArgs[0])}`;
|
|
334
|
+
}
|
|
335
|
+
else if (errorName === "Panic") {
|
|
336
|
+
message = `; VM Exception while processing transaction: reverted with panic code ${errorArgs[0]}`;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
try {
|
|
341
|
+
const error = this.getError(selector);
|
|
342
|
+
errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));
|
|
343
|
+
errorName = error.name;
|
|
344
|
+
errorSignature = error.format();
|
|
345
|
+
}
|
|
346
|
+
catch (error) { }
|
|
347
|
+
}
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return logger.throwError("call revert exception" + message, logger_1.Logger.errors.CALL_EXCEPTION, {
|
|
352
|
+
method: functionFragment.format(),
|
|
353
|
+
data: (0, bytes_1.hexlify)(data), errorArgs, errorName, errorSignature, reason
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
// Encode the result for a function call (e.g. for eth_call)
|
|
357
|
+
encodeFunctionResult(functionFragment, values) {
|
|
358
|
+
if (typeof (functionFragment) === "string") {
|
|
359
|
+
functionFragment = this.getFunction(functionFragment);
|
|
360
|
+
}
|
|
361
|
+
return (0, bytes_1.hexlify)(this._abiCoder.encode(functionFragment.outputs, values || []));
|
|
362
|
+
}
|
|
363
|
+
// Create the filter for the event with search criteria (e.g. for eth_filterLog)
|
|
364
|
+
encodeFilterTopics(eventFragment, values) {
|
|
365
|
+
if (typeof (eventFragment) === "string") {
|
|
366
|
+
eventFragment = this.getEvent(eventFragment);
|
|
367
|
+
}
|
|
368
|
+
if (values.length > eventFragment.inputs.length) {
|
|
369
|
+
logger.throwError("too many arguments for " + eventFragment.format(), logger_1.Logger.errors.UNEXPECTED_ARGUMENT, {
|
|
370
|
+
argument: "values",
|
|
371
|
+
value: values
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
let topics = [];
|
|
375
|
+
if (!eventFragment.anonymous) {
|
|
376
|
+
topics.push(this.getEventTopic(eventFragment));
|
|
377
|
+
}
|
|
378
|
+
const encodeTopic = (param, value) => {
|
|
379
|
+
if (param.type === "string") {
|
|
380
|
+
return (0, hash_1.id)(value);
|
|
381
|
+
}
|
|
382
|
+
else if (param.type === "bytes") {
|
|
383
|
+
return (0, keccak256_1.keccak256)((0, bytes_1.hexlify)(value));
|
|
384
|
+
}
|
|
385
|
+
if (param.type === "bool" && typeof (value) === "boolean") {
|
|
386
|
+
value = (value ? "0x01" : "0x00");
|
|
387
|
+
}
|
|
388
|
+
if (param.type.match(/^u?int/)) {
|
|
389
|
+
value = bignumber_1.BigNumber.from(value).toHexString();
|
|
390
|
+
}
|
|
391
|
+
// Check addresses are valid
|
|
392
|
+
if (param.type === "address") {
|
|
393
|
+
this._abiCoder.encode(["address"], [value]);
|
|
394
|
+
}
|
|
395
|
+
return (0, bytes_1.hexZeroPad)((0, bytes_1.hexlify)(value), 32);
|
|
396
|
+
};
|
|
397
|
+
values.forEach((value, index) => {
|
|
398
|
+
let param = eventFragment.inputs[index];
|
|
399
|
+
if (!param.indexed) {
|
|
400
|
+
if (value != null) {
|
|
401
|
+
logger.throwArgumentError("cannot filter non-indexed parameters; must be null", ("contract." + param.name), value);
|
|
402
|
+
}
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
if (value == null) {
|
|
406
|
+
topics.push(null);
|
|
407
|
+
}
|
|
408
|
+
else if (param.baseType === "array" || param.baseType === "tuple") {
|
|
409
|
+
logger.throwArgumentError("filtering with tuples or arrays not supported", ("contract." + param.name), value);
|
|
410
|
+
}
|
|
411
|
+
else if (Array.isArray(value)) {
|
|
412
|
+
topics.push(value.map((value) => encodeTopic(param, value)));
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
topics.push(encodeTopic(param, value));
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
// Trim off trailing nulls
|
|
419
|
+
while (topics.length && topics[topics.length - 1] === null) {
|
|
420
|
+
topics.pop();
|
|
421
|
+
}
|
|
422
|
+
return topics;
|
|
423
|
+
}
|
|
424
|
+
encodeEventLog(eventFragment, values) {
|
|
425
|
+
if (typeof (eventFragment) === "string") {
|
|
426
|
+
eventFragment = this.getEvent(eventFragment);
|
|
427
|
+
}
|
|
428
|
+
const topics = [];
|
|
429
|
+
const dataTypes = [];
|
|
430
|
+
const dataValues = [];
|
|
431
|
+
if (!eventFragment.anonymous) {
|
|
432
|
+
topics.push(this.getEventTopic(eventFragment));
|
|
433
|
+
}
|
|
434
|
+
if (values.length !== eventFragment.inputs.length) {
|
|
435
|
+
logger.throwArgumentError("event arguments/values mismatch", "values", values);
|
|
436
|
+
}
|
|
437
|
+
eventFragment.inputs.forEach((param, index) => {
|
|
438
|
+
const value = values[index];
|
|
439
|
+
if (param.indexed) {
|
|
440
|
+
if (param.type === "string") {
|
|
441
|
+
topics.push((0, hash_1.id)(value));
|
|
442
|
+
}
|
|
443
|
+
else if (param.type === "bytes") {
|
|
444
|
+
topics.push((0, keccak256_1.keccak256)(value));
|
|
445
|
+
}
|
|
446
|
+
else if (param.baseType === "tuple" || param.baseType === "array") {
|
|
447
|
+
// @TODO
|
|
448
|
+
throw new Error("not implemented");
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
topics.push(this._abiCoder.encode([param.type], [value]));
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
dataTypes.push(param);
|
|
456
|
+
dataValues.push(value);
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
return {
|
|
460
|
+
data: this._abiCoder.encode(dataTypes, dataValues),
|
|
461
|
+
topics: topics
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
// Decode a filter for the event and the search criteria
|
|
465
|
+
decodeEventLog(eventFragment, data, topics) {
|
|
466
|
+
if (typeof (eventFragment) === "string") {
|
|
467
|
+
eventFragment = this.getEvent(eventFragment);
|
|
468
|
+
}
|
|
469
|
+
if (topics != null && !eventFragment.anonymous) {
|
|
470
|
+
let topicHash = this.getEventTopic(eventFragment);
|
|
471
|
+
if (!(0, bytes_1.isHexString)(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {
|
|
472
|
+
logger.throwError("fragment/topic mismatch", logger_1.Logger.errors.INVALID_ARGUMENT, { argument: "topics[0]", expected: topicHash, value: topics[0] });
|
|
473
|
+
}
|
|
474
|
+
topics = topics.slice(1);
|
|
475
|
+
}
|
|
476
|
+
let indexed = [];
|
|
477
|
+
let nonIndexed = [];
|
|
478
|
+
let dynamic = [];
|
|
479
|
+
eventFragment.inputs.forEach((param, index) => {
|
|
480
|
+
if (param.indexed) {
|
|
481
|
+
if (param.type === "string" || param.type === "bytes" || param.baseType === "tuple" || param.baseType === "array") {
|
|
482
|
+
indexed.push(fragments_1.ParamType.fromObject({ type: "bytes32", name: param.name }));
|
|
483
|
+
dynamic.push(true);
|
|
484
|
+
}
|
|
485
|
+
else {
|
|
486
|
+
indexed.push(param);
|
|
487
|
+
dynamic.push(false);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
nonIndexed.push(param);
|
|
492
|
+
dynamic.push(false);
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, (0, bytes_1.concat)(topics)) : null;
|
|
496
|
+
let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);
|
|
497
|
+
let result = [];
|
|
498
|
+
let nonIndexedIndex = 0, indexedIndex = 0;
|
|
499
|
+
eventFragment.inputs.forEach((param, index) => {
|
|
500
|
+
if (param.indexed) {
|
|
501
|
+
if (resultIndexed == null) {
|
|
502
|
+
result[index] = new Indexed({ _isIndexed: true, hash: null });
|
|
503
|
+
}
|
|
504
|
+
else if (dynamic[index]) {
|
|
505
|
+
result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });
|
|
506
|
+
}
|
|
507
|
+
else {
|
|
508
|
+
try {
|
|
509
|
+
result[index] = resultIndexed[indexedIndex++];
|
|
510
|
+
}
|
|
511
|
+
catch (error) {
|
|
512
|
+
result[index] = error;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
try {
|
|
518
|
+
result[index] = resultNonIndexed[nonIndexedIndex++];
|
|
519
|
+
}
|
|
520
|
+
catch (error) {
|
|
521
|
+
result[index] = error;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
// Add the keyword argument if named and safe
|
|
525
|
+
if (param.name && result[param.name] == null) {
|
|
526
|
+
const value = result[index];
|
|
527
|
+
// Make error named values throw on access
|
|
528
|
+
if (value instanceof Error) {
|
|
529
|
+
Object.defineProperty(result, param.name, {
|
|
530
|
+
enumerable: true,
|
|
531
|
+
get: () => { throw wrapAccessError(`property ${JSON.stringify(param.name)}`, value); }
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
else {
|
|
535
|
+
result[param.name] = value;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
// Make all error indexed values throw on access
|
|
540
|
+
for (let i = 0; i < result.length; i++) {
|
|
541
|
+
const value = result[i];
|
|
542
|
+
if (value instanceof Error) {
|
|
543
|
+
Object.defineProperty(result, i, {
|
|
544
|
+
enumerable: true,
|
|
545
|
+
get: () => { throw wrapAccessError(`index ${i}`, value); }
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
return Object.freeze(result);
|
|
550
|
+
}
|
|
551
|
+
// Given a transaction, find the matching function fragment (if any) and
|
|
552
|
+
// determine all its properties and call parameters
|
|
553
|
+
parseTransaction(tx) {
|
|
554
|
+
let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase());
|
|
555
|
+
if (!fragment) {
|
|
556
|
+
return null;
|
|
557
|
+
}
|
|
558
|
+
return new TransactionDescription({
|
|
559
|
+
args: this._abiCoder.decode(fragment.inputs, "0x" + tx.data.substring(10)),
|
|
560
|
+
functionFragment: fragment,
|
|
561
|
+
name: fragment.name,
|
|
562
|
+
signature: fragment.format(),
|
|
563
|
+
sighash: this.getSighash(fragment),
|
|
564
|
+
value: bignumber_1.BigNumber.from(tx.value || "0"),
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
// @TODO
|
|
568
|
+
//parseCallResult(data: BytesLike): ??
|
|
569
|
+
// Given an event log, find the matching event fragment (if any) and
|
|
570
|
+
// determine all its properties and values
|
|
571
|
+
parseLog(log) {
|
|
572
|
+
let fragment = this.getEvent(log.topics[0]);
|
|
573
|
+
if (!fragment || fragment.anonymous) {
|
|
574
|
+
return null;
|
|
575
|
+
}
|
|
576
|
+
// @TODO: If anonymous, and the only method, and the input count matches, should we parse?
|
|
577
|
+
// Probably not, because just because it is the only event in the ABI does
|
|
578
|
+
// not mean we have the full ABI; maybe just a fragment?
|
|
579
|
+
return new LogDescription({
|
|
580
|
+
eventFragment: fragment,
|
|
581
|
+
name: fragment.name,
|
|
582
|
+
signature: fragment.format(),
|
|
583
|
+
topic: this.getEventTopic(fragment),
|
|
584
|
+
args: this.decodeEventLog(fragment, log.data, log.topics)
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
parseError(data) {
|
|
588
|
+
const hexData = (0, bytes_1.hexlify)(data);
|
|
589
|
+
let fragment = this.getError(hexData.substring(0, 10).toLowerCase());
|
|
590
|
+
if (!fragment) {
|
|
591
|
+
return null;
|
|
592
|
+
}
|
|
593
|
+
return new ErrorDescription({
|
|
594
|
+
args: this._abiCoder.decode(fragment.inputs, "0x" + hexData.substring(10)),
|
|
595
|
+
errorFragment: fragment,
|
|
596
|
+
name: fragment.name,
|
|
597
|
+
signature: fragment.format(),
|
|
598
|
+
sighash: this.getSighash(fragment),
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
/*
|
|
602
|
+
static from(value: Array<Fragment | string | JsonAbi> | string | Interface) {
|
|
603
|
+
if (Interface.isInterface(value)) {
|
|
604
|
+
return value;
|
|
605
|
+
}
|
|
606
|
+
if (typeof(value) === "string") {
|
|
607
|
+
return new Interface(JSON.parse(value));
|
|
608
|
+
}
|
|
609
|
+
return new Interface(value);
|
|
610
|
+
}
|
|
611
|
+
*/
|
|
612
|
+
static isInterface(value) {
|
|
613
|
+
return !!(value && value._isInterface);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
exports.Interface = Interface;
|
|
617
|
+
//# sourceMappingURL=interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../src.ts/interface.ts"],"names":[],"mappings":"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"}
|