@sentio/sdk 2.57.12-rc.e → 2.57.12-rc.g

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.
Files changed (51) hide show
  1. package/lib/{chunk-FDFFHCFA.js → chunk-2F2KNF4Z.js} +16113 -3887
  2. package/lib/chunk-2F2KNF4Z.js.map +1 -0
  3. package/lib/{chunk-QT2RHOVE.js → chunk-4HPFNKDX.js} +76 -146
  4. package/lib/chunk-4HPFNKDX.js.map +1 -0
  5. package/lib/{chunk-3NTVNR24.js → chunk-4OCWUYSJ.js} +2 -2
  6. package/lib/{chunk-M2LXR3BO.js → chunk-73SHERGU.js} +968 -1459
  7. package/lib/chunk-73SHERGU.js.map +1 -0
  8. package/lib/{chunk-ONH4BP25.js → chunk-7ECRTQD7.js} +2891 -3003
  9. package/lib/chunk-7ECRTQD7.js.map +1 -0
  10. package/lib/{chunk-2S4VBXER.js → chunk-7S6WQ4RL.js} +3 -3
  11. package/lib/{chunk-FTNDYH4A.js → chunk-AZFMPZRN.js} +200 -418
  12. package/lib/chunk-AZFMPZRN.js.map +1 -0
  13. package/lib/{chunk-QSUUYUJL.js → chunk-BZCXYTDE.js} +3 -3
  14. package/lib/{chunk-H6T626NV.js → chunk-E2DS6WZF.js} +10 -10
  15. package/lib/{chunk-H6T626NV.js.map → chunk-E2DS6WZF.js.map} +1 -1
  16. package/lib/{chunk-E4OYLQTE.js → chunk-GE6BRIGS.js} +5 -5
  17. package/lib/{chunk-MERD27M6.js → chunk-J3I3VNTV.js} +3 -3
  18. package/lib/{chunk-NMHIV5TJ.js → chunk-J3QOJ2RV.js} +4 -4
  19. package/lib/{chunk-BRHYXWEW.js → chunk-LPSNAS2G.js} +3 -3
  20. package/lib/chunk-LR232ZJV.js +2593 -0
  21. package/lib/chunk-LR232ZJV.js.map +1 -0
  22. package/lib/{chunk-TOXC2A6K.js → chunk-N36N7RXJ.js} +3 -3
  23. package/lib/{chunk-FLCIAA4G.js → chunk-OJG2VJ5T.js} +5 -5
  24. package/lib/{chunk-FLCIAA4G.js.map → chunk-OJG2VJ5T.js.map} +1 -1
  25. package/lib/{chunk-U5FYYK4Y.js → chunk-ONBEMKI5.js} +2 -2
  26. package/lib/{chunk-W43SMJ3Y.js → chunk-PVX2LIM5.js} +4 -4
  27. package/lib/{chunk-ZAY2PRBU.js → chunk-RMT2JEWA.js} +37 -37
  28. package/lib/{chunk-ZAY2PRBU.js.map → chunk-RMT2JEWA.js.map} +1 -1
  29. package/lib/{chunk-SIVNMNYW.js → chunk-S6MJ3KIL.js} +266 -381
  30. package/lib/chunk-S6MJ3KIL.js.map +1 -0
  31. package/lib/{chunk-FV4WLDIZ.js → chunk-UIBPOKNT.js} +16 -16
  32. package/lib/chunk-UIBPOKNT.js.map +1 -0
  33. package/lib/store/decorators.d.ts.map +1 -1
  34. package/package.json +3 -3
  35. package/lib/chunk-FDFFHCFA.js.map +0 -1
  36. package/lib/chunk-FTNDYH4A.js.map +0 -1
  37. package/lib/chunk-FV4WLDIZ.js.map +0 -1
  38. package/lib/chunk-M2LXR3BO.js.map +0 -1
  39. package/lib/chunk-ONH4BP25.js.map +0 -1
  40. package/lib/chunk-QT2RHOVE.js.map +0 -1
  41. package/lib/chunk-SIVNMNYW.js.map +0 -1
  42. /package/lib/{chunk-3NTVNR24.js.map → chunk-4OCWUYSJ.js.map} +0 -0
  43. /package/lib/{chunk-2S4VBXER.js.map → chunk-7S6WQ4RL.js.map} +0 -0
  44. /package/lib/{chunk-QSUUYUJL.js.map → chunk-BZCXYTDE.js.map} +0 -0
  45. /package/lib/{chunk-E4OYLQTE.js.map → chunk-GE6BRIGS.js.map} +0 -0
  46. /package/lib/{chunk-MERD27M6.js.map → chunk-J3I3VNTV.js.map} +0 -0
  47. /package/lib/{chunk-NMHIV5TJ.js.map → chunk-J3QOJ2RV.js.map} +0 -0
  48. /package/lib/{chunk-BRHYXWEW.js.map → chunk-LPSNAS2G.js.map} +0 -0
  49. /package/lib/{chunk-TOXC2A6K.js.map → chunk-N36N7RXJ.js.map} +0 -0
  50. /package/lib/{chunk-U5FYYK4Y.js.map → chunk-ONBEMKI5.js.map} +0 -0
  51. /package/lib/{chunk-W43SMJ3Y.js.map → chunk-PVX2LIM5.js.map} +0 -0
@@ -1 +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.9_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 }\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 const start = Date.now()\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 const labels = {\n chain_id: processor.config?.network,\n processor: processor.config?.name,\n workerPool: 'parseLog'\n }\n processMetrics.processor_worker_run_time.add(Date.now() - start, labels)\n processMetrics.processor_worker_completed.add(1, labels)\n processMetrics.processor_worker_queue_size.record(workerPool.queueSize, labels)\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 const start = Date.now()\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 const labels = {\n chain_id: processor.config?.network,\n processor: processor.config?.name,\n workerPool: 'decodeTrace'\n }\n processMetrics.processor_worker_run_time.add(Date.now() - start, labels)\n processMetrics.processor_worker_completed.add(1, labels)\n processMetrics.processor_worker_queue_size.record(workerPool.queueSize, labels)\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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mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,eACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,aACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,WACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,YACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,gBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,aACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,kBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,eACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,mBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEO,OAAO,UAAU;IACtB,SACE,OACA,SACA,OAAY;AAEZ,aAAO,iBAAiB,QAAQ,mCAAmC,EACjE,OACA,SACA,KAAK;IAET;IACA,qBACE,eACA,UAAwB;AAExB,aAAO,iBAAiB,QAAQ,uCAAuC,E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,aACA,iBAAiB;EAErB;EAEA,kBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,gBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,kBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,uBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,WACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,cACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,+CACE,SAIA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,qDACE,SAIA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,aACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,eACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,mBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEO,OAAO,UAAU;IACtB,SACE,OACA,UACA,SAA6B;AAE7B,aAAOA,kBAAiB,QAAQ,mCAAmC,EACjE,OACA,UACA,OAAO;IAEX;IACA,eACE,OACA,UACA,UAAe;AAEf,aAAOA,kBAAiB,QAAQ,sCAAsC,EACpE,OACA,UACA,QAAQ;IAEZ;IACA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","names":["i","bits","createMethod","j","allowNull","value","_formatTransactionReceipt","iface","index","sha3","EthChainId","EthChainId","ListStateStorage","processMetrics","ListStateStorage","processMetrics","_abi","_abi","_abi","_abi","_abi","iface","getProvider","EthChainId","mockApprovalLog","mockTransferLog","templateContract","iface","getProvider","mockField","mockApprovalLog","EthChainId","mockTransferLog","ListStateStorage","ListStateStorage","import_nice_grpc","EthChainId","EthChainId","getProvider","GLOBAL_CONFIG","import_nice_grpc","EthChainId","EthChainId","GLOBAL_CONFIG","EthChainId"]}
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 }\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 const start = Date.now()\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 const labels = {\n chain_id: processor.config?.network,\n processor: processor.config?.name,\n workerPool: 'parseLog'\n }\n processMetrics.processor_worker_run_time.add(Date.now() - start, labels)\n processMetrics.processor_worker_completed.add(1, labels)\n processMetrics.processor_worker_queue_size.record(workerPool.queueSize, labels)\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 const start = Date.now()\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 const labels = {\n chain_id: processor.config?.network,\n processor: processor.config?.name,\n workerPool: 'decodeTrace'\n }\n processMetrics.processor_worker_run_time.add(Date.now() - start, labels)\n processMetrics.processor_worker_completed.add(1, labels)\n processMetrics.processor_worker_queue_size.record(workerPool.queueSize, labels)\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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mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,eACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,aACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,WACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,YACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,gBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,aACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,kBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,eACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,mBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEO,OAAO,UAAU;IACtB,SACE,OACA,SACA,OAAY;AAEZ,aAAO,iBAAiB,QAAQ,mCAAmC,EACjE,OACA,SACA,KAAK;IAET;IACA,qBACE,eACA,UAAwB;AAExB,aAAO,iBAAiB,QAAQ,uCAAuC,E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,aACA,iBAAiB;EAErB;EAEA,kBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,gBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,kBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,uBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,WACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,cACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,+CACE,SAIA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,qDACE,SAIA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,wBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,aACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,eACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEA,mBACE,SACA,aACA,mBAG8B;AAE9B,WAAO,MAAM,WACX,cACA,SACA,aACA,iBAAiB;EAErB;EAEO,OAAO,UAAU;IACtB,SACE,OACA,UACA,SAA6B;AAE7B,aAAOA,kBAAiB,QAAQ,mCAAmC,EACjE,OACA,UACA,OAAO;IAEX;IACA,eACE,OACA,UACA,UAAe;AAEf,aAAOA,kBAAiB,QAAQ,sCAAsC,EACpE,OACA,UACA,QAAQ;IAEZ;IACA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","names":["i","bits","createMethod","j","allowNull","value","_formatTransactionReceipt","iface","index","sha3","EthChainId","EthChainId","ListStateStorage","processMetrics","ListStateStorage","processMetrics","_abi","_abi","_abi","_abi","_abi","iface","getProvider","EthChainId","mockApprovalLog","mockTransferLog","templateContract","iface","getProvider","mockField","mockApprovalLog","EthChainId","mockTransferLog","ListStateStorage","ListStateStorage","import_nice_grpc","EthChainId","EthChainId","getProvider","GLOBAL_CONFIG","import_nice_grpc","EthChainId","EthChainId","GLOBAL_CONFIG","EthChainId"]}