Comparing version 2.1.0 to 3.0.0
{ | ||
"env": { | ||
"browser": false, | ||
"es6": true | ||
"es2020": true, | ||
"node": true | ||
}, | ||
"plugins": ["import"], | ||
"extends": [ | ||
"eslint:recommended", | ||
"plugin:import/errors", | ||
"plugin:import/warnings", | ||
"plugin:import/recommended", | ||
"plugin:import/typescript", | ||
"plugin:@typescript-eslint/recommended" | ||
], | ||
"globals": { | ||
"Atomics": "readonly", | ||
"SharedArrayBuffer": "readonly" | ||
}, | ||
"parserOptions": { | ||
@@ -23,11 +17,12 @@ "parser": "@typescript-eslint/parser", | ||
}, | ||
"plugins": ["import"], | ||
"rules": { | ||
"indent": ["error", 2], | ||
"linebreak-style": ["error", "unix"], | ||
"quotes": ["error", "single", { "avoidEscape": true }], | ||
"semi": ["error", "always"], | ||
"comma-dangle": ["error", "always-multiline"], | ||
"import/first": "error", | ||
"import/exports-last": "error", | ||
"import/newline-after-import": "error", | ||
"import/prefer-default-export": "error", | ||
"import/group-exports": "error", | ||
"import/no-duplicates": "error", | ||
"import/no-amd": "error", | ||
"import/no-commonjs": "error", | ||
"import/order": [ | ||
@@ -42,7 +37,12 @@ "error", | ||
], | ||
"@typescript-eslint/ban-ts-ignore": "off", | ||
"@typescript-eslint/no-explicit-any": "off", | ||
"@typescript-eslint/no-use-before-define": "off", | ||
"@typescript-eslint/explicit-module-boundary-types": "off" | ||
"import/no-unused-modules": "error", | ||
"import/no-mutable-exports": "error", | ||
"import/no-extraneous-dependencies": ["error", {"devDependencies": ["test/**/*.test.ts"]}], | ||
"@typescript-eslint/explicit-function-return-type": "error" | ||
}, | ||
"settings": { | ||
"import/resolver": { | ||
"typescript": {} | ||
} | ||
} | ||
} |
{ | ||
"trailingComma": "all", | ||
"semi": true, | ||
"singleQuote": true | ||
} |
@@ -1,20 +0,16 @@ | ||
import { JsonFragment, JsonFragmentType, Result } from '@ethersproject/abi'; | ||
import { JsonFragment } from '@ethersproject/abi'; | ||
interface FunctionData { | ||
name: string; | ||
inputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
interface FunctionOutputData { | ||
name: string; | ||
outputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
interface Constructor { | ||
inputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
interface Event { | ||
name: string; | ||
inputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
@@ -25,2 +21,4 @@ interface EventEncoding { | ||
} | ||
declare type Value = any; | ||
declare type ValueMap = Record<string, Value>; | ||
declare class Coder { | ||
@@ -35,6 +33,6 @@ private abi; | ||
decodeFunctionOutput(name: string, data: string): FunctionOutputData; | ||
encodeConstructor(values: any[]): string; | ||
encodeEvent(name: string, values: any[]): EventEncoding; | ||
encodeFunction(name: string, values: any[]): string; | ||
encodeFunctionOutput(name: string, values: any[]): string; | ||
encodeConstructor(valueMap: ValueMap): string; | ||
encodeEvent(name: string, values: Record<string, Value>): EventEncoding; | ||
encodeFunction(name: string, valueMap: Record<string, Value>): string; | ||
encodeFunctionOutput(name: string, valueMap: Record<string, Value>): string; | ||
private getConstructor; | ||
@@ -49,1 +47,2 @@ private getFunctionByName; | ||
export { FunctionData, FunctionOutputData, Constructor, Event, EventEncoding }; | ||
//# sourceMappingURL=index.d.ts.map |
565
lib/index.js
@@ -17,259 +17,348 @@ "use strict"; | ||
function Coder(abi) { | ||
Object.defineProperty(this, "abi", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: void 0 | ||
}); | ||
this.abi = abi; | ||
} | ||
Coder.prototype.getFunctionSelector = function (name) { | ||
var func = this.getFunctionByName(name); | ||
var jsonInputs = func === null || func === void 0 ? void 0 : func.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
Object.defineProperty(Coder.prototype, "getFunctionSelector", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name) { | ||
var func = this.getFunctionByName(name); | ||
var jsonInputs = func === null || func === void 0 ? void 0 : func.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var hash = sha3(signature); | ||
return hash.substring(0, 10); | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var hash = sha3(signature); | ||
return hash.substring(0, 10); | ||
}; | ||
Coder.prototype.getEventTopic = function (name) { | ||
var event = this.getEventByName(name); | ||
var jsonInputs = event === null || event === void 0 ? void 0 : event.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "getEventTopic", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name) { | ||
var event = this.getEventByName(name); | ||
var jsonInputs = event === null || event === void 0 ? void 0 : event.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
return sha3(signature); | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
return sha3(signature); | ||
}; | ||
Coder.prototype.decodeConstructor = function (data) { | ||
var constructor = this.getConstructor(); | ||
var jsonInputs = constructor === null || constructor === void 0 ? void 0 : constructor.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "decodeConstructor", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (data) { | ||
var constructor = this.getConstructor(); | ||
var jsonInputs = constructor === null || constructor === void 0 ? void 0 : constructor.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var result = abi_1.defaultAbiCoder.decode(inputs, data); | ||
var values = toValueMap(result, inputs); | ||
return { | ||
values: values, | ||
}; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var result = abi_1.defaultAbiCoder.decode(inputs, data); | ||
return { | ||
inputs: inputs, | ||
values: result, | ||
}; | ||
}; | ||
Coder.prototype.decodeEvent = function (topics, data) { | ||
var event = this.getEventByTopic(topics[0]); | ||
var dataTopics = topics.slice(1); | ||
var jsonInputs = event === null || event === void 0 ? void 0 : event.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "decodeEvent", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (topics, data) { | ||
var event = this.getEventByTopic(topics[0]); | ||
var dataTopics = topics.slice(1); | ||
var jsonInputs = event === null || event === void 0 ? void 0 : event.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
// Decode topics | ||
var topicInputs = inputs.filter(function (input) { return input.indexed; }); | ||
var topicResult = topicInputs.map(function (input, index) { | ||
var topic = dataTopics[index]; | ||
var params = abi_1.defaultAbiCoder.decode([input], topic); | ||
var param = params[0]; | ||
return param; | ||
}); | ||
// Decode data | ||
var dataInputs = inputs.filter(function (input) { return !input.indexed; }); | ||
var dataResult = abi_1.defaultAbiCoder.decode(dataInputs, data); | ||
// Concat | ||
if (!event.name) { | ||
throw Error; | ||
} | ||
var topicIndex = 0; | ||
var dataIndex = 0; | ||
var result = []; | ||
for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) { | ||
var input = inputs_1[_i]; | ||
if (input.indexed) { | ||
result.push(topicResult[topicIndex]); | ||
topicIndex++; | ||
} | ||
else { | ||
result.push(dataResult[dataIndex]); | ||
dataIndex++; | ||
} | ||
} | ||
var values = toValueMap(result, inputs); | ||
return { | ||
name: event.name, | ||
values: values, | ||
}; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
// Decode topics | ||
var topicInputs = inputs.filter(function (input) { return input.indexed; }); | ||
var topicResult = topicInputs.map(function (input, index) { | ||
var topic = dataTopics[index]; | ||
var params = abi_1.defaultAbiCoder.decode([input], topic); | ||
var param = params[0]; | ||
return param; | ||
}); | ||
// Decode data | ||
var dataInputs = inputs.filter(function (input) { return !input.indexed; }); | ||
var dataResult = abi_1.defaultAbiCoder.decode(dataInputs, data); | ||
// Concat | ||
if (!event.name) { | ||
throw Error; | ||
} | ||
var topicIndex = 0; | ||
var dataIndex = 0; | ||
var result = []; | ||
for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) { | ||
var input = inputs_1[_i]; | ||
if (input.indexed) { | ||
result.push(topicResult[topicIndex]); | ||
topicIndex++; | ||
}); | ||
Object.defineProperty(Coder.prototype, "decodeFunction", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (data) { | ||
var selector = data.substring(0, 10); | ||
var func = this.getFunctionBySelector(selector); | ||
// Decode calldata using function inputs | ||
var jsonInputs = func === null || func === void 0 ? void 0 : func.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
else { | ||
result.push(dataResult[dataIndex]); | ||
dataIndex++; | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var calldata = "0x".concat(data.substring(10)); | ||
var result = abi_1.defaultAbiCoder.decode(inputs, calldata); | ||
var values = toValueMap(result, inputs); | ||
if (!func.name) { | ||
throw Error; | ||
} | ||
return { | ||
name: func.name, | ||
values: values, | ||
}; | ||
} | ||
return { | ||
name: event.name, | ||
inputs: inputs, | ||
values: result, | ||
}; | ||
}; | ||
Coder.prototype.decodeFunction = function (data) { | ||
var selector = data.substring(0, 10); | ||
var func = this.getFunctionBySelector(selector); | ||
// Decode calldata using function inputs | ||
var jsonInputs = func === null || func === void 0 ? void 0 : func.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "decodeFunctionOutput", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name, data) { | ||
var func = this.getFunctionByName(name); | ||
var jsonOutputs = func === null || func === void 0 ? void 0 : func.outputs; | ||
if (!jsonOutputs) { | ||
throw Error; | ||
} | ||
var outputs = jsonOutputs.map(function (output) { return abi_1.ParamType.fromObject(output); }); | ||
var result = abi_1.defaultAbiCoder.decode(outputs, data); | ||
var values = toValueMap(result, outputs); | ||
return { | ||
name: name, | ||
values: values, | ||
}; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var calldata = "0x".concat(data.substring(10)); | ||
var result = abi_1.defaultAbiCoder.decode(inputs, calldata); | ||
if (!func.name) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "encodeConstructor", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (valueMap) { | ||
var constructor = this.getConstructor(); | ||
var jsonInputs = constructor === null || constructor === void 0 ? void 0 : constructor.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var values = toValues(valueMap, inputs); | ||
return abi_1.defaultAbiCoder.encode(inputs, values); | ||
} | ||
return { | ||
name: func.name, | ||
inputs: inputs, | ||
values: result, | ||
}; | ||
}; | ||
Coder.prototype.decodeFunctionOutput = function (name, data) { | ||
var func = this.getFunctionByName(name); | ||
var jsonOutputs = func === null || func === void 0 ? void 0 : func.outputs; | ||
if (!jsonOutputs) { | ||
throw Error; | ||
} | ||
var outputs = jsonOutputs.map(function (output) { return abi_1.ParamType.fromObject(output); }); | ||
var result = abi_1.defaultAbiCoder.decode(outputs, data); | ||
return { | ||
name: name, | ||
outputs: outputs, | ||
values: result, | ||
}; | ||
}; | ||
Coder.prototype.encodeConstructor = function (values) { | ||
var constructor = this.getConstructor(); | ||
var jsonInputs = constructor === null || constructor === void 0 ? void 0 : constructor.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
return abi_1.defaultAbiCoder.encode(inputs, values); | ||
}; | ||
Coder.prototype.encodeEvent = function (name, values) { | ||
var event = this.getEventByName(name); | ||
var jsonInputs = event === null || event === void 0 ? void 0 : event.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var eventSignature = Coder.getSignature(name, inputs); | ||
var eventTopic = sha3(eventSignature); | ||
// Group params by type | ||
var topicResult = []; | ||
var dataResult = []; | ||
for (var i = 0; i < inputs.length; i++) { | ||
var input = inputs[i]; | ||
var value = values[i]; | ||
if (input.indexed) { | ||
topicResult.push(value); | ||
}); | ||
Object.defineProperty(Coder.prototype, "encodeEvent", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name, values) { | ||
var event = this.getEventByName(name); | ||
var jsonInputs = event === null || event === void 0 ? void 0 : event.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
else { | ||
dataResult.push(value); | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var eventSignature = Coder.getSignature(name, inputs); | ||
var eventTopic = sha3(eventSignature); | ||
// Group params by type | ||
var topicResult = []; | ||
var dataResult = []; | ||
for (var i = 0; i < inputs.length; i++) { | ||
var input = inputs[i]; | ||
var value = values[input.name]; | ||
if (input.indexed) { | ||
topicResult.push(value); | ||
} | ||
else { | ||
dataResult.push(value); | ||
} | ||
} | ||
// Encode topic params | ||
var topicInputs = inputs.filter(function (input) { return input.indexed; }); | ||
var dataTopics = topicInputs.map(function (input, index) { | ||
return abi_1.defaultAbiCoder.encode([input], [topicResult[index]]); | ||
}); | ||
var topics = __spreadArray([eventTopic], dataTopics, true); | ||
// Encode data params | ||
var dataInputs = inputs.filter(function (input) { return !input.indexed; }); | ||
var data = abi_1.defaultAbiCoder.encode(dataInputs, dataResult); | ||
return { | ||
topics: topics, | ||
data: data, | ||
}; | ||
} | ||
// Encode topic params | ||
var topicInputs = inputs.filter(function (input) { return input.indexed; }); | ||
var dataTopics = topicInputs.map(function (input, index) { | ||
return abi_1.defaultAbiCoder.encode([input], [topicResult[index]]); | ||
}); | ||
var topics = __spreadArray([eventTopic], dataTopics, true); | ||
// Encode data params | ||
var dataInputs = inputs.filter(function (input) { return !input.indexed; }); | ||
var data = abi_1.defaultAbiCoder.encode(dataInputs, dataResult); | ||
return { | ||
topics: topics, | ||
data: data, | ||
}; | ||
}; | ||
Coder.prototype.encodeFunction = function (name, values) { | ||
var func = this.getFunctionByName(name); | ||
var jsonInputs = func === null || func === void 0 ? void 0 : func.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "encodeFunction", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name, valueMap) { | ||
var func = this.getFunctionByName(name); | ||
var jsonInputs = func === null || func === void 0 ? void 0 : func.inputs; | ||
if (!jsonInputs) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var selector = sha3(signature).substring(2, 10); | ||
var values = toValues(valueMap, inputs); | ||
var argumentString = abi_1.defaultAbiCoder.encode(inputs, values); | ||
var argumentData = argumentString.substring(2); | ||
var inputData = "0x".concat(selector).concat(argumentData); | ||
return inputData; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var selector = sha3(signature).substring(2, 10); | ||
var argumentString = abi_1.defaultAbiCoder.encode(inputs, values); | ||
var argumentData = argumentString.substring(2); | ||
var inputData = "0x".concat(selector).concat(argumentData); | ||
return inputData; | ||
}; | ||
Coder.prototype.encodeFunctionOutput = function (name, values) { | ||
var func = this.getFunctionByName(name); | ||
var jsonOutputs = func.outputs; | ||
if (!jsonOutputs) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "encodeFunctionOutput", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name, valueMap) { | ||
var func = this.getFunctionByName(name); | ||
var jsonOutputs = func.outputs; | ||
if (!jsonOutputs) { | ||
throw Error; | ||
} | ||
var outputs = jsonOutputs.map(function (output) { return abi_1.ParamType.fromObject(output); }); | ||
var values = toValues(valueMap, outputs); | ||
return abi_1.defaultAbiCoder.encode(outputs, values); | ||
} | ||
var outputs = jsonOutputs.map(function (output) { return abi_1.ParamType.fromObject(output); }); | ||
return abi_1.defaultAbiCoder.encode(outputs, values); | ||
}; | ||
Coder.prototype.getConstructor = function () { | ||
var constructor = this.abi.find(function (item) { return item.type === 'constructor'; }); | ||
if (!constructor) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "getConstructor", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function () { | ||
var constructor = this.abi.find(function (item) { return item.type === 'constructor'; }); | ||
if (!constructor) { | ||
throw Error; | ||
} | ||
return constructor; | ||
} | ||
return constructor; | ||
}; | ||
Coder.prototype.getFunctionByName = function (name) { | ||
var func = this.abi.find(function (item) { return item.type === 'function' && item.name === name; }); | ||
if (!func) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "getFunctionByName", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name) { | ||
var func = this.abi.find(function (item) { return item.type === 'function' && item.name === name; }); | ||
if (!func) { | ||
throw Error; | ||
} | ||
return func; | ||
} | ||
return func; | ||
}; | ||
Coder.prototype.getFunctionBySelector = function (selector) { | ||
var functions = this.abi.filter(function (item) { return item.type === 'function'; }); | ||
var func = functions.find(function (func) { | ||
var name = func.name; | ||
var jsonInputs = func.inputs; | ||
if (!name || !jsonInputs) { | ||
return false; | ||
}); | ||
Object.defineProperty(Coder.prototype, "getFunctionBySelector", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (selector) { | ||
var functions = this.abi.filter(function (item) { return item.type === 'function'; }); | ||
var func = functions.find(function (func) { | ||
var name = func.name; | ||
var jsonInputs = func.inputs; | ||
if (!name || !jsonInputs) { | ||
return false; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var hash = sha3(signature); | ||
var funcSelector = hash.substring(0, 10); | ||
return funcSelector === selector; | ||
}); | ||
if (!func) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var hash = sha3(signature); | ||
var funcSelector = hash.substring(0, 10); | ||
return funcSelector === selector; | ||
}); | ||
if (!func) { | ||
throw Error; | ||
return func; | ||
} | ||
return func; | ||
}; | ||
Coder.prototype.getEventByName = function (name) { | ||
var event = this.abi.find(function (item) { return item.type === 'event' && item.name === name; }); | ||
if (!event) { | ||
throw Error; | ||
}); | ||
Object.defineProperty(Coder.prototype, "getEventByName", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name) { | ||
var event = this.abi.find(function (item) { return item.type === 'event' && item.name === name; }); | ||
if (!event) { | ||
throw Error; | ||
} | ||
return event; | ||
} | ||
return event; | ||
}; | ||
Coder.prototype.getEventByTopic = function (topic) { | ||
var events = this.abi.filter(function (item) { return item.type === 'event'; }); | ||
var event = events.find(function (event) { | ||
var name = event.name; | ||
var jsonInputs = event.inputs; | ||
if (!name || !jsonInputs) { | ||
return false; | ||
}); | ||
Object.defineProperty(Coder.prototype, "getEventByTopic", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (topic) { | ||
var events = this.abi.filter(function (item) { return item.type === 'event'; }); | ||
var event = events.find(function (event) { | ||
var name = event.name; | ||
var jsonInputs = event.inputs; | ||
if (!name || !jsonInputs) { | ||
return false; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var eventTopic = sha3(signature); | ||
return eventTopic === topic; | ||
}); | ||
if (!event) { | ||
throw Error; | ||
} | ||
var inputs = jsonInputs.map(function (input) { return abi_1.ParamType.fromObject(input); }); | ||
var signature = Coder.getSignature(name, inputs); | ||
var eventTopic = sha3(signature); | ||
return eventTopic === topic; | ||
}); | ||
if (!event) { | ||
throw Error; | ||
return event; | ||
} | ||
return event; | ||
}; | ||
Coder.getSignature = function (name, inputs) { | ||
var types = []; | ||
for (var _i = 0, inputs_2 = inputs; _i < inputs_2.length; _i++) { | ||
var input = inputs_2[_i]; | ||
if (input.type.startsWith('tuple')) { | ||
var tupleString = Coder.getSignature('', input.components); | ||
var arrayArityString = input.type.substring('tuple'.length); | ||
var type = "".concat(tupleString).concat(arrayArityString); | ||
types.push(type); | ||
}); | ||
Object.defineProperty(Coder, "getSignature", { | ||
enumerable: false, | ||
configurable: true, | ||
writable: true, | ||
value: function (name, inputs) { | ||
var types = []; | ||
for (var _i = 0, inputs_2 = inputs; _i < inputs_2.length; _i++) { | ||
var input = inputs_2[_i]; | ||
if (input.type.startsWith('tuple')) { | ||
var tupleString = Coder.getSignature('', input.components); | ||
var arrayArityString = input.type.substring('tuple'.length); | ||
var type = "".concat(tupleString).concat(arrayArityString); | ||
types.push(type); | ||
} | ||
else { | ||
types.push(input.type); | ||
} | ||
} | ||
else { | ||
types.push(input.type); | ||
} | ||
var typeString = types.join(','); | ||
var functionSignature = "".concat(name, "(").concat(typeString, ")"); | ||
return functionSignature; | ||
} | ||
var typeString = types.join(','); | ||
var functionSignature = "".concat(name, "(").concat(typeString, ")"); | ||
return functionSignature; | ||
}; | ||
}); | ||
return Coder; | ||
@@ -280,2 +369,14 @@ }()); | ||
} | ||
function toValueMap(result, inputs) { | ||
return Object.fromEntries(result.map(function (value, index) { | ||
var input = inputs[index]; | ||
return [input.name, value]; | ||
})); | ||
} | ||
function toValues(values, inputs) { | ||
return inputs.map(function (input) { | ||
return values[input.name]; | ||
}); | ||
} | ||
exports.default = Coder; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "abi-coder", | ||
"version": "2.1.0", | ||
"version": "3.0.0", | ||
"description": "ABI function, event, and contrustor encoder/decoder", | ||
@@ -31,15 +31,15 @@ "main": "lib/index.js", | ||
"devDependencies": { | ||
"@ethersproject/bignumber": "5.5.0", | ||
"@ethersproject/bignumber": "5.6.0", | ||
"@types/node": "17.0.5", | ||
"@typescript-eslint/eslint-plugin": "5.11.0", | ||
"@typescript-eslint/parser": "5.11.0", | ||
"eslint": "8.9.0", | ||
"eslint-import-resolver-typescript": "2.5.0", | ||
"eslint-plugin-import": "2.25.4", | ||
"@typescript-eslint/eslint-plugin": "5.21.0", | ||
"@typescript-eslint/parser": "5.21.0", | ||
"eslint": "8.14.0", | ||
"eslint-import-resolver-typescript": "2.7.1", | ||
"eslint-plugin-import": "2.26.0", | ||
"eslint-plugin-prettier": "4.0.0", | ||
"prettier": "2.5.1", | ||
"ts-node": "10.5.0", | ||
"typescript": "4.5.5", | ||
"vitest": "0.3.5" | ||
"prettier": "2.6.2", | ||
"ts-node": "10.7.0", | ||
"typescript": "4.6.4", | ||
"vitest": "0.10.0" | ||
} | ||
} |
{ | ||
"extends": [ | ||
"config:base" | ||
"config:base", | ||
":preserveSemverRanges", | ||
":disableDependencyDashboard" | ||
], | ||
"schedule": ["before 8am on the first day of the month"], | ||
"packageRules": [ | ||
{ | ||
"updateTypes": ["minor", "patch", "pin", "digest"], | ||
"automerge": true | ||
}, | ||
{ | ||
"depTypeList": ["devDependencies"], | ||
"automerge": true | ||
} | ||
] | ||
} |
import { | ||
JsonFragment, | ||
JsonFragmentType, | ||
ParamType, | ||
@@ -13,4 +12,3 @@ Result, | ||
name: string; | ||
inputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
@@ -20,9 +18,7 @@ | ||
name: string; | ||
outputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
interface Constructor { | ||
inputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
@@ -32,4 +28,3 @@ | ||
name: string; | ||
inputs: JsonFragmentType[]; | ||
values: Result; | ||
values: ValueMap; | ||
} | ||
@@ -42,2 +37,7 @@ | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
type Value = any; | ||
type Values = Value[]; | ||
type ValueMap = Record<string, Value>; | ||
class Coder { | ||
@@ -81,5 +81,5 @@ private abi: JsonFragment[]; | ||
const result = defaultAbiCoder.decode(inputs, data); | ||
const values = toValueMap(result, inputs); | ||
return { | ||
inputs, | ||
values: result, | ||
values, | ||
}; | ||
@@ -123,6 +123,6 @@ } | ||
} | ||
const values = toValueMap(result, inputs); | ||
return { | ||
name: event.name, | ||
inputs, | ||
values: result, | ||
values, | ||
}; | ||
@@ -142,2 +142,3 @@ } | ||
const result = defaultAbiCoder.decode(inputs, calldata); | ||
const values = toValueMap(result, inputs); | ||
@@ -149,4 +150,3 @@ if (!func.name) { | ||
name: func.name, | ||
inputs, | ||
values: result, | ||
values, | ||
}; | ||
@@ -163,10 +163,10 @@ } | ||
const result = defaultAbiCoder.decode(outputs, data); | ||
const values = toValueMap(result, outputs); | ||
return { | ||
name, | ||
outputs, | ||
values: result, | ||
values, | ||
}; | ||
} | ||
encodeConstructor(values: any[]): string { | ||
encodeConstructor(valueMap: ValueMap): string { | ||
const constructor = this.getConstructor(); | ||
@@ -178,6 +178,7 @@ const jsonInputs = constructor?.inputs; | ||
const inputs = jsonInputs.map((input) => ParamType.fromObject(input)); | ||
const values = toValues(valueMap, inputs); | ||
return defaultAbiCoder.encode(inputs, values); | ||
} | ||
encodeEvent(name: string, values: any[]): EventEncoding { | ||
encodeEvent(name: string, values: Record<string, Value>): EventEncoding { | ||
const event = this.getEventByName(name); | ||
@@ -193,6 +194,6 @@ const jsonInputs = event?.inputs; | ||
const topicResult: Result = []; | ||
const dataResult: any[] = []; | ||
const dataResult: Values = []; | ||
for (let i = 0; i < inputs.length; i++) { | ||
const input = inputs[i]; | ||
const value = values[i]; | ||
const value = values[input.name]; | ||
if (input.indexed) { | ||
@@ -220,3 +221,3 @@ topicResult.push(value); | ||
encodeFunction(name: string, values: any[]): string { | ||
encodeFunction(name: string, valueMap: Record<string, Value>): string { | ||
const func = this.getFunctionByName(name); | ||
@@ -230,2 +231,3 @@ const jsonInputs = func?.inputs; | ||
const selector = sha3(signature).substring(2, 10); | ||
const values = toValues(valueMap, inputs); | ||
const argumentString = defaultAbiCoder.encode(inputs, values); | ||
@@ -237,3 +239,3 @@ const argumentData = argumentString.substring(2); | ||
encodeFunctionOutput(name: string, values: any[]): string { | ||
encodeFunctionOutput(name: string, valueMap: Record<string, Value>): string { | ||
const func = this.getFunctionByName(name); | ||
@@ -245,2 +247,3 @@ const jsonOutputs = func.outputs; | ||
const outputs = jsonOutputs.map((output) => ParamType.fromObject(output)); | ||
const values = toValues(valueMap, outputs); | ||
return defaultAbiCoder.encode(outputs, values); | ||
@@ -334,8 +337,23 @@ } | ||
function sha3(input: string) { | ||
function sha3(input: string): string { | ||
return keccak256(toUtf8Bytes(input)); | ||
} | ||
function toValueMap(result: Result, inputs: ParamType[]): ValueMap { | ||
return Object.fromEntries( | ||
result.map((value, index) => { | ||
const input: ParamType = inputs[index]; | ||
return [input.name, value]; | ||
}), | ||
); | ||
} | ||
function toValues(values: Record<string, Value>, inputs: ParamType[]): Values { | ||
return inputs.map((input) => { | ||
return values[input.name]; | ||
}); | ||
} | ||
export default Coder; | ||
export { FunctionData, FunctionOutputData, Constructor, Event, EventEncoding }; |
@@ -45,3 +45,3 @@ [ | ||
{ | ||
"name": "", | ||
"name": "supply", | ||
"type": "uint256" | ||
@@ -48,0 +48,0 @@ } |
@@ -36,3 +36,52 @@ [ | ||
"type": "function" | ||
}, | ||
{ | ||
"anonymous": false, | ||
"inputs": [ | ||
{ | ||
"indexed": true, | ||
"internalType": "address", | ||
"name": "sender", | ||
"type": "address" | ||
}, | ||
{ | ||
"indexed": true, | ||
"internalType": "address", | ||
"name": "recipient", | ||
"type": "address" | ||
}, | ||
{ | ||
"indexed": false, | ||
"internalType": "int256", | ||
"name": "amount0", | ||
"type": "int256" | ||
}, | ||
{ | ||
"indexed": false, | ||
"internalType": "int256", | ||
"name": "amount1", | ||
"type": "int256" | ||
}, | ||
{ | ||
"indexed": false, | ||
"internalType": "uint160", | ||
"name": "sqrtPriceX96", | ||
"type": "uint160" | ||
}, | ||
{ | ||
"indexed": false, | ||
"internalType": "uint128", | ||
"name": "liquidity", | ||
"type": "uint128" | ||
}, | ||
{ | ||
"indexed": false, | ||
"internalType": "int24", | ||
"name": "tick", | ||
"type": "int24" | ||
} | ||
], | ||
"name": "Swap", | ||
"type": "event" | ||
} | ||
] |
@@ -55,4 +55,3 @@ import { BigNumber } from '@ethersproject/bignumber'; | ||
expect(initEvent.name).toEqual('Init'); | ||
expect(initEvent.inputs.length).toEqual(initEvent.values.length); | ||
expect(initEvent.values).toEqual([]); | ||
expect(initEvent.values).toEqual({}); | ||
}); | ||
@@ -69,9 +68,6 @@ | ||
expect(withdrawalEvent.name).toEqual('Withdrawal'); | ||
expect(withdrawalEvent.inputs.length).toEqual( | ||
withdrawalEvent.values.length, | ||
); | ||
expect(withdrawalEvent.values).toEqual([ | ||
'0x8939B49A0983A9E6eF416C23cCd8B04aF0E8A006', | ||
BigNumber.from('500000000000000000'), | ||
]); | ||
expect(withdrawalEvent.values).toEqual({ | ||
src: '0x8939B49A0983A9E6eF416C23cCd8B04aF0E8A006', | ||
wad: BigNumber.from('500000000000000000'), | ||
}); | ||
}); | ||
@@ -89,11 +85,31 @@ | ||
expect(transferEvent.name).toEqual('Transfer'); | ||
expect(transferEvent.inputs.length).toEqual(transferEvent.values.length); | ||
expect(transferEvent.values).toEqual([ | ||
'0xb5CFcb4D4745cBBD252945856E1B6eaadCf2fC4E', | ||
'0x694c6aea9444876d4fA9375fC9089C370F8E9edA', | ||
BigNumber.from('1015479348216300000000'), | ||
]); | ||
expect(transferEvent.values).toEqual({ | ||
from: '0xb5CFcb4D4745cBBD252945856E1B6eaadCf2fC4E', | ||
to: '0x694c6aea9444876d4fA9375fC9089C370F8E9edA', | ||
value: BigNumber.from('1015479348216300000000'), | ||
}); | ||
}); | ||
test('decodes event with tuple', () => { | ||
test('decodes event with 7 arguments', () => { | ||
const swapEvent = swapperCoder.decodeEvent( | ||
[ | ||
'0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67', | ||
'0x0000000000000000000000005f62593c70069abb35dfe2b63db969e8906609d6', | ||
'0x0000000000000000000000003ce42ef6b6617b5950c13d1c258ecfdcd30bb4de', | ||
], | ||
'0xfffffffffffffffffffffffffffffffffffffffffffffe98bd31cc11bd70fe680000000000000000000000000000000000000000000000000a8c0ff92d4c0000000000000000000000000000000000000000000002bf79e9d3bac931bdce2834000000000000000000000000000000000000000000000102f396df184811f89cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9dbd', | ||
); | ||
expect(swapEvent.name).toEqual('Swap'); | ||
expect(swapEvent.values).toEqual({ | ||
sender: '0x5f62593C70069AbB35dFe2B63db969e8906609d6', | ||
recipient: '0x3Ce42eF6b6617b5950C13D1c258eCFDcd30bB4De', | ||
amount0: BigNumber.from('-6627194964611846570392'), | ||
amount1: BigNumber.from('760000000000000000'), | ||
sqrtPriceX96: BigNumber.from('850450570881608614360786996'), | ||
liquidity: BigNumber.from('4776812432910168750236'), | ||
tick: -90691, | ||
}); | ||
}); | ||
test('decodes event with many arguments', () => { | ||
const fillEvent = zeroExCoder.decodeEvent( | ||
@@ -109,20 +125,52 @@ [ | ||
expect(fillEvent.name).toEqual('Fill'); | ||
expect(fillEvent.inputs.length).toEqual(fillEvent.values.length); | ||
expect(fillEvent.values).toEqual([ | ||
'0x7b1886e49AB5433bb46f7258548092DC8CdCA28B', | ||
'0x1000000000000000000000000000000000000011', | ||
'0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', | ||
'0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
'0x', | ||
'0x', | ||
'0x9039f36033ca5ec4d518a26ce468a9c8d31bdbe9f9aa65767fa50f8c10b2019d', | ||
'0x58e327D64Fc77fA36f698989623c3E4f058C8a89', | ||
'0x58e327D64Fc77fA36f698989623c3E4f058C8a89', | ||
BigNumber.from('35000000000000000000'), | ||
BigNumber.from('138903388933'), | ||
BigNumber.from('0'), | ||
BigNumber.from('0'), | ||
BigNumber.from('0'), | ||
]); | ||
expect(fillEvent.values).toEqual({ | ||
makerAddress: '0x7b1886e49AB5433bb46f7258548092DC8CdCA28B', | ||
feeRecipientAddress: '0x1000000000000000000000000000000000000011', | ||
makerAssetData: | ||
'0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', | ||
takerAssetData: | ||
'0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
makerFeeAssetData: '0x', | ||
takerFeeAssetData: '0x', | ||
orderHash: | ||
'0x9039f36033ca5ec4d518a26ce468a9c8d31bdbe9f9aa65767fa50f8c10b2019d', | ||
takerAddress: '0x58e327D64Fc77fA36f698989623c3E4f058C8a89', | ||
senderAddress: '0x58e327D64Fc77fA36f698989623c3E4f058C8a89', | ||
makerAssetFilledAmount: BigNumber.from('35000000000000000000'), | ||
takerAssetFilledAmount: BigNumber.from('138903388933'), | ||
makerFeePaid: BigNumber.from('0'), | ||
takerFeePaid: BigNumber.from('0'), | ||
protocolFeePaid: BigNumber.from('0'), | ||
}); | ||
}); | ||
test('decodes event with a tuple', () => { | ||
const newMarketplaceEvent = marketCoder.decodeEvent( | ||
['0x44c1325bfcaffc6218fee9f77391dac11c5b3720b1466a6dc54203d076bed8cc'], | ||
'0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000286dc6324127aad68397ecc2c928c23e7b40fe070000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000064d61746368610000000000000000000000000000000000000000000000000000000000000000000000000000286dc6324127aad68397ecc2c928c23e7b40fe070000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000054d6f636861000000000000000000000000000000000000000000000000000000000000000000000000000000286dc6324127aad68397ecc2c928c23e7b40fe070000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000054c6174746500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004', | ||
); | ||
expect(newMarketplaceEvent.name).toEqual('NewMarketplace'); | ||
expect(newMarketplaceEvent.values.goods[0].seller).toEqual( | ||
'0x286Dc6324127Aad68397EcC2C928C23E7B40Fe07', | ||
); | ||
expect(newMarketplaceEvent.values.goods[0].name).toEqual('Matcha'); | ||
expect(newMarketplaceEvent.values.goods[0].price).toEqual( | ||
BigNumber.from(7), | ||
); | ||
expect(newMarketplaceEvent.values.goods[1].seller).toEqual( | ||
'0x286Dc6324127Aad68397EcC2C928C23E7B40Fe07', | ||
); | ||
expect(newMarketplaceEvent.values.goods[1].name).toEqual('Mocha'); | ||
expect(newMarketplaceEvent.values.goods[1].price).toEqual( | ||
BigNumber.from(9), | ||
); | ||
expect(newMarketplaceEvent.values.goods[2].seller).toEqual( | ||
'0x286Dc6324127Aad68397EcC2C928C23E7B40Fe07', | ||
); | ||
expect(newMarketplaceEvent.values.goods[2].name).toEqual('Latte'); | ||
expect(newMarketplaceEvent.values.goods[2].price).toEqual( | ||
BigNumber.from(4), | ||
); | ||
expect(newMarketplaceEvent.values.sellerIds).toEqual([4]); | ||
}); | ||
}); | ||
@@ -134,6 +182,3 @@ | ||
expect(depositFunction.name).toEqual('deposit'); | ||
expect(depositFunction.inputs.length).toEqual( | ||
depositFunction.values.length, | ||
); | ||
expect(depositFunction.values).toEqual([]); | ||
expect(depositFunction.values).toEqual({}); | ||
}); | ||
@@ -146,11 +191,6 @@ | ||
expect(transferFunction.name).toEqual('transfer'); | ||
expect(transferFunction.inputs.length).toEqual( | ||
transferFunction.values.length, | ||
); | ||
expect(transferFunction.values[0]).toEqual( | ||
'0x694c6aea9444876d4fA9375fC9089C370F8E9edA', | ||
); | ||
expect(transferFunction.values[1]).toEqual( | ||
BigNumber.from('1015479348216300000000'), | ||
); | ||
expect(transferFunction.values).toEqual({ | ||
_to: '0x694c6aea9444876d4fA9375fC9089C370F8E9edA', | ||
_value: BigNumber.from('1015479348216300000000'), | ||
}); | ||
}); | ||
@@ -163,77 +203,90 @@ | ||
expect(matchOrdersFunction.name).toEqual('matchOrders'); | ||
expect(matchOrdersFunction.inputs.length).toEqual( | ||
matchOrdersFunction.values.length, | ||
); | ||
expect(matchOrdersFunction.values[0][0]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.makerAddress).toEqual( | ||
'0x7b1886e49AB5433bb46f7258548092DC8CdCA28B', | ||
); | ||
expect(matchOrdersFunction.values[0][1]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.takerAddress).toEqual( | ||
'0x0000000000000000000000000000000000000000', | ||
); | ||
expect(matchOrdersFunction.values[0][2]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.feeRecipientAddress).toEqual( | ||
'0x1000000000000000000000000000000000000011', | ||
); | ||
expect(matchOrdersFunction.values[0][3]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.senderAddress).toEqual( | ||
'0x0000000000000000000000000000000000000000', | ||
); | ||
expect(matchOrdersFunction.values[0][4]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.makerAssetAmount).toEqual( | ||
BigNumber.from('35000000000000000000'), | ||
); | ||
expect(matchOrdersFunction.values[0][5]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.takerAssetAmount).toEqual( | ||
BigNumber.from('138903388933'), | ||
); | ||
expect(matchOrdersFunction.values[0][6]).toEqual(BigNumber.from('0')); | ||
expect(matchOrdersFunction.values[0][7]).toEqual(BigNumber.from('0')); | ||
expect(matchOrdersFunction.values[0][8]).toEqual( | ||
BigNumber.from('1640057690'), | ||
expect(matchOrdersFunction.values.leftOrder.makerFee).toEqual( | ||
BigNumber.from('0'), | ||
); | ||
expect(matchOrdersFunction.values[0][9]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.takerFee).toEqual( | ||
BigNumber.from('0'), | ||
); | ||
expect( | ||
matchOrdersFunction.values.leftOrder.expirationTimeSeconds, | ||
).toEqual(BigNumber.from('1640057690')); | ||
expect(matchOrdersFunction.values.leftOrder.salt).toEqual( | ||
BigNumber.from('1640057648758'), | ||
); | ||
expect(matchOrdersFunction.values[0][10]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.makerAssetData).toEqual( | ||
'0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', | ||
); | ||
expect(matchOrdersFunction.values[0][11]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.takerAssetData).toEqual( | ||
'0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
); | ||
expect(matchOrdersFunction.values[0][12]).toEqual('0x'); | ||
expect(matchOrdersFunction.values[0][13]).toEqual('0x'); | ||
expect(matchOrdersFunction.values[1][0]).toEqual( | ||
expect(matchOrdersFunction.values.leftOrder.makerFeeAssetData).toEqual( | ||
'0x', | ||
); | ||
expect(matchOrdersFunction.values.leftOrder.takerFeeAssetData).toEqual( | ||
'0x', | ||
); | ||
expect(matchOrdersFunction.values.rightOrder.makerAddress).toEqual( | ||
'0x7b1886e49AB5433bb46f7258548092DC8CdCA28B', | ||
); | ||
expect(matchOrdersFunction.values[1][1]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.takerAddress).toEqual( | ||
'0x0000000000000000000000000000000000000000', | ||
); | ||
expect(matchOrdersFunction.values[1][2]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.feeRecipientAddress).toEqual( | ||
'0x1000000000000000000000000000000000000011', | ||
); | ||
expect(matchOrdersFunction.values[1][3]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.senderAddress).toEqual( | ||
'0x0000000000000000000000000000000000000000', | ||
); | ||
expect(matchOrdersFunction.values[1][4]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.makerAssetAmount).toEqual( | ||
BigNumber.from('328851133418'), | ||
); | ||
expect(matchOrdersFunction.values[1][5]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.takerAssetAmount).toEqual( | ||
BigNumber.from('82789851859423461376'), | ||
); | ||
expect(matchOrdersFunction.values[1][6]).toEqual(BigNumber.from('0')); | ||
expect(matchOrdersFunction.values[1][7]).toEqual(BigNumber.from('0')); | ||
expect(matchOrdersFunction.values[1][8]).toEqual( | ||
BigNumber.from('1640057718'), | ||
expect(matchOrdersFunction.values.rightOrder.makerFee).toEqual( | ||
BigNumber.from('0'), | ||
); | ||
expect(matchOrdersFunction.values[1][9]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.takerFee).toEqual( | ||
BigNumber.from('0'), | ||
); | ||
expect( | ||
matchOrdersFunction.values.rightOrder.expirationTimeSeconds, | ||
).toEqual(BigNumber.from('1640057718')); | ||
expect(matchOrdersFunction.values.rightOrder.salt).toEqual( | ||
BigNumber.from('1640057690545'), | ||
); | ||
expect(matchOrdersFunction.values[1][10]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.makerAssetData).toEqual( | ||
'0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
); | ||
expect(matchOrdersFunction.values[1][11]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.takerAssetData).toEqual( | ||
'0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', | ||
); | ||
expect(matchOrdersFunction.values[1][12]).toEqual('0x'); | ||
expect(matchOrdersFunction.values[1][13]).toEqual('0x'); | ||
expect(matchOrdersFunction.values[2]).toEqual( | ||
expect(matchOrdersFunction.values.rightOrder.makerFeeAssetData).toEqual( | ||
'0x', | ||
); | ||
expect(matchOrdersFunction.values.rightOrder.takerFeeAssetData).toEqual( | ||
'0x', | ||
); | ||
expect(matchOrdersFunction.values.leftSignature).toEqual( | ||
'0x1ba64ca0f6f8ca7943163ec02ff09cad3e54c2ff74fc325849cd9f8cbee0826cee16d8fc0e36ed44fe9695499e6803768668a4d0a96ae4da7e5fe8d86604a9ef1c03', | ||
); | ||
expect(matchOrdersFunction.values[3]).toEqual( | ||
expect(matchOrdersFunction.values.rightSignature).toEqual( | ||
'0x1cb4ca963bc1bf9e9ffe3c5e8ea2f9c38a716cd0ff0ec26a808dd31813d2651bc039dd04a26f9ffbfde14ed84e466ba9dcf74a84aedeacd4e375a1620dd1e9273603', | ||
@@ -248,39 +301,36 @@ ); | ||
expect(updateMarketsFunction.name).toEqual('updateMarkets'); | ||
expect(updateMarketsFunction.inputs.length).toEqual( | ||
updateMarketsFunction.values.length, | ||
); | ||
expect(updateMarketsFunction.values[0][0][0][0]).toEqual( | ||
expect(updateMarketsFunction.values.goods[0][0].seller).toEqual( | ||
'0x3DCa2eCBBfadbCbf83CfD456E1657A52E170CbF3', | ||
); | ||
expect(updateMarketsFunction.values[0][0][0][1]).toEqual('Apple'); | ||
expect(updateMarketsFunction.values[0][0][0][2]).toEqual( | ||
expect(updateMarketsFunction.values.goods[0][0].name).toEqual('Apple'); | ||
expect(updateMarketsFunction.values.goods[0][0].price).toEqual( | ||
BigNumber.from(35), | ||
); | ||
expect(updateMarketsFunction.values[0][0][1][0]).toEqual( | ||
expect(updateMarketsFunction.values.goods[0][1].seller).toEqual( | ||
'0x3DCa2eCBBfadbCbf83CfD456E1657A52E170CbF3', | ||
); | ||
expect(updateMarketsFunction.values[0][0][1][1]).toEqual('Pear'); | ||
expect(updateMarketsFunction.values[0][0][1][2]).toEqual( | ||
expect(updateMarketsFunction.values.goods[0][1].name).toEqual('Pear'); | ||
expect(updateMarketsFunction.values.goods[0][1].price).toEqual( | ||
BigNumber.from(32), | ||
); | ||
expect(updateMarketsFunction.values[0][1][0][0]).toEqual( | ||
expect(updateMarketsFunction.values.goods[1][0].seller).toEqual( | ||
'0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', | ||
); | ||
expect(updateMarketsFunction.values[0][1][0][1]).toEqual('Paper'); | ||
expect(updateMarketsFunction.values[0][1][0][2]).toEqual( | ||
expect(updateMarketsFunction.values.goods[1][0].name).toEqual('Paper'); | ||
expect(updateMarketsFunction.values.goods[1][0].price).toEqual( | ||
BigNumber.from(120), | ||
); | ||
expect(updateMarketsFunction.values[0][1][1][0]).toEqual( | ||
expect(updateMarketsFunction.values.goods[1][1].seller).toEqual( | ||
'0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', | ||
); | ||
expect(updateMarketsFunction.values[0][1][1][1]).toEqual('Pen'); | ||
expect(updateMarketsFunction.values[0][1][1][2]).toEqual( | ||
expect(updateMarketsFunction.values.goods[1][1].name).toEqual('Pen'); | ||
expect(updateMarketsFunction.values.goods[1][1].price).toEqual( | ||
BigNumber.from(50), | ||
); | ||
expect(updateMarketsFunction.values[0][1][2][0]).toEqual( | ||
expect(updateMarketsFunction.values.goods[1][2].seller).toEqual( | ||
'0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', | ||
); | ||
expect(updateMarketsFunction.values[0][1][2][1]).toEqual('Staples'); | ||
expect(updateMarketsFunction.values[0][1][2][2]).toEqual( | ||
expect(updateMarketsFunction.values.goods[1][2].name).toEqual('Staples'); | ||
expect(updateMarketsFunction.values.goods[1][2].price).toEqual( | ||
BigNumber.from(8), | ||
@@ -295,11 +345,8 @@ ); | ||
expect(addSellerFunction.name).toEqual('addSeller'); | ||
expect(addSellerFunction.inputs.length).toEqual( | ||
addSellerFunction.values.length, | ||
); | ||
expect(addSellerFunction.values[0][0]).toEqual('Mark'); | ||
expect(addSellerFunction.values[0][1][0]).toEqual( | ||
expect(addSellerFunction.values.seller.name).toEqual('Mark'); | ||
expect(addSellerFunction.values.seller.team.team).toEqual( | ||
'0x00192Fb10dF37c9FB26829eb2CC623cd1BF599E8', | ||
); | ||
expect(addSellerFunction.values[0][1][1]).toEqual('Blue'); | ||
expect(addSellerFunction.values[0][1][2]).toEqual(13); | ||
expect(addSellerFunction.values.seller.team.name).toEqual('Blue'); | ||
expect(addSellerFunction.values.seller.team.id).toEqual(13); | ||
}); | ||
@@ -314,6 +361,3 @@ }); | ||
); | ||
expect(swapFunctionOutput.outputs.length).toEqual( | ||
swapFunctionOutput.values.length, | ||
); | ||
expect(swapFunctionOutput.values).toEqual([]); | ||
expect(swapFunctionOutput.values).toEqual({}); | ||
@@ -324,6 +368,3 @@ const registrerSellersFunctionOutput = marketCoder.decodeFunctionOutput( | ||
); | ||
expect(registrerSellersFunctionOutput.outputs.length).toEqual( | ||
registrerSellersFunctionOutput.values.length, | ||
); | ||
expect(registrerSellersFunctionOutput.values).toEqual([]); | ||
expect(registrerSellersFunctionOutput.values).toEqual({}); | ||
}); | ||
@@ -336,8 +377,5 @@ | ||
); | ||
expect(totalSupplyFunctionOutput.outputs.length).toEqual( | ||
totalSupplyFunctionOutput.values.length, | ||
); | ||
expect(totalSupplyFunctionOutput.values).toEqual([ | ||
BigNumber.from('500000000000000000'), | ||
]); | ||
expect(totalSupplyFunctionOutput.values).toEqual({ | ||
supply: BigNumber.from('500000000000000000'), | ||
}); | ||
@@ -348,8 +386,5 @@ const ownerFunctionOutput = zeroExCoder.decodeFunctionOutput( | ||
); | ||
expect(ownerFunctionOutput.outputs.length).toEqual( | ||
ownerFunctionOutput.values.length, | ||
); | ||
expect(ownerFunctionOutput.values).toEqual([ | ||
'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', | ||
]); | ||
expect(ownerFunctionOutput.values).toEqual({ | ||
owner: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', | ||
}); | ||
@@ -360,8 +395,5 @@ const balanceOfFunctionOutput = erc20Coder.decodeFunctionOutput( | ||
); | ||
expect(balanceOfFunctionOutput.outputs.length).toEqual( | ||
balanceOfFunctionOutput.values.length, | ||
); | ||
expect(balanceOfFunctionOutput.values[0]).toEqual( | ||
BigNumber.from('13500000000000000000'), | ||
); | ||
expect(balanceOfFunctionOutput.values).toEqual({ | ||
balance: BigNumber.from('13500000000000000000'), | ||
}); | ||
}); | ||
@@ -375,20 +407,20 @@ | ||
); | ||
expect(batchFillOrdersNoThrowFunctionOutput.outputs.length).toEqual( | ||
batchFillOrdersNoThrowFunctionOutput.values.length, | ||
); | ||
expect(batchFillOrdersNoThrowFunctionOutput.values[0][0][0]).toEqual( | ||
BigNumber.from('328851133418'), | ||
); | ||
expect(batchFillOrdersNoThrowFunctionOutput.values[0][0][1]).toEqual( | ||
BigNumber.from('82789851859423461376'), | ||
); | ||
expect(batchFillOrdersNoThrowFunctionOutput.values[0][0][2]).toEqual( | ||
BigNumber.from('0'), | ||
); | ||
expect(batchFillOrdersNoThrowFunctionOutput.values[0][0][3]).toEqual( | ||
BigNumber.from('0'), | ||
); | ||
expect(batchFillOrdersNoThrowFunctionOutput.values[0][0][4]).toEqual( | ||
BigNumber.from('0'), | ||
); | ||
expect( | ||
batchFillOrdersNoThrowFunctionOutput.values.fillResults[0] | ||
.makerAssetFilledAmount, | ||
).toEqual(BigNumber.from('328851133418')); | ||
expect( | ||
batchFillOrdersNoThrowFunctionOutput.values.fillResults[0] | ||
.takerAssetFilledAmount, | ||
).toEqual(BigNumber.from('82789851859423461376')); | ||
expect( | ||
batchFillOrdersNoThrowFunctionOutput.values.fillResults[0].makerFeePaid, | ||
).toEqual(BigNumber.from('0')); | ||
expect( | ||
batchFillOrdersNoThrowFunctionOutput.values.fillResults[0].takerFeePaid, | ||
).toEqual(BigNumber.from('0')); | ||
expect( | ||
batchFillOrdersNoThrowFunctionOutput.values.fillResults[0] | ||
.protocolFeePaid, | ||
).toEqual(BigNumber.from('0')); | ||
}); | ||
@@ -403,7 +435,6 @@ }); | ||
expect(constructor.inputs.length).toEqual(constructor.values.length); | ||
expect(constructor.values[0]).toEqual( | ||
'0x44616920537461626c65636f696e000000000000000000000000000000000000', | ||
); | ||
expect(constructor.values[1]).toEqual('0x4441490000000000'); | ||
expect(constructor.values).toEqual({ | ||
name: '0x44616920537461626c65636f696e000000000000000000000000000000000000', | ||
symbol: '0x4441490000000000', | ||
}); | ||
}); | ||
@@ -414,3 +445,3 @@ }); | ||
test('encodes event with no arguments', () => { | ||
expect(marketCoder.encodeEvent('Init', [])).toEqual({ | ||
expect(marketCoder.encodeEvent('Init', {})).toEqual({ | ||
topics: [ | ||
@@ -425,6 +456,6 @@ '0x57a86f7d14ccde89e22870afe839e3011216827daa9b24e18629f0a1e9d6cc14', | ||
expect( | ||
wethCoder.encodeEvent('Withdrawal', [ | ||
'0x8939b49a0983a9e6ef416c23ccd8b04af0e8a006', | ||
'500000000000000000', | ||
]), | ||
wethCoder.encodeEvent('Withdrawal', { | ||
src: '0x8939b49a0983a9e6ef416c23ccd8b04af0e8a006', | ||
wad: '500000000000000000', | ||
}), | ||
).toEqual({ | ||
@@ -441,7 +472,7 @@ topics: [ | ||
expect( | ||
erc20Coder.encodeEvent('Transfer', [ | ||
'0xb5cfcb4d4745cbbd252945856e1b6eaadcf2fc4e', | ||
'0x694c6aea9444876d4fa9375fc9089c370f8e9eda', | ||
'1015479348216300000000', | ||
]), | ||
erc20Coder.encodeEvent('Transfer', { | ||
from: '0xb5cfcb4d4745cbbd252945856e1b6eaadcf2fc4e', | ||
to: '0x694c6aea9444876d4fa9375fc9089c370f8e9eda', | ||
value: '1015479348216300000000', | ||
}), | ||
).toEqual({ | ||
@@ -457,20 +488,23 @@ topics: [ | ||
test('encodes event with a tuple', () => { | ||
test('encodes event with many arguments', () => { | ||
expect( | ||
zeroExCoder.encodeEvent('Fill', [ | ||
'0x7b1886e49ab5433bb46f7258548092dc8cdca28b', | ||
'0x1000000000000000000000000000000000000011', | ||
'0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', | ||
'0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
'0x', | ||
'0x', | ||
'0x9039f36033ca5ec4d518a26ce468a9c8d31bdbe9f9aa65767fa50f8c10b2019d', | ||
'0x58e327d64fc77fa36f698989623c3e4f058c8a89', | ||
'0x58e327d64fc77fa36f698989623c3e4f058c8a89', | ||
'35000000000000000000', | ||
'138903388933', | ||
'0', | ||
'0', | ||
'0', | ||
]), | ||
zeroExCoder.encodeEvent('Fill', { | ||
makerAddress: '0x7b1886e49ab5433bb46f7258548092dc8cdca28b', | ||
feeRecipientAddress: '0x1000000000000000000000000000000000000011', | ||
makerAssetData: | ||
'0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', | ||
takerAssetData: | ||
'0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
makerFeeAssetData: '0x', | ||
takerFeeAssetData: '0x', | ||
orderHash: | ||
'0x9039f36033ca5ec4d518a26ce468a9c8d31bdbe9f9aa65767fa50f8c10b2019d', | ||
takerAddress: '0x58e327d64fc77fa36f698989623c3e4f058c8a89', | ||
senderAddress: '0x58e327d64fc77fa36f698989623c3e4f058c8a89', | ||
makerAssetFilledAmount: '35000000000000000000', | ||
takerAssetFilledAmount: '138903388933', | ||
makerFeePaid: '0', | ||
takerFeePaid: '0', | ||
protocolFeePaid: '0', | ||
}), | ||
).toEqual({ | ||
@@ -486,2 +520,32 @@ topics: [ | ||
}); | ||
test('encodes event with a tuple', () => { | ||
expect( | ||
marketCoder.encodeEvent('NewMarketplace', { | ||
goods: [ | ||
{ | ||
seller: '0x286Dc6324127Aad68397EcC2C928C23E7B40Fe07', | ||
name: 'Matcha', | ||
price: 7, | ||
}, | ||
{ | ||
seller: '0x286Dc6324127Aad68397EcC2C928C23E7B40Fe07', | ||
name: 'Mocha', | ||
price: 9, | ||
}, | ||
{ | ||
seller: '0x286Dc6324127Aad68397EcC2C928C23E7B40Fe07', | ||
name: 'Latte', | ||
price: 4, | ||
}, | ||
], | ||
sellerIds: [4], | ||
}), | ||
).toEqual({ | ||
topics: [ | ||
'0x44c1325bfcaffc6218fee9f77391dac11c5b3720b1466a6dc54203d076bed8cc', | ||
], | ||
data: '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000286dc6324127aad68397ecc2c928c23e7b40fe070000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000064d61746368610000000000000000000000000000000000000000000000000000000000000000000000000000286dc6324127aad68397ecc2c928c23e7b40fe070000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000054d6f636861000000000000000000000000000000000000000000000000000000000000000000000000000000286dc6324127aad68397ecc2c928c23e7b40fe070000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000054c6174746500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004', | ||
}); | ||
}); | ||
}); | ||
@@ -491,5 +555,5 @@ | ||
test('encodes function with no arguments', () => { | ||
expect(wethCoder.encodeFunction('deposit', [])).toEqual('0xd0e30db0'); | ||
expect(wethCoder.encodeFunction('deposit', {})).toEqual('0xd0e30db0'); | ||
expect(zeroExCoder.encodeFunction('owner', [])).toEqual('0x8da5cb5b'); | ||
expect(zeroExCoder.encodeFunction('owner', {})).toEqual('0x8da5cb5b'); | ||
}); | ||
@@ -499,5 +563,5 @@ | ||
expect( | ||
erc20Coder.encodeFunction('balanceOf', [ | ||
'0x1a9c8182c09f50c8318d769245bea52c32be35bc', | ||
]), | ||
erc20Coder.encodeFunction('balanceOf', { | ||
_owner: '0x1a9c8182c09f50c8318d769245bea52c32be35bc', | ||
}), | ||
).toEqual( | ||
@@ -510,6 +574,6 @@ '0x70a082310000000000000000000000001a9c8182c09f50c8318d769245bea52c32be35bc', | ||
expect( | ||
erc20Coder.encodeFunction('transfer', [ | ||
'0x694c6aea9444876d4fA9375fC9089C370F8E9edA', | ||
'1015479348216300000000', | ||
]), | ||
erc20Coder.encodeFunction('transfer', { | ||
_to: '0x694c6aea9444876d4fA9375fC9089C370F8E9edA', | ||
_value: '1015479348216300000000', | ||
}), | ||
).toEqual( | ||
@@ -522,4 +586,4 @@ '0xa9059cbb000000000000000000000000694c6aea9444876d4fa9375fc9089c370f8e9eda0000000000000000000000000000000000000000000000370c9b5ef669c35300', | ||
expect( | ||
swapperCoder.encodeFunction('swap', [ | ||
{ | ||
swapperCoder.encodeFunction('swap', { | ||
quote: { | ||
inAmount: '250000000', | ||
@@ -529,4 +593,4 @@ inAsset: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
}, | ||
'1633000000', | ||
]), | ||
deadline: '1633000000', | ||
}), | ||
).toEqual( | ||
@@ -537,4 +601,4 @@ '0xa18d33e1000000000000000000000000000000000000000000000000000000000ee6b280000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000061559a40', | ||
expect( | ||
zeroExCoder.encodeFunction('matchOrders', [ | ||
{ | ||
zeroExCoder.encodeFunction('matchOrders', { | ||
leftOrder: { | ||
makerAddress: '0x7b1886e49AB5433bb46f7258548092DC8CdCA28B', | ||
@@ -544,8 +608,8 @@ takerAddress: '0x0000000000000000000000000000000000000000', | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAssetAmount: '35000000000000000000', | ||
takerAssetAmount: '138903388933', | ||
makerFee: '0', | ||
takerFee: '0', | ||
expirationTimeSeconds: '1640057690', | ||
salt: '1640057648758', | ||
makerAssetAmount: BigNumber.from('35000000000000000000'), | ||
takerAssetAmount: BigNumber.from('138903388933'), | ||
makerFee: BigNumber.from('0'), | ||
takerFee: BigNumber.from('0'), | ||
expirationTimeSeconds: BigNumber.from('1640057690'), | ||
salt: BigNumber.from('1640057648758'), | ||
makerAssetData: | ||
@@ -558,3 +622,3 @@ '0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', | ||
}, | ||
{ | ||
rightOrder: { | ||
makerAddress: '0x7b1886e49AB5433bb46f7258548092DC8CdCA28B', | ||
@@ -564,8 +628,8 @@ takerAddress: '0x0000000000000000000000000000000000000000', | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAssetAmount: '328851133418', | ||
takerAssetAmount: '82789851859423461376', | ||
makerFee: '0', | ||
takerFee: '0', | ||
expirationTimeSeconds: '1640057718', | ||
salt: '1640057690545', | ||
makerAssetAmount: BigNumber.from('328851133418'), | ||
takerAssetAmount: BigNumber.from('82789851859423461376'), | ||
makerFee: BigNumber.from('0'), | ||
takerFee: BigNumber.from('0'), | ||
expirationTimeSeconds: BigNumber.from('1640057718'), | ||
salt: BigNumber.from('1640057690545'), | ||
makerAssetData: | ||
@@ -578,5 +642,7 @@ '0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', | ||
}, | ||
'0x1ba64ca0f6f8ca7943163ec02ff09cad3e54c2ff74fc325849cd9f8cbee0826cee16d8fc0e36ed44fe9695499e6803768668a4d0a96ae4da7e5fe8d86604a9ef1c03', | ||
'0x1cb4ca963bc1bf9e9ffe3c5e8ea2f9c38a716cd0ff0ec26a808dd31813d2651bc039dd04a26f9ffbfde14ed84e466ba9dcf74a84aedeacd4e375a1620dd1e9273603', | ||
]), | ||
leftSignature: | ||
'0x1ba64ca0f6f8ca7943163ec02ff09cad3e54c2ff74fc325849cd9f8cbee0826cee16d8fc0e36ed44fe9695499e6803768668a4d0a96ae4da7e5fe8d86604a9ef1c03', | ||
rightSignature: | ||
'0x1cb4ca963bc1bf9e9ffe3c5e8ea2f9c38a716cd0ff0ec26a808dd31813d2651bc039dd04a26f9ffbfde14ed84e466ba9dcf74a84aedeacd4e375a1620dd1e9273603', | ||
}), | ||
).toEqual( | ||
@@ -589,15 +655,35 @@ '0x88ec79fb00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006800000000000000000000000007b1886e49ab5433bb46f7258548092dc8cdca28b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e5b8fa8fe2ac00000000000000000000000000000000000000000000000000000000002057498305000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061c14b5a0000000000000000000000000000000000000000000000000000017ddb0db67600000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000024f47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b1886e49ab5433bb46f7258548092dc8cdca28b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c910e13ea0000000000000000000000000000000000000000000000047cf0a3a070260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061c14b760000000000000000000000000000000000000000000000000000017ddb0e59b100000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000024f47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000421ba64ca0f6f8ca7943163ec02ff09cad3e54c2ff74fc325849cd9f8cbee0826cee16d8fc0e36ed44fe9695499e6803768668a4d0a96ae4da7e5fe8d86604a9ef1c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000421cb4ca963bc1bf9e9ffe3c5e8ea2f9c38a716cd0ff0ec26a808dd31813d2651bc039dd04a26f9ffbfde14ed84e466ba9dcf74a84aedeacd4e375a1620dd1e9273603000000000000000000000000000000000000000000000000000000000000', | ||
expect( | ||
marketCoder.encodeFunction('updateMarkets', [ | ||
[ | ||
marketCoder.encodeFunction('updateMarkets', { | ||
goods: [ | ||
[ | ||
['0x3DCa2eCBBfadbCbf83CfD456E1657A52E170CbF3', 'Apple', 35], | ||
['0x3DCa2eCBBfadbCbf83CfD456E1657A52E170CbF3', 'Pear', 32], | ||
{ | ||
seller: '0x3DCa2eCBBfadbCbf83CfD456E1657A52E170CbF3', | ||
name: 'Apple', | ||
price: 35, | ||
}, | ||
{ | ||
seller: '0x3DCa2eCBBfadbCbf83CfD456E1657A52E170CbF3', | ||
name: 'Pear', | ||
price: 32, | ||
}, | ||
], | ||
[ | ||
['0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', 'Paper', 120], | ||
['0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', 'Pen', 50], | ||
['0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', 'Staples', 8], | ||
{ | ||
seller: '0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', | ||
name: 'Paper', | ||
price: 120, | ||
}, | ||
{ | ||
seller: '0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', | ||
name: 'Pen', | ||
price: 50, | ||
}, | ||
{ | ||
seller: '0x1f56BfF579f7a57326d07823a00A7fF0e57CBb4f', | ||
name: 'Staples', | ||
price: 8, | ||
}, | ||
], | ||
], | ||
]), | ||
}), | ||
).toEqual( | ||
@@ -610,5 +696,12 @@ '0x0d85954c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000003dca2ecbbfadbcbf83cfd456e1657a52e170cbf30000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000000000054170706c650000000000000000000000000000000000000000000000000000000000000000000000000000003dca2ecbbfadbcbf83cfd456e1657a52e170cbf3000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004506561720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000001f56bff579f7a57326d07823a00a7ff0e57cbb4f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000000550617065720000000000000000000000000000000000000000000000000000000000000000000000000000001f56bff579f7a57326d07823a00a7ff0e57cbb4f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000350656e00000000000000000000000000000000000000000000000000000000000000000000000000000000001f56bff579f7a57326d07823a00a7ff0e57cbb4f000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000007537461706c657300000000000000000000000000000000000000000000000000', | ||
expect( | ||
marketCoder.encodeFunction('addSeller', [ | ||
['Mark', ['0x00192Fb10dF37c9FB26829eb2CC623cd1BF599E8', 'Blue', 13]], | ||
]), | ||
marketCoder.encodeFunction('addSeller', { | ||
seller: { | ||
name: 'Mark', | ||
team: { | ||
team: '0x00192Fb10dF37c9FB26829eb2CC623cd1BF599E8', | ||
name: 'Blue', | ||
id: 13, | ||
}, | ||
}, | ||
}), | ||
).toEqual( | ||
@@ -629,5 +722,5 @@ '0xe92a0f7900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044d61726b0000000000000000000000000000000000000000000000000000000000000000000000000000000000192fb10df37c9fb26829eb2cc623cd1bf599e80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000004426c756500000000000000000000000000000000000000000000000000000000', | ||
expect( | ||
erc20Coder.encodeFunctionOutput('totalSupply', [ | ||
BigNumber.from('500000000000000000'), | ||
]), | ||
erc20Coder.encodeFunctionOutput('totalSupply', { | ||
supply: BigNumber.from('500000000000000000'), | ||
}), | ||
).toEqual( | ||
@@ -640,13 +733,13 @@ '0x00000000000000000000000000000000000000000000000006f05b59d3b20000', | ||
expect( | ||
zeroExCoder.encodeFunctionOutput('batchFillOrdersNoThrow', [ | ||
[ | ||
[ | ||
BigNumber.from('328851133418'), | ||
BigNumber.from('82789851859423461376'), | ||
BigNumber.from('0'), | ||
BigNumber.from('0'), | ||
BigNumber.from('0'), | ||
], | ||
zeroExCoder.encodeFunctionOutput('batchFillOrdersNoThrow', { | ||
fillResults: [ | ||
{ | ||
makerAssetFilledAmount: BigNumber.from('328851133418'), | ||
takerAssetFilledAmount: BigNumber.from('82789851859423461376'), | ||
makerFeePaid: BigNumber.from('0'), | ||
takerFeePaid: BigNumber.from('0'), | ||
protocolFeePaid: BigNumber.from('0'), | ||
}, | ||
], | ||
]), | ||
}), | ||
).toEqual( | ||
@@ -661,6 +754,6 @@ '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000004c910e13ea0000000000000000000000000000000000000000000000047cf0a3a070260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', | ||
expect( | ||
tokenCoder.encodeConstructor([ | ||
'0x44616920537461626c65636f696e000000000000000000000000000000000000', | ||
'0x4441490000000000', | ||
]), | ||
tokenCoder.encodeConstructor({ | ||
name: '0x44616920537461626c65636f696e000000000000000000000000000000000000', | ||
symbol: '0x4441490000000000', | ||
}), | ||
).toEqual( | ||
@@ -667,0 +760,0 @@ '0x44616920537461626c65636f696e0000000000000000000000000000000000004441490000000000000000000000000000000000000000000000000000000000', |
{ | ||
"compilerOptions": { | ||
"target": "es5", | ||
"module": "commonjs", | ||
"target": "ES5", | ||
"module": "CommonJS", | ||
"moduleResolution": "node", | ||
"declaration": true, | ||
"declarationMap": true, | ||
"esModuleInterop": true, | ||
"forceConsistentCasingInFileNames": true, | ||
"noEmitOnError": true, | ||
"noFallthroughCasesInSwitch": true, | ||
"noImplicitAny": true, | ||
"noImplicitOverride": true, | ||
"noImplicitReturns": true, | ||
"noImplicitThis": true, | ||
"noPropertyAccessFromIndexSignature": false, | ||
"noUncheckedIndexedAccess": false, | ||
"resolveJsonModule": true, | ||
"skipLibCheck": true, | ||
"sourceMap": true, | ||
"strict": true, | ||
"useDefineForClassFields": true, | ||
"outDir": "./lib", | ||
"allowSyntheticDefaultImports": true, | ||
"resolveJsonModule": true, | ||
"strict": true | ||
"baseUrl": "src", | ||
"paths": { | ||
"@/*": ["*"] | ||
} | ||
}, | ||
"include": ["src"], | ||
"exclude": ["node_modules", "**/__tests__/*"] | ||
"include": ["src/**/*.ts", "tests/**/*.ts"] | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
295063
26
9980