@arkecosystem/typescript-crypto 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/enums/ContractAbiType.d.ts +2 -1
- package/dist/enums/ContractAbiType.d.ts.map +1 -1
- package/dist/enums/ContractAbiType.js +1 -0
- package/dist/index.js +97 -6
- package/dist/utils/Abi/json/Abi.ERC20BatchTransfer.json +59 -0
- package/dist/utils/Abi/json/index.d.ts +1 -0
- package/dist/utils/Abi/json/index.d.ts.map +1 -1
- package/dist/utils/Abi/json/index.js +1 -0
- package/dist/utils/AbiBase.d.ts.map +1 -1
- package/dist/utils/AbiBase.js +3 -1
- package/dist/utils/TransactionTypeIdentifier.d.ts +4 -0
- package/dist/utils/TransactionTypeIdentifier.d.ts.map +1 -1
- package/dist/utils/TransactionTypeIdentifier.js +38 -3
- package/dist/utils/UnitConverter.d.ts +1 -1
- package/dist/utils/UnitConverter.d.ts.map +1 -1
- package/dist/utils/UnitConverter.js +3 -3
- package/package.json +1 -1
- package/src/enums/ContractAbiType.ts +1 -0
- package/src/utils/Abi/json/Abi.ERC20BatchTransfer.json +59 -0
- package/src/utils/Abi/json/index.ts +1 -0
- package/src/utils/AbiBase.ts +9 -1
- package/src/utils/TransactionTypeIdentifier.ts +37 -2
- package/src/utils/UnitConverter.ts +4 -4
- package/tests/unit/utils/TransactionTypeIdentifier.test.ts +57 -0
- package/tests/unit/utils/UnitConverter.test.ts +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractAbiType.d.ts","sourceRoot":"","sources":["../../src/enums/ContractAbiType.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IAC1B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;
|
|
1
|
+
{"version":3,"file":"ContractAbiType.d.ts","sourceRoot":"","sources":["../../src/enums/ContractAbiType.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IAC1B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,mBAAmB,uBAAuB;CAC1C"}
|
|
@@ -5,4 +5,5 @@ export var ContractAbiType;
|
|
|
5
5
|
ContractAbiType["CONSENSUS"] = "consensus";
|
|
6
6
|
ContractAbiType["MULTIPAYMENT"] = "multipayment";
|
|
7
7
|
ContractAbiType["USERNAMES"] = "usernames";
|
|
8
|
+
ContractAbiType["ERC20BATCH_TRANSFER"] = "erc20batchtransfer";
|
|
8
9
|
})(ContractAbiType || (ContractAbiType = {}));
|
package/dist/index.js
CHANGED
|
@@ -55,6 +55,7 @@ var ContractAbiType = /* @__PURE__ */ ((ContractAbiType2) => {
|
|
|
55
55
|
ContractAbiType2["CONSENSUS"] = "consensus";
|
|
56
56
|
ContractAbiType2["MULTIPAYMENT"] = "multipayment";
|
|
57
57
|
ContractAbiType2["USERNAMES"] = "usernames";
|
|
58
|
+
ContractAbiType2["ERC20BATCH_TRANSFER"] = "erc20batchtransfer";
|
|
58
59
|
return ContractAbiType2;
|
|
59
60
|
})(ContractAbiType || {});
|
|
60
61
|
|
|
@@ -28134,6 +28135,67 @@ var Abi_Token_default = {
|
|
|
28134
28135
|
bytecode: "0x608060405234801561001057600080fd5b506040518060400160405280600681526020017f4441524b323000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4441524b32300000000000000000000000000000000000000000000000000000815250816003908161008c91906105bc565b50806004908161009c91906105bc565b5050506100ba336a52b7d2dcc80cd2e40000006100bf60201b60201c565b6107ae565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101315760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161012891906106cf565b60405180910390fd5b6101436000838361014760201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361019957806002600082825461018d9190610719565b9250508190555061026c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610225578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161021c9392919061075c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102b55780600260008282540392505081905550610302565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161035f9190610793565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806103ed57607f821691505b602082108103610400576103ff6103a6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261042b565b610472868361042b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006104b96104b46104af8461048a565b610494565b61048a565b9050919050565b6000819050919050565b6104d38361049e565b6104e76104df826104c0565b848454610438565b825550505050565b600090565b6104fc6104ef565b6105078184846104ca565b505050565b5b8181101561052b576105206000826104f4565b60018101905061050d565b5050565b601f8211156105705761054181610406565b61054a8461041b565b81016020851015610559578190505b61056d6105658561041b565b83018261050c565b50505b505050565b600082821c905092915050565b600061059360001984600802610575565b1980831691505092915050565b60006105ac8383610582565b9150826002028217905092915050565b6105c58261036c565b67ffffffffffffffff8111156105de576105dd610377565b5b6105e882546103d5565b6105f382828561052f565b600060209050601f8311600181146106265760008415610614578287015190505b61061e85826105a0565b865550610686565b601f19841661063486610406565b60005b8281101561065c57848901518255600182019150602085019450602081019050610637565b868310156106795784890151610675601f891682610582565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106b98261068e565b9050919050565b6106c9816106ae565b82525050565b60006020820190506106e460008301846106c0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006107248261048a565b915061072f8361048a565b9250828201905080821115610747576107466106ea565b5b92915050565b6107568161048a565b82525050565b600060608201905061077160008301866106c0565b61077e602083018561074d565b61078b604083018461074d565b949350505050565b60006020820190506107a8600083018461074d565b92915050565b611156806107bd6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461015d57806388d695b21461018d57806395d89b41146101bd578063a9059cbb146101db578063dd62ed3e1461020b5761009e565b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100f157806323b872dd1461010f578063313ce5671461013f575b600080fd5b6100ab61023b565b6040516100b89190610ba8565b60405180910390f35b6100db60048036038101906100d69190610c68565b6102cd565b6040516100e89190610cc3565b60405180910390f35b6100f96102f0565b6040516101069190610ced565b60405180910390f35b61012960048036038101906101249190610d08565b6102fa565b6040516101369190610cc3565b60405180910390f35b610147610329565b6040516101549190610d77565b60405180910390f35b61017760048036038101906101729190610d92565b610332565b6040516101849190610ced565b60405180910390f35b6101a760048036038101906101a29190610e7a565b61037a565b6040516101b49190610cc3565b60405180910390f35b6101c561043e565b6040516101d29190610ba8565b60405180910390f35b6101f560048036038101906101f09190610c68565b6104d0565b6040516102029190610cc3565b60405180910390f35b61022560048036038101906102209190610efb565b6104f3565b6040516102329190610ced565b60405180910390f35b60606003805461024a90610f6a565b80601f016020809104026020016040519081016040528092919081815260200182805461027690610f6a565b80156102c35780601f10610298576101008083540402835291602001916102c3565b820191906000526020600020905b8154815290600101906020018083116102a657829003601f168201915b5050505050905090565b6000806102d861057a565b90506102e5818585610582565b600191505092915050565b6000600254905090565b60008061030561057a565b9050610312858285610594565b61031d858585610628565b60019150509392505050565b60006012905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008282905085859050146103c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bb9061100d565b60405180910390fd5b60005b85859050811015610431576104246103dd61057a565b8787848181106103f0576103ef61102d565b5b90506020020160208101906104059190610d92565b8686858181106104185761041761102d565b5b90506020020135610628565b80806001019150506103c7565b5060019050949350505050565b60606004805461044d90610f6a565b80601f016020809104026020016040519081016040528092919081815260200182805461047990610f6a565b80156104c65780601f1061049b576101008083540402835291602001916104c6565b820191906000526020600020905b8154815290600101906020018083116104a957829003601f168201915b5050505050905090565b6000806104db61057a565b90506104e8818585610628565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b61058f838383600161071c565b505050565b60006105a084846104f3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106225781811015610612578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106099392919061106b565b60405180910390fd5b6106218484848403600061071c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361069a5760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161069191906110a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361070c5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161070391906110a2565b60405180910390fd5b6107178383836108f3565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361078e5760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161078591906110a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108005760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107f791906110a2565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156108ed578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e49190610ced565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361094557806002600082825461093991906110ec565b92505081905550610a18565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109d1578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016109c89392919061106b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a615780600260008282540392505081905550610aae565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0b9190610ced565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b52578082015181840152602081019050610b37565b60008484015250505050565b6000601f19601f8301169050919050565b6000610b7a82610b18565b610b848185610b23565b9350610b94818560208601610b34565b610b9d81610b5e565b840191505092915050565b60006020820190508181036000830152610bc28184610b6f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bff82610bd4565b9050919050565b610c0f81610bf4565b8114610c1a57600080fd5b50565b600081359050610c2c81610c06565b92915050565b6000819050919050565b610c4581610c32565b8114610c5057600080fd5b50565b600081359050610c6281610c3c565b92915050565b60008060408385031215610c7f57610c7e610bca565b5b6000610c8d85828601610c1d565b9250506020610c9e85828601610c53565b9150509250929050565b60008115159050919050565b610cbd81610ca8565b82525050565b6000602082019050610cd86000830184610cb4565b92915050565b610ce781610c32565b82525050565b6000602082019050610d026000830184610cde565b92915050565b600080600060608486031215610d2157610d20610bca565b5b6000610d2f86828701610c1d565b9350506020610d4086828701610c1d565b9250506040610d5186828701610c53565b9150509250925092565b600060ff82169050919050565b610d7181610d5b565b82525050565b6000602082019050610d8c6000830184610d68565b92915050565b600060208284031215610da857610da7610bca565b5b6000610db684828501610c1d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610de457610de3610dbf565b5b8235905067ffffffffffffffff811115610e0157610e00610dc4565b5b602083019150836020820283011115610e1d57610e1c610dc9565b5b9250929050565b60008083601f840112610e3a57610e39610dbf565b5b8235905067ffffffffffffffff811115610e5757610e56610dc4565b5b602083019150836020820283011115610e7357610e72610dc9565b5b9250929050565b60008060008060408587031215610e9457610e93610bca565b5b600085013567ffffffffffffffff811115610eb257610eb1610bcf565b5b610ebe87828801610dce565b9450945050602085013567ffffffffffffffff811115610ee157610ee0610bcf565b5b610eed87828801610e24565b925092505092959194509250565b60008060408385031215610f1257610f11610bca565b5b6000610f2085828601610c1d565b9250506020610f3185828601610c1d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610f8257607f821691505b602082108103610f9557610f94610f3b565b5b50919050565b7f726563697069656e747320616e6420616d6f756e7473206c656e677468206d6960008201527f736d617463680000000000000000000000000000000000000000000000000000602082015250565b6000610ff7602683610b23565b915061100282610f9b565b604082019050919050565b6000602082019050818103600083015261102681610fea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61106581610bf4565b82525050565b6000606082019050611080600083018661105c565b61108d6020830185610cde565b61109a6040830184610cde565b949350505050565b60006020820190506110b7600083018461105c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006110f782610c32565b915061110283610c32565b925082820190508082111561111a576111196110bd565b5b9291505056fea2646970667358221220fdbfd2ff5d7f60018cd1ba9f99f9038e758419b539d4a76b8c9148f3b4c10b6b64736f6c634300081a0033"
|
|
28135
28136
|
};
|
|
28136
28137
|
|
|
28138
|
+
// src/utils/Abi/json/Abi.ERC20BatchTransfer.json
|
|
28139
|
+
var Abi_ERC20BatchTransfer_default = {
|
|
28140
|
+
_format: "hh-sol-artifact-1",
|
|
28141
|
+
contractName: "ERC20BatchTransfer",
|
|
28142
|
+
sourceName: "config/solidity/ERC20BatchTransfer.sol",
|
|
28143
|
+
abi: [
|
|
28144
|
+
{
|
|
28145
|
+
inputs: [],
|
|
28146
|
+
name: "LengthMismatch",
|
|
28147
|
+
type: "error"
|
|
28148
|
+
},
|
|
28149
|
+
{
|
|
28150
|
+
inputs: [
|
|
28151
|
+
{
|
|
28152
|
+
internalType: "contract IERC20",
|
|
28153
|
+
name: "token",
|
|
28154
|
+
type: "address"
|
|
28155
|
+
},
|
|
28156
|
+
{
|
|
28157
|
+
internalType: "address[]",
|
|
28158
|
+
name: "to",
|
|
28159
|
+
type: "address[]"
|
|
28160
|
+
},
|
|
28161
|
+
{
|
|
28162
|
+
internalType: "uint256[]",
|
|
28163
|
+
name: "amount",
|
|
28164
|
+
type: "uint256[]"
|
|
28165
|
+
}
|
|
28166
|
+
],
|
|
28167
|
+
name: "batchTransferFrom",
|
|
28168
|
+
outputs: [],
|
|
28169
|
+
stateMutability: "nonpayable",
|
|
28170
|
+
type: "function"
|
|
28171
|
+
},
|
|
28172
|
+
{
|
|
28173
|
+
inputs: [
|
|
28174
|
+
{
|
|
28175
|
+
internalType: "contract IERC20[]",
|
|
28176
|
+
name: "tokens",
|
|
28177
|
+
type: "address[]"
|
|
28178
|
+
},
|
|
28179
|
+
{
|
|
28180
|
+
internalType: "address[]",
|
|
28181
|
+
name: "to",
|
|
28182
|
+
type: "address[]"
|
|
28183
|
+
},
|
|
28184
|
+
{
|
|
28185
|
+
internalType: "uint256[]",
|
|
28186
|
+
name: "amount",
|
|
28187
|
+
type: "uint256[]"
|
|
28188
|
+
}
|
|
28189
|
+
],
|
|
28190
|
+
name: "multiBatchTransferFrom",
|
|
28191
|
+
outputs: [],
|
|
28192
|
+
stateMutability: "nonpayable",
|
|
28193
|
+
type: "function"
|
|
28194
|
+
}
|
|
28195
|
+
],
|
|
28196
|
+
bytecode: "0x6080604052348015600e575f5ffd5b5061083e8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80634885b25414610038578063f053e99f14610054575b5f5ffd5b610052600480360381019061004d9190610491565b610070565b005b61006e60048036038101906100699190610577565b6101cd565b005b8181905084849050146100af576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156101c5578573ffffffffffffffffffffffffffffffffffffffff166323b872dd338787858181106100ec576100eb610627565b5b9050602002016020810190610101919061067e565b86868681811061011457610113610627565b5b905060200201356040518463ffffffff1660e01b8152600401610139939291906106d0565b6020604051808303815f875af1158015610155573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610179919061073a565b6101b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101af906107bf565b60405180910390fd5b80806001019150506100b1565b505050505050565b85859050848490501415806101e85750858590508282905014155b1561021f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b8686905081101561035f5786868281811061024257610241610627565b5b905060200201602081019061025791906107dd565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd3387878581811061028657610285610627565b5b905060200201602081019061029b919061067e565b8686868181106102ae576102ad610627565b5b905060200201356040518463ffffffff1660e01b81526004016102d3939291906106d0565b6020604051808303815f875af11580156102ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610313919061073a565b610352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610349906107bf565b60405180910390fd5b8080600101915050610224565b50505050505050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61039982610370565b9050919050565b5f6103aa8261038f565b9050919050565b6103ba816103a0565b81146103c4575f5ffd5b50565b5f813590506103d5816103b1565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103fc576103fb6103db565b5b8235905067ffffffffffffffff811115610419576104186103df565b5b602083019150836020820283011115610435576104346103e3565b5b9250929050565b5f5f83601f840112610451576104506103db565b5b8235905067ffffffffffffffff81111561046e5761046d6103df565b5b60208301915083602082028301111561048a576104896103e3565b5b9250929050565b5f5f5f5f5f606086880312156104aa576104a9610368565b5b5f6104b7888289016103c7565b955050602086013567ffffffffffffffff8111156104d8576104d761036c565b5b6104e4888289016103e7565b9450945050604086013567ffffffffffffffff8111156105075761050661036c565b5b6105138882890161043c565b92509250509295509295909350565b5f5f83601f840112610537576105366103db565b5b8235905067ffffffffffffffff811115610554576105536103df565b5b6020830191508360208202830111156105705761056f6103e3565b5b9250929050565b5f5f5f5f5f5f6060878903121561059157610590610368565b5b5f87013567ffffffffffffffff8111156105ae576105ad61036c565b5b6105ba89828a01610522565b9650965050602087013567ffffffffffffffff8111156105dd576105dc61036c565b5b6105e989828a016103e7565b9450945050604087013567ffffffffffffffff81111561060c5761060b61036c565b5b61061889828a0161043c565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61065d8161038f565b8114610667575f5ffd5b50565b5f8135905061067881610654565b92915050565b5f6020828403121561069357610692610368565b5b5f6106a08482850161066a565b91505092915050565b6106b28161038f565b82525050565b5f819050919050565b6106ca816106b8565b82525050565b5f6060820190506106e35f8301866106a9565b6106f060208301856106a9565b6106fd60408301846106c1565b949350505050565b5f8115159050919050565b61071981610705565b8114610723575f5ffd5b50565b5f8151905061073481610710565b92915050565b5f6020828403121561074f5761074e610368565b5b5f61075c84828501610726565b91505092915050565b5f82825260208201905092915050565b7f5452414e534645525f46524f4d5f4641494c45440000000000000000000000005f82015250565b5f6107a9601483610765565b91506107b482610775565b602082019050919050565b5f6020820190508181035f8301526107d68161079d565b9050919050565b5f602082840312156107f2576107f1610368565b5b5f6107ff848285016103c7565b9150509291505056fea264697066735822122072bc5bd8cacc8452edacb73e0f0321cdfbba275969c6c2476826da50766804ee64736f6c634300081e0033"
|
|
28197
|
+
};
|
|
28198
|
+
|
|
28137
28199
|
// src/utils/AbiBase.ts
|
|
28138
28200
|
var AbiBase = class {
|
|
28139
28201
|
constructor(type = "consensus" /* CONSENSUS */, customAbi) {
|
|
@@ -28150,6 +28212,8 @@ var AbiBase = class {
|
|
|
28150
28212
|
return Abi_Usernames_default;
|
|
28151
28213
|
case "token" /* TOKEN */:
|
|
28152
28214
|
return Abi_Token_default;
|
|
28215
|
+
case "erc20batchtransfer" /* ERC20BATCH_TRANSFER */:
|
|
28216
|
+
return Abi_ERC20BatchTransfer_default;
|
|
28153
28217
|
}
|
|
28154
28218
|
if (customAbi) {
|
|
28155
28219
|
return customAbi;
|
|
@@ -28268,11 +28332,11 @@ var UnitConverter = class {
|
|
|
28268
28332
|
static formatUnits(value, unit = "ark") {
|
|
28269
28333
|
switch (unit.toLowerCase()) {
|
|
28270
28334
|
case "wei":
|
|
28271
|
-
return bignumber_default(value).dividedBy(WEI_MULTIPLIER)
|
|
28335
|
+
return bignumber_default(value).dividedBy(WEI_MULTIPLIER);
|
|
28272
28336
|
case "gwei":
|
|
28273
|
-
return bignumber_default(value).dividedBy(GWEI_MULTIPLIER)
|
|
28337
|
+
return bignumber_default(value).dividedBy(GWEI_MULTIPLIER);
|
|
28274
28338
|
case "ark":
|
|
28275
|
-
return bignumber_default(value).dividedBy(ARK_MULTIPLIER)
|
|
28339
|
+
return bignumber_default(value).dividedBy(ARK_MULTIPLIER);
|
|
28276
28340
|
default:
|
|
28277
28341
|
throw new Error(`Unsupported unit: ${unit}. Supported units are 'wei', 'gwei', and 'ark'.`);
|
|
28278
28342
|
}
|
|
@@ -28348,7 +28412,7 @@ var TransactionFunctionSigs = {
|
|
|
28348
28412
|
Unvote: Abi_Consensus_default.methodIdentifiers["unvote()"],
|
|
28349
28413
|
UpdateValidator: Abi_Consensus_default.methodIdentifiers["updateValidator(bytes)"]
|
|
28350
28414
|
};
|
|
28351
|
-
var TransactionTypeIdentifier = class {
|
|
28415
|
+
var TransactionTypeIdentifier = class _TransactionTypeIdentifier {
|
|
28352
28416
|
static isTransfer(data) {
|
|
28353
28417
|
return data === TransactionFunctionSigs.Transfer;
|
|
28354
28418
|
}
|
|
@@ -28377,13 +28441,39 @@ var TransactionTypeIdentifier = class {
|
|
|
28377
28441
|
return Helpers.removeLeadingHexZero(data).startsWith(TransactionFunctionSigs.UpdateValidator);
|
|
28378
28442
|
}
|
|
28379
28443
|
static isTokenTransfer(data) {
|
|
28444
|
+
const decodedData = _TransactionTypeIdentifier.#decodeTokenFunction(data);
|
|
28445
|
+
return decodedData ? decodedData.functionName === "transfer" : false;
|
|
28446
|
+
}
|
|
28447
|
+
static isApprove(data) {
|
|
28448
|
+
const decodedData = _TransactionTypeIdentifier.#decodeTokenFunction(data);
|
|
28449
|
+
if (decodedData?.functionName === "approve") {
|
|
28450
|
+
return new bignumber_default(decodedData.args[1]).isGreaterThan(0);
|
|
28451
|
+
}
|
|
28452
|
+
return false;
|
|
28453
|
+
}
|
|
28454
|
+
static isRevoke(data) {
|
|
28455
|
+
const decodedData = _TransactionTypeIdentifier.#decodeTokenFunction(data);
|
|
28456
|
+
if (decodedData?.functionName === "approve") {
|
|
28457
|
+
return new bignumber_default(decodedData.args[1]).isZero();
|
|
28458
|
+
}
|
|
28459
|
+
return false;
|
|
28460
|
+
}
|
|
28461
|
+
static isBatchTransfer(data) {
|
|
28380
28462
|
try {
|
|
28381
|
-
const decodedData = new AbiDecoder("
|
|
28382
|
-
return decodedData.functionName === "
|
|
28463
|
+
const decodedData = new AbiDecoder("erc20batchtransfer" /* ERC20BATCH_TRANSFER */).decodeFunctionData(data);
|
|
28464
|
+
return decodedData.functionName === "batchTransferFrom";
|
|
28383
28465
|
} catch {
|
|
28384
28466
|
}
|
|
28385
28467
|
return false;
|
|
28386
28468
|
}
|
|
28469
|
+
static #decodeTokenFunction(data) {
|
|
28470
|
+
try {
|
|
28471
|
+
const decodedData = new AbiDecoder("token" /* TOKEN */).decodeFunctionData(data);
|
|
28472
|
+
return { functionName: decodedData.functionName, args: decodedData.args };
|
|
28473
|
+
} catch {
|
|
28474
|
+
}
|
|
28475
|
+
return null;
|
|
28476
|
+
}
|
|
28387
28477
|
};
|
|
28388
28478
|
|
|
28389
28479
|
// src/transactions/builders/TokenTransferBuilder.ts
|
|
@@ -28794,6 +28884,7 @@ export {
|
|
|
28794
28884
|
ContractAbiType,
|
|
28795
28885
|
ContractAddresses,
|
|
28796
28886
|
Deserializer,
|
|
28887
|
+
Abi_ERC20BatchTransfer_default as ERC20BatchTransferContract,
|
|
28797
28888
|
EvmCall,
|
|
28798
28889
|
EvmCallBuilder,
|
|
28799
28890
|
Helpers,
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "ERC20BatchTransfer",
|
|
4
|
+
"sourceName": "config/solidity/ERC20BatchTransfer.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [],
|
|
8
|
+
"name": "LengthMismatch",
|
|
9
|
+
"type": "error"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"inputs": [
|
|
13
|
+
{
|
|
14
|
+
"internalType": "contract IERC20",
|
|
15
|
+
"name": "token",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "address[]",
|
|
20
|
+
"name": "to",
|
|
21
|
+
"type": "address[]"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"internalType": "uint256[]",
|
|
25
|
+
"name": "amount",
|
|
26
|
+
"type": "uint256[]"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"name": "batchTransferFrom",
|
|
30
|
+
"outputs": [],
|
|
31
|
+
"stateMutability": "nonpayable",
|
|
32
|
+
"type": "function"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"inputs": [
|
|
36
|
+
{
|
|
37
|
+
"internalType": "contract IERC20[]",
|
|
38
|
+
"name": "tokens",
|
|
39
|
+
"type": "address[]"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"internalType": "address[]",
|
|
43
|
+
"name": "to",
|
|
44
|
+
"type": "address[]"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"internalType": "uint256[]",
|
|
48
|
+
"name": "amount",
|
|
49
|
+
"type": "uint256[]"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"name": "multiBatchTransferFrom",
|
|
53
|
+
"outputs": [],
|
|
54
|
+
"stateMutability": "nonpayable",
|
|
55
|
+
"type": "function"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"bytecode": "0x6080604052348015600e575f5ffd5b5061083e8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80634885b25414610038578063f053e99f14610054575b5f5ffd5b610052600480360381019061004d9190610491565b610070565b005b61006e60048036038101906100699190610577565b6101cd565b005b8181905084849050146100af576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156101c5578573ffffffffffffffffffffffffffffffffffffffff166323b872dd338787858181106100ec576100eb610627565b5b9050602002016020810190610101919061067e565b86868681811061011457610113610627565b5b905060200201356040518463ffffffff1660e01b8152600401610139939291906106d0565b6020604051808303815f875af1158015610155573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610179919061073a565b6101b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101af906107bf565b60405180910390fd5b80806001019150506100b1565b505050505050565b85859050848490501415806101e85750858590508282905014155b1561021f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b8686905081101561035f5786868281811061024257610241610627565b5b905060200201602081019061025791906107dd565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd3387878581811061028657610285610627565b5b905060200201602081019061029b919061067e565b8686868181106102ae576102ad610627565b5b905060200201356040518463ffffffff1660e01b81526004016102d3939291906106d0565b6020604051808303815f875af11580156102ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610313919061073a565b610352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610349906107bf565b60405180910390fd5b8080600101915050610224565b50505050505050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61039982610370565b9050919050565b5f6103aa8261038f565b9050919050565b6103ba816103a0565b81146103c4575f5ffd5b50565b5f813590506103d5816103b1565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103fc576103fb6103db565b5b8235905067ffffffffffffffff811115610419576104186103df565b5b602083019150836020820283011115610435576104346103e3565b5b9250929050565b5f5f83601f840112610451576104506103db565b5b8235905067ffffffffffffffff81111561046e5761046d6103df565b5b60208301915083602082028301111561048a576104896103e3565b5b9250929050565b5f5f5f5f5f606086880312156104aa576104a9610368565b5b5f6104b7888289016103c7565b955050602086013567ffffffffffffffff8111156104d8576104d761036c565b5b6104e4888289016103e7565b9450945050604086013567ffffffffffffffff8111156105075761050661036c565b5b6105138882890161043c565b92509250509295509295909350565b5f5f83601f840112610537576105366103db565b5b8235905067ffffffffffffffff811115610554576105536103df565b5b6020830191508360208202830111156105705761056f6103e3565b5b9250929050565b5f5f5f5f5f5f6060878903121561059157610590610368565b5b5f87013567ffffffffffffffff8111156105ae576105ad61036c565b5b6105ba89828a01610522565b9650965050602087013567ffffffffffffffff8111156105dd576105dc61036c565b5b6105e989828a016103e7565b9450945050604087013567ffffffffffffffff81111561060c5761060b61036c565b5b61061889828a0161043c565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61065d8161038f565b8114610667575f5ffd5b50565b5f8135905061067881610654565b92915050565b5f6020828403121561069357610692610368565b5b5f6106a08482850161066a565b91505092915050565b6106b28161038f565b82525050565b5f819050919050565b6106ca816106b8565b82525050565b5f6060820190506106e35f8301866106a9565b6106f060208301856106a9565b6106fd60408301846106c1565b949350505050565b5f8115159050919050565b61071981610705565b8114610723575f5ffd5b50565b5f8151905061073481610710565b92915050565b5f6020828403121561074f5761074e610368565b5b5f61075c84828501610726565b91505092915050565b5f82825260208201905092915050565b7f5452414e534645525f46524f4d5f4641494c45440000000000000000000000005f82015250565b5f6107a9601483610765565b91506107b482610775565b602082019050919050565b5f6020820190508181035f8301526107d68161079d565b9050919050565b5f602082840312156107f2576107f1610368565b5b5f6107ff848285016103c7565b9150509291505056fea264697066735822122072bc5bd8cacc8452edacb73e0f0321cdfbba275969c6c2476826da50766804ee64736f6c634300081e0033"
|
|
59
|
+
}
|
|
@@ -2,4 +2,5 @@ export { default as ConsensusContract } from "./Abi.Consensus.json";
|
|
|
2
2
|
export { default as MultipaymentContract } from "./Abi.Multipayment.json";
|
|
3
3
|
export { default as UsernamesContract } from "./Abi.Usernames.json";
|
|
4
4
|
export { default as TokenContract } from "./Abi.Token.json";
|
|
5
|
+
export { default as ERC20BatchTransferContract } from "./Abi.ERC20BatchTransfer.json";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/Abi/json/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/Abi/json/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -2,3 +2,4 @@ export { default as ConsensusContract } from "./Abi.Consensus.json";
|
|
|
2
2
|
export { default as MultipaymentContract } from "./Abi.Multipayment.json";
|
|
3
3
|
export { default as UsernamesContract } from "./Abi.Usernames.json";
|
|
4
4
|
export { default as TokenContract } from "./Abi.Token.json";
|
|
5
|
+
export { default as ERC20BatchTransferContract } from "./Abi.ERC20BatchTransfer.json";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbiBase.d.ts","sourceRoot":"","sources":["../../src/utils/AbiBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"AbiBase.d.ts","sourceRoot":"","sources":["../../src/utils/AbiBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AASnC,8BAAsB,OAAO;IAC5B,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;gBAEnB,IAAI,GAAE,eAA2C,EAAE,SAAS,CAAC,EAAE,MAAM;IAMjF,OAAO,CAAC,WAAW;CAoBnB"}
|
package/dist/utils/AbiBase.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ContractAbiType } from "@/enums/ContractAbiType";
|
|
2
2
|
import { Interface } from "ethers";
|
|
3
|
-
import { ConsensusContract, TokenContract, MultipaymentContract, UsernamesContract } from "@/utils/Abi/json";
|
|
3
|
+
import { ConsensusContract, TokenContract, MultipaymentContract, UsernamesContract, ERC20BatchTransferContract, } from "@/utils/Abi/json";
|
|
4
4
|
export class AbiBase {
|
|
5
5
|
constructor(type = ContractAbiType.CONSENSUS, customAbi) {
|
|
6
6
|
const abi = this.contractAbi(type, customAbi);
|
|
@@ -16,6 +16,8 @@ export class AbiBase {
|
|
|
16
16
|
return UsernamesContract;
|
|
17
17
|
case ContractAbiType.TOKEN:
|
|
18
18
|
return TokenContract;
|
|
19
|
+
case ContractAbiType.ERC20BATCH_TRANSFER:
|
|
20
|
+
return ERC20BatchTransferContract;
|
|
19
21
|
}
|
|
20
22
|
if (customAbi) {
|
|
21
23
|
return customAbi;
|
|
@@ -10,6 +10,7 @@ export declare const TransactionFunctionSigs: {
|
|
|
10
10
|
UpdateValidator: string;
|
|
11
11
|
};
|
|
12
12
|
export declare class TransactionTypeIdentifier {
|
|
13
|
+
#private;
|
|
13
14
|
static isTransfer(data: string): boolean;
|
|
14
15
|
static isVote(data: string): boolean;
|
|
15
16
|
static isUnvote(data: string): boolean;
|
|
@@ -20,5 +21,8 @@ export declare class TransactionTypeIdentifier {
|
|
|
20
21
|
static isValidatorResignation(data: string): boolean;
|
|
21
22
|
static isUpdateValidator(data: string): boolean;
|
|
22
23
|
static isTokenTransfer(data: string): boolean;
|
|
24
|
+
static isApprove(data: string): boolean;
|
|
25
|
+
static isRevoke(data: string): boolean;
|
|
26
|
+
static isBatchTransfer(data: string): boolean;
|
|
23
27
|
}
|
|
24
28
|
//# sourceMappingURL=TransactionTypeIdentifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionTypeIdentifier.d.ts","sourceRoot":"","sources":["../../src/utils/TransactionTypeIdentifier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransactionTypeIdentifier.d.ts","sourceRoot":"","sources":["../../src/utils/TransactionTypeIdentifier.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB;;;;;;;;;;CAUnC,CAAC;AAEF,qBAAa,yBAAyB;;WACvB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAI7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAI/B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAI7C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAI5C,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAI9C,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAI7C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIxC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAKtC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAShC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAS/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAqBpD"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _a, _TransactionTypeIdentifier_decodeTokenFunction;
|
|
1
7
|
import { ContractAbiType } from "@/enums";
|
|
2
8
|
import { AbiDecoder } from "./AbiDecoder";
|
|
3
9
|
import { ConsensusContract, MultipaymentContract, UsernamesContract } from "./Abi/json";
|
|
4
10
|
import { Helpers } from "./Helpers";
|
|
11
|
+
import BigNumber from "bignumber.js";
|
|
5
12
|
export const TransactionFunctionSigs = {
|
|
6
13
|
MultiPayment: MultipaymentContract.methodIdentifiers["pay(address[],uint256[])"],
|
|
7
14
|
RegisterUsername: UsernamesContract.methodIdentifiers["registerUsername(string)"],
|
|
@@ -42,13 +49,41 @@ export class TransactionTypeIdentifier {
|
|
|
42
49
|
return Helpers.removeLeadingHexZero(data).startsWith(TransactionFunctionSigs.UpdateValidator);
|
|
43
50
|
}
|
|
44
51
|
static isTokenTransfer(data) {
|
|
52
|
+
const decodedData = __classPrivateFieldGet(_a, _a, "m", _TransactionTypeIdentifier_decodeTokenFunction).call(_a, data);
|
|
53
|
+
return decodedData ? decodedData.functionName === "transfer" : false;
|
|
54
|
+
}
|
|
55
|
+
static isApprove(data) {
|
|
56
|
+
const decodedData = __classPrivateFieldGet(_a, _a, "m", _TransactionTypeIdentifier_decodeTokenFunction).call(_a, data);
|
|
57
|
+
if ((decodedData === null || decodedData === void 0 ? void 0 : decodedData.functionName) === "approve") {
|
|
58
|
+
return new BigNumber(decodedData.args[1]).isGreaterThan(0);
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
static isRevoke(data) {
|
|
63
|
+
const decodedData = __classPrivateFieldGet(_a, _a, "m", _TransactionTypeIdentifier_decodeTokenFunction).call(_a, data);
|
|
64
|
+
if ((decodedData === null || decodedData === void 0 ? void 0 : decodedData.functionName) === "approve") {
|
|
65
|
+
return new BigNumber(decodedData.args[1]).isZero();
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
static isBatchTransfer(data) {
|
|
45
70
|
try {
|
|
46
|
-
const decodedData = new AbiDecoder(ContractAbiType.
|
|
47
|
-
return decodedData.functionName === "
|
|
71
|
+
const decodedData = new AbiDecoder(ContractAbiType.ERC20BATCH_TRANSFER).decodeFunctionData(data);
|
|
72
|
+
return decodedData.functionName === "batchTransferFrom";
|
|
48
73
|
}
|
|
49
|
-
catch (
|
|
74
|
+
catch (_b) {
|
|
50
75
|
// Different abi type. Ignore.
|
|
51
76
|
}
|
|
52
77
|
return false;
|
|
53
78
|
}
|
|
54
79
|
}
|
|
80
|
+
_a = TransactionTypeIdentifier, _TransactionTypeIdentifier_decodeTokenFunction = function _TransactionTypeIdentifier_decodeTokenFunction(data) {
|
|
81
|
+
try {
|
|
82
|
+
const decodedData = new AbiDecoder(ContractAbiType.TOKEN).decodeFunctionData(data);
|
|
83
|
+
return { functionName: decodedData.functionName, args: decodedData.args };
|
|
84
|
+
}
|
|
85
|
+
catch (_b) {
|
|
86
|
+
// Different abi type. Ignore.
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BigNumber from "bignumber.js";
|
|
2
2
|
export declare class UnitConverter {
|
|
3
3
|
static parseUnits(value: number | string, unit?: string): BigNumber;
|
|
4
|
-
static formatUnits(value: string, unit?: string):
|
|
4
|
+
static formatUnits(value: string, unit?: string): BigNumber;
|
|
5
5
|
static weiToArk(value: number | string, suffix?: string): string;
|
|
6
6
|
static gweiToArk(value: number | string, suffix?: string): string;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnitConverter.d.ts","sourceRoot":"","sources":["../../src/utils/UnitConverter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAMrC,qBAAa,aAAa;IACzB,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,SAAQ,GAAG,SAAS;IAalE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"UnitConverter.d.ts","sourceRoot":"","sources":["../../src/utils/UnitConverter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAMrC,qBAAa,aAAa;IACzB,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,SAAQ,GAAG,SAAS;IAalE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAQ,GAAG,SAAS;IAa1D,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAYhE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;CAWjE"}
|
|
@@ -18,11 +18,11 @@ export class UnitConverter {
|
|
|
18
18
|
static formatUnits(value, unit = "ark") {
|
|
19
19
|
switch (unit.toLowerCase()) {
|
|
20
20
|
case "wei":
|
|
21
|
-
return BigNumber(value).dividedBy(WEI_MULTIPLIER)
|
|
21
|
+
return BigNumber(value).dividedBy(WEI_MULTIPLIER);
|
|
22
22
|
case "gwei":
|
|
23
|
-
return BigNumber(value).dividedBy(GWEI_MULTIPLIER)
|
|
23
|
+
return BigNumber(value).dividedBy(GWEI_MULTIPLIER);
|
|
24
24
|
case "ark":
|
|
25
|
-
return BigNumber(value).dividedBy(ARK_MULTIPLIER)
|
|
25
|
+
return BigNumber(value).dividedBy(ARK_MULTIPLIER);
|
|
26
26
|
default:
|
|
27
27
|
throw new Error(`Unsupported unit: ${unit}. Supported units are 'wei', 'gwei', and 'ark'.`);
|
|
28
28
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "ERC20BatchTransfer",
|
|
4
|
+
"sourceName": "config/solidity/ERC20BatchTransfer.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [],
|
|
8
|
+
"name": "LengthMismatch",
|
|
9
|
+
"type": "error"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"inputs": [
|
|
13
|
+
{
|
|
14
|
+
"internalType": "contract IERC20",
|
|
15
|
+
"name": "token",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "address[]",
|
|
20
|
+
"name": "to",
|
|
21
|
+
"type": "address[]"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"internalType": "uint256[]",
|
|
25
|
+
"name": "amount",
|
|
26
|
+
"type": "uint256[]"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"name": "batchTransferFrom",
|
|
30
|
+
"outputs": [],
|
|
31
|
+
"stateMutability": "nonpayable",
|
|
32
|
+
"type": "function"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"inputs": [
|
|
36
|
+
{
|
|
37
|
+
"internalType": "contract IERC20[]",
|
|
38
|
+
"name": "tokens",
|
|
39
|
+
"type": "address[]"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"internalType": "address[]",
|
|
43
|
+
"name": "to",
|
|
44
|
+
"type": "address[]"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"internalType": "uint256[]",
|
|
48
|
+
"name": "amount",
|
|
49
|
+
"type": "uint256[]"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"name": "multiBatchTransferFrom",
|
|
53
|
+
"outputs": [],
|
|
54
|
+
"stateMutability": "nonpayable",
|
|
55
|
+
"type": "function"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"bytecode": "0x6080604052348015600e575f5ffd5b5061083e8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80634885b25414610038578063f053e99f14610054575b5f5ffd5b610052600480360381019061004d9190610491565b610070565b005b61006e60048036038101906100699190610577565b6101cd565b005b8181905084849050146100af576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156101c5578573ffffffffffffffffffffffffffffffffffffffff166323b872dd338787858181106100ec576100eb610627565b5b9050602002016020810190610101919061067e565b86868681811061011457610113610627565b5b905060200201356040518463ffffffff1660e01b8152600401610139939291906106d0565b6020604051808303815f875af1158015610155573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610179919061073a565b6101b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101af906107bf565b60405180910390fd5b80806001019150506100b1565b505050505050565b85859050848490501415806101e85750858590508282905014155b1561021f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b8686905081101561035f5786868281811061024257610241610627565b5b905060200201602081019061025791906107dd565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd3387878581811061028657610285610627565b5b905060200201602081019061029b919061067e565b8686868181106102ae576102ad610627565b5b905060200201356040518463ffffffff1660e01b81526004016102d3939291906106d0565b6020604051808303815f875af11580156102ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610313919061073a565b610352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610349906107bf565b60405180910390fd5b8080600101915050610224565b50505050505050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61039982610370565b9050919050565b5f6103aa8261038f565b9050919050565b6103ba816103a0565b81146103c4575f5ffd5b50565b5f813590506103d5816103b1565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103fc576103fb6103db565b5b8235905067ffffffffffffffff811115610419576104186103df565b5b602083019150836020820283011115610435576104346103e3565b5b9250929050565b5f5f83601f840112610451576104506103db565b5b8235905067ffffffffffffffff81111561046e5761046d6103df565b5b60208301915083602082028301111561048a576104896103e3565b5b9250929050565b5f5f5f5f5f606086880312156104aa576104a9610368565b5b5f6104b7888289016103c7565b955050602086013567ffffffffffffffff8111156104d8576104d761036c565b5b6104e4888289016103e7565b9450945050604086013567ffffffffffffffff8111156105075761050661036c565b5b6105138882890161043c565b92509250509295509295909350565b5f5f83601f840112610537576105366103db565b5b8235905067ffffffffffffffff811115610554576105536103df565b5b6020830191508360208202830111156105705761056f6103e3565b5b9250929050565b5f5f5f5f5f5f6060878903121561059157610590610368565b5b5f87013567ffffffffffffffff8111156105ae576105ad61036c565b5b6105ba89828a01610522565b9650965050602087013567ffffffffffffffff8111156105dd576105dc61036c565b5b6105e989828a016103e7565b9450945050604087013567ffffffffffffffff81111561060c5761060b61036c565b5b61061889828a0161043c565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61065d8161038f565b8114610667575f5ffd5b50565b5f8135905061067881610654565b92915050565b5f6020828403121561069357610692610368565b5b5f6106a08482850161066a565b91505092915050565b6106b28161038f565b82525050565b5f819050919050565b6106ca816106b8565b82525050565b5f6060820190506106e35f8301866106a9565b6106f060208301856106a9565b6106fd60408301846106c1565b949350505050565b5f8115159050919050565b61071981610705565b8114610723575f5ffd5b50565b5f8151905061073481610710565b92915050565b5f6020828403121561074f5761074e610368565b5b5f61075c84828501610726565b91505092915050565b5f82825260208201905092915050565b7f5452414e534645525f46524f4d5f4641494c45440000000000000000000000005f82015250565b5f6107a9601483610765565b91506107b482610775565b602082019050919050565b5f6020820190508181035f8301526107d68161079d565b9050919050565b5f602082840312156107f2576107f1610368565b5b5f6107ff848285016103c7565b9150509291505056fea264697066735822122072bc5bd8cacc8452edacb73e0f0321cdfbba275969c6c2476826da50766804ee64736f6c634300081e0033"
|
|
59
|
+
}
|
|
@@ -2,3 +2,4 @@ export { default as ConsensusContract } from "./Abi.Consensus.json";
|
|
|
2
2
|
export { default as MultipaymentContract } from "./Abi.Multipayment.json";
|
|
3
3
|
export { default as UsernamesContract } from "./Abi.Usernames.json";
|
|
4
4
|
export { default as TokenContract } from "./Abi.Token.json";
|
|
5
|
+
export { default as ERC20BatchTransferContract } from "./Abi.ERC20BatchTransfer.json";
|
package/src/utils/AbiBase.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { ContractAbiType } from "@/enums/ContractAbiType";
|
|
2
2
|
import { Interface } from "ethers";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ConsensusContract,
|
|
5
|
+
TokenContract,
|
|
6
|
+
MultipaymentContract,
|
|
7
|
+
UsernamesContract,
|
|
8
|
+
ERC20BatchTransferContract,
|
|
9
|
+
} from "@/utils/Abi/json";
|
|
4
10
|
|
|
5
11
|
export abstract class AbiBase {
|
|
6
12
|
protected interface: Interface;
|
|
@@ -21,6 +27,8 @@ export abstract class AbiBase {
|
|
|
21
27
|
return UsernamesContract;
|
|
22
28
|
case ContractAbiType.TOKEN:
|
|
23
29
|
return TokenContract;
|
|
30
|
+
case ContractAbiType.ERC20BATCH_TRANSFER:
|
|
31
|
+
return ERC20BatchTransferContract;
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
if (customAbi) {
|
|
@@ -2,6 +2,7 @@ import { ContractAbiType } from "@/enums";
|
|
|
2
2
|
import { AbiDecoder } from "./AbiDecoder";
|
|
3
3
|
import { ConsensusContract, MultipaymentContract, UsernamesContract } from "./Abi/json";
|
|
4
4
|
import { Helpers } from "./Helpers";
|
|
5
|
+
import BigNumber from "bignumber.js";
|
|
5
6
|
|
|
6
7
|
export const TransactionFunctionSigs = {
|
|
7
8
|
MultiPayment: MultipaymentContract.methodIdentifiers["pay(address[],uint256[])"],
|
|
@@ -53,13 +54,47 @@ export class TransactionTypeIdentifier {
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
public static isTokenTransfer(data: string): boolean {
|
|
57
|
+
const decodedData = TransactionTypeIdentifier.#decodeTokenFunction(data);
|
|
58
|
+
return decodedData ? decodedData.functionName === "transfer" : false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public static isApprove(data: string): boolean {
|
|
62
|
+
const decodedData = TransactionTypeIdentifier.#decodeTokenFunction(data);
|
|
63
|
+
if (decodedData?.functionName === "approve") {
|
|
64
|
+
return new BigNumber(decodedData.args[1]).isGreaterThan(0);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public static isRevoke(data: string): boolean {
|
|
71
|
+
const decodedData = TransactionTypeIdentifier.#decodeTokenFunction(data);
|
|
72
|
+
if (decodedData?.functionName === "approve") {
|
|
73
|
+
return new BigNumber(decodedData.args[1]).isZero();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public static isBatchTransfer(data: string): boolean {
|
|
56
80
|
try {
|
|
57
|
-
const decodedData = new AbiDecoder(ContractAbiType.
|
|
58
|
-
return decodedData.functionName === "
|
|
81
|
+
const decodedData = new AbiDecoder(ContractAbiType.ERC20BATCH_TRANSFER).decodeFunctionData(data);
|
|
82
|
+
return decodedData.functionName === "batchTransferFrom";
|
|
59
83
|
} catch {
|
|
60
84
|
// Different abi type. Ignore.
|
|
61
85
|
}
|
|
62
86
|
|
|
63
87
|
return false;
|
|
64
88
|
}
|
|
89
|
+
|
|
90
|
+
static #decodeTokenFunction(data: string): { functionName: string; args: string[] } | null {
|
|
91
|
+
try {
|
|
92
|
+
const decodedData = new AbiDecoder(ContractAbiType.TOKEN).decodeFunctionData(data);
|
|
93
|
+
return { functionName: decodedData.functionName, args: decodedData.args };
|
|
94
|
+
} catch {
|
|
95
|
+
// Different abi type. Ignore.
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
65
100
|
}
|
|
@@ -18,14 +18,14 @@ export class UnitConverter {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
static formatUnits(value: string, unit = "ark"):
|
|
21
|
+
static formatUnits(value: string, unit = "ark"): BigNumber {
|
|
22
22
|
switch (unit.toLowerCase()) {
|
|
23
23
|
case "wei":
|
|
24
|
-
return BigNumber(value).dividedBy(WEI_MULTIPLIER)
|
|
24
|
+
return BigNumber(value).dividedBy(WEI_MULTIPLIER);
|
|
25
25
|
case "gwei":
|
|
26
|
-
return BigNumber(value).dividedBy(GWEI_MULTIPLIER)
|
|
26
|
+
return BigNumber(value).dividedBy(GWEI_MULTIPLIER);
|
|
27
27
|
case "ark":
|
|
28
|
-
return BigNumber(value).dividedBy(ARK_MULTIPLIER)
|
|
28
|
+
return BigNumber(value).dividedBy(ARK_MULTIPLIER);
|
|
29
29
|
default:
|
|
30
30
|
throw new Error(`Unsupported unit: ${unit}. Supported units are 'wei', 'gwei', and 'ark'.`);
|
|
31
31
|
}
|
|
@@ -17,6 +17,13 @@ describe("TransactionTypeIdentifier", () => {
|
|
|
17
17
|
|
|
18
18
|
const InvalidFunctionSignature = "0x1234567";
|
|
19
19
|
|
|
20
|
+
const APPROVE_BYTECODE =
|
|
21
|
+
"0x095ea7b30000000000000000000000007b3e4936c1d38f907055cfd70b1f1396e805bf77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe";
|
|
22
|
+
const REVOKE_BYTECODE =
|
|
23
|
+
"0x095ea7b30000000000000000000000007b3e4936c1d38f907055cfd70b1f1396e805bf770000000000000000000000000000000000000000000000000000000000000000";
|
|
24
|
+
const BATCH_TRANSFER_BYTECODE =
|
|
25
|
+
"0x4885b2540000000000000000000000008444ab9d74212f28e14b089b62ed4a4a7a8fefb3000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000a5cc0bfeb09742c5e4c610f2ebaab82eb142ca10000000000000000000000000e3c31e486cca6eb2093c0f4883df949d45b021c5000000000000000000000000a5cc0bfeb09742c5e4c610f2ebaab82eb142ca100000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003";
|
|
26
|
+
|
|
20
27
|
beforeAll(() => {
|
|
21
28
|
jest.mock("@/utils/AbiDecoder", () => {
|
|
22
29
|
return {
|
|
@@ -196,4 +203,54 @@ describe("TransactionTypeIdentifier", () => {
|
|
|
196
203
|
expect(TransactionTypeIdentifier.isTokenTransfer(InvalidFunctionSignature)).toBe(false);
|
|
197
204
|
});
|
|
198
205
|
});
|
|
206
|
+
|
|
207
|
+
describe("#isApprove", () => {
|
|
208
|
+
it("should return true for valid approve data with non-zero amount", () => {
|
|
209
|
+
expect(TransactionTypeIdentifier.isApprove(APPROVE_BYTECODE)).toBe(true);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it("should return false for approve data with zero amount", () => {
|
|
213
|
+
expect(TransactionTypeIdentifier.isApprove(REVOKE_BYTECODE)).toBe(false);
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it("should return false for non-approve function", () => {
|
|
217
|
+
expect(TransactionTypeIdentifier.isApprove(InvalidFunctionSignature)).toBe(false);
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
it("should return false for invalid data", () => {
|
|
221
|
+
expect(TransactionTypeIdentifier.isApprove(InvalidFunctionSignature)).toBe(false);
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
describe("#isRevoke", () => {
|
|
226
|
+
it("should return true for approve data with zero amount", () => {
|
|
227
|
+
expect(TransactionTypeIdentifier.isRevoke(REVOKE_BYTECODE)).toBe(true);
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
it("should return false for approve data with non-zero amount", () => {
|
|
231
|
+
expect(TransactionTypeIdentifier.isRevoke(APPROVE_BYTECODE)).toBe(false);
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
it("should return false for non-approve function", () => {
|
|
235
|
+
expect(TransactionTypeIdentifier.isRevoke(InvalidFunctionSignature)).toBe(false);
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
it("should return false for invalid data", () => {
|
|
239
|
+
expect(TransactionTypeIdentifier.isRevoke(InvalidFunctionSignature)).toBe(false);
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
describe("#isBatchTransfer", () => {
|
|
244
|
+
it("should return true for valid batch transfer data", () => {
|
|
245
|
+
expect(TransactionTypeIdentifier.isBatchTransfer(BATCH_TRANSFER_BYTECODE)).toBe(true);
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
it("should return false for non batch transfer", () => {
|
|
249
|
+
expect(TransactionTypeIdentifier.isBatchTransfer(InvalidFunctionSignature)).toBe(false);
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
it("should return false for invalid data", () => {
|
|
253
|
+
expect(TransactionTypeIdentifier.isBatchTransfer(InvalidFunctionSignature)).toBe(false);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
199
256
|
});
|
|
@@ -41,39 +41,39 @@ it.each([
|
|
|
41
41
|
});
|
|
42
42
|
|
|
43
43
|
it.each([
|
|
44
|
-
["1", 1],
|
|
45
|
-
["10", 10],
|
|
46
|
-
["100", 100],
|
|
47
|
-
["1000", 1000],
|
|
48
|
-
["10000", 10000],
|
|
44
|
+
["1", "1"],
|
|
45
|
+
["10", "10"],
|
|
46
|
+
["100", "100"],
|
|
47
|
+
["1000", "1000"],
|
|
48
|
+
["10000", "10000"],
|
|
49
49
|
])("should format units from wei [%s]", (formattedAmount, amount) => {
|
|
50
50
|
const formattedValue = UnitConverter.formatUnits(formattedAmount, "wei");
|
|
51
51
|
|
|
52
|
-
expect(formattedValue).toEqual(amount);
|
|
52
|
+
expect(formattedValue.toString()).toEqual(amount);
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
it.each([
|
|
56
|
-
["1000000000", 1],
|
|
57
|
-
["10000000000", 10],
|
|
58
|
-
["100000000000", 100],
|
|
59
|
-
["1000000000000", 1000],
|
|
60
|
-
["10000000000000", 10000],
|
|
56
|
+
["1000000000", "1"],
|
|
57
|
+
["10000000000", "10"],
|
|
58
|
+
["100000000000", "100"],
|
|
59
|
+
["1000000000000", "1000"],
|
|
60
|
+
["10000000000000", "10000"],
|
|
61
61
|
])("should format units from gwei [%s]", (formattedAmount, amount) => {
|
|
62
62
|
const formattedValue = UnitConverter.formatUnits(formattedAmount, "gwei");
|
|
63
63
|
|
|
64
|
-
expect(formattedValue).toEqual(amount);
|
|
64
|
+
expect(formattedValue.toString()).toEqual(amount);
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
it.each([
|
|
68
|
-
["1000000000000000000", 1],
|
|
69
|
-
["10000000000000000000", 10],
|
|
70
|
-
["100000000000000000000", 100],
|
|
71
|
-
["1000000000000000000000", 1000],
|
|
72
|
-
["10000000000000000000000", 10000],
|
|
68
|
+
["1000000000000000000", "1"],
|
|
69
|
+
["10000000000000000000", "10"],
|
|
70
|
+
["100000000000000000000", "100"],
|
|
71
|
+
["1000000000000000000000", "1000"],
|
|
72
|
+
["10000000000000000000000", "10000"],
|
|
73
73
|
])("should format units from ark [%s]", (formattedAmount, amount) => {
|
|
74
74
|
const formattedValue = UnitConverter.formatUnits(formattedAmount);
|
|
75
75
|
|
|
76
|
-
expect(formattedValue).toEqual(amount);
|
|
76
|
+
expect(formattedValue.toString()).toEqual(amount);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
it("should throw exception for unsupported unit in parse", () => {
|