@sentio/sdk 2.57.12-rc.1 → 2.57.12-rc.aaa
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/lib/aptos/ext/token.d.ts.map +1 -1
- package/lib/aptos/ext/token.js +4 -6
- package/lib/aptos/ext/token.js.map +1 -1
- package/lib/chunk-24EEMT46.js +3 -0
- package/lib/chunk-24EEMT46.js.map +1 -0
- package/lib/chunk-2R7O6UGY.js +3 -0
- package/lib/chunk-2R7O6UGY.js.map +1 -0
- package/lib/chunk-4JXRK4YH.js +29 -0
- package/lib/chunk-4JXRK4YH.js.map +1 -0
- package/lib/chunk-7QZC3R57.js +3 -0
- package/lib/chunk-7QZC3R57.js.map +1 -0
- package/lib/chunk-AK5E6DKD.js +6 -0
- package/lib/chunk-AK5E6DKD.js.map +1 -0
- package/lib/chunk-ATZBHPQN.js +3 -0
- package/lib/chunk-ATZBHPQN.js.map +1 -0
- package/lib/chunk-B6U7F4GY.js +29 -0
- package/lib/chunk-B6U7F4GY.js.map +1 -0
- package/lib/chunk-DGKULIPW.js +3 -0
- package/lib/chunk-DGKULIPW.js.map +1 -0
- package/lib/chunk-DS2LOABN.js +3 -0
- package/lib/chunk-DS2LOABN.js.map +1 -0
- package/lib/chunk-FMBGZMT4.js +6 -0
- package/lib/chunk-FMBGZMT4.js.map +1 -0
- package/lib/chunk-FMZDKD72.js +8 -0
- package/lib/chunk-FMZDKD72.js.map +1 -0
- package/lib/chunk-G5BIPHMS.js +3 -0
- package/lib/chunk-G5BIPHMS.js.map +1 -0
- package/lib/chunk-G6XPDWDE.js +3 -0
- package/lib/chunk-G6XPDWDE.js.map +1 -0
- package/lib/chunk-GJX3DL4J.js +499 -0
- package/lib/chunk-GJX3DL4J.js.map +1 -0
- package/lib/chunk-GTITFWMU.js +259 -0
- package/lib/chunk-GTITFWMU.js.map +1 -0
- package/lib/chunk-J7Z2TKQE.js +33 -0
- package/lib/chunk-J7Z2TKQE.js.map +1 -0
- package/lib/chunk-JQ4LTUIX.js +995 -0
- package/lib/chunk-JQ4LTUIX.js.map +1 -0
- package/lib/chunk-LG2TF5WR.js +8 -0
- package/lib/chunk-LG2TF5WR.js.map +1 -0
- package/lib/chunk-LVWOFGF2.js +3 -0
- package/lib/chunk-LVWOFGF2.js.map +1 -0
- package/lib/chunk-O564J2U6.js +11 -0
- package/lib/chunk-O564J2U6.js.map +1 -0
- package/lib/chunk-QGIFUSFI.js +84 -0
- package/lib/chunk-QGIFUSFI.js.map +1 -0
- package/lib/chunk-QGPJOTWP.js +3 -0
- package/lib/chunk-QGPJOTWP.js.map +1 -0
- package/lib/chunk-RA75ESSD.js +3 -0
- package/lib/chunk-RA75ESSD.js.map +1 -0
- package/lib/chunk-RVAYZJ7X.js +5 -0
- package/lib/chunk-RVAYZJ7X.js.map +1 -0
- package/lib/chunk-SPY3PKUB.js +3 -0
- package/lib/chunk-SPY3PKUB.js.map +1 -0
- package/lib/chunk-SUCYR7EB.js +3 -0
- package/lib/chunk-SUCYR7EB.js.map +1 -0
- package/lib/chunk-TGIXVAHB.js +7 -0
- package/lib/chunk-TGIXVAHB.js.map +1 -0
- package/lib/chunk-TSEQGMTN.js +5 -0
- package/lib/chunk-TSEQGMTN.js.map +1 -0
- package/lib/chunk-ZHI6ULD5.js +3 -0
- package/lib/chunk-ZHI6ULD5.js.map +1 -0
- package/lib/multipart-parser-J6QPYJHT.js +4 -0
- package/lib/multipart-parser-J6QPYJHT.js.map +1 -0
- package/package.json +4 -4
- package/src/aptos/builtin/0x1.d.ts +6451 -0
- package/src/aptos/builtin/0x1.d.ts.map +1 -0
- package/src/aptos/builtin/0x1.js +7138 -0
- package/src/aptos/builtin/0x1.js.map +1 -0
- package/src/aptos/builtin/0x3.d.ts +1122 -0
- package/src/aptos/builtin/0x3.d.ts.map +1 -0
- package/src/aptos/builtin/0x3.js +937 -0
- package/src/aptos/builtin/0x3.js.map +1 -0
- package/src/aptos/builtin/0x4.d.ts +551 -0
- package/src/aptos/builtin/0x4.d.ts.map +1 -0
- package/src/aptos/builtin/0x4.js +529 -0
- package/src/aptos/builtin/0x4.js.map +1 -0
- package/src/aptos/builtin/index.d.ts +4 -0
- package/src/aptos/builtin/index.d.ts.map +1 -0
- package/src/aptos/builtin/index.js +7 -0
- package/src/aptos/builtin/index.js.map +1 -0
- package/src/aptos/ext/token.ts +4 -6
- package/src/eth/builtin/eacaggregatorproxy.d.ts +5 -0
- package/src/eth/builtin/eacaggregatorproxy.d.ts.map +1 -0
- package/src/eth/builtin/eacaggregatorproxy.js +8 -0
- package/src/eth/builtin/eacaggregatorproxy.js.map +1 -0
- package/src/eth/builtin/erc1155.d.ts +5 -0
- package/src/eth/builtin/erc1155.d.ts.map +1 -0
- package/src/eth/builtin/erc1155.js +8 -0
- package/src/eth/builtin/erc1155.js.map +1 -0
- package/src/eth/builtin/erc20.d.ts +5 -0
- package/src/eth/builtin/erc20.d.ts.map +1 -0
- package/src/eth/builtin/erc20.js +8 -0
- package/src/eth/builtin/erc20.js.map +1 -0
- package/src/eth/builtin/erc20bytes.d.ts +5 -0
- package/src/eth/builtin/erc20bytes.d.ts.map +1 -0
- package/src/eth/builtin/erc20bytes.js +8 -0
- package/src/eth/builtin/erc20bytes.js.map +1 -0
- package/src/eth/builtin/erc721.d.ts +5 -0
- package/src/eth/builtin/erc721.d.ts.map +1 -0
- package/src/eth/builtin/erc721.js +8 -0
- package/src/eth/builtin/erc721.js.map +1 -0
- package/src/eth/builtin/index.d.ts +13 -0
- package/src/eth/builtin/index.d.ts.map +1 -0
- package/src/eth/builtin/index.js +16 -0
- package/src/eth/builtin/index.js.map +1 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.d.ts +50 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.d.ts.map +1 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.js +2 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.js.map +1 -0
- package/src/eth/builtin/internal/ERC1155.d.ts +57 -0
- package/src/eth/builtin/internal/ERC1155.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC1155.js +2 -0
- package/src/eth/builtin/internal/ERC1155.js.map +1 -0
- package/src/eth/builtin/internal/ERC20.d.ts +41 -0
- package/src/eth/builtin/internal/ERC20.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC20.js +2 -0
- package/src/eth/builtin/internal/ERC20.js.map +1 -0
- package/src/eth/builtin/internal/ERC20Bytes.d.ts +32 -0
- package/src/eth/builtin/internal/ERC20Bytes.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC20Bytes.js +2 -0
- package/src/eth/builtin/internal/ERC20Bytes.js.map +1 -0
- package/src/eth/builtin/internal/ERC721.d.ts +43 -0
- package/src/eth/builtin/internal/ERC721.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC721.js +2 -0
- package/src/eth/builtin/internal/ERC721.js.map +1 -0
- package/src/eth/builtin/internal/WETH9.d.ts +47 -0
- package/src/eth/builtin/internal/WETH9.d.ts.map +1 -0
- package/src/eth/builtin/internal/WETH9.js +2 -0
- package/src/eth/builtin/internal/WETH9.js.map +1 -0
- package/src/eth/builtin/internal/common.d.ts +3 -0
- package/src/eth/builtin/internal/common.d.ts.map +1 -0
- package/src/eth/builtin/internal/common.js +8 -0
- package/src/eth/builtin/internal/common.js.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +373 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.js +1355 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts +7 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js +55 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc1155-processor.d.ts +173 -0
- package/src/eth/builtin/internal/erc1155-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc1155-processor.js +596 -0
- package/src/eth/builtin/internal/erc1155-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc1155-test-utils.d.ts +7 -0
- package/src/eth/builtin/internal/erc1155-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc1155-test-utils.js +55 -0
- package/src/eth/builtin/internal/erc1155-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc20-processor.d.ts +244 -0
- package/src/eth/builtin/internal/erc20-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20-processor.js +1109 -0
- package/src/eth/builtin/internal/erc20-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc20-test-utils.d.ts +6 -0
- package/src/eth/builtin/internal/erc20-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20-test-utils.js +44 -0
- package/src/eth/builtin/internal/erc20-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-processor.d.ts +144 -0
- package/src/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-processor.js +594 -0
- package/src/eth/builtin/internal/erc20bytes-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts +5 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.js +33 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc721-processor.d.ts +215 -0
- package/src/eth/builtin/internal/erc721-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc721-processor.js +895 -0
- package/src/eth/builtin/internal/erc721-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc721-test-utils.d.ts +6 -0
- package/src/eth/builtin/internal/erc721-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc721-test-utils.js +44 -0
- package/src/eth/builtin/internal/erc721-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +400 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js +524 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts +251 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.js +329 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts +185 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js +251 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.d.ts +303 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.js +401 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.d.ts +273 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.js +361 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.d.ts +220 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.js +294 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/index.d.ts +7 -0
- package/src/eth/builtin/internal/factories/index.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/index.js +10 -0
- package/src/eth/builtin/internal/factories/index.js.map +1 -0
- package/src/eth/builtin/internal/index.d.ts +14 -0
- package/src/eth/builtin/internal/index.d.ts.map +1 -0
- package/src/eth/builtin/internal/index.js +8 -0
- package/src/eth/builtin/internal/index.js.map +1 -0
- package/src/eth/builtin/internal/weth9-processor.d.ts +172 -0
- package/src/eth/builtin/internal/weth9-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/weth9-processor.js +729 -0
- package/src/eth/builtin/internal/weth9-processor.js.map +1 -0
- package/src/eth/builtin/internal/weth9-test-utils.d.ts +7 -0
- package/src/eth/builtin/internal/weth9-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/weth9-test-utils.js +55 -0
- package/src/eth/builtin/internal/weth9-test-utils.js.map +1 -0
- package/src/eth/builtin/weth9.d.ts +5 -0
- package/src/eth/builtin/weth9.d.ts.map +1 -0
- package/src/eth/builtin/weth9.js +8 -0
- package/src/eth/builtin/weth9.js.map +1 -0
- package/src/solana/builtin/index.d.ts +2 -0
- package/src/solana/builtin/index.d.ts.map +1 -0
- package/src/solana/builtin/index.js +2 -0
- package/src/solana/builtin/index.js.map +1 -0
- package/src/solana/builtin/spl-token-processor.d.ts +40 -0
- package/src/solana/builtin/spl-token-processor.d.ts.map +1 -0
- package/src/solana/builtin/spl-token-processor.js +254 -0
- package/src/solana/builtin/spl-token-processor.js.map +1 -0
- package/src/solana/builtin/types.d.ts +428 -0
- package/src/solana/builtin/types.d.ts.map +1 -0
- package/src/solana/builtin/types.js +201 -0
- package/src/solana/builtin/types.js.map +1 -0
- package/src/sui/builtin/0x1.d.ts +114 -0
- package/src/sui/builtin/0x1.d.ts.map +1 -0
- package/src/sui/builtin/0x1.js +159 -0
- package/src/sui/builtin/0x1.js.map +1 -0
- package/src/sui/builtin/0x2.d.ts +1250 -0
- package/src/sui/builtin/0x2.d.ts.map +1 -0
- package/src/sui/builtin/0x2.js +1511 -0
- package/src/sui/builtin/0x2.js.map +1 -0
- package/src/sui/builtin/0x3.d.ts +774 -0
- package/src/sui/builtin/0x3.d.ts.map +1 -0
- package/src/sui/builtin/0x3.js +720 -0
- package/src/sui/builtin/0x3.js.map +1 -0
- package/src/sui/builtin/index.d.ts +4 -0
- package/src/sui/builtin/index.d.ts.map +1 -0
- package/src/sui/builtin/index.js +7 -0
- package/src/sui/builtin/index.js.map +1 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/js-sha3@0.9.3/node_modules/js-sha3/src/sha3.js","../src/eth/context.ts","../src/eth/base-processor.ts","../../../node_modules/.pnpm/@sentio+ethers@6.13.1-patch.5_bufferutil@4.0.8_utf-8-validate@5.0.10/node_modules/@sentio/ethers/src.ts/providers/format.ts","../src/eth/eth.ts","../src/eth/abi-decoder/index.ts","../src/eth/generic-processor.ts","../src/eth/bind-options.ts","../src/eth/binds.ts","../src/eth/base-processor-template.ts","../src/eth/builtin/internal/factories/EACAggregatorProxy__factory.ts","../src/eth/builtin/internal/factories/ERC1155__factory.ts","../src/eth/builtin/internal/factories/ERC20__factory.ts","../src/eth/builtin/internal/factories/ERC20Bytes__factory.ts","../src/eth/builtin/internal/factories/ERC721__factory.ts","../src/eth/builtin/internal/factories/WETH9__factory.ts","../src/eth/builtin/erc20.ts","../src/eth/builtin/internal/erc20-processor.ts","../src/eth/builtin/internal/erc20-test-utils.ts","../src/eth/builtin/erc721.ts","../src/eth/builtin/internal/erc721-processor.ts","../src/eth/builtin/internal/erc721-test-utils.ts","../src/eth/account-processor-state.ts","../src/eth/account-processor.ts","../src/eth/index.ts","../src/eth/eth-plugin.ts"],"sourcesContent":["/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.9.3\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2023\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n\n var isArray = root.JS_SHA3_NO_NODE_JS || !Array.isArray\n ? function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n }\n : Array.isArray;\n\n var isView = (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView))\n ? function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n }\n : ArrayBuffer.isView;\n\n // [message: string, isString: bool]\n var formatMessage = function (message) {\n var type = typeof message;\n if (type === 'string') {\n return [message, true];\n }\n if (type !== 'object' || message === null) {\n throw new Error(INPUT_ERROR);\n }\n if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n return [new Uint8Array(message), false];\n }\n if (!isArray(message) && !isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n return [message, false];\n }\n\n var empty = function (message) {\n return formatMessage(message)[0].length === 0;\n };\n\n var cloneArray = function (array) {\n var newArray = [];\n for (var i = 0; i < array.length; ++i) {\n newArray[i] = array[i];\n }\n return newArray;\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (empty(n) && empty(s)) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var result = formatMessage(message);\n message = result[0];\n var isString = result[1];\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (isString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var result = formatMessage(str);\n str = result[0];\n var isString = result[1];\n var bytes = 0, length = str.length;\n if (isString) {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n } else {\n bytes = length;\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = (w - bytes % w) % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n s = cloneArray(s);\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n s = cloneArray(s);\n f(s);\n }\n }\n if (extraBytes) {\n array[j] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n s = cloneArray(s);\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","import { BaseContract, Overrides } from 'ethers'\nimport { LogParams, BlockParams, TransactionReceiptParams, TransactionResponseParams } from 'ethers/providers'\n\nimport { EthCallContext, PreparedData, RecordMetaData } from '@sentio/protos'\nimport { Trace } from './eth.js'\nimport { Labels, normalizeLabels } from '../core/index.js'\nimport { BaseContext } from '../core/base-context.js'\nimport { EthChainId } from '@sentio/chain'\n\nexport abstract class EthContext extends BaseContext {\n readonly chainId: EthChainId\n address: string\n private readonly log?: LogParams\n readonly block?: BlockParams\n readonly trace?: Trace\n readonly blockNumber: number\n readonly transactionHash?: string\n readonly transaction?: TransactionResponseParams\n readonly transactionReceipt?: TransactionReceiptParams\n readonly timestamp: Date\n readonly preparedData?: PreparedData\n\n constructor(\n chainId: EthChainId,\n address: string,\n timestamp?: Date,\n block?: BlockParams,\n log?: LogParams,\n trace?: Trace,\n transaction?: TransactionResponseParams,\n transactionReceipt?: TransactionReceiptParams,\n baseLabels?: Labels,\n preparedData?: PreparedData\n ) {\n super(baseLabels)\n this.chainId = chainId\n this.log = log\n this.block = block\n this.trace = trace\n this.address = address.toLowerCase()\n this.transaction = transaction\n this.transactionReceipt = transactionReceipt\n this.timestamp = timestamp || new Date(0)\n this.preparedData = preparedData\n if (log) {\n this.blockNumber = log.blockNumber\n this.transactionHash = log.transactionHash\n } else if (block) {\n this.blockNumber = block.number\n } else if (trace) {\n this.blockNumber = trace.blockNumber\n this.transactionHash = trace.transactionHash\n }\n }\n\n protected abstract getContractName(): string\n\n getChainId(): EthChainId {\n return this.chainId\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n if (this.log) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: this.log.transactionIndex,\n transactionHash: this.transactionHash || '',\n logIndex: this.log.index,\n chainId: this.chainId,\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n if (this.trace) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: this.trace.transactionPosition,\n transactionHash: this.transactionHash || '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n if (this.transaction) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: this.transaction.index || 0,\n transactionHash: this.transaction.hash || '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n if (this.block) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: -1,\n transactionHash: '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n throw new Error(\"Invaid ctx argument can't happen\")\n }\n\n getBlockTag(overrides?: Overrides) {\n let blockTagWithOverride = '0x' + this.blockNumber.toString(16)\n if (overrides?.blockTag) {\n blockTagWithOverride =\n typeof overrides.blockTag == 'string' ? overrides.blockTag : '0x' + overrides.blockTag.toString(16)\n }\n return blockTagWithOverride\n }\n\n getEthCallContext(): EthCallContext {\n return {\n chainId: this.chainId,\n blockTag: '0x' + this.blockNumber.toString(16),\n address: this.address\n }\n }\n}\n\nexport class AccountContext extends EthContext {\n // constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {\n // super(chainId, address, new Date(0), block, log, trace)\n // }\n protected getContractName(): string {\n return 'account'\n }\n}\n\nexport class GlobalContext extends EthContext {\n constructor(\n chainId: EthChainId,\n address: string,\n timestamp?: Date,\n block?: BlockParams,\n log?: LogParams,\n trace?: Trace,\n transaction?: TransactionResponseParams,\n transactionReceipt?: TransactionReceiptParams,\n baseLabels?: Labels,\n preparedData?: PreparedData\n ) {\n super(chainId, address, timestamp, block, log, trace, transaction, transactionReceipt, baseLabels, preparedData)\n }\n protected getContractName(): string {\n return '*'\n }\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n const address = this.address\n this.address = '*'\n const res = super.getMetaDataInternal(name, labels)\n this.address = address\n return res\n }\n}\n\nexport class ContractContext<\n TContract extends BaseContract,\n TContractBoundView extends BoundContractView<TContract, ContractView<TContract>>\n> extends EthContext {\n contract: TContractBoundView\n contractName: string\n\n constructor(\n contractName: string,\n view: TContractBoundView,\n chainId: EthChainId,\n timestamp?: Date,\n block?: BlockParams,\n log?: LogParams,\n trace?: Trace,\n transaction?: TransactionResponseParams,\n transactionReceipt?: TransactionReceiptParams,\n baseLabels?: Labels,\n preparedData?: PreparedData\n ) {\n super(\n chainId,\n view.address,\n timestamp,\n block,\n log,\n trace,\n transaction,\n transactionReceipt,\n baseLabels,\n preparedData\n )\n view.context = this\n if (view.callStatic) {\n view.callStatic.context = this\n }\n if (view.encodeCall) {\n view.encodeCall.context = this\n }\n this.contractName = contractName\n this.contract = view\n }\n\n protected getContractName(): string {\n return this.contractName\n }\n}\n\nexport class ContractView<TContract extends BaseContract> {\n constructor(protected contract: TContract) {}\n\n get rawContract() {\n return this.contract\n }\n\n get provider() {\n if (this.contract.runner?.provider) {\n return this.contract.runner.provider\n }\n throw Error(\"Can't find provider for contract\" + this.contract.toString())\n }\n}\n\nexport class BoundContractView<TContract extends BaseContract, TContractView extends ContractView<TContract>> {\n protected view: TContractView\n address: string\n // context will be set right after context creation (in context's constructor)\n // context: ContractContext<TContract, BoundContractView<TContract, TContractView>>\n context: EthContext\n callStatic: {\n context: EthContext\n view: TContractView\n }\n encodeCall: {\n context: EthContext\n view: TContractView\n }\n\n constructor(address: string, view: TContractView) {\n this.address = address\n this.view = view\n }\n\n get rawContract() {\n return this.view.rawContract\n }\n\n get provider() {\n return this.view.provider\n }\n\n get filters() {\n return this.view.rawContract.filters\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { BaseContract, DeferredTopicFilter, LogDescription, TransactionResponseParams } from 'ethers'\n\nimport { BoundContractView, ContractContext, ContractView, GlobalContext } from './context.js'\nimport {\n AddressType,\n Data_EthBlock,\n Data_EthLog,\n Data_EthTrace,\n Data_EthTransaction,\n EthFetchConfig,\n HandleInterval,\n PreparedData,\n PreprocessResult,\n ProcessResult\n} from '@sentio/protos'\nimport { BindOptions } from './bind-options.js'\nimport { PromiseOrVoid } from '../core/promises.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { fixEmptyKey, formatEthData, RichBlock, Trace, TypedCallTrace, TypedEvent } from './eth.js'\nimport sha3 from 'js-sha3'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { EthChainId } from '@sentio/chain'\nimport { getHandlerName, proxyHandlers, proxyProcessor } from '../utils/metrics.js'\nimport { ALL_ADDRESS } from '../core/index.js'\nimport { parseLog, decodeTrace } from './abi-decoder/index.js'\n\nexport interface AddressOrTypeEventFilter extends DeferredTopicFilter {\n addressType?: AddressType\n address?: string\n}\n\nexport const defaultPreprocessHandler = () => (<PreprocessResult>{ ethCallParams: [] }) as any\n\nexport class EventsHandler {\n filters: AddressOrTypeEventFilter[]\n handlerName: string\n handler: (event: Data_EthLog) => Promise<ProcessResult>\n preprocessHandler?: (event: Data_EthLog, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>\n fetchConfig: EthFetchConfig\n}\n\nexport class TraceHandler {\n signatures: string[]\n handlerName: string\n handler: (trace: Data_EthTrace) => Promise<ProcessResult>\n preprocessHandler?: (event: Data_EthTrace, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>\n fetchConfig: EthFetchConfig\n}\n\nexport class BlockHandler {\n blockInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handlerName: string\n handler: (block: Data_EthBlock) => Promise<ProcessResult>\n preprocessHandler?: (event: Data_EthBlock, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>\n fetchConfig: EthFetchConfig\n}\n\nexport class TransactionHandler {\n handler: (block: Data_EthTransaction) => Promise<ProcessResult>\n handlerName: string\n preprocessHandler?: (event: Data_EthTransaction, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>\n fetchConfig: EthFetchConfig\n}\n\nclass BindInternalOptions {\n address: string\n network: EthChainId\n name: string\n startBlock: bigint\n endBlock?: bigint\n baseLabels?: { [key: string]: string }\n}\n\nexport class GlobalProcessorState extends ListStateStorage<GlobalProcessor> {\n static INSTANCE = new GlobalProcessorState()\n}\n\nexport class GlobalProcessor {\n config: BindInternalOptions\n blockHandlers: BlockHandler[] = proxyHandlers([])\n transactionHandler: TransactionHandler[] = proxyHandlers([])\n traceHandlers: TraceHandler[] = proxyHandlers([])\n\n static bind(config: Omit<BindOptions, 'address'>): GlobalProcessor {\n const processor = new GlobalProcessor(config)\n GlobalProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n constructor(config: Omit<BindOptions, 'address'>) {\n this.config = {\n address: ALL_ADDRESS,\n name: config.name || 'Global',\n network: config.network || EthChainId.ETHEREUM,\n startBlock: 0n\n }\n if (config.startBlock) {\n this.config.startBlock = BigInt(config.startBlock)\n }\n if (config.endBlock) {\n this.config.endBlock = BigInt(config.endBlock)\n }\n\n return proxyProcessor(this)\n }\n\n public onBlockInterval(\n handler: (block: RichBlock, ctx: GlobalContext) => PromiseOrVoid,\n blockInterval = 250,\n backfillBlockInterval = 1000,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n block: RichBlock,\n ctx: GlobalContext,\n preprocessStore: {\n [k: string]: any\n }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n return this.onInterval(\n handler,\n undefined,\n {\n recentInterval: blockInterval,\n backfillInterval: backfillBlockInterval\n },\n fetchConfig,\n preprocessHandler\n )\n }\n\n public onTimeInterval(\n handler: (block: RichBlock, ctx: GlobalContext) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n block: RichBlock,\n ctx: GlobalContext,\n preprocessStore: {\n [k: string]: any\n }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n return this.onInterval(\n handler,\n { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },\n undefined,\n fetchConfig,\n preprocessHandler\n )\n }\n\n public getChainId(): EthChainId {\n return this.config.network\n }\n\n public onInterval(\n handler: (block: RichBlock, ctx: GlobalContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n blockInterval: HandleInterval | undefined,\n fetchConfig: Partial<EthFetchConfig> | undefined,\n preprocessHandler: (\n block: RichBlock,\n ctx: GlobalContext,\n preprocessStore: {\n [k: string]: any\n }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n const chainId = this.getChainId()\n if (timeInterval) {\n if (timeInterval.backfillInterval < timeInterval.recentInterval) {\n timeInterval.backfillInterval = timeInterval.recentInterval\n }\n }\n\n const processor = this\n this.blockHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_EthBlock) {\n const { block } = formatEthData(data)\n\n if (!block) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')\n }\n\n const ctx = new GlobalContext(\n chainId,\n ALL_ADDRESS,\n new Date(block.timestamp * 1000),\n block,\n undefined,\n undefined,\n undefined,\n undefined,\n processor.config.baseLabels\n )\n await handler(block, ctx)\n return ctx.stopAndGetResult()\n },\n preprocessHandler: async function (data: Data_EthBlock, preprocessStore: { [k: string]: any }) {\n const { block } = formatEthData(data)\n\n if (!block) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')\n }\n\n const ctx = new GlobalContext(\n chainId,\n ALL_ADDRESS,\n new Date(block.timestamp * 1000),\n block,\n undefined,\n undefined,\n undefined,\n undefined,\n processor.config.baseLabels\n )\n return preprocessHandler(block, ctx, preprocessStore)\n },\n timeIntervalInMinutes: timeInterval,\n blockInterval: blockInterval,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {})\n })\n return this\n }\n\n public onTransaction(\n handler: (transaction: TransactionResponseParams, ctx: GlobalContext) => PromiseOrVoid,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n transaction: TransactionResponseParams,\n ctx: GlobalContext,\n preprocessStore: {\n [k: string]: any\n }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n const chainId = this.getChainId()\n const processor = this\n\n this.transactionHandler.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_EthTransaction) {\n const { trace, block, transaction, transactionReceipt } = formatEthData(data)\n\n if (!transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is empty')\n }\n let to = transaction.to\n if (to === trace?.action.from) {\n to = '*'\n }\n const ctx = new GlobalContext(\n chainId,\n to || '*',\n data.timestamp,\n block,\n undefined,\n trace,\n transaction,\n transactionReceipt,\n processor.config.baseLabels\n )\n await handler(transaction, ctx)\n return ctx.stopAndGetResult()\n },\n preprocessHandler: async function (data: Data_EthTransaction, preprocessStore: { [k: string]: any }) {\n const { trace, block, transaction, transactionReceipt } = formatEthData(data)\n\n if (!transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is empty')\n }\n let to = transaction.to\n if (to === trace?.action.from) {\n to = '*'\n }\n const ctx = new GlobalContext(\n chainId,\n to || '*',\n data.timestamp,\n block,\n undefined,\n trace,\n transaction,\n transactionReceipt,\n processor.config.baseLabels\n )\n return preprocessHandler(transaction, ctx, preprocessStore)\n },\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {})\n })\n return this\n }\n\n public onTrace(\n signatures: string | string[],\n handler: (trace: Trace, ctx: GlobalContext) => PromiseOrVoid,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n trace: Trace,\n ctx: GlobalContext,\n preprocessStore: {\n [k: string]: any\n }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n const chainId = this.getChainId()\n if (typeof signatures === 'string') {\n signatures = [signatures]\n }\n for (const signature of signatures) {\n if (signature.length <= 2) {\n throw new Error('Invalid signature length, must start with 0x')\n }\n }\n\n const processor = this\n\n this.traceHandlers.push({\n signatures,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {}),\n handlerName: getHandlerName(),\n handler: async function (data: Data_EthTrace) {\n const { trace, block, transaction, transactionReceipt } = formatEthData(data)\n\n if (!trace) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'trace is null')\n }\n const ctx = new GlobalContext(\n chainId,\n trace.action.to || '*',\n data.timestamp,\n block,\n undefined,\n trace,\n transaction,\n transactionReceipt,\n processor.config.baseLabels\n )\n await handler(trace, ctx)\n return ctx.stopAndGetResult()\n },\n preprocessHandler: async function (data: Data_EthTrace, preprocessStore: { [k: string]: any }) {\n const { trace, block, transaction, transactionReceipt } = formatEthData(data)\n\n if (!trace) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'trace is null')\n }\n const ctx = new GlobalContext(\n chainId,\n trace.action.to || '*',\n data.timestamp,\n block,\n undefined,\n trace,\n transaction,\n transactionReceipt,\n processor.config.baseLabels\n )\n return preprocessHandler(trace, ctx, preprocessStore)\n }\n })\n return this\n }\n}\n\nexport abstract class BaseProcessor<\n TContract extends BaseContract,\n TBoundContractView extends BoundContractView<TContract, ContractView<TContract>>\n> {\n blockHandlers: BlockHandler[] = proxyHandlers([])\n eventHandlers: EventsHandler[] = proxyHandlers([])\n traceHandlers: TraceHandler[] = proxyHandlers([])\n\n config: BindInternalOptions\n\n constructor(config: BindOptions) {\n this.config = {\n address: config.address,\n name: config.name || '',\n network: config.network || EthChainId.ETHEREUM,\n startBlock: 0n,\n baseLabels: config.baseLabels\n }\n if (config.startBlock) {\n this.config.startBlock = BigInt(config.startBlock)\n }\n if (config.endBlock) {\n this.config.endBlock = BigInt(config.endBlock)\n }\n\n return proxyProcessor(this)\n }\n\n protected abstract CreateBoundContractView(): TBoundContractView\n\n public getChainId(): EthChainId {\n return this.config.network\n }\n\n public onEvent(\n handler: (event: TypedEvent, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: TypedEvent,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n const _filters: DeferredTopicFilter[] = []\n const tmpContract = this.CreateBoundContractView()\n\n for (const fragment of tmpContract.rawContract.interface.fragments) {\n if (fragment.type === 'event') {\n const filter = tmpContract.rawContract.filters[fragment.format()]\n _filters.push(filter())\n }\n }\n return this.onEthEvent(handler, _filters, fetchConfig, preprocessHandler)\n }\n\n protected onEthEvent(\n handler: (event: TypedEvent, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n filter: DeferredTopicFilter | DeferredTopicFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: TypedEvent,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler,\n handlerName = getHandlerName()\n ): this {\n const chainId = this.getChainId()\n let _filters: DeferredTopicFilter[] = []\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n const contractName = this.config.name\n const processor = this\n this.eventHandlers.push({\n filters: _filters,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {}),\n handlerName,\n handler: async function (data: Data_EthLog, preparedData?: PreparedData) {\n const { log, block, transaction, transactionReceipt } = formatEthData(data)\n if (!log) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Log is empty')\n }\n let contractView\n try {\n contractView = processor.CreateBoundContractView()\n } catch (e) {\n throw e\n // console.log(e)\n }\n if (processor.config.address === '*') {\n contractView.address = log.address\n }\n\n let parsed: LogDescription | null = null\n try {\n parsed = await parseLog(processor, log)\n } catch (e) {\n // RangeError data out-of-bounds\n if (e instanceof Error) {\n if (e.message.includes('data out-of-bounds')) {\n console.error(\"Can't decode\", log, 'may because of incompatible ABIs, e.g. string vs indexed string', e)\n return ProcessResult.fromPartial({})\n }\n }\n throw e\n }\n if (parsed) {\n const ctx = new ContractContext<TContract, TBoundContractView>(\n contractName,\n contractView,\n chainId,\n data.timestamp,\n block,\n log,\n undefined,\n transaction,\n transactionReceipt,\n processor.config.baseLabels,\n preparedData\n )\n const event: TypedEvent = { ...log, name: parsed.name, args: fixEmptyKey(parsed) }\n await handler(event, ctx)\n return ctx.stopAndGetResult()\n }\n return ProcessResult.fromPartial({})\n },\n preprocessHandler: async function (\n data: Data_EthLog,\n preprocessStore: { [k: string]: any }\n ): Promise<PreprocessResult> {\n const { log, block, transaction, transactionReceipt } = formatEthData(data)\n if (!log) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Log is empty')\n }\n let contractView\n try {\n contractView = processor.CreateBoundContractView()\n } catch (e) {\n throw e\n // console.log(e)\n }\n if (processor.config.address === '*') {\n contractView.address = log.address\n }\n\n const ctx = new ContractContext<TContract, TBoundContractView>(\n contractName,\n contractView,\n chainId,\n data.timestamp,\n block,\n log,\n undefined,\n transaction,\n transactionReceipt,\n processor.config.baseLabels\n )\n\n let parsed: LogDescription | null = null\n try {\n parsed = await parseLog(processor, log)\n } catch (e) {\n // RangeError data out-of-bounds\n if (e instanceof Error) {\n if (e.message.includes('data out-of-bounds')) {\n console.error(\"Can't decode\", log, 'may because of incompatible ABIs, e.g. string vs indexed string', e)\n return PreprocessResult.fromPartial({})\n }\n }\n throw e\n }\n if (parsed) {\n const event: TypedEvent = { ...log, name: parsed.name, args: fixEmptyKey(parsed) }\n return preprocessHandler(event, ctx, preprocessStore)\n }\n return PreprocessResult.fromPartial({})\n }\n })\n return this\n }\n\n public onBlockInterval(\n handler: (block: RichBlock, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n blockInterval = 250,\n backfillBlockInterval = 1000,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n block: RichBlock,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n return this.onInterval(\n handler,\n undefined,\n {\n recentInterval: blockInterval,\n backfillInterval: backfillBlockInterval\n },\n fetchConfig,\n preprocessHandler\n )\n }\n\n public onTimeInterval(\n handler: (block: RichBlock, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n block: RichBlock,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n return this.onInterval(\n handler,\n { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },\n undefined,\n fetchConfig,\n preprocessHandler\n )\n }\n\n public onInterval(\n handler: (block: RichBlock, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n blockInterval: HandleInterval | undefined,\n fetchConfig: Partial<EthFetchConfig> | undefined,\n preprocessHandler: (\n block: RichBlock,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler,\n handlerName = getHandlerName()\n ): this {\n const chainId = this.getChainId()\n const processor = this\n const contractName = this.config.name\n\n this.blockHandlers.push({\n handlerName,\n handler: async function (data: Data_EthBlock, preparedData?: PreparedData) {\n const { block } = formatEthData(data)\n\n if (!block) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')\n }\n\n const contractView = processor.CreateBoundContractView()\n\n const ctx = new ContractContext<TContract, TBoundContractView>(\n contractName,\n contractView,\n chainId,\n new Date(block.timestamp * 1000),\n block,\n undefined,\n undefined,\n undefined,\n undefined,\n processor.config.baseLabels,\n preparedData\n )\n await handler(block, ctx)\n return ctx.stopAndGetResult()\n },\n preprocessHandler: async function (data: Data_EthBlock, preprocessStore: { [k: string]: any }) {\n const { block } = formatEthData(data)\n\n if (!block) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')\n }\n\n const contractView = processor.CreateBoundContractView()\n\n const ctx = new ContractContext<TContract, TBoundContractView>(\n contractName,\n contractView,\n chainId,\n new Date(block.timestamp * 1000),\n block,\n undefined,\n undefined,\n undefined,\n undefined,\n processor.config.baseLabels\n )\n return preprocessHandler(block, ctx, preprocessStore)\n },\n timeIntervalInMinutes: timeInterval,\n blockInterval: blockInterval,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {})\n })\n return this\n }\n\n protected onEthTrace(\n signatures: string | string[],\n handler: (trace: TypedCallTrace, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n trace: TypedCallTrace,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler,\n handlerName = getHandlerName()\n ): this {\n const chainId = this.getChainId()\n const contractName = this.config.name\n const processor = this\n if (typeof signatures === 'string') {\n signatures = [signatures]\n }\n\n this.traceHandlers.push({\n signatures,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {}),\n handlerName,\n handler: async function (data: Data_EthTrace, preparedData?: PreparedData) {\n const contractView = processor.CreateBoundContractView()\n const contractInterface = contractView.rawContract.interface\n const { trace, block, transaction, transactionReceipt } = formatEthData(data)\n const sighash = trace?.action.input?.slice(0, 10)\n if (!sighash) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'trace has no sighash')\n }\n const fragment = contractInterface.getFunction(sighash)\n\n if (!trace || !fragment) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'trace is null')\n }\n const typedTrace = trace as TypedCallTrace\n typedTrace.name = fragment.name\n typedTrace.functionSignature = fragment.format()\n // const trace = data.trace as Trace\n if (!trace?.action.input) {\n return ProcessResult.fromPartial({})\n }\n const traceData = '0x' + trace.action.input.slice(10)\n try {\n typedTrace.args = await decodeTrace(processor, fragment.inputs, traceData)\n // typedTrace.args = contractInterface.getAbiCoder().decode(fragment.inputs, traceData, true)\n } catch (e) {\n if (!trace.error) {\n throw e\n }\n console.error('Failed to decode successful trace', e)\n }\n const ctx = new ContractContext<TContract, TBoundContractView>(\n contractName,\n contractView,\n chainId,\n data.timestamp,\n block,\n undefined,\n trace,\n transaction,\n transactionReceipt,\n processor.config.baseLabels,\n preparedData\n )\n await handler(typedTrace, ctx)\n return ctx.stopAndGetResult()\n },\n preprocessHandler: async function (data: Data_EthTrace, preprocessStore: { [k: string]: any }) {\n const contractView = processor.CreateBoundContractView()\n const contractInterface = contractView.rawContract.interface\n const { trace, block, transaction, transactionReceipt } = formatEthData(data)\n const sighash = trace?.action.input?.slice(0, 10)\n if (!sighash) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'trace has no sighash')\n }\n const fragment = contractInterface.getFunction(sighash)\n\n if (!trace || !fragment) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'trace is null')\n }\n const typedTrace = trace as TypedCallTrace\n typedTrace.name = fragment.name\n typedTrace.functionSignature = fragment.format()\n // const trace = data.trace as Trace\n if (!trace?.action.input) {\n return PreprocessResult.fromPartial({})\n }\n const traceData = '0x' + trace.action.input.slice(10)\n try {\n typedTrace.args = await decodeTrace(processor, fragment.inputs, traceData)\n } catch (e) {\n if (!trace.error) {\n throw e\n }\n console.error('Failed to decode successful trace', e)\n }\n const ctx = new ContractContext<TContract, TBoundContractView>(\n contractName,\n contractView,\n chainId,\n data.timestamp,\n block,\n undefined,\n trace,\n transaction,\n transactionReceipt,\n processor.config.baseLabels\n )\n return preprocessHandler(typedTrace, ctx, preprocessStore)\n }\n })\n return this\n }\n\n public onTrace(\n handler: (event: TypedCallTrace, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n trace: TypedCallTrace,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ): this {\n const tmpContract = this.CreateBoundContractView()\n const sighashes = []\n\n for (const fragment of tmpContract.rawContract.interface.fragments) {\n if (fragment.type === 'function') {\n const signature = fragment.format()\n const test = new TextEncoder().encode(signature)\n const sighash = '0x' + sha3.keccak_256(test).substring(0, 8)\n sighashes.push(sighash)\n }\n }\n return this.onEthTrace(sighashes, handler, fetchConfig, preprocessHandler)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/**\n * @_ignore\n */\nimport { getAddress, getCreateAddress } from \"../address/index.js\";\nimport { Signature } from \"../crypto/index.js\"\nimport { accessListify } from \"../transaction/index.js\";\nimport {\n getBigInt, getNumber, hexlify, isHexString, zeroPadValue,\n assert, assertArgument\n} from \"../utils/index.js\";\n\nimport type {\n BlockParams, LogParams,\n TransactionReceiptParams, TransactionResponseParams,\n} from \"./formatting.js\";\n\n\nconst BN_0 = BigInt(0);\n\nexport type FormatFunc = (value: any) => any;\n\nexport function allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n}\n\nexport function arrayOf(format: FormatFunc, allowNull?: boolean): FormatFunc {\n return ((array: any) => {\n if (allowNull && array == null) { return null; }\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n return array.map((i) => format(i));\n });\n}\n\n// Requires an object which matches a fleet of other formatters\n// Any FormatFunc may return `undefined` to have the value omitted\n// from the result object. Calls preserve `this`.\nexport function object(format: Record<string, FormatFunc>, altNames?: Record<string, Array<string>>): FormatFunc {\n return ((value: any) => {\n const result: any = { };\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n\n try {\n const nv = format[key](value[srcKey]);\n if (nv !== undefined) { result[key] = nv; }\n } catch (error) {\n const message = (error instanceof Error) ? error.message: \"not-an-error\";\n assert(false, `invalid value for value.${ key } (${ message })`, \"BAD_DATA\", { value })\n }\n }\n return result;\n });\n}\n\nexport function formatBoolean(value: any): boolean {\n switch (value) {\n case true: case \"true\":\n return true;\n case false: case \"false\":\n return false;\n }\n assertArgument(false, `invalid boolean; ${ JSON.stringify(value) }`, \"value\", value);\n}\n\nexport function formatData(value: string): string {\n assertArgument(isHexString(value, true), \"invalid data\", \"value\", value);\n return value;\n}\n\nexport function formatHash(value: any): string {\n assertArgument(isHexString(value, 32), \"invalid hash\", \"value\", value);\n return value;\n}\n\nexport function formatUint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return zeroPadValue(value, 32);\n}\n\nconst _formatLog = object({\n address: getAddress,\n blockHash: formatHash,\n blockNumber: getNumber,\n data: formatData,\n index: getNumber,\n removed: allowNull(formatBoolean, false),\n topics: arrayOf(formatHash),\n transactionHash: formatHash,\n transactionIndex: getNumber,\n}, {\n index: [ \"logIndex\" ]\n});\n\nexport function formatLog(value: any): LogParams {\n return _formatLog(value);\n}\n\nconst _formatBlock = object({\n hash: allowNull(formatHash),\n parentHash: formatHash,\n parentBeaconBlockRoot: allowNull(formatHash, null),\n\n number: getNumber,\n\n timestamp: getNumber,\n nonce: allowNull(formatData),\n difficulty: getBigInt,\n\n gasLimit: getBigInt,\n gasUsed: getBigInt,\n\n stateRoot: allowNull(formatHash, null),\n receiptsRoot: allowNull(formatHash, null),\n\n blobGasUsed: allowNull(getBigInt, null),\n excessBlobGas: allowNull(getBigInt, null),\n\n miner: allowNull(getAddress),\n prevRandao: allowNull(formatHash, null),\n extraData: formatData,\n\n baseFeePerGas: allowNull(getBigInt)\n}, {\n prevRandao: [ \"mixHash\" ]\n});\n\nexport function formatBlock(value: any): BlockParams {\n const result = _formatBlock(value);\n result.transactions = value.transactions.map((tx: string | TransactionResponseParams) => {\n if (typeof(tx) === \"string\") { return tx; }\n return formatTransactionResponse(tx);\n });\n return result;\n}\n\nconst _formatReceiptLog = object({\n transactionIndex: getNumber,\n blockNumber: getNumber,\n transactionHash: formatHash,\n address: getAddress,\n topics: arrayOf(formatHash),\n data: formatData,\n index: getNumber,\n blockHash: formatHash,\n}, {\n index: [ \"logIndex\" ]\n});\n\nexport function formatReceiptLog(value: any): LogParams {\n return _formatReceiptLog(value);\n}\n\nconst _formatTransactionReceipt = object({\n to: allowNull(getAddress, null),\n from: allowNull(getAddress, null),\n contractAddress: allowNull(getAddress, null),\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n index: getNumber,\n root: allowNull(hexlify),\n gasUsed: getBigInt,\n blobGasUsed: allowNull(getBigInt, null),\n logsBloom: allowNull(formatData),\n blockHash: formatHash,\n hash: formatHash,\n logs: arrayOf(formatReceiptLog),\n blockNumber: getNumber,\n //confirmations: allowNull(getNumber, null),\n cumulativeGasUsed: getBigInt,\n effectiveGasPrice: allowNull(getBigInt),\n blobGasPrice: allowNull(getBigInt, null),\n status: allowNull(getNumber),\n type: allowNull(getNumber, 0)\n}, {\n effectiveGasPrice: [ \"gasPrice\" ],\n hash: [ \"transactionHash\" ],\n index: [ \"transactionIndex\" ],\n});\n\nexport function formatTransactionReceipt(value: any): TransactionReceiptParams {\n return _formatTransactionReceipt(value);\n}\n\nexport function formatTransactionResponse(value: any): TransactionResponseParams {\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (value.to && getBigInt(value.to) === BN_0) {\n value.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n const result = object({\n hash: formatHash,\n\n // Some nodes do not return this, usually test nodes (like Ganache)\n index: allowNull(getNumber, undefined),\n\n type: (value: any) => {\n if (value === \"0x\" || value == null) { return 0; }\n return getNumber(value);\n },\n accessList: allowNull(accessListify, null),\n blobVersionedHashes: allowNull(arrayOf(formatHash, true), null),\n\n blockHash: allowNull(formatHash, null),\n blockNumber: allowNull(getNumber, null),\n transactionIndex: allowNull(getNumber, null),\n\n from: getAddress,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas) must be set\n gasPrice: allowNull(getBigInt),\n maxPriorityFeePerGas: allowNull(getBigInt),\n maxFeePerGas: allowNull(getBigInt),\n maxFeePerBlobGas: allowNull(getBigInt, null),\n\n gasLimit: getBigInt,\n to: allowNull(getAddress, null),\n value: getBigInt,\n nonce: getNumber,\n data: formatData,\n\n creates: allowNull(getAddress, null),\n\n chainId: allowNull(getBigInt, null)\n }, {\n data: [ \"input\" ],\n gasLimit: [ \"gas\" ],\n index: [ \"transactionIndex\" ]\n })(value);\n\n // If to and creates are empty, populate the creates from the value\n if (result.to == null && result.creates == null) {\n result.creates = getCreateAddress(result);\n }\n\n // @TODO: Check fee data\n\n // Add an access list to supported transaction types\n if ((value.type === 1 || value.type === 2) && value.accessList == null) {\n result.accessList = [ ];\n }\n\n // Compute the signature\n if (value.signature) {\n result.signature = Signature.from(value.signature);\n } else {\n result.signature = Signature.from(value);\n }\n\n // Some backends omit ChainId on legacy transactions, but we can compute it\n if (result.chainId == null) {\n const chainId = result.signature.legacyChainId;\n if (chainId != null) { result.chainId = chainId; }\n }\n\n\n // @TODO: check chainID\n /*\n if (value.chainId != null) {\n let chainId = value.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = value.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = value.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n */\n\n // 0x0000... should actually be null\n if (result.blockHash && getBigInt(result.blockHash) === BN_0) {\n result.blockHash = null;\n }\n\n return result;\n}\n","import {\n LogParams,\n formatBlock,\n formatLog,\n TransactionReceiptParams,\n formatTransactionResponse,\n allowNull,\n arrayOf,\n formatHash,\n formatReceiptLog,\n object,\n formatData\n} from 'ethers/providers'\nimport {\n CallExceptionError,\n LogDescription,\n Result,\n DeferredTopicFilter,\n BlockParams,\n Interface,\n Contract,\n Addressable,\n InterfaceAbi,\n ContractRunner\n} from 'ethers'\nimport { ContractContext } from './context.js'\nimport { getAddress } from 'ethers/address'\nimport { getBigInt, getNumber, hexlify } from 'ethers/utils'\nimport { EthCallContext, EthCallParam } from '@sentio/protos'\nimport { ALL_ADDRESS } from '../core/index.js'\n\nexport interface IResult {\n /**\n * Returns the Result as a normal Array.\n */\n toArray(): Array<any>\n /**\n * Returns the Result as an Object with each name-value pair.\n */\n toObject(): Record<string, any>\n}\n\nexport interface TypedEvent<TArgsArray extends Array<any> = any, TArgsObject = any> extends LogParams {\n args: TArgsObject & IResult\n name: string\n}\n\nexport type TypedEventFilter<_TEvent extends TypedEvent> = DeferredTopicFilter\n\nexport interface RichBlock extends BlockParams {\n traces?: Trace[]\n transactionReceipts?: TransactionReceiptParams[]\n}\n\nexport class SimpleEthersError extends Error {\n e: Error\n\n constructor(message: string, e: Error, stack?: string) {\n super(message)\n this.stack = stack\n }\n\n toString() {\n return this.message + '\\n' + this.stack?.toString()\n }\n}\n\nexport function transformEtherError(e: Error, ctx: ContractContext<any, any> | undefined, stack?: string): Error {\n if (e instanceof SimpleEthersError) {\n return e\n }\n\n const checkPage = 'Check here for possible cause and fix: https://docs.sentio.xyz/docs/handling-errors#ethers-error'\n\n let msg = ''\n const err = e as CallExceptionError\n if (err.code === 'CALL_EXCEPTION' || err.code === 'BAD_DATA') {\n if (err.data === '0x') {\n if (ctx) {\n msg = `jsonrpc eth_call return '0x' (likely contract not existed) at chain ${ctx.chainId}, ${checkPage}:\\n${e.message}`\n } else {\n msg = `jsonrpc eth_call return '0x' (likely contract not existed), ${checkPage}:\\n${e.message}`\n }\n return new SimpleEthersError(msg, err, stack)\n } else {\n return new SimpleEthersError(`eth call error ${err.message}, ${checkPage}:\\n${JSON.stringify(err)}`, err, stack)\n }\n }\n\n msg = 'other error during call error ${e.message}\\n' + JSON.stringify(e) + '\\n' + stack?.toString() + '\\n' + checkPage\n return new Error(msg)\n}\n\nexport function fixEmptyKey(result: LogDescription): Result {\n const keys = []\n\n for (const [i, arg] of result.fragment.inputs.entries()) {\n if (arg.name === '') {\n keys.push('arg' + i)\n } else {\n keys.push(arg.name)\n }\n }\n return Result.fromItems(Array.from(result.args.values()), keys)\n}\n\nconst _formatTransactionReceipt = object(\n {\n to: allowNull(getAddress, null),\n from: allowNull(getAddress, null),\n contractAddress: allowNull(getAddress, null),\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n index: getNumber,\n root: allowNull(hexlify),\n gasUsed: getBigInt,\n logsBloom: allowNull(formatData),\n blockHash: formatHash,\n hash: formatHash,\n logs: allowNull(arrayOf(formatReceiptLog)), // Only thing that different\n blockNumber: getNumber,\n //confirmations: allowNull(getNumber, null),\n cumulativeGasUsed: getBigInt,\n effectiveGasPrice: allowNull(getBigInt),\n gasPrice: allowNull(getBigInt),\n status: allowNull(getNumber),\n type: allowNull(getNumber, 0)\n },\n {\n // effectiveGasPrice: ['gasPrice'],\n hash: ['transactionHash'],\n index: ['transactionIndex']\n }\n)\n\nfunction formatTransactionReceipt(value: any): TransactionReceiptParams {\n return _formatTransactionReceipt(value)\n}\n\nexport function formatEthData(data: {\n log?: any\n block?: any\n trace?: any\n transaction?: any\n transactionReceipt?: any\n}) {\n const log = data.log ? formatLog(data.log) : undefined\n if (data.block && !data.block.transactions) {\n data.block.transactions = []\n }\n const block = data.block ? formatRichBlock(data.block) : undefined\n const trace = data.trace ? (data.trace as Trace) : undefined\n let transaction = undefined\n if (data.transaction) {\n if (!data.transaction.v) {\n data.transaction.v = '0x1c'\n data.transaction.r = '0x88ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0'\n data.transaction.s = '0x45e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33a'\n }\n transaction = formatTransactionResponse(data.transaction)\n }\n const transactionReceipt = data.transactionReceipt ? formatTransactionReceipt(data.transactionReceipt) : undefined\n return {\n log,\n block,\n trace,\n transaction,\n transactionReceipt\n }\n}\n\nexport function formatRichBlock(block: RichBlock): RichBlock {\n block = { ...block, ...formatBlock(block) }\n if (block.transactionReceipts) {\n block.transactionReceipts = block.transactionReceipts.map((t) => formatTransactionReceipt(t))\n }\n return block\n}\n\nexport interface TypedCallTrace<TArgsArray extends Array<any> = any, TArgsObject = any> extends Trace {\n args: TArgsObject & IResult\n name: string\n functionSignature: string\n}\n\nexport interface Trace {\n action: TraceAction\n blockHash: string\n blockNumber: number\n result: TraceResult\n subtraces: number\n traceAddress: number[]\n transactionHash: string\n transactionPosition: number\n type: string\n error?: string\n}\n// export type CallType = \"call\" | \"callcode\" | \"delegatecall\" | \"staticcall\"\n\nexport interface TraceAction {\n from: string\n to?: string\n value: number\n gas: number\n input?: string\n callType?: string\n\n init?: string\n address?: string\n balance?: string\n refundAddress?: string\n}\n\n// TODO are more field missing for FailedCall, FailedCreate\nexport interface TraceResult {\n gasUsed: number\n output?: string\n address?: string\n code?: string\n}\n\n// const TRACE: Trace = {\n// action: {\n// from: '0xd771111cbfa2bbdafbf9f0e58b49b3f827da31f5',\n// callType: 'call',\n// gas: 0x12154,\n// input:\n// '0xb1a417f4000000000000000000000000d771111cbfa2bbdafbf9f0e58b49b3f827da31f5000000000000000000000000d771111cbfa2bbdafbf9f0e58b49b3f827da31f500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131888b5aaf000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000',\n// to: '0x0baba1ad5be3a5c0a66e7ac838a129bf948f1ea4',\n// value: 0x131888b5aaf0000,\n// },\n// blockHash: '0x5451711bc530a7c04128fedbe149eb359c10eccd44a83909d448c5244c7eea26',\n// blockNumber: 15533908,\n// result: { gasUsed: 0x114c1, output: '0x' },\n// subtraces: 1,\n// traceAddress: [],\n// transactionHash: '0x66dce11d6217042ed709a38e507e7762c93b1bde4a0447ae7a243493bbdffc0e',\n// transactionPosition: 73,\n// type: 'call',\n// }\n\n// const trac2: Trace =\n// {\n// \"action\": {\n// \"from\": \"0x95ba4cf87d6723ad9c0db21737d862be80e93911\",\n// \"gas\": 0x630d0b,\n// \"init\": \"0x608060405234801561001057600080fd5b50604051602080610b2983398101806040528101908080519060200190929190505050808060405180807f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481526020017f696f6e000000000000000000000000000000000000000000000000000000000081525060230190506040518091039020600019167f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3600102600019161415156100c657fe5b6100de81610169640100000000026401000000009004565b5060405180807f6f72672e7a657070656c696e6f732e70726f78792e61646d696e000000000000815250601a0190506040518091039020600019167f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b6001026000191614151561014a57fe5b6101623361024e640100000000026401000000009004565b5050610290565b60006101878261027d6401000000000261084b176401000000009004565b1515610221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f81526020017f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000081525060400191505060405180910390fd5b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c360010290508181555050565b60007f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b60010290508181555050565b600080823b905060008111915050919050565b61088a8061029f6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633659cfe6146100775780634f1ef286146100ba5780635c60da1b146101085780638f2839701461015f578063f851a440146101a2575b6100756101f9565b005b34801561008357600080fd5b506100b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610213565b005b610106600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001919091929391929390505050610268565b005b34801561011457600080fd5b5061011d610308565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016b57600080fd5b506101a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610360565b005b3480156101ae57600080fd5b506101b761051e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610201610576565b61021161020c610651565b610682565b565b61021b6106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561025c57610257816106d9565b610265565b6102646101f9565b5b50565b6102706106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102fa576102ac836106d9565b3073ffffffffffffffffffffffffffffffffffffffff163483836040518083838082843782019150509250505060006040518083038185875af19250505015156102f557600080fd5b610303565b6103026101f9565b5b505050565b60006103126106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103545761034d610651565b905061035d565b61035c6101f9565b5b90565b6103686106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561051257600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f81526020017f787920746f20746865207a65726f20616464726573730000000000000000000081525060400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61048f6106a8565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161050d81610748565b61051b565b61051a6101f9565b5b50565b60006105286106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561056a576105636106a8565b9050610573565b6105726101f9565b5b90565b61057e6106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610647576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667281526020017f6f6d207468652070726f78792061646d696e000000000000000000000000000081525060400191505060405180910390fd5b61064f610777565b565b6000807f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c36001029050805491505090565b3660008037600080366000845af43d6000803e80600081146106a3573d6000f35b3d6000fd5b6000807f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b6001029050805491505090565b6106e281610779565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60007f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b60010290508181555050565b565b60006107848261084b565b151561081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f81526020017f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000081525060400191505060405180910390fd5b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c360010290508181555050565b600080823b9050600081119150509190505600a165627a7a72305820a4a547cfc7202c5acaaae74d428e988bc62ad5024eb0165532d3a8f91db4ed2400290000000000000000000000000882477e7895bdc5cea7cb1552ed914ab157fe56\",\n// \"value\": 0x0\n// },\n// \"blockHash\": \"0xb2f6986457f5a24ff088a0beb5567c8c1fe2da02687c78e743507ee7c982b977\",\n// \"blockNumber\": 6082465,\n// \"result\": {\n// \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n// \"code\": \"0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633659cfe6146100775780634f1ef286146100ba5780635c60da1b146101085780638f2839701461015f578063f851a440146101a2575b6100756101f9565b005b34801561008357600080fd5b506100b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610213565b005b610106600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001919091929391929390505050610268565b005b34801561011457600080fd5b5061011d610308565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016b57600080fd5b506101a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610360565b005b3480156101ae57600080fd5b506101b761051e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610201610576565b61021161020c610651565b610682565b565b61021b6106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561025c57610257816106d9565b610265565b6102646101f9565b5b50565b6102706106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102fa576102ac836106d9565b3073ffffffffffffffffffffffffffffffffffffffff163483836040518083838082843782019150509250505060006040518083038185875af19250505015156102f557600080fd5b610303565b6103026101f9565b5b505050565b60006103126106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103545761034d610651565b905061035d565b61035c6101f9565b5b90565b6103686106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561051257600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f81526020017f787920746f20746865207a65726f20616464726573730000000000000000000081525060400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61048f6106a8565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161050d81610748565b61051b565b61051a6101f9565b5b50565b60006105286106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561056a576105636106a8565b9050610573565b6105726101f9565b5b90565b61057e6106a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610647576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667281526020017f6f6d207468652070726f78792061646d696e000000000000000000000000000081525060400191505060405180910390fd5b61064f610777565b565b6000807f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c36001029050805491505090565b3660008037600080366000845af43d6000803e80600081146106a3573d6000f35b3d6000fd5b6000807f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b6001029050805491505090565b6106e281610779565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60007f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b60010290508181555050565b565b60006107848261084b565b151561081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f81526020017f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000081525060400191505060405180910390fd5b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c360010290508181555050565b600080823b9050600081119150509190505600a165627a7a72305820a4a547cfc7202c5acaaae74d428e988bc62ad5024eb0165532d3a8f91db4ed240029\",\n// \"gasUsed\": 0x74f42\n// },\n// \"subtraces\": 0,\n// \"traceAddress\": [],\n// \"transactionHash\": \"0xe7e0fe390354509cd08c9a0168536938600ddc552b3f7cb96030ebef62e75895\",\n// \"transactionPosition\": 22,\n// \"type\": \"create\"\n// }\n\nexport function isNullAddress(address: string) {\n try {\n // Normalize the input address\n const normalizedAddress = getAddress(address)\n // Check if the normalized address is equal to the null address (all zeros)\n return normalizedAddress === '0x0000000000000000000000000000000000000000'\n } catch (error) {\n return false\n }\n}\n\nexport function validateAndNormalizeAddress(address: string): string {\n if (address === ALL_ADDRESS) {\n return address\n }\n const normalizedAddress = getAddress(address)\n return normalizedAddress.toLowerCase()\n}\n\nexport function encodeCallData(\n context: EthCallContext,\n name: string,\n funcABI: string,\n values?: ReadonlyArray<any>\n): EthCallParam {\n try {\n const iface = new Interface([funcABI])\n const calldata = iface.encodeFunctionData(name, values)\n return {\n context,\n calldata\n }\n } catch (e) {\n const stack = new Error().stack\n throw transformEtherError(e, undefined, stack)\n }\n}\n\nexport function newContract(\n target: string | Addressable,\n abi: Interface | InterfaceAbi,\n runner?: ContractRunner | null | undefined\n) {\n return new Contract(target, abi, runner)\n}\n\nexport function newInterface(fragments: InterfaceAbi) {\n return new Interface(fragments)\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { LogDescription, LogParams, Result, ParamType } from 'ethers'\nimport { GLOBAL_CONFIG, processMetrics } from '@sentio/runtime'\nimport { Piscina } from 'piscina'\n\nimport { decodeTraceInline, parseLogInline, IResult } from './decode-worker.js'\n\nfunction createOptions() {\n const options: any = {\n filename: findWorkFile(),\n recordTiming: GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.recordTiming\n }\n if (GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.workerCount) {\n try {\n const workerNum = GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.workerCount\n options.maxThreads = workerNum\n options.minThreads = workerNum\n } catch (e) {}\n }\n return options\n}\n\nfunction findWorkFile() {\n let baseUrl = import.meta.url\n // find the base from @sentio/sdk\n const index = baseUrl.indexOf('/@sentio/sdk/')\n if (index > 0) {\n baseUrl = baseUrl.substring(0, index + 13)\n } else {\n // dev environment, path is .../packages/sdk/src/eth/abi-decoder/parse-log-worker.ts\n const index = baseUrl.indexOf('packages/sdk/')\n if (index > 0) {\n baseUrl = baseUrl.substring(0, index + 13)\n }\n }\n return new URL('./lib/eth/abi-decoder/decode-worker.js', baseUrl).href\n}\n\nexport async function parseLog(processor: any, log: LogParams) {\n if (GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.enabled) {\n let workerPool = processor._logWorkerPool as Piscina\n const contractView = processor.CreateBoundContractView()\n const contractViewInterface = contractView.rawContract.interface\n if (!workerPool) {\n const fragments = contractViewInterface.fragments\n const options = createOptions()\n options.workerData = fragments\n\n workerPool = new Piscina(options)\n processor._logWorkerPool = workerPool\n }\n try {\n const result = (await workerPool.run({ log }, { name: 'parseLog' })) as any\n if (result) {\n const fragment = contractViewInterface.getEvent(result.topic)\n\n if (!fragment || fragment.anonymous) {\n return null\n }\n return new LogDescription(fragment, result.topic, Result.fromItems(result.args?.array ?? [], result.args?.keys))\n }\n } catch (e) {\n const skipWhenDecodeFailed = GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.skipWhenDecodeFailed\n console.error(`parseLog worker failed, skip: ${!!skipWhenDecodeFailed}, the error is:`, e)\n if (!skipWhenDecodeFailed) {\n throw e\n }\n } finally {\n if (GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.recordTiming && workerPool.waitTime && workerPool.runTime) {\n const labels = {\n chain_id: processor.config?.network,\n processor: processor.config?.name,\n workerPool: 'parseLog'\n }\n processMetrics.processor_worker_wait_time.record(workerPool.waitTime.average, labels)\n processMetrics.processor_worker_run_time.record(workerPool.runTime?.average, labels)\n processMetrics.processor_worker_utilization.record(workerPool.utilization, labels)\n processMetrics.processor_worker_queue_size.record(workerPool.queueSize, labels)\n processMetrics.processor_worker_completed.record(workerPool.completed, labels)\n }\n }\n return null\n } else {\n const contractView = processor.CreateBoundContractView()\n const contractViewInterface = contractView.rawContract.interface\n return parseLogInline(contractViewInterface, log)\n }\n}\n\nexport async function decodeTrace(processor: any, inputs: readonly ParamType[], traceData: string) {\n if (GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.enabled) {\n let workerPool = processor._traceWorkerPool\n if (!workerPool) {\n const contractView = processor.CreateBoundContractView()\n const contractViewInterface = contractView.rawContract.interface\n const fragments = contractViewInterface.fragments\n const options = createOptions()\n options.workerData = fragments\n\n workerPool = new Piscina(options)\n processor._traceWorkerPool = workerPool\n }\n try {\n const result = (await workerPool.run({ inputs, traceData }, { name: 'decodeTrace' })) as IResult\n if (result) {\n return Result.fromItems(result.array ?? [], result.keys)\n }\n } catch (e) {\n const skipWhenDecodeFailed = GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.skipWhenDecodeFailed\n console.error(`decode trace worker failed, skip: ${!!skipWhenDecodeFailed}, the error is:`, e)\n if (!skipWhenDecodeFailed) {\n throw e\n }\n } finally {\n if (GLOBAL_CONFIG.execution.ethAbiDecoderConfig?.recordTiming && workerPool.waitTime && workerPool.runTime) {\n const labels = {\n chain_id: processor.config?.network,\n processor: processor.config?.name,\n workerPool: 'parseLog'\n }\n processMetrics.processor_worker_wait_time.record(workerPool.waitTime.average, labels)\n processMetrics.processor_worker_run_time.record(workerPool.runTime?.average, labels)\n processMetrics.processor_worker_utilization.record(workerPool.utilization, labels)\n processMetrics.processor_worker_queue_size.record(workerPool.queueSize, labels)\n processMetrics.processor_worker_completed.record(workerPool.completed, labels)\n }\n }\n return null\n } else {\n const contractView = processor.CreateBoundContractView()\n const contractViewInterface = contractView.rawContract.interface\n return decodeTraceInline(contractViewInterface, inputs, traceData)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { BaseContract } from 'ethers'\nimport { BoundContractView, ContractView } from './context.js'\nimport { BindOptions } from './bind-options.js'\nimport { BaseProcessor } from './base-processor.js'\nimport { getProvider } from '@sentio/runtime'\nimport { addProcessor } from './binds.js'\n\nexport class GenericProcessor extends BaseProcessor<\n BaseContract,\n BoundContractView<BaseContract, ContractView<BaseContract>>\n> {\n eventABI: string[]\n constructor(eventABI: string[], options: BindOptions) {\n super(options)\n this.eventABI = eventABI\n }\n\n protected CreateBoundContractView(): BoundContractView<BaseContract, ContractView<BaseContract>> {\n const contract = new BaseContract(this.config.address, this.eventABI, getProvider(this.config.network))\n return new BoundContractView(this.config.address, new ContractView<BaseContract>(contract))\n }\n\n public static bind(eventABI: string[] | string, options: BindOptions): GenericProcessor {\n if (!Array.isArray(eventABI)) {\n eventABI = [eventABI]\n }\n if (!options.name) {\n options.name = 'Generic'\n }\n const processor = new GenericProcessor(eventABI, options)\n addProcessor(options, processor)\n return processor\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { EthChainId } from '@sentio/chain'\n\nexport class BindOptions {\n // Contract address\n address: string\n // Optional, if not set, then use eth mainnet\n network?: EthChainId = EthChainId.ETHEREUM\n // Optional, override default contract name\n name?: string\n startBlock?: bigint | number\n endBlock?: bigint | number\n baseLabels?: { [key: string]: string }\n}\n\nexport function getOptionsSignature(opts: BindOptions): string {\n const sig = [opts.address]\n if (opts.network) {\n sig.push(opts.network)\n }\n if (opts.name) {\n sig.push(opts.name)\n }\n if (opts.startBlock) {\n sig.push(opts.startBlock.toString())\n }\n if (opts.endBlock) {\n sig.push(opts.endBlock.toString())\n }\n return sig.join('_')\n}\n\nexport class AccountBindOptions {\n address: string\n network: EthChainId\n startBlock?: bigint | number\n baseLabels?: { [key: string]: string }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { BindOptions, getOptionsSignature } from './bind-options.js'\nimport { ContractView } from './context.js'\nimport { BaseProcessor } from './base-processor.js'\n\nimport { BaseContract } from 'ethers'\nimport { MapStateStorage } from '@sentio/runtime'\nimport { EthChainId } from '@sentio/chain'\n\nexport class EthProcessorState extends MapStateStorage<BaseProcessor<any, any>> {\n static INSTANCE = new EthProcessorState()\n}\n\n// from abiName_address_chainId => contract wrapper\nconst contracts = new Map<string, ContractView<BaseContract>>()\n\nfunction getKey(abiName: string, address: string, network: EthChainId) {\n return [abiName, address.toLowerCase(), network].join('_')\n}\n\n// Dedup processor that bind multiple times\nexport function getProcessor(opts: BindOptions) {\n const sig = getOptionsSignature(opts)\n return EthProcessorState.INSTANCE.getValue(sig)\n}\n\nexport function addProcessor(opts: BindOptions, processor: BaseProcessor<any, any>) {\n const sig = getOptionsSignature(opts)\n\n EthProcessorState.INSTANCE.getOrSetValue(sig, processor)\n}\n\nexport function getContractByABI(abiName: string, address: string, network: EthChainId) {\n const key = getKey(abiName, address, network)\n return contracts.get(key)\n}\n\nexport function addContractByABI(\n abiName: string,\n address: string,\n network: EthChainId,\n contract: ContractView<BaseContract>\n) {\n const key = getKey(abiName, address, network)\n return contracts.set(key, contract)\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { BoundContractView, ContractContext, ContractView, EthContext } from './context.js'\nimport { BaseContract } from 'ethers'\nimport { BaseProcessor, defaultPreprocessHandler } from './base-processor.js'\nimport { BindOptions, getOptionsSignature } from './bind-options.js'\nimport { EthFetchConfig, HandleInterval, TemplateInstance, PreprocessResult } from '@sentio/protos'\nimport { PromiseOrVoid } from '../core/promises.js'\nimport { ListStateStorage, processMetrics } from '@sentio/runtime'\nimport { BlockParams } from 'ethers/providers'\nimport { DeferredTopicFilter } from 'ethers/contract'\nimport { TypedEvent, TypedCallTrace } from './eth.js'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport class ProcessorTemplateProcessorState extends ListStateStorage<\n BaseProcessorTemplate<BaseContract, BoundContractView<BaseContract, any>>\n> {\n static INSTANCE = new ProcessorTemplateProcessorState()\n}\n\nexport abstract class BaseProcessorTemplate<\n TContract extends BaseContract,\n TBoundContractView extends BoundContractView<TContract, ContractView<TContract>>\n> {\n id: number\n binds = new Set<string>()\n blockHandlers: {\n handlerName: string\n handler: (block: BlockParams, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid\n preprocessHandler: (\n block: BlockParams,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult>\n blockInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n fetchConfig?: EthFetchConfig\n }[] = []\n traceHandlers: {\n signature: string\n handlerName: string\n handler: (trace: TypedCallTrace, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid\n preprocessHandler: (\n trace: TypedCallTrace,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult>\n fetchConfig?: EthFetchConfig\n }[] = []\n eventHandlers: {\n handlerName: string\n handler: (event: TypedEvent, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid\n preprocessHandler: (\n event: TypedEvent,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult>\n filter: DeferredTopicFilter | DeferredTopicFilter[]\n fetchConfig?: EthFetchConfig\n }[] = []\n\n constructor() {\n this.id = ProcessorTemplateProcessorState.INSTANCE.getValues().length\n ProcessorTemplateProcessorState.INSTANCE.addValue(this)\n return proxyProcessor(this)\n }\n\n /**\n * Bind template using {@param options}, using {@param ctx}'s network value if not provided in the option\n * @param options\n * @param ctx\n */\n public bind(options: Omit<BindOptions, 'network'>, ctx: EthContext): void {\n const sig = getOptionsSignature({\n address: options.address,\n network: ctx.chainId\n })\n if (this.binds.has(sig)) {\n console.log(`Same address can be bind to one template only once, ignore duplicate bind: ${sig}`)\n return\n }\n this.binds.add(sig)\n\n const processor = this.bindInternal({ ...options, network: ctx.chainId })\n\n for (const eh of this.eventHandlers) {\n // @ts-ignore friendly\n processor.onEthEvent(eh.handler, eh.filter, eh.fetchConfig, eh.preprocessHandler, eh.handlerName)\n }\n for (const th of this.traceHandlers) {\n // @ts-ignore friendly\n processor.onEthTrace(th.signature, th.handler, th.fetchConfig, th.preprocessHandler, th.handlerName)\n }\n for (const bh of this.blockHandlers) {\n processor.onInterval(\n bh.handler,\n bh.timeIntervalInMinutes,\n bh.blockInterval,\n bh.fetchConfig,\n bh.preprocessHandler,\n bh.handlerName\n )\n }\n\n const instance: TemplateInstance = {\n templateId: this.id,\n contract: {\n address: options.address,\n name: options.name || '',\n chainId: ctx.chainId,\n abi: ''\n },\n startBlock: BigInt(options.startBlock || 0),\n endBlock: BigInt(options.endBlock || 0),\n baseLabels: options.baseLabels\n }\n TemplateInstanceState.INSTANCE.addValue(instance)\n ctx.update({\n states: {\n configUpdated: true\n }\n })\n\n processMetrics.processor_template_instance_count.add(1, { chain_id: ctx.chainId, template: this.constructor.name })\n }\n\n protected onEthEvent(\n handler: (event: TypedEvent, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n filter: DeferredTopicFilter | DeferredTopicFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: TypedEvent,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n this.eventHandlers.push({\n handlerName: getHandlerName(),\n handler: handler,\n preprocessHandler,\n filter: filter,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {})\n })\n return this\n }\n\n public onBlockInterval(\n handler: (block: BlockParams, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n blockInterval = 1000,\n backfillBlockInterval = 4000,\n fetchConfig?: EthFetchConfig,\n preprocessHandler: (\n block: BlockParams,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onInterval(\n handler,\n undefined,\n {\n recentInterval: blockInterval,\n backfillInterval: backfillBlockInterval\n },\n fetchConfig,\n preprocessHandler\n )\n }\n\n public onTimeInterval(\n handler: (block: BlockParams, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillBlockInterval = 240,\n fetchConfig?: EthFetchConfig,\n preprocessHandler: (\n block: BlockParams,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onInterval(\n handler,\n { recentInterval: timeIntervalInMinutes, backfillInterval: backfillBlockInterval },\n undefined,\n fetchConfig,\n preprocessHandler\n )\n }\n\n public onInterval(\n handler: (block: BlockParams, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n blockInterval: HandleInterval | undefined,\n fetchConfig: EthFetchConfig | undefined,\n preprocessHandler: (\n block: BlockParams,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n this.blockHandlers.push({\n handlerName: getHandlerName(),\n handler,\n preprocessHandler,\n timeIntervalInMinutes: timeInterval,\n blockInterval,\n fetchConfig\n })\n return this\n }\n\n public onTrace(\n signature: string,\n handler: (trace: TypedCallTrace, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n trace: TypedCallTrace,\n ctx: ContractContext<TContract, TBoundContractView>,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n this.traceHandlers.push({\n signature,\n handlerName: getHandlerName(),\n handler,\n preprocessHandler,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {})\n })\n return this\n }\n\n protected abstract bindInternal(options: BindOptions): BaseProcessor<TContract, TBoundContractView>\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\nimport { newContract, newInterface } from \"@sentio/sdk/eth\";\n\nimport { Contract, Signer, Provider, Interface } from \"ethers\";\nimport type {\n EACAggregatorProxy,\n EACAggregatorProxyInterface,\n} from \"../EACAggregatorProxy.js\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_aggregator\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_accessController\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"int256\",\n name: \"current\",\n type: \"int256\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"roundId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"updatedAt\",\n type: \"uint256\",\n },\n ],\n name: \"AnswerUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"roundId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"startedBy\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"startedAt\",\n type: \"uint256\",\n },\n ],\n name: \"NewRound\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferRequested\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"accessController\",\n outputs: [\n {\n internalType: \"contract AccessControllerInterface\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"aggregator\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_aggregator\",\n type: \"address\",\n },\n ],\n name: \"confirmAggregator\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"description\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_roundId\",\n type: \"uint256\",\n },\n ],\n name: \"getAnswer\",\n outputs: [\n {\n internalType: \"int256\",\n name: \"\",\n type: \"int256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint80\",\n name: \"_roundId\",\n type: \"uint80\",\n },\n ],\n name: \"getRoundData\",\n outputs: [\n {\n internalType: \"uint80\",\n name: \"roundId\",\n type: \"uint80\",\n },\n {\n internalType: \"int256\",\n name: \"answer\",\n type: \"int256\",\n },\n {\n internalType: \"uint256\",\n name: \"startedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"updatedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint80\",\n name: \"answeredInRound\",\n type: \"uint80\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_roundId\",\n type: \"uint256\",\n },\n ],\n name: \"getTimestamp\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"latestAnswer\",\n outputs: [\n {\n internalType: \"int256\",\n name: \"\",\n type: \"int256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"latestRound\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"latestRoundData\",\n outputs: [\n {\n internalType: \"uint80\",\n name: \"roundId\",\n type: \"uint80\",\n },\n {\n internalType: \"int256\",\n name: \"answer\",\n type: \"int256\",\n },\n {\n internalType: \"uint256\",\n name: \"startedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"updatedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint80\",\n name: \"answeredInRound\",\n type: \"uint80\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"latestTimestamp\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address payable\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"phaseAggregators\",\n outputs: [\n {\n internalType: \"contract AggregatorV2V3Interface\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"phaseId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_aggregator\",\n type: \"address\",\n },\n ],\n name: \"proposeAggregator\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"proposedAggregator\",\n outputs: [\n {\n internalType: \"contract AggregatorV2V3Interface\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint80\",\n name: \"_roundId\",\n type: \"uint80\",\n },\n ],\n name: \"proposedGetRoundData\",\n outputs: [\n {\n internalType: \"uint80\",\n name: \"roundId\",\n type: \"uint80\",\n },\n {\n internalType: \"int256\",\n name: \"answer\",\n type: \"int256\",\n },\n {\n internalType: \"uint256\",\n name: \"startedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"updatedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint80\",\n name: \"answeredInRound\",\n type: \"uint80\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"proposedLatestRoundData\",\n outputs: [\n {\n internalType: \"uint80\",\n name: \"roundId\",\n type: \"uint80\",\n },\n {\n internalType: \"int256\",\n name: \"answer\",\n type: \"int256\",\n },\n {\n internalType: \"uint256\",\n name: \"startedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"updatedAt\",\n type: \"uint256\",\n },\n {\n internalType: \"uint80\",\n name: \"answeredInRound\",\n type: \"uint80\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_accessController\",\n type: \"address\",\n },\n ],\n name: \"setController\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class EACAggregatorProxy__factory {\n static readonly abi = _abi;\n static createInterface(): EACAggregatorProxyInterface {\n return newInterface(_abi) as EACAggregatorProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider,\n ): EACAggregatorProxy {\n return newContract(address, _abi, signerOrProvider) as EACAggregatorProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\nimport { newContract, newInterface } from \"@sentio/sdk/eth\";\n\nimport { Contract, Signer, Provider, Interface } from \"ethers\";\nimport type { ERC1155, ERC1155Interface } from \"../ERC1155.js\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class ERC1155__factory {\n static readonly abi = _abi;\n static createInterface(): ERC1155Interface {\n return newInterface(_abi) as ERC1155Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider,\n ): ERC1155 {\n return newContract(address, _abi, signerOrProvider) as ERC1155;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\nimport { newContract, newInterface } from \"@sentio/sdk/eth\";\n\nimport { Contract, Signer, Provider, Interface } from \"ethers\";\nimport type { ERC20, ERC20Interface } from \"../ERC20.js\";\n\nconst _abi = [\n {\n inputs: [],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"burn\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"burnFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"subtractedValue\",\n type: \"uint256\",\n },\n ],\n name: \"decreaseAllowance\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"addedValue\",\n type: \"uint256\",\n },\n ],\n name: \"increaseAllowance\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"locker\",\n outputs: [\n {\n internalType: \"contract ILocker\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_locker\",\n type: \"address\",\n },\n ],\n name: \"setLocker\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"recipient\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"recipient\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ERC20__factory {\n static readonly abi = _abi;\n static createInterface(): ERC20Interface {\n return newInterface(_abi) as ERC20Interface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): ERC20 {\n return newContract(address, _abi, signerOrProvider) as ERC20;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\nimport { newContract, newInterface } from \"@sentio/sdk/eth\";\n\nimport { Contract, Signer, Provider, Interface } from \"ethers\";\nimport type { ERC20Bytes, ERC20BytesInterface } from \"../ERC20Bytes.js\";\n\nconst _abi = [\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"from\",\n type: \"address\",\n },\n {\n name: \"to\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"who\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"to\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n name: \"_name\",\n type: \"string\",\n },\n {\n name: \"_symbol\",\n type: \"string\",\n },\n {\n name: \"_decimals\",\n type: \"uint8\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n] as const;\n\nexport class ERC20Bytes__factory {\n static readonly abi = _abi;\n static createInterface(): ERC20BytesInterface {\n return newInterface(_abi) as ERC20BytesInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider,\n ): ERC20Bytes {\n return newContract(address, _abi, signerOrProvider) as ERC20Bytes;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\nimport { newContract, newInterface } from \"@sentio/sdk/eth\";\n\nimport { Contract, Signer, Provider, Interface } from \"ethers\";\nimport type { ERC721, ERC721Interface } from \"../ERC721.js\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ERC721__factory {\n static readonly abi = _abi;\n static createInterface(): ERC721Interface {\n return newInterface(_abi) as ERC721Interface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): ERC721 {\n return newContract(address, _abi, signerOrProvider) as ERC721;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\nimport { newContract, newInterface } from \"@sentio/sdk/eth\";\n\nimport { Contract, Signer, Provider, Interface } from \"ethers\";\nimport type { WETH9, WETH9Interface } from \"../WETH9.js\";\n\nconst _abi = [\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"guy\",\n type: \"address\",\n },\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"src\",\n type: \"address\",\n },\n {\n name: \"dst\",\n type: \"address\",\n },\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"withdraw\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"dst\",\n type: \"address\",\n },\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n payable: true,\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"src\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"guy\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"src\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"dst\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"dst\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"src\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Withdrawal\",\n type: \"event\",\n },\n] as const;\n\nexport class WETH9__factory {\n static readonly abi = _abi;\n static createInterface(): WETH9Interface {\n return newInterface(_abi) as WETH9Interface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): WETH9 {\n return newContract(address, _abi, signerOrProvider) as WETH9;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport * from \"./internal/erc20-processor.js\";\nexport * from \"./internal/erc20-test-utils.js\";\nexport * from \"./internal/ERC20.js\";\nexport * from \"./internal/factories/ERC20__factory.js\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { BigNumberish, Overrides } from \"ethers\";\nimport {\n addContractByABI,\n getContractByABI,\n addProcessor,\n getProcessor,\n getProvider,\n transformEtherError,\n BindOptions,\n BaseProcessor,\n BaseProcessorTemplate,\n BoundContractView,\n ContractContext,\n ContractView,\n DummyProvider,\n EthChainId,\n TypedCallTrace,\n EthContext,\n EthFetchConfig,\n PreprocessResult,\n encodeCallData,\n} from \"@sentio/sdk/eth\";\nimport { EthCallParam, EthCallContext, PreparedData } from \"@sentio/protos\";\n\nimport { ERC20__factory } from \"./index.js\";\nimport {\n ERC20,\n ApprovalEvent,\n ApprovalEventFilter,\n OwnershipTransferredEvent,\n OwnershipTransferredEventFilter,\n TransferEvent,\n TransferEventFilter,\n} from \"./ERC20.js\";\n\nexport interface AllowanceCallObject {\n owner: string;\n spender: string;\n}\n\nexport type AllowanceCallTrace = TypedCallTrace<\n [string, string],\n AllowanceCallObject\n>;\n\nexport interface ApproveCallObject {\n spender: string;\n amount: bigint;\n}\n\nexport type ApproveCallTrace = TypedCallTrace<\n [string, bigint],\n ApproveCallObject\n>;\n\nexport interface BalanceOfCallObject {\n account: string;\n}\n\nexport type BalanceOfCallTrace = TypedCallTrace<[string], BalanceOfCallObject>;\n\nexport interface BurnCallObject {\n amount: bigint;\n}\n\nexport type BurnCallTrace = TypedCallTrace<[bigint], BurnCallObject>;\n\nexport interface BurnFromCallObject {\n account: string;\n amount: bigint;\n}\n\nexport type BurnFromCallTrace = TypedCallTrace<\n [string, bigint],\n BurnFromCallObject\n>;\n\nexport interface DecimalsCallObject {}\n\nexport type DecimalsCallTrace = TypedCallTrace<[], DecimalsCallObject>;\n\nexport interface DecreaseAllowanceCallObject {\n spender: string;\n subtractedValue: bigint;\n}\n\nexport type DecreaseAllowanceCallTrace = TypedCallTrace<\n [string, bigint],\n DecreaseAllowanceCallObject\n>;\n\nexport interface IncreaseAllowanceCallObject {\n spender: string;\n addedValue: bigint;\n}\n\nexport type IncreaseAllowanceCallTrace = TypedCallTrace<\n [string, bigint],\n IncreaseAllowanceCallObject\n>;\n\nexport interface LockerCallObject {}\n\nexport type LockerCallTrace = TypedCallTrace<[], LockerCallObject>;\n\nexport interface NameCallObject {}\n\nexport type NameCallTrace = TypedCallTrace<[], NameCallObject>;\n\nexport interface OwnerCallObject {}\n\nexport type OwnerCallTrace = TypedCallTrace<[], OwnerCallObject>;\n\nexport interface RenounceOwnershipCallObject {}\n\nexport type RenounceOwnershipCallTrace = TypedCallTrace<\n [],\n RenounceOwnershipCallObject\n>;\n\nexport interface SetLockerCallObject {\n _locker: string;\n}\n\nexport type SetLockerCallTrace = TypedCallTrace<[string], SetLockerCallObject>;\n\nexport interface SymbolCallObject {}\n\nexport type SymbolCallTrace = TypedCallTrace<[], SymbolCallObject>;\n\nexport interface TotalSupplyCallObject {}\n\nexport type TotalSupplyCallTrace = TypedCallTrace<[], TotalSupplyCallObject>;\n\nexport interface TransferCallObject {\n recipient: string;\n amount: bigint;\n}\n\nexport type TransferCallTrace = TypedCallTrace<\n [string, bigint],\n TransferCallObject\n>;\n\nexport interface TransferFromCallObject {\n sender: string;\n recipient: string;\n amount: bigint;\n}\n\nexport type TransferFromCallTrace = TypedCallTrace<\n [string, string, bigint],\n TransferFromCallObject\n>;\n\nexport interface TransferOwnershipCallObject {\n newOwner: string;\n}\n\nexport type TransferOwnershipCallTrace = TypedCallTrace<\n [string],\n TransferOwnershipCallObject\n>;\n\nconst templateContract = ERC20__factory.connect(\"0x0\", DummyProvider);\n\nexport class ERC20ContractView extends ContractView<ERC20> {\n constructor(contract: ERC20) {\n super(contract);\n this.callStatic.contract = contract;\n }\n\n async allowance(\n owner: string,\n spender: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"allowance(address,address)\")(\n owner,\n spender,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async balanceOf(\n account: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"balanceOf(address)\")(\n account,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async decimals(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"decimals()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async locker(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"locker()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async name(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"name()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async owner(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"owner()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async symbol(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"symbol()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async totalSupply(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"totalSupply()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n callStatic = {\n contract: this.contract,\n\n async approve(\n spender: string,\n amount: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<boolean> {\n try {\n return await this.contract\n .getFunction(\"approve(address,uint256)\")\n .staticCall(spender, amount, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async burn(\n amount: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"burn(uint256)\")\n .staticCall(amount, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async burnFrom(\n account: string,\n amount: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"burnFrom(address,uint256)\")\n .staticCall(account, amount, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async decreaseAllowance(\n spender: string,\n subtractedValue: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<boolean> {\n try {\n return await this.contract\n .getFunction(\"decreaseAllowance(address,uint256)\")\n .staticCall(spender, subtractedValue, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async increaseAllowance(\n spender: string,\n addedValue: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<boolean> {\n try {\n return await this.contract\n .getFunction(\"increaseAllowance(address,uint256)\")\n .staticCall(spender, addedValue, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async renounceOwnership(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"renounceOwnership()\")\n .staticCall(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async setLocker(\n _locker: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"setLocker(address)\")\n .staticCall(_locker, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async transfer(\n recipient: string,\n amount: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<boolean> {\n try {\n return await this.contract\n .getFunction(\"transfer(address,uint256)\")\n .staticCall(recipient, amount, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async transferFrom(\n sender: string,\n recipient: string,\n amount: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<boolean> {\n try {\n return await this.contract\n .getFunction(\"transferFrom(address,address,uint256)\")\n .staticCall(sender, recipient, amount, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async transferOwnership(\n newOwner: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"transferOwnership(address)\")\n .staticCall(newOwner, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n };\n\n encodeCall = {\n allowance(\n owner: string,\n spender: string,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"allowance\",\n \"function allowance(address,address)\",\n [owner, spender],\n );\n },\n approve(\n spender: string,\n amount: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"approve\",\n \"function approve(address,uint256)\",\n [spender, amount],\n );\n },\n balanceOf(account: string, callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"balanceOf\",\n \"function balanceOf(address)\",\n [account],\n );\n },\n burn(amount: BigNumberish, callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"burn\", \"function burn(uint256)\", [\n amount,\n ]);\n },\n burnFrom(\n account: string,\n amount: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"burnFrom\",\n \"function burnFrom(address,uint256)\",\n [account, amount],\n );\n },\n decimals(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"decimals\", \"function decimals()\", []);\n },\n decreaseAllowance(\n spender: string,\n subtractedValue: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"decreaseAllowance\",\n \"function decreaseAllowance(address,uint256)\",\n [spender, subtractedValue],\n );\n },\n increaseAllowance(\n spender: string,\n addedValue: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"increaseAllowance\",\n \"function increaseAllowance(address,uint256)\",\n [spender, addedValue],\n );\n },\n locker(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"locker\", \"function locker()\", []);\n },\n name(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"name\", \"function name()\", []);\n },\n owner(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"owner\", \"function owner()\", []);\n },\n renounceOwnership(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"renounceOwnership\",\n \"function renounceOwnership()\",\n [],\n );\n },\n setLocker(_locker: string, callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"setLocker\",\n \"function setLocker(address)\",\n [_locker],\n );\n },\n symbol(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"symbol\", \"function symbol()\", []);\n },\n totalSupply(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"totalSupply\",\n \"function totalSupply()\",\n [],\n );\n },\n transfer(\n recipient: string,\n amount: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"transfer\",\n \"function transfer(address,uint256)\",\n [recipient, amount],\n );\n },\n transferFrom(\n sender: string,\n recipient: string,\n amount: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"transferFrom\",\n \"function transferFrom(address,address,uint256)\",\n [sender, recipient, amount],\n );\n },\n transferOwnership(\n newOwner: string,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"transferOwnership\",\n \"function transferOwnership(address)\",\n [newOwner],\n );\n },\n };\n}\n\nexport class ERC20BoundContractView extends BoundContractView<\n ERC20,\n ERC20ContractView\n> {\n async allowance(\n owner: string,\n spender: string,\n overrides?: Overrides,\n ): Promise<bigint> {\n return await this.view.allowance(\n owner,\n spender,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async balanceOf(account: string, overrides?: Overrides): Promise<bigint> {\n return await this.view.balanceOf(\n account,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async decimals(overrides?: Overrides): Promise<bigint> {\n return await this.view.decimals(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async locker(overrides?: Overrides): Promise<string> {\n return await this.view.locker(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async name(overrides?: Overrides): Promise<string> {\n return await this.view.name(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async owner(overrides?: Overrides): Promise<string> {\n return await this.view.owner(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async symbol(overrides?: Overrides): Promise<string> {\n return await this.view.symbol(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async totalSupply(overrides?: Overrides): Promise<bigint> {\n return await this.view.totalSupply(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n callStatic = {\n view: this.view,\n context: this.context,\n\n async approve(\n spender: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.approve(\n spender,\n amount,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async burn(amount: BigNumberish, overrides?: Overrides): Promise<void> {\n return await this.view.callStatic.burn(\n amount,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async burnFrom(\n account: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.burnFrom(\n account,\n amount,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async decreaseAllowance(\n spender: string,\n subtractedValue: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.decreaseAllowance(\n spender,\n subtractedValue,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async increaseAllowance(\n spender: string,\n addedValue: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.increaseAllowance(\n spender,\n addedValue,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async renounceOwnership(overrides?: Overrides): Promise<void> {\n return await this.view.callStatic.renounceOwnership(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async setLocker(_locker: string, overrides?: Overrides): Promise<void> {\n return await this.view.callStatic.setLocker(\n _locker,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async transfer(\n recipient: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.transfer(\n recipient,\n amount,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async transferFrom(\n sender: string,\n recipient: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.transferFrom(\n sender,\n recipient,\n amount,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async transferOwnership(\n newOwner: string,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.transferOwnership(\n newOwner,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n };\n\n encodeCall = {\n view: this.view,\n context: this.context,\n\n allowance(\n owner: string,\n spender: string,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.allowance(owner, spender, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n approve(\n spender: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.approve(spender, amount, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n balanceOf(account: string, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.balanceOf(account, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n burn(amount: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.burn(amount, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n burnFrom(\n account: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.burnFrom(account, amount, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n decimals(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.decimals({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n decreaseAllowance(\n spender: string,\n subtractedValue: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.decreaseAllowance(spender, subtractedValue, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n increaseAllowance(\n spender: string,\n addedValue: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.increaseAllowance(spender, addedValue, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n locker(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.locker({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n name(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.name({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n owner(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.owner({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n renounceOwnership(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.renounceOwnership({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n setLocker(_locker: string, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.setLocker(_locker, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n symbol(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.symbol({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n totalSupply(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.totalSupply({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n transfer(\n recipient: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.transfer(recipient, amount, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n transferFrom(\n sender: string,\n recipient: string,\n amount: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.transferFrom(sender, recipient, amount, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n transferOwnership(newOwner: string, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.transferOwnership(newOwner, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n };\n}\n\nexport type ERC20Context = ContractContext<ERC20, ERC20BoundContractView>;\n\nexport class ERC20Processor extends BaseProcessor<\n ERC20,\n ERC20BoundContractView\n> {\n onEventApproval(\n handler: (event: ApprovalEvent, ctx: ERC20Context) => void,\n filter?: ApprovalEventFilter | ApprovalEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: ApprovalEvent,\n ctx: ERC20Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Approval(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventOwnershipTransferred(\n handler: (event: OwnershipTransferredEvent, ctx: ERC20Context) => void,\n filter?:\n | OwnershipTransferredEventFilter\n | OwnershipTransferredEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: OwnershipTransferredEvent,\n ctx: ERC20Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\n \"OwnershipTransferred(address,address)\"\n ](null, null);\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC20Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: TransferEvent,\n ctx: ERC20Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Transfer(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onCallAllowance(\n handler: (call: AllowanceCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: AllowanceCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xdd62ed3e\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallApprove(\n handler: (call: ApproveCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: ApproveCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x095ea7b3\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallBalanceOf(\n handler: (call: BalanceOfCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: BalanceOfCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x70a08231\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallBurn(\n handler: (call: BurnCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: BurnCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x42966c68\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallBurnFrom(\n handler: (call: BurnFromCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: BurnFromCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x79cc6790\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallDecimals(\n handler: (call: DecimalsCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: DecimalsCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x313ce567\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallDecreaseAllowance(\n handler: (call: DecreaseAllowanceCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: DecreaseAllowanceCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa457c2d7\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallIncreaseAllowance(\n handler: (call: IncreaseAllowanceCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: IncreaseAllowanceCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x39509351\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallLocker(\n handler: (call: LockerCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: LockerCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xd7b96d4e\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallName(\n handler: (call: NameCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: NameCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x06fdde03\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallOwner(\n handler: (call: OwnerCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: OwnerCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x8da5cb5b\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallRenounceOwnership(\n handler: (call: RenounceOwnershipCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: RenounceOwnershipCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x715018a6\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallSetLocker(\n handler: (call: SetLockerCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: SetLockerCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x171060ec\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallSymbol(\n handler: (call: SymbolCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: SymbolCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x95d89b41\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallTotalSupply(\n handler: (call: TotalSupplyCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: TotalSupplyCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x18160ddd\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallTransfer(\n handler: (call: TransferCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: TransferCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa9059cbb\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallTransferFrom(\n handler: (call: TransferFromCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: TransferFromCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x23b872dd\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallTransferOwnership(\n handler: (call: TransferOwnershipCallTrace, ctx: ERC20Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: TransferOwnershipCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xf2fde38b\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n public static filters = {\n Approval(\n owner?: string | null,\n spender?: string | null,\n value?: null,\n ): ApprovalEventFilter {\n return templateContract.filters[\"Approval(address,address,uint256)\"](\n owner,\n spender,\n value,\n );\n },\n OwnershipTransferred(\n previousOwner?: string | null,\n newOwner?: string | null,\n ): OwnershipTransferredEventFilter {\n return templateContract.filters[\"OwnershipTransferred(address,address)\"](\n previousOwner,\n newOwner,\n );\n },\n Transfer(\n from?: string | null,\n to?: string | null,\n value?: null,\n ): TransferEventFilter {\n return templateContract.filters[\"Transfer(address,address,uint256)\"](\n from,\n to,\n value,\n );\n },\n };\n\n protected CreateBoundContractView(): ERC20BoundContractView {\n const view = getERC20Contract(this.config.network, this.config.address);\n return new ERC20BoundContractView(this.config.address, view);\n }\n\n public static bind(options: BindOptions): ERC20Processor {\n if (!options.name) {\n options.name = \"ERC20\";\n }\n let processor = getProcessor(options) as ERC20Processor;\n if (!processor) {\n processor = new ERC20Processor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n}\n\nexport class ERC20ProcessorTemplate extends BaseProcessorTemplate<\n ERC20,\n ERC20BoundContractView\n> {\n bindInternal(options: BindOptions) {\n if (!options.name) {\n options.name = \"ERC20\";\n }\n let processor = getProcessor(options) as ERC20Processor;\n if (!processor) {\n processor = new ERC20Processor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n\n onEventApproval(\n handler: (event: ApprovalEvent, ctx: ERC20Context) => void,\n filter?: ApprovalEventFilter | ApprovalEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: ApprovalEvent,\n ctx: ERC20Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Approval(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventOwnershipTransferred(\n handler: (event: OwnershipTransferredEvent, ctx: ERC20Context) => void,\n filter?:\n | OwnershipTransferredEventFilter\n | OwnershipTransferredEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: OwnershipTransferredEvent,\n ctx: ERC20Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\n \"OwnershipTransferred(address,address)\"\n ](null, null);\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC20Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: TransferEvent,\n ctx: ERC20Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Transfer(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n}\n\nexport function getERC20Contract(\n chainId: EthChainId,\n address: string,\n): ERC20ContractView {\n let contract = getContractByABI(\n \"ERC20\",\n address,\n chainId,\n ) as ERC20ContractView;\n if (!contract) {\n const rawContract = ERC20__factory.connect(address, getProvider(chainId));\n contract = new ERC20ContractView(rawContract);\n addContractByABI(\"ERC20\", address, chainId, contract);\n }\n return contract;\n}\n\nexport function getERC20ContractOnContext(\n context: EthContext,\n address: string,\n): ERC20BoundContractView {\n const view = getERC20Contract(context.getChainId(), address);\n const boundView = new ERC20BoundContractView(address, view);\n boundView.context = context;\n if (boundView.callStatic) {\n boundView.callStatic.context = context;\n }\n return boundView;\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { LogParams } from \"ethers/providers\";\nimport { EthChainId } from \"@sentio/sdk/eth\";\nimport {\n ApprovalEventObject,\n OwnershipTransferredEventObject,\n TransferEventObject,\n} from \"./ERC20.js\";\nimport { getERC20Contract } from \"./erc20-processor.js\";\nconst mockField = {\n blockHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n blockNumber: 0,\n logIndex: 0,\n removed: false,\n transactionHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n transactionIndex: 0,\n};\n\nexport function mockApprovalLog(\n contractAddress: string,\n event: ApprovalEventObject,\n): LogParams {\n const contract = getERC20Contract(EthChainId.ETHEREUM, contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Approval(address,address,uint256)\",\n [event.owner, event.spender, event.value],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockOwnershipTransferredLog(\n contractAddress: string,\n event: OwnershipTransferredEventObject,\n): LogParams {\n const contract = getERC20Contract(EthChainId.ETHEREUM, contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"OwnershipTransferred(address,address)\",\n [event.previousOwner, event.newOwner],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockTransferLog(\n contractAddress: string,\n event: TransferEventObject,\n): LogParams {\n const contract = getERC20Contract(EthChainId.ETHEREUM, contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Transfer(address,address,uint256)\",\n [event.from, event.to, event.value],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport * from \"./internal/erc721-processor.js\";\nexport * from \"./internal/erc721-test-utils.js\";\nexport * from \"./internal/ERC721.js\";\nexport * from \"./internal/factories/ERC721__factory.js\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { BigNumberish, Overrides, BytesLike } from \"ethers\";\nimport {\n addContractByABI,\n getContractByABI,\n addProcessor,\n getProcessor,\n getProvider,\n transformEtherError,\n BindOptions,\n BaseProcessor,\n BaseProcessorTemplate,\n BoundContractView,\n ContractContext,\n ContractView,\n DummyProvider,\n EthChainId,\n TypedCallTrace,\n EthContext,\n EthFetchConfig,\n PreprocessResult,\n encodeCallData,\n} from \"@sentio/sdk/eth\";\nimport { EthCallParam, EthCallContext, PreparedData } from \"@sentio/protos\";\n\nimport { ERC721__factory } from \"./index.js\";\nimport {\n ERC721,\n ApprovalEvent,\n ApprovalEventFilter,\n ApprovalForAllEvent,\n ApprovalForAllEventFilter,\n TransferEvent,\n TransferEventFilter,\n} from \"./ERC721.js\";\n\nexport interface ApproveCallObject {\n to: string;\n tokenId: bigint;\n}\n\nexport type ApproveCallTrace = TypedCallTrace<\n [string, bigint],\n ApproveCallObject\n>;\n\nexport interface TotalSupplyCallObject {}\n\nexport type TotalSupplyCallTrace = TypedCallTrace<[], TotalSupplyCallObject>;\n\nexport interface BalanceOfCallObject {\n owner: string;\n}\n\nexport type BalanceOfCallTrace = TypedCallTrace<[string], BalanceOfCallObject>;\n\nexport interface GetApprovedCallObject {\n tokenId: bigint;\n}\n\nexport type GetApprovedCallTrace = TypedCallTrace<\n [bigint],\n GetApprovedCallObject\n>;\n\nexport interface IsApprovedForAllCallObject {\n owner: string;\n operator: string;\n}\n\nexport type IsApprovedForAllCallTrace = TypedCallTrace<\n [string, string],\n IsApprovedForAllCallObject\n>;\n\nexport interface NameCallObject {}\n\nexport type NameCallTrace = TypedCallTrace<[], NameCallObject>;\n\nexport interface OwnerOfCallObject {\n tokenId: bigint;\n}\n\nexport type OwnerOfCallTrace = TypedCallTrace<[bigint], OwnerOfCallObject>;\n\nexport interface SafeTransferFrom_address_address_uint256CallObject {\n from: string;\n to: string;\n tokenId: bigint;\n}\n\nexport type SafeTransferFrom_address_address_uint256CallTrace = TypedCallTrace<\n [string, string, bigint],\n SafeTransferFrom_address_address_uint256CallObject\n>;\n\nexport interface SafeTransferFrom_address_address_uint256_bytesCallObject {\n from: string;\n to: string;\n tokenId: bigint;\n data: string;\n}\n\nexport type SafeTransferFrom_address_address_uint256_bytesCallTrace =\n TypedCallTrace<\n [string, string, bigint, string],\n SafeTransferFrom_address_address_uint256_bytesCallObject\n >;\n\nexport interface SetApprovalForAllCallObject {\n operator: string;\n _approved: boolean;\n}\n\nexport type SetApprovalForAllCallTrace = TypedCallTrace<\n [string, boolean],\n SetApprovalForAllCallObject\n>;\n\nexport interface SupportsInterfaceCallObject {\n interfaceId: string;\n}\n\nexport type SupportsInterfaceCallTrace = TypedCallTrace<\n [string],\n SupportsInterfaceCallObject\n>;\n\nexport interface SymbolCallObject {}\n\nexport type SymbolCallTrace = TypedCallTrace<[], SymbolCallObject>;\n\nexport interface TokenURICallObject {\n tokenId: bigint;\n}\n\nexport type TokenURICallTrace = TypedCallTrace<[bigint], TokenURICallObject>;\n\nexport interface TransferFromCallObject {\n from: string;\n to: string;\n tokenId: bigint;\n}\n\nexport type TransferFromCallTrace = TypedCallTrace<\n [string, string, bigint],\n TransferFromCallObject\n>;\n\nconst templateContract = ERC721__factory.connect(\"0x0\", DummyProvider);\n\nexport class ERC721ContractView extends ContractView<ERC721> {\n constructor(contract: ERC721) {\n super(contract);\n this.callStatic.contract = contract;\n }\n\n async totalSupply(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"totalSupply()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async balanceOf(\n owner: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"balanceOf(address)\")(\n owner,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async getApproved(\n tokenId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"getApproved(uint256)\")(\n tokenId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async isApprovedForAll(\n owner: string,\n operator: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<boolean> {\n try {\n return await this.contract.getFunction(\n \"isApprovedForAll(address,address)\",\n )(owner, operator, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async name(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"name()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async ownerOf(\n tokenId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"ownerOf(uint256)\")(\n tokenId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async supportsInterface(\n interfaceId: BytesLike,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<boolean> {\n try {\n return await this.contract.getFunction(\"supportsInterface(bytes4)\")(\n interfaceId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async symbol(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"symbol()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async tokenURI(\n tokenId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"tokenURI(uint256)\")(\n tokenId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n callStatic = {\n contract: this.contract,\n\n async approve(\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"approve(address,uint256)\")\n .staticCall(to, tokenId, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async safeTransferFrom_address_address_uint256(\n from: string,\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"safeTransferFrom(address,address,uint256)\")\n .staticCall(from, to, tokenId, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async safeTransferFrom_address_address_uint256_bytes(\n from: string,\n to: string,\n tokenId: BigNumberish,\n data: BytesLike,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"safeTransferFrom(address,address,uint256,bytes)\")\n .staticCall(from, to, tokenId, data, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async setApprovalForAll(\n operator: string,\n _approved: boolean,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"setApprovalForAll(address,bool)\")\n .staticCall(operator, _approved, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async transferFrom(\n from: string,\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"transferFrom(address,address,uint256)\")\n .staticCall(from, to, tokenId, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n };\n\n encodeCall = {\n approve(\n to: string,\n tokenId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"approve\",\n \"function approve(address,uint256)\",\n [to, tokenId],\n );\n },\n totalSupply(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"totalSupply\",\n \"function totalSupply()\",\n [],\n );\n },\n balanceOf(owner: string, callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"balanceOf\",\n \"function balanceOf(address)\",\n [owner],\n );\n },\n getApproved(\n tokenId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"getApproved\",\n \"function getApproved(uint256)\",\n [tokenId],\n );\n },\n isApprovedForAll(\n owner: string,\n operator: string,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"isApprovedForAll\",\n \"function isApprovedForAll(address,address)\",\n [owner, operator],\n );\n },\n name(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"name\", \"function name()\", []);\n },\n ownerOf(tokenId: BigNumberish, callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"ownerOf\",\n \"function ownerOf(uint256)\",\n [tokenId],\n );\n },\n safeTransferFrom_address_address_uint256(\n from: string,\n to: string,\n tokenId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"safeTransferFrom\",\n \"function safeTransferFrom(address,address,uint256)\",\n [from, to, tokenId],\n );\n },\n safeTransferFrom_address_address_uint256_bytes(\n from: string,\n to: string,\n tokenId: BigNumberish,\n data: BytesLike,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"safeTransferFrom\",\n \"function safeTransferFrom(address,address,uint256,bytes)\",\n [from, to, tokenId, data],\n );\n },\n setApprovalForAll(\n operator: string,\n _approved: boolean,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"setApprovalForAll\",\n \"function setApprovalForAll(address,bool)\",\n [operator, _approved],\n );\n },\n supportsInterface(\n interfaceId: BytesLike,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"supportsInterface\",\n \"function supportsInterface(bytes4)\",\n [interfaceId],\n );\n },\n symbol(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"symbol\", \"function symbol()\", []);\n },\n tokenURI(tokenId: BigNumberish, callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"tokenURI\",\n \"function tokenURI(uint256)\",\n [tokenId],\n );\n },\n transferFrom(\n from: string,\n to: string,\n tokenId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"transferFrom\",\n \"function transferFrom(address,address,uint256)\",\n [from, to, tokenId],\n );\n },\n };\n}\n\nexport class ERC721BoundContractView extends BoundContractView<\n ERC721,\n ERC721ContractView\n> {\n async totalSupply(overrides?: Overrides): Promise<bigint> {\n return await this.view.totalSupply(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async balanceOf(owner: string, overrides?: Overrides): Promise<bigint> {\n return await this.view.balanceOf(\n owner,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async getApproved(\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): Promise<string> {\n return await this.view.getApproved(\n tokenId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async isApprovedForAll(\n owner: string,\n operator: string,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.isApprovedForAll(\n owner,\n operator,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async name(overrides?: Overrides): Promise<string> {\n return await this.view.name(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async ownerOf(tokenId: BigNumberish, overrides?: Overrides): Promise<string> {\n return await this.view.ownerOf(\n tokenId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async supportsInterface(\n interfaceId: BytesLike,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.supportsInterface(\n interfaceId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async symbol(overrides?: Overrides): Promise<string> {\n return await this.view.symbol(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async tokenURI(\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): Promise<string> {\n return await this.view.tokenURI(\n tokenId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n callStatic = {\n view: this.view,\n context: this.context,\n\n async approve(\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.approve(\n to,\n tokenId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async safeTransferFrom_address_address_uint256(\n from: string,\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.safeTransferFrom_address_address_uint256(\n from,\n to,\n tokenId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async safeTransferFrom_address_address_uint256_bytes(\n from: string,\n to: string,\n tokenId: BigNumberish,\n data: BytesLike,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.safeTransferFrom_address_address_uint256_bytes(\n from,\n to,\n tokenId,\n data,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async setApprovalForAll(\n operator: string,\n _approved: boolean,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.setApprovalForAll(\n operator,\n _approved,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async transferFrom(\n from: string,\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.transferFrom(\n from,\n to,\n tokenId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n };\n\n encodeCall = {\n view: this.view,\n context: this.context,\n\n approve(\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.approve(to, tokenId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n totalSupply(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.totalSupply({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n balanceOf(owner: string, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.balanceOf(owner, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n getApproved(tokenId: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.getApproved(tokenId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n isApprovedForAll(\n owner: string,\n operator: string,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.isApprovedForAll(owner, operator, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n name(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.name({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n ownerOf(tokenId: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.ownerOf(tokenId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n safeTransferFrom_address_address_uint256(\n from: string,\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.safeTransferFrom_address_address_uint256(\n from,\n to,\n tokenId,\n {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n },\n );\n },\n safeTransferFrom_address_address_uint256_bytes(\n from: string,\n to: string,\n tokenId: BigNumberish,\n data: BytesLike,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.safeTransferFrom_address_address_uint256_bytes(\n from,\n to,\n tokenId,\n data,\n {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n },\n );\n },\n setApprovalForAll(\n operator: string,\n _approved: boolean,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.setApprovalForAll(operator, _approved, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n supportsInterface(\n interfaceId: BytesLike,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.supportsInterface(interfaceId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n symbol(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.symbol({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n tokenURI(tokenId: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.tokenURI(tokenId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n transferFrom(\n from: string,\n to: string,\n tokenId: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.transferFrom(from, to, tokenId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n };\n}\n\nexport type ERC721Context = ContractContext<ERC721, ERC721BoundContractView>;\n\nexport class ERC721Processor extends BaseProcessor<\n ERC721,\n ERC721BoundContractView\n> {\n onEventApproval(\n handler: (event: ApprovalEvent, ctx: ERC721Context) => void,\n filter?: ApprovalEventFilter | ApprovalEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: ApprovalEvent,\n ctx: ERC721Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Approval(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventApprovalForAll(\n handler: (event: ApprovalForAllEvent, ctx: ERC721Context) => void,\n filter?: ApprovalForAllEventFilter | ApprovalForAllEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: ApprovalForAllEvent,\n ctx: ERC721Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"ApprovalForAll(address,address,bool)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC721Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: TransferEvent,\n ctx: ERC721Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Transfer(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onCallApprove(\n handler: (call: ApproveCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: ApproveCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x095ea7b3\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallTotalSupply(\n handler: (call: TotalSupplyCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: TotalSupplyCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x18160ddd\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallBalanceOf(\n handler: (call: BalanceOfCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: BalanceOfCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x70a08231\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallGetApproved(\n handler: (call: GetApprovedCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: GetApprovedCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x081812fc\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallIsApprovedForAll(\n handler: (call: IsApprovedForAllCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: IsApprovedForAllCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xe985e9c5\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallName(\n handler: (call: NameCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: NameCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x06fdde03\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallOwnerOf(\n handler: (call: OwnerOfCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: OwnerOfCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x6352211e\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallSafeTransferFrom_address_address_uint256(\n handler: (\n call: SafeTransferFrom_address_address_uint256CallTrace,\n ctx: ERC721Context,\n ) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: SafeTransferFrom_address_address_uint256CallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x42842e0e\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallSafeTransferFrom_address_address_uint256_bytes(\n handler: (\n call: SafeTransferFrom_address_address_uint256_bytesCallTrace,\n ctx: ERC721Context,\n ) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: SafeTransferFrom_address_address_uint256_bytesCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xb88d4fde\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallSetApprovalForAll(\n handler: (call: SetApprovalForAllCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: SetApprovalForAllCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa22cb465\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallSupportsInterface(\n handler: (call: SupportsInterfaceCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: SupportsInterfaceCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x01ffc9a7\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallSymbol(\n handler: (call: SymbolCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: SymbolCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x95d89b41\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallTokenURI(\n handler: (call: TokenURICallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: TokenURICallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xc87b56dd\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n onCallTransferFrom(\n handler: (call: TransferFromCallTrace, ctx: ERC721Context) => void,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n call: TransferFromCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x23b872dd\",\n handler as any,\n fetchConfig,\n preprocessHandler,\n );\n }\n\n public static filters = {\n Approval(\n owner?: string | null,\n approved?: string | null,\n tokenId?: BigNumberish | null,\n ): ApprovalEventFilter {\n return templateContract.filters[\"Approval(address,address,uint256)\"](\n owner,\n approved,\n tokenId,\n );\n },\n ApprovalForAll(\n owner?: string | null,\n operator?: string | null,\n approved?: null,\n ): ApprovalForAllEventFilter {\n return templateContract.filters[\"ApprovalForAll(address,address,bool)\"](\n owner,\n operator,\n approved,\n );\n },\n Transfer(\n from?: string | null,\n to?: string | null,\n tokenId?: BigNumberish | null,\n ): TransferEventFilter {\n return templateContract.filters[\"Transfer(address,address,uint256)\"](\n from,\n to,\n tokenId,\n );\n },\n };\n\n protected CreateBoundContractView(): ERC721BoundContractView {\n const view = getERC721Contract(this.config.network, this.config.address);\n return new ERC721BoundContractView(this.config.address, view);\n }\n\n public static bind(options: BindOptions): ERC721Processor {\n if (!options.name) {\n options.name = \"ERC721\";\n }\n let processor = getProcessor(options) as ERC721Processor;\n if (!processor) {\n processor = new ERC721Processor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n}\n\nexport class ERC721ProcessorTemplate extends BaseProcessorTemplate<\n ERC721,\n ERC721BoundContractView\n> {\n bindInternal(options: BindOptions) {\n if (!options.name) {\n options.name = \"ERC721\";\n }\n let processor = getProcessor(options) as ERC721Processor;\n if (!processor) {\n processor = new ERC721Processor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n\n onEventApproval(\n handler: (event: ApprovalEvent, ctx: ERC721Context) => void,\n filter?: ApprovalEventFilter | ApprovalEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: ApprovalEvent,\n ctx: ERC721Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Approval(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventApprovalForAll(\n handler: (event: ApprovalForAllEvent, ctx: ERC721Context) => void,\n filter?: ApprovalForAllEventFilter | ApprovalForAllEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: ApprovalForAllEvent,\n ctx: ERC721Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"ApprovalForAll(address,address,bool)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC721Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler?: (\n event: TransferEvent,\n ctx: ERC721Context,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"Transfer(address,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(handler, filter!, fetchConfig, preprocessHandler);\n }\n}\n\nexport function getERC721Contract(\n chainId: EthChainId,\n address: string,\n): ERC721ContractView {\n let contract = getContractByABI(\n \"ERC721\",\n address,\n chainId,\n ) as ERC721ContractView;\n if (!contract) {\n const rawContract = ERC721__factory.connect(address, getProvider(chainId));\n contract = new ERC721ContractView(rawContract);\n addContractByABI(\"ERC721\", address, chainId, contract);\n }\n return contract;\n}\n\nexport function getERC721ContractOnContext(\n context: EthContext,\n address: string,\n): ERC721BoundContractView {\n const view = getERC721Contract(context.getChainId(), address);\n const boundView = new ERC721BoundContractView(address, view);\n boundView.context = context;\n if (boundView.callStatic) {\n boundView.callStatic.context = context;\n }\n return boundView;\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { LogParams } from \"ethers/providers\";\nimport { EthChainId } from \"@sentio/sdk/eth\";\nimport {\n ApprovalEventObject,\n ApprovalForAllEventObject,\n TransferEventObject,\n} from \"./ERC721.js\";\nimport { getERC721Contract } from \"./erc721-processor.js\";\nconst mockField = {\n blockHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n blockNumber: 0,\n logIndex: 0,\n removed: false,\n transactionHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n transactionIndex: 0,\n};\n\nexport function mockApprovalLog(\n contractAddress: string,\n event: ApprovalEventObject,\n): LogParams {\n const contract = getERC721Contract(EthChainId.ETHEREUM, contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Approval(address,address,uint256)\",\n [event.owner, event.approved, event.tokenId],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockApprovalForAllLog(\n contractAddress: string,\n event: ApprovalForAllEventObject,\n): LogParams {\n const contract = getERC721Contract(EthChainId.ETHEREUM, contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"ApprovalForAll(address,address,bool)\",\n [event.owner, event.operator, event.approved],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockTransferLog(\n contractAddress: string,\n event: TransferEventObject,\n): LogParams {\n const contract = getERC721Contract(EthChainId.ETHEREUM, contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Transfer(address,address,uint256)\",\n [event.from, event.to, event.tokenId],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n","import { ListStateStorage } from '@sentio/runtime'\nimport { AccountProcessor } from './account-processor.js'\n\nexport class AccountProcessorState extends ListStateStorage<AccountProcessor> {\n static INSTANCE = new AccountProcessorState()\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { ERC20__factory, ERC721__factory } from './builtin/internal/index.js'\nimport { AddressType, EthFetchConfig, PreprocessResult, ProcessResult } from '@sentio/protos'\n\nimport { PartiallyOptional, PromiseOrVoid } from '../core/index.js'\n\nimport { AccountBindOptions } from './bind-options.js'\nimport { ERC20Processor, TransferEvent as ERC20TransferEvent } from './builtin/erc20.js'\nimport { ERC721Processor, TransferEvent as ERC721TransferEvent } from './builtin/erc721.js'\nimport { AccountContext } from './context.js'\nimport { AddressOrTypeEventFilter, defaultPreprocessHandler, EventsHandler } from './base-processor.js'\nimport { Block } from 'ethers'\nimport { AccountProcessorState } from './account-processor-state.js'\nimport { fixEmptyKey, formatEthData, TypedEvent } from './eth.js'\nimport { EthChainId } from '@sentio/chain'\nimport { ServerError, Status } from 'nice-grpc'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nconst ERC20_INTERFACE = ERC20__factory.createInterface()\nconst ERC721_INTERFACE = ERC721__factory.createInterface()\n\nexport class AccountProcessor {\n config: AccountBindOptions\n eventHandlers: EventsHandler[] = []\n\n static bind(config: PartiallyOptional<AccountBindOptions, 'network'>): AccountProcessor {\n const processor = new AccountProcessor(config)\n AccountProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n protected constructor(config: PartiallyOptional<AccountBindOptions, 'network'>) {\n this.config = {\n ...config,\n network: config.network || EthChainId.ETHEREUM\n }\n\n return proxyProcessor(this)\n }\n\n public getChainId(): EthChainId {\n return this.config.network\n }\n\n /**\n * Register custom handler function to process erc20 transfer event to this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n * @param preprocessHandler\n */\n onERC20TransferIn(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC20TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) => ERC721Processor.filters.Transfer(null, this.config.address),\n fetchConfig,\n preprocessHandler\n )\n }\n\n /**\n * Register custom handler function to process erc20 transfer event from this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n * @param preprocessHandler\n */\n onERC20TransferOut(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC20TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) => ERC20Processor.filters.Transfer(this.config.address),\n fetchConfig,\n preprocessHandler\n )\n }\n\n /**\n * Register custom handler function to process erc20 mint for this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n * @param preprocessHandler\n */\n onERC20Minted(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC20TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) =>\n ERC20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address),\n fetchConfig,\n preprocessHandler\n )\n }\n\n private onERC20(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC20TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC(handler, tokensAddresses, defaultFilter, AddressType.ERC20, fetchConfig, preprocessHandler)\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event to this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n * @param preprocessHandler\n */\n onERC721TransferIn(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC721TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) => ERC721Processor.filters.Transfer(null, this.config.address),\n fetchConfig,\n preprocessHandler\n )\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event from this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n * @param preprocessHandler\n */\n onERC721TransferOut(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC721TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) => ERC721Processor.filters.Transfer(this.config.address),\n fetchConfig,\n preprocessHandler\n )\n }\n\n /**\n * Register custom handler function to process ERC721 mint for this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n * @param preprocessHandler\n */\n onERC721Minted(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[] = [],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC721TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) =>\n ERC721Processor.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address),\n fetchConfig,\n preprocessHandler\n )\n }\n\n private onERC721(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: ERC721TransferEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n return this.onERC(handler, collections, defaultFilter, AddressType.ERC721, fetchConfig, preprocessHandler)\n }\n\n private onERC(\n handler: (event: any, ctx: AccountContext) => PromiseOrVoid,\n contractAddresses: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n addressType: AddressType,\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: any,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n const filters = []\n for (const token of contractAddresses) {\n const filter = defaultFilter(this.config.address)\n filter.address = token\n filters.push(filter)\n }\n if (!filters.length) {\n const filter = defaultFilter(this.config.address)\n filter.address = undefined\n filter.addressType = addressType\n filters.push(filter)\n }\n return this.onEvent(handler, filters, fetchConfig, preprocessHandler)\n }\n\n protected onEvent(\n handler: (event: TypedEvent, ctx: AccountContext) => PromiseOrVoid,\n filter: AddressOrTypeEventFilter | AddressOrTypeEventFilter[],\n fetchConfig?: Partial<EthFetchConfig>,\n preprocessHandler: (\n event: TypedEvent,\n ctx: AccountContext,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult> = defaultPreprocessHandler\n ) {\n const chainId = this.getChainId()\n\n let _filters: AddressOrTypeEventFilter[] = []\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // let hasVaildConfig = false\n // for (const filter of _filters) {\n // if (filter.address) {\n // hasVaildConfig = true\n // break\n // }\n // if (filter.topics && filter.topics.length) {\n // hasVaildConfig = true\n // break\n // }\n // }\n //\n // if (!hasVaildConfig) {\n // throw Error('no valid config has been found for this account')\n // }\n\n const config = this.config\n\n this.eventHandlers.push({\n filters: _filters,\n fetchConfig: EthFetchConfig.fromPartial(fetchConfig || {}),\n handlerName: getHandlerName(),\n handler: async function (data) {\n const { log, block, transaction, transactionReceipt } = formatEthData(data)\n if (!log) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Log is empty')\n }\n // const log = data.log as { topics: Array<string>; data: string }\n const ctx = new AccountContext(\n chainId,\n config.address,\n data.timestamp,\n data.block as Block,\n log,\n undefined,\n transaction,\n transactionReceipt\n )\n\n const logParam = log as any as { topics: Array<string>; data: string }\n const parsed = ERC20_INTERFACE.parseLog(logParam)\n if (parsed) {\n const event: TypedEvent = { ...log, name: parsed.name, args: fixEmptyKey(parsed) }\n await handler(event, ctx)\n return ctx.stopAndGetResult()\n }\n return ProcessResult.fromPartial({})\n },\n preprocessHandler: async function (data, preprocessStore: { [k: string]: any }) {\n const { log, block, transaction, transactionReceipt } = formatEthData(data)\n if (!log) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Log is empty')\n }\n // const log = data.log as { topics: Array<string>; data: string }\n const ctx = new AccountContext(\n chainId,\n config.address,\n data.timestamp,\n data.block as Block,\n log,\n undefined,\n transaction,\n transactionReceipt\n )\n\n const logParam = log as any as { topics: Array<string>; data: string }\n const parsed = ERC20_INTERFACE.parseLog(logParam)\n if (parsed) {\n const event: TypedEvent = { ...log, name: parsed.name, args: fixEmptyKey(parsed) }\n return preprocessHandler(event, ctx, preprocessStore)\n }\n return PreprocessResult.fromPartial({})\n }\n })\n\n return this\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","export { BaseProcessor, GlobalProcessor, defaultPreprocessHandler } from './base-processor.js'\nexport { GenericProcessor } from './generic-processor.js'\nexport { BaseProcessorTemplate } from './base-processor-template.js'\nexport { AccountProcessor } from './account-processor.js'\n\nexport { getProvider, DummyProvider } from '@sentio/runtime'\n\nexport { EthContext } from './context.js'\nexport * from './eth.js'\nexport { BindOptions, AccountBindOptions } from './bind-options.js'\nexport { getProcessor, addProcessor, getContractByABI, addContractByABI } from './binds.js'\nexport { AccountContext, ContractContext, GlobalContext, ContractView, BoundContractView } from './context.js'\n\nexport { EthPlugin } from './eth-plugin.js'\n\nexport { EthFetchConfig, PreprocessResult } from '@sentio/protos'\n\nexport { EthChainId } from '@sentio/chain'\n\nexport { makeEthCallKey } from '@sentio/runtime'\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR, GLOBAL_CONFIG } from '@sentio/runtime'\nimport {\n AccountConfig,\n ContractConfig,\n Data_EthBlock,\n Data_EthLog,\n Data_EthTrace,\n Data_EthTransaction,\n DataBinding,\n HandlerType,\n LogFilter,\n LogHandlerConfig,\n PreparedData,\n PreprocessResult,\n ProcessConfigResponse,\n ProcessResult,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\nimport { EthProcessorState } from './binds.js'\nimport { AccountProcessorState } from './account-processor-state.js'\nimport { ProcessorTemplateProcessorState } from './base-processor-template.js'\nimport { defaultPreprocessHandler, GlobalProcessorState } from './base-processor.js'\nimport { validateAndNormalizeAddress } from './eth.js'\nimport { EthChainId } from '@sentio/chain'\nimport { EthContext } from './context.js'\nimport { TemplateInstanceState } from '../core/template.js'\n\ninterface Handlers {\n eventHandlers: ((event: Data_EthLog, preparedData?: PreparedData) => Promise<ProcessResult>)[]\n traceHandlers: ((trace: Data_EthTrace, preparedData?: PreparedData) => Promise<ProcessResult>)[]\n blockHandlers: ((block: Data_EthBlock, preparedData?: PreparedData) => Promise<ProcessResult>)[]\n transactionHandlers: ((trace: Data_EthTransaction, preparedData?: PreparedData) => Promise<ProcessResult>)[]\n}\n\ninterface PreprocessHandlers {\n eventHandlers: ((event: Data_EthLog, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>)[]\n traceHandlers: ((trace: Data_EthTrace, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>)[]\n blockHandlers: ((block: Data_EthBlock, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>)[]\n transactionHandlers: ((\n txn: Data_EthTransaction,\n preprocessStore: { [k: string]: any }\n ) => Promise<PreprocessResult>)[]\n}\n\nexport class EthPlugin extends Plugin {\n name: string = 'EthPlugin'\n handlers: Handlers = {\n blockHandlers: [],\n eventHandlers: [],\n traceHandlers: [],\n transactionHandlers: []\n }\n preprocessHandlers: PreprocessHandlers = {\n blockHandlers: [],\n eventHandlers: [],\n traceHandlers: [],\n transactionHandlers: []\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n blockHandlers: [],\n eventHandlers: [],\n traceHandlers: [],\n transactionHandlers: []\n }\n const preprocessHandlers: PreprocessHandlers = {\n blockHandlers: [],\n eventHandlers: [],\n traceHandlers: [],\n transactionHandlers: []\n }\n\n for (const processor of EthProcessorState.INSTANCE.getValues()) {\n // If server favor incremental update this need to change\n // Start basic config for contract\n const chainId = processor.getChainId()\n // this.processorsByChainId.set(chainId, processor)\n\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: chainId.toString(),\n address: validateAndNormalizeAddress(processor.config.address),\n abi: ''\n },\n startBlock: processor.config.startBlock,\n endBlock: processor.config.endBlock\n })\n\n // Step 1. Prepare all the block handlers\n for (const blockHandler of processor.blockHandlers) {\n preprocessHandlers.blockHandlers.push(blockHandler.preprocessHandler ?? defaultPreprocessHandler)\n const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1\n // TODO wrap the block handler into one\n\n contractConfig.intervalConfigs.push({\n slot: 0,\n slotInterval: blockHandler.blockInterval,\n minutes: 0,\n minutesInterval: blockHandler.timeIntervalInMinutes,\n handlerId: handlerId,\n handlerName: blockHandler.handlerName,\n fetchConfig: blockHandler.fetchConfig\n })\n }\n\n // Step 2. Prepare all trace handlers\n for (const traceHandler of processor.traceHandlers) {\n preprocessHandlers.traceHandlers.push(traceHandler.preprocessHandler ?? defaultPreprocessHandler)\n const handlerId = handlers.traceHandlers.push(traceHandler.handler) - 1\n for (const signature of traceHandler.signatures) {\n contractConfig.traceConfigs.push({\n signature: signature,\n handlerId: handlerId,\n handlerName: traceHandler.handlerName,\n fetchConfig: traceHandler.fetchConfig\n })\n }\n }\n\n // Step 3. Prepare all the event handlers\n for (const eventsHandler of processor.eventHandlers) {\n // associate id with filter\n preprocessHandlers.eventHandlers.push(eventsHandler.preprocessHandler ?? defaultPreprocessHandler)\n const handlerId = handlers.eventHandlers.push(eventsHandler.handler) - 1\n const logConfig: LogHandlerConfig = {\n handlerId: handlerId,\n handlerName: eventsHandler.handlerName,\n filters: [],\n fetchConfig: eventsHandler.fetchConfig\n }\n\n for (const filter of eventsHandler.filters) {\n const topics = await filter.getTopicFilter()\n\n // if (!filter.topics) {\n // throw new ServerError(Status.INVALID_ARGUMENT, 'Topic should not be null')\n // }\n const logFilter: LogFilter = {\n addressType: undefined,\n address: contractConfig.contract?.address && validateAndNormalizeAddress(contractConfig.contract.address),\n topics: []\n }\n\n for (const ts of topics) {\n let hashes: string[] = []\n if (Array.isArray(ts)) {\n hashes = hashes.concat(ts)\n } else if (ts) {\n hashes.push(ts)\n }\n logFilter.topics.push({ hashes: hashes })\n }\n logConfig.filters.push(logFilter)\n }\n contractConfig.logConfigs.push(logConfig)\n }\n\n // Finish up a contract\n config.contractConfigs.push(contractConfig)\n }\n\n for (const processor of GlobalProcessorState.INSTANCE.getValues()) {\n const chainId = processor.getChainId()\n\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: chainId.toString(),\n address: processor.config.address, // can only be *\n abi: ''\n },\n startBlock: processor.config.startBlock,\n endBlock: processor.config.endBlock\n })\n\n for (const blockHandler of processor.blockHandlers) {\n preprocessHandlers.blockHandlers.push(blockHandler.preprocessHandler ?? defaultPreprocessHandler)\n const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1\n contractConfig.intervalConfigs.push({\n slot: 0,\n slotInterval: blockHandler.blockInterval,\n minutes: 0,\n minutesInterval: blockHandler.timeIntervalInMinutes,\n handlerId: handlerId,\n handlerName: blockHandler.handlerName,\n fetchConfig: blockHandler.fetchConfig\n })\n }\n\n for (const transactionHandler of processor.transactionHandler) {\n preprocessHandlers.transactionHandlers.push(transactionHandler.preprocessHandler ?? defaultPreprocessHandler)\n const handlerId = handlers.transactionHandlers.push(transactionHandler.handler) - 1\n contractConfig.transactionConfig.push({\n handlerId: handlerId,\n handlerName: transactionHandler.handlerName,\n fetchConfig: transactionHandler.fetchConfig\n })\n }\n\n for (const traceHandler of processor.traceHandlers) {\n preprocessHandlers.traceHandlers.push(traceHandler.preprocessHandler ?? defaultPreprocessHandler)\n const handlerId = handlers.traceHandlers.push(traceHandler.handler) - 1\n for (const signature of traceHandler.signatures) {\n contractConfig.traceConfigs.push({\n signature: signature,\n handlerId: handlerId,\n handlerName: traceHandler.handlerName,\n fetchConfig: traceHandler.fetchConfig\n })\n }\n }\n config.contractConfigs.push(contractConfig)\n }\n\n // part 1.b prepare EVM account processors\n for (const processor of AccountProcessorState.INSTANCE.getValues()) {\n const accountConfig = AccountConfig.fromPartial({\n address: validateAndNormalizeAddress(processor.config.address),\n chainId: processor.getChainId().toString(),\n startBlock: processor.config.startBlock ? BigInt(processor.config.startBlock) : 0n\n })\n // TODO add interval\n for (const eventsHandler of processor.eventHandlers) {\n // associate id with filter\n preprocessHandlers.eventHandlers.push(eventsHandler.preprocessHandler ?? defaultPreprocessHandler)\n const handlerId = handlers.eventHandlers.push(eventsHandler.handler) - 1\n const logConfig: LogHandlerConfig = {\n handlerId: handlerId,\n handlerName: eventsHandler.handlerName,\n filters: [],\n fetchConfig: eventsHandler.fetchConfig\n }\n\n for (const filter of eventsHandler.filters) {\n const topics = await filter.getTopicFilter()\n // if (!filter.topics) {\n // throw new ServerError(Status.INVALID_ARGUMENT, 'Topic should not be null')\n // }\n let address = undefined\n if (filter.address) {\n address = filter.address.toString()\n }\n const logFilter: LogFilter = {\n addressType: filter.addressType,\n address: address && validateAndNormalizeAddress(address),\n topics: []\n }\n\n for (const ts of topics) {\n let hashes: string[] = []\n if (Array.isArray(ts)) {\n hashes = hashes.concat(ts)\n } else if (ts) {\n hashes.push(ts)\n }\n logFilter.topics.push({ hashes: hashes })\n }\n logConfig.filters.push(logFilter)\n }\n accountConfig.logConfigs.push(logConfig)\n }\n\n config.accountConfigs.push(accountConfig)\n }\n\n this.handlers = handlers\n this.preprocessHandlers = preprocessHandlers\n }\n\n supportedHandlers = [HandlerType.ETH_LOG, HandlerType.ETH_BLOCK, HandlerType.ETH_TRACE, HandlerType.ETH_TRANSACTION]\n\n processBinding(request: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult> {\n // return Promise.resolve(undefined);\n switch (request.handlerType) {\n case HandlerType.ETH_LOG:\n return this.processLog(request, preparedData)\n case HandlerType.ETH_TRACE:\n return this.processTrace(request, preparedData)\n case HandlerType.ETH_BLOCK:\n return this.processBlock(request, preparedData)\n case HandlerType.ETH_TRANSACTION:\n return this.processTransaction(request, preparedData)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n preprocessBinding(request: DataBinding, preprocessStore: { [k: string]: any }): Promise<PreprocessResult> {\n switch (request.handlerType) {\n case HandlerType.ETH_LOG:\n return this.preprocessLog(request, preprocessStore)\n case HandlerType.ETH_TRACE:\n return this.preprocessTrace(request, preprocessStore)\n case HandlerType.ETH_BLOCK:\n return this.preprocessBlock(request, preprocessStore)\n case HandlerType.ETH_TRANSACTION:\n return this.preprocessTransaction(request, preprocessStore)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async start(request: StartRequest) {\n const allowedChainIds = new Set<string>(Object.values(EthChainId))\n\n for (const instance of request.templateInstances) {\n if (!allowedChainIds.has(instance.contract?.chainId || '')) {\n continue\n }\n\n const template = ProcessorTemplateProcessorState.INSTANCE.getValues()[instance.templateId]\n if (!template) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Invalid template contract:' + instance)\n }\n if (!instance.contract) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Contract Empty from:' + instance)\n }\n const ctx = new NoopContext(instance.contract.chainId as EthChainId)\n template.bind(\n {\n name: instance.contract.name,\n address: validateAndNormalizeAddress(instance.contract.address),\n startBlock: instance.startBlock,\n endBlock: instance.endBlock,\n baseLabels: instance.baseLabels\n },\n ctx\n )\n }\n }\n\n stateDiff(config: ProcessConfigResponse): boolean {\n return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length\n }\n\n async preprocessLog(request: DataBinding, preprocessStore: { [k: string]: any }): Promise<PreprocessResult> {\n if (!request.data?.ethLog?.log) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Log can't be null\")\n }\n const ethLog = request.data.ethLog\n\n const promises: Promise<PreprocessResult>[] = []\n for (const handlerId of request.handlerIds) {\n const handler = this.preprocessHandlers.eventHandlers[handlerId]\n const promise = handler(ethLog, preprocessStore).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing log: ' + JSON.stringify(ethLog.log) + '\\n' + errorString(e)\n )\n })\n promises.push(promise)\n }\n return mergePreprocessResults(await Promise.all(promises))\n }\n\n async preprocessTrace(binding: DataBinding, preprocessStore: { [k: string]: any }): Promise<PreprocessResult> {\n if (!binding.data?.ethTrace?.trace) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Trace can't be null\")\n }\n const ethTrace = binding.data.ethTrace\n\n const promises: Promise<PreprocessResult>[] = []\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.preprocessHandlers.traceHandlers[handlerId](ethTrace, preprocessStore).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing trace: ' + JSON.stringify(ethTrace.trace) + '\\n' + errorString(e)\n )\n })\n promises.push(promise)\n }\n return mergePreprocessResults(await Promise.all(promises))\n }\n\n async preprocessBlock(binding: DataBinding, preprocessStore: { [k: string]: any }): Promise<PreprocessResult> {\n if (!binding.data?.ethBlock?.block) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Block can't be empty\")\n }\n const ethBlock = binding.data.ethBlock\n\n const promises: Promise<PreprocessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n const promise = this.preprocessHandlers.blockHandlers[handlerId](ethBlock, preprocessStore).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing block: ' + ethBlock.block?.number + '\\n' + errorString(e)\n )\n })\n promises.push(promise)\n }\n return mergePreprocessResults(await Promise.all(promises))\n }\n\n async preprocessTransaction(binding: DataBinding, preprocessStore: { [k: string]: any }): Promise<PreprocessResult> {\n if (!binding.data?.ethTransaction?.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"transaction can't be null\")\n }\n const ethTransaction = binding.data.ethTransaction\n\n const promises: Promise<PreprocessResult>[] = []\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.preprocessHandlers.transactionHandlers[handlerId](ethTransaction, preprocessStore).catch(\n (e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing transaction: ' + JSON.stringify(ethTransaction.transaction) + '\\n' + errorString(e)\n )\n }\n )\n promises.push(promise)\n }\n return mergePreprocessResults(await Promise.all(promises))\n }\n\n async processLog(request: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult> {\n if (!request.data?.ethLog?.log) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Log can't be null\")\n }\n const ethLog = request.data.ethLog\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of request.handlerIds) {\n const handler = this.handlers.eventHandlers[handlerId]\n const promise = handler(ethLog, preparedData).catch((e) => {\n console.error('error processing log: ', e)\n throw new ServerError(\n Status.INTERNAL,\n 'error processing log: ' + JSON.stringify(ethLog.log) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processTrace(binding: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult> {\n if (!binding.data?.ethTrace?.trace) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Trace can't be null\")\n }\n const ethTrace = binding.data.ethTrace\n\n const promises: Promise<ProcessResult>[] = []\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.traceHandlers[handlerId](ethTrace, preparedData).catch((e) => {\n console.error('error processing trace: ', e)\n throw new ServerError(\n Status.INTERNAL,\n 'error processing trace: ' + JSON.stringify(ethTrace.trace) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processBlock(binding: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult> {\n if (!binding.data?.ethBlock?.block) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Block can't be empty\")\n }\n const ethBlock = binding.data.ethBlock\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.blockHandlers[handlerId](ethBlock, preparedData).catch((e) => {\n console.error('error processing block: ', e)\n throw new ServerError(\n Status.INTERNAL,\n 'error processing block: ' + ethBlock.block?.number + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processTransaction(binding: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult> {\n if (!binding.data?.ethTransaction?.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"transaction can't be null\")\n }\n const ethTransaction = binding.data.ethTransaction\n\n const promises: Promise<ProcessResult>[] = []\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.transactionHandlers[handlerId](ethTransaction, preparedData).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing transaction: ' + JSON.stringify(ethTransaction.transaction) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new EthPlugin())\n\nclass NoopContext extends EthContext {\n public constructor(chainId: EthChainId) {\n super(chainId, '')\n }\n\n protected getContractName(): string {\n return ''\n }\n}\n\nfunction mergePreprocessResults(results: PreprocessResult[]): PreprocessResult {\n const res: PreprocessResult = { ethCallParams: [] }\n for (const r of results) {\n res.ethCallParams = res.ethCallParams.concat(r.ethCallParams)\n }\n return res\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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AM,MACN,KAAM,SAER,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,WAER,CACE,aAAc,UACd,KAAM,KACN,KAAM,YAGV,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,YAGV,gBAAiB,OACjB,KAAM,YAER,CACE,OAAQ,CACN,CACE,aAAc,YACd,KAAM,WACN,KAAM,aAER,CACE,aAAc,YACd,KAAM,MACN,KAAM,cAGV,KAAM,iBACN,QAAS,CACP,CACE,aAAc,YACd,KAAM,GACN,KAAM,cAGV,gBAAiB,OACjB,KAAM,YAER,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,WAER,CACE,aAAc,UACd,KAAM,WACN,KAAM,YAGV,KAAM,mBACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,SAGV,gBAAiB,OACjB,KAAM,YAER,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,WAER,CACE,aAAc,UACd,KAAM,KACN,KAAM,WAER,CACE,aAAc,YACd,KAAM,MACN,KAAM,aAER,CACE,aAAc,YACd,KAAM,UACN,KAAM,aAER,CACE,aAAc,QACd,KAAM,OACN,KAAM,UAGV,KAAM,wBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,YAER,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,WAER,CACE,aAAc,UACd,KAAM,KACN,KAAM,WAER,CACE,aAAc,UACd,KAAM,KACN,KAAM,WAER,CACE,aAAc,UACd,KAAM,SACN,KAAM,WAER,CACE,aAAc,QACd,KAAM,OACN,KAAM,UAGV,KAAM,mBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,YAER,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,WAER,CACE,aAAc,OACd,KAAM,WACN,KAAM,SAGV,KAAM,oBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,YAER,CACE,OAAQ,CACN,CACE,aAAc,SACd,KAAM,cACN,KAAM,WAGV,KAAM,oBACN,QAAS,CACP,CACE,aAA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B,aACjB,KAAM,YAER,CACE,SAAU,GACV,OAAQ,CAAA,EACR,KAAM,cACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,YAGV,QAAS,GACT,gBAAiB,OACjB,KAAM,YAER,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,OACN,KAAM,WAER,CACE,KAAM,KACN,KAAM,WAER,CACE,KAAM,QACN,KAAM,YAGV,KAAM,eACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SAGV,QAAS,GACT,gBAAiB,aACjB,KAAM,YAER,CACE,SAAU,GACV,OAAQ,CAAA,EACR,KAAM,WACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,UAGV,QAAS,GACT,gBAAiB,OACjB,KAAM,YAER,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,MACN,KAAM,YAGV,KAAM,YACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,YAGV,QAAS,GACT,gBAAiB,OACjB,KAAM,YAER,CACE,SAAU,GACV,OAAQ,CAAA,EACR,KAAM,SACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,YAGV,QAAS,GACT,gBAAiB,OACjB,KAAM,YAER,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,KACN,KAAM,WAER,CACE,KAAM,QACN,KAAM,YAGV,KAAM,WACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SAGV,QAAS,GACT,gBAAiB,aACjB,KAAM,YAER,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,QACN,KAAM,WAER,CACE,KAAM,UACN,KAAM,YAGV,KAAM,YACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,YAGV,QAAS,GACT,gBAAiB,OACjB,KAAM,YAER,CACE,OAAQ,CACN,CACE,KAAM,QACN,KAAM,UAER,CACE,KAAM,UACN,KAAM,UAER,CACE,KAAM,YACN,KAAM,UAGV,QAAS,GACT,gBAAiB,aACjB,KAAM,eAER,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,KAAM,QACN,KAAM,WAER,CACE,QAAS,GACT,KAAM,UACN,KAAM,WAER,CACE,QAAS,GACT,KAAM,QACN,KAA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CAE9B,OAAKF,IACHA,EAAS/B,GAAiB,QAAQ,mCAAmC,EACnE,KACA,KACA,IAAI,GAGD,MAAM,WAAW8B,EAASC,EAASC,EAAaC,CAAiB,CAC1E,CAEA,cACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,kBACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,gBACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,kBACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,uBACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,WACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,cACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,+CACEH,EAIAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,qDACEH,EAIAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,wBACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,wBACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,aACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,eACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,MAAM,WACX,aACAH,EACAE,EACAC,CAAiB,CAErB,CAEA,mBACEH,EACAE,EACAC,EAG8B,CAE9B,OAAO,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","names":["require_sha3","__commonJSMin","exports","module","INPUT_ERROR","FINALIZE_ERROR","WINDOW","root","WEB_WORKER","NODE_JS","COMMON_JS","AMD","ARRAY_BUFFER","HEX_CHARS","SHAKE_PADDING","CSHAKE_PADDING","KECCAK_PADDING","PADDING","SHIFT","RC","BITS","SHAKE_BITS","OUTPUT_TYPES","CSHAKE_BYTEPAD","isArray","obj","isView","formatMessage","__name","message","type","empty","cloneArray","array","newArray","i","createOutputMethod","bits","padding","outputType","Keccak","createShakeOutputMethod","outputBits","createCshakeOutputMethod","n","s","methods","createKmacOutputMethod","key","createOutputMethods","method","createMethod","createShakeMethod","createCshakeMethod","w","createKmacMethod","Kmac","algorithms","methodNames","algorithm","j","methodName","newMethodName","result","isString","blocks","byteCount","length","blockCount","index","code","f","x","right","o","bytes","str","strs","paddingBytes","zeros","outputBlocks","extraBytes","hex","block","buffer","offset","h","l","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","EthContext","BaseContext","__name","chainId","address","timestamp","block","log","trace","transaction","transactionReceipt","baseLabels","preparedData","name","labels","normalizeLabels","overrides","blockTagWithOverride","AccountContext","GlobalContext","res","ContractContext","contractName","view","ContractView","contract","BoundContractView","p","import_nice_grpc","BN_0","allowNull","format","nullValue","value","__name","arrayOf","array","i","object","altNames","result","key","srcKey","altKey","nv","error","message","assert","formatBoolean","assertArgument","formatData","isHexString","formatHash","_formatLog","object","getAddress","formatHash","getNumber","formatData","allowNull","formatBoolean","arrayOf","formatLog","value","__name","_formatBlock","getBigInt","formatBlock","result","tx","formatTransactionResponse","_formatReceiptLog","formatReceiptLog","_formatTransactionReceipt","hexlify","formatTransactionResponse","value","getBigInt","BN_0","result","object","formatHash","allowNull","getNumber","__name","accessListify","arrayOf","getAddress","formatData","getCreateAddress","Signature","chainId","SimpleEthersError","__name","message","stack","transformEtherError","e","ctx","checkPage","msg","err","fixEmptyKey","result","keys","i","arg","Result","_formatTransactionReceipt","object","allowNull","getAddress","getNumber","hexlify","getBigInt","formatData","formatHash","arrayOf","formatReceiptLog","formatTransactionReceipt","value","formatEthData","data","log","formatLog","block","formatRichBlock","trace","transaction","formatTransactionResponse","transactionReceipt","formatBlock","isNullAddress","address","validateAndNormalizeAddress","ALL_ADDRESS","encodeCallData","context","name","funcABI","values","calldata","Interface","newContract","target","abi","runner","Contract","newInterface","fragments","p","import_js_sha3","ListStateStorage","EthChainId","GLOBAL_CONFIG","processMetrics","Piscina","createOptions","options","findWorkFile","GLOBAL_CONFIG","workerNum","__name","baseUrl","index","parseLog","processor","log","workerPool","contractViewInterface","fragments","Piscina","result","fragment","LogDescription","Result","e","skipWhenDecodeFailed","labels","processMetrics","parseLogInline","decodeTrace","inputs","traceData","decodeTraceInline","p","defaultPreprocessHandler","__name","GlobalProcessorState","_GlobalProcessorState","ListStateStorage","__name","GlobalProcessor","_GlobalProcessor","proxyHandlers","config","processor","ALL_ADDRESS","EthChainId","proxyProcessor","handler","blockInterval","backfillBlockInterval","fetchConfig","preprocessHandler","defaultPreprocessHandler","timeIntervalInMinutes","backfillTimeIntervalInMinutes","timeInterval","chainId","getHandlerName","data","block","formatEthData","ctx","GlobalContext","preprocessStore","EthFetchConfig","trace","transaction","transactionReceipt","to","signatures","signature","BaseProcessor","_filters","tmpContract","fragment","filter","handlerName","contractName","preparedData","log","contractView","e","parsed","parseLog","ProcessResult","ContractContext","event","fixEmptyKey","PreprocessResult","contractInterface","sighash","typedTrace","traceData","decodeTrace","sighashes","test","sha3","p","getProvider","EthChainId","BindOptions","__name","EthChainId","getOptionsSignature","opts","sig","AccountBindOptions","p","MapStateStorage","EthProcessorState","_EthProcessorState","MapStateStorage","__name","contracts","getKey","abiName","address","network","getProcessor","opts","sig","getOptionsSignature","addProcessor","processor","getContractByABI","key","addContractByABI","contract","p","GenericProcessor","_GenericProcessor","BaseProcessor","__name","eventABI","options","contract","BaseContract","getProvider","BoundContractView","ContractView","processor","addProcessor","p","ListStateStorage","processMetrics","ProcessorTemplateProcessorState","_ProcessorTemplateProcessorState","ListStateStorage","__name","BaseProcessorTemplate","proxyProcessor","options","ctx","sig","getOptionsSignature","processor","eh","th","bh","instance","TemplateInstanceState","processMetrics","handler","filter","fetchConfig","preprocessHandler","defaultPreprocessHandler","getHandlerName","EthFetchConfig","blockInterval","backfillBlockInterval","timeIntervalInMinutes","timeInterval","signature","p","_abi","EACAggregatorProxy__factory","__name","Interface","address","signerOrProvider","Contract","_abi","ERC1155__factory","__name","Interface","address","signerOrProvider","Contract","_abi","ERC20__factory","__name","Interface","address","signerOrProvider","Contract","_abi","ERC20Bytes__factory","__name","Interface","address","signerOrProvider","Contract","_abi","ERC721__factory","__name","Interface","address","signerOrProvider","Contract","_abi","WETH9__factory","__name","Interface","address","signerOrProvider","Contract","erc20_exports","__export","ERC20BoundContractView","ERC20ContractView","ERC20Processor","ERC20ProcessorTemplate","ERC20__factory","getERC20Contract","getERC20ContractOnContext","mockApprovalLog","mockOwnershipTransferredLog","mockTransferLog","templateContract","ERC20__factory","DummyProvider","iface","Interface","ERC20ContractView","ContractView","__name","contract","owner","spender","overrides","preparedData","ethCallContext","e","stack","transformEtherError","account","amount","subtractedValue","addedValue","_locker","recipient","sender","newOwner","calldata","ERC20BoundContractView","BoundContractView","blockTagWithOverride","ERC20Processor","_ERC20Processor","BaseProcessor","handler","filter","fetchConfig","preprocessHandler","value","previousOwner","from","to","view","getERC20Contract","options","processor","getProcessor","addProcessor","ERC20ProcessorTemplate","BaseProcessorTemplate","chainId","address","getContractByABI","rawContract","getProvider","addContractByABI","getERC20ContractOnContext","context","boundView","mockField","mockApprovalLog","contractAddress","event","encodedLog","getERC20Contract","EthChainId","__name","mockOwnershipTransferredLog","mockTransferLog","erc721_exports","__export","ERC721BoundContractView","ERC721ContractView","ERC721Processor","ERC721ProcessorTemplate","ERC721__factory","getERC721Contract","getERC721ContractOnContext","mockApprovalForAllLog","mockApprovalLog","mockTransferLog","templateContract","ERC721__factory","DummyProvider","iface","Interface","ERC721ContractView","ContractView","__name","contract","overrides","preparedData","ethCallContext","e","stack","transformEtherError","owner","tokenId","operator","interfaceId","to","from","data","_approved","calldata","ERC721BoundContractView","BoundContractView","blockTagWithOverride","ERC721Processor","_ERC721Processor","BaseProcessor","handler","filter","fetchConfig","preprocessHandler","approved","view","getERC721Contract","options","processor","getProcessor","addProcessor","ERC721ProcessorTemplate","BaseProcessorTemplate","chainId","address","getContractByABI","rawContract","getProvider","addContractByABI","getERC721ContractOnContext","context","boundView","mockField","mockApprovalLog","contractAddress","event","encodedLog","getERC721Contract","EthChainId","__name","mockApprovalForAllLog","mockTransferLog","ListStateStorage","AccountProcessorState","_AccountProcessorState","ListStateStorage","__name","p","import_nice_grpc","EthChainId","ERC20_INTERFACE","ERC20__factory","ERC721_INTERFACE","ERC721__factory","AccountProcessor","_AccountProcessor","__name","config","processor","AccountProcessorState","EthChainId","proxyProcessor","handler","tokensAddresses","fetchConfig","preprocessHandler","defaultPreprocessHandler","address","ERC721Processor","ERC20Processor","defaultFilter","AddressType","collections","contractAddresses","addressType","filters","token","filter","chainId","_filters","EthFetchConfig","getHandlerName","data","log","block","transaction","transactionReceipt","formatEthData","ctx","AccountContext","logParam","parsed","event","fixEmptyKey","ProcessResult","preprocessStore","PreprocessResult","p","getProvider","DummyProvider","errorString","mergeProcessResults","Plugin","PluginManager","USER_PROCESSOR","GLOBAL_CONFIG","import_nice_grpc","EthChainId","EthPlugin","Plugin","__name","config","handlers","preprocessHandlers","processor","EthProcessorState","chainId","contractConfig","ContractConfig","USER_PROCESSOR","validateAndNormalizeAddress","blockHandler","defaultPreprocessHandler","handlerId","traceHandler","signature","eventsHandler","logConfig","filter","topics","logFilter","ts","hashes","GlobalProcessorState","transactionHandler","AccountProcessorState","accountConfig","AccountConfig","address","HandlerType","request","preparedData","preprocessStore","allowedChainIds","EthChainId","instance","template","ProcessorTemplateProcessorState","ctx","NoopContext","TemplateInstanceState","ethLog","promises","handler","promise","e","errorString","mergePreprocessResults","binding","ethTrace","ethBlock","ethTransaction","GLOBAL_CONFIG","mergeProcessResults","PluginManager","EthContext","results","res","r","p","EthChainId","makeEthCallKey","p"]}
|