@sentio/sdk-bundle 3.0.0-rc-next.5 → 3.0.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aptos/builtin/0x1.js +4 -4
- package/lib/aptos/builtin/0x3.js +5 -5
- package/lib/aptos/builtin/0x4.js +5 -5
- package/lib/aptos/builtin/index.js +6 -6
- package/lib/aptos/ext/index.js +4 -4
- package/lib/aptos/index.js +4 -4
- package/lib/{chunk-Z3OVK6QB.js → chunk-2STWNSTL.js} +6 -6
- package/lib/{chunk-4PWO53D6.js → chunk-3ITGIG2T.js} +2 -2
- package/lib/{chunk-RKLKVIKG.js → chunk-6LNXUEZ2.js} +4 -4
- package/lib/{chunk-QMCOMHEJ.js → chunk-A5XHFKLN.js} +3 -3
- package/lib/{chunk-2B3QG2PQ.js → chunk-A66R5WXL.js} +5 -5
- package/lib/{chunk-NLWLT7E4.js → chunk-A74JLBVG.js} +6 -6
- package/lib/{chunk-JICWKAWE.js → chunk-BSJMBZ47.js} +115 -90
- package/lib/chunk-BSJMBZ47.js.map +1 -0
- package/lib/{chunk-GFXWNWKV.js → chunk-F6XB3TYA.js} +2 -2
- package/lib/{chunk-32ZLAKLP.js → chunk-FEELEM4F.js} +30 -28
- package/lib/chunk-FEELEM4F.js.map +1 -0
- package/lib/{chunk-PYNR7P4Y.js → chunk-IJ2DRUCB.js} +5 -5
- package/lib/{chunk-MYCRAKGM.js → chunk-LC6AHMNQ.js} +4 -4
- package/lib/{chunk-CKQ65UP3.js → chunk-NXC6YEPV.js} +743 -92
- package/lib/chunk-NXC6YEPV.js.map +1 -0
- package/lib/{chunk-MWMMJFFU.js → chunk-OZUIEBIK.js} +2 -2
- package/lib/{chunk-B6KGL4RM.js → chunk-PCOINDOU.js} +3 -3
- package/lib/{chunk-CMVQTOCD.js → chunk-QZHJK3ZR.js} +3 -3
- package/lib/{chunk-Y43QLE6P.js → chunk-RORSIMFS.js} +54 -51
- package/lib/{chunk-Y43QLE6P.js.map → chunk-RORSIMFS.js.map} +1 -1
- package/lib/{chunk-J3EJRPMJ.js → chunk-WXR4GY67.js} +56 -46
- package/lib/chunk-WXR4GY67.js.map +1 -0
- package/lib/{chunk-WRGMCWD4.js → chunk-Y55RCY7T.js} +2 -2
- package/lib/{chunk-LX4GT3SV.js → chunk-YAIMQUJB.js} +3 -3
- package/lib/core/index.js +1 -1
- package/lib/eth/builtin/eacaggregatorproxy.js +2 -2
- package/lib/eth/builtin/erc1155.js +3 -3
- package/lib/eth/builtin/erc20.js +2 -2
- package/lib/eth/builtin/erc721.js +2 -2
- package/lib/eth/builtin/index.js +4 -4
- package/lib/eth/builtin/weth9.js +3 -3
- package/lib/eth/index.js +2 -2
- package/lib/fuel/index.js +2 -2
- package/lib/index.js +1 -1
- package/lib/iota/builtin/0x1.js +7 -7
- package/lib/iota/builtin/0x2.js +8 -8
- package/lib/iota/builtin/0x3.js +9 -9
- package/lib/iota/builtin/index.js +9 -9
- package/lib/iota/ext/index.js +4 -4
- package/lib/iota/index.js +6 -6
- package/lib/move/index.js +2 -2
- package/lib/solana/builtin/index.js +2 -2
- package/lib/solana/index.js +2 -2
- package/lib/stark/index.js +1 -5
- package/lib/stark/index.js.map +1 -1
- package/lib/store/index.js +1 -1
- package/lib/sui/builtin/0x1.js +7 -7
- package/lib/sui/builtin/0x2.js +8 -8
- package/lib/sui/builtin/0x3.js +9 -9
- package/lib/sui/builtin/index.js +9 -9
- package/lib/sui/ext/index.js +4 -4
- package/lib/sui/index.js +6 -6
- package/lib/testing/index.js +63 -16
- package/lib/testing/index.js.map +1 -1
- package/lib/utils/index.js +2 -2
- package/package.json +3 -3
- package/lib/chunk-32ZLAKLP.js.map +0 -1
- package/lib/chunk-CKQ65UP3.js.map +0 -1
- package/lib/chunk-J3EJRPMJ.js.map +0 -1
- package/lib/chunk-JICWKAWE.js.map +0 -1
- /package/lib/{chunk-Z3OVK6QB.js.map → chunk-2STWNSTL.js.map} +0 -0
- /package/lib/{chunk-4PWO53D6.js.map → chunk-3ITGIG2T.js.map} +0 -0
- /package/lib/{chunk-RKLKVIKG.js.map → chunk-6LNXUEZ2.js.map} +0 -0
- /package/lib/{chunk-QMCOMHEJ.js.map → chunk-A5XHFKLN.js.map} +0 -0
- /package/lib/{chunk-2B3QG2PQ.js.map → chunk-A66R5WXL.js.map} +0 -0
- /package/lib/{chunk-NLWLT7E4.js.map → chunk-A74JLBVG.js.map} +0 -0
- /package/lib/{chunk-GFXWNWKV.js.map → chunk-F6XB3TYA.js.map} +0 -0
- /package/lib/{chunk-PYNR7P4Y.js.map → chunk-IJ2DRUCB.js.map} +0 -0
- /package/lib/{chunk-MYCRAKGM.js.map → chunk-LC6AHMNQ.js.map} +0 -0
- /package/lib/{chunk-MWMMJFFU.js.map → chunk-OZUIEBIK.js.map} +0 -0
- /package/lib/{chunk-B6KGL4RM.js.map → chunk-PCOINDOU.js.map} +0 -0
- /package/lib/{chunk-CMVQTOCD.js.map → chunk-QZHJK3ZR.js.map} +0 -0
- /package/lib/{chunk-WRGMCWD4.js.map → chunk-Y55RCY7T.js.map} +0 -0
- /package/lib/{chunk-LX4GT3SV.js.map → chunk-YAIMQUJB.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/js-sha3@0.9.3/node_modules/js-sha3/src/sha3.js","../../../node_modules/.pnpm/@hey-api+client-fetch@0.8.3/node_modules/@hey-api/client-core/src/auth.ts","../../../node_modules/.pnpm/@hey-api+client-fetch@0.8.3/node_modules/@hey-api/client-core/src/bodySerializer.ts","../../../node_modules/.pnpm/@hey-api+client-fetch@0.8.3/node_modules/@hey-api/client-core/src/pathSerializer.ts","../../../node_modules/.pnpm/@hey-api+client-fetch@0.8.3/node_modules/@hey-api/client-fetch/src/utils.ts","../../../node_modules/.pnpm/@hey-api+client-fetch@0.8.3/node_modules/@hey-api/client-fetch/src/client.ts","../../../node_modules/.pnpm/@sentio+api@1.0.2/node_modules/@sentio/api/src/client.gen.ts","../../../node_modules/.pnpm/@sentio+api@1.0.2/node_modules/@sentio/api/src/sdk.gen.ts","../../../node_modules/.pnpm/@sentio+api@1.0.2/node_modules/@sentio/api/src/index.ts","../src/eth/builtin/erc721.ts","../src/eth/context.ts","../src/eth/base-processor.ts","../../../node_modules/.pnpm/@sentio+ethers@6.13.1-patch.6_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/internal/factories/index.ts","../src/eth/builtin/internal/index.ts","../src/eth/builtin/erc20.ts","../src/eth/builtin/internal/erc20-processor.ts","../src/eth/builtin/internal/erc20-test-utils.ts","../src/eth/builtin/internal/ERC20.ts","../src/eth/account-processor-state.ts","../src/eth/account-processor.ts","../src/eth/index.ts","../src/eth/eth-plugin.ts","../src/utils/block.ts","../src/utils/conversion.ts","../src/utils/token.ts","../src/eth/builtin/erc20bytes.ts","../src/eth/builtin/internal/erc20bytes-processor.ts","../src/eth/builtin/internal/erc20bytes-test-utils.ts","../src/eth/builtin/internal/ERC20Bytes.ts","../../../node_modules/.pnpm/lru-cache@11.2.1/node_modules/lru-cache/src/index.ts","../src/eth/builtin/eacaggregatorproxy.ts","../src/eth/builtin/internal/eacaggregatorproxy-processor.ts","../src/eth/builtin/internal/eacaggregatorproxy-test-utils.ts","../src/eth/builtin/internal/EACAggregatorProxy.ts","../src/utils/dex-price.ts","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/api/CsvError.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/utils/is_object.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/api/normalize_columns_array.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/utils/ResizeableBuffer.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/api/init_state.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/utils/underscore.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/api/normalize_options.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/api/index.js","../../../node_modules/.pnpm/csv-parse@6.1.0/node_modules/csv-parse/lib/sync.js","../src/utils/price.ts","../src/utils/call.ts","../src/utils/index.ts","../src/eth/builtin/internal/erc721-processor.ts","../src/eth/builtin/internal/erc721-test-utils.ts","../src/eth/builtin/internal/ERC721.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","export type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token =\n typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","import type {\n ArrayStyle,\n ObjectStyle,\n SerializerOptions,\n} from './pathSerializer';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: any) => any;\n\nexport interface QuerySerializerOptions {\n allowReserved?: boolean;\n array?: SerializerOptions<ArrayStyle>;\n object?: SerializerOptions<ObjectStyle>;\n}\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown) => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (\n data: URLSearchParams,\n key: string,\n value: unknown,\n) => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(\n body: T,\n ) => {\n const data = new FormData();\n\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: <T>(body: T) =>\n JSON.stringify(body, (key, value) =>\n typeof value === 'bigint' ? value.toString() : value,\n ),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(\n body: T,\n ) => {\n const data = new URLSearchParams();\n\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","interface SerializeOptions<T>\n extends SerializePrimitiveOptions,\n SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix'\n ? separator + joinedValues\n : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n}) => {\n if (value instanceof Date) {\n return `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [\n ...values,\n key,\n allowReserved ? (v as string) : encodeURIComponent(v as string),\n ];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix'\n ? separator + joinedValues\n : joinedValues;\n};\n","import type {\n QuerySerializer,\n QuerySerializerOptions,\n} from '@hey-api/client-core';\nimport {\n getAuthToken,\n jsonBodySerializer,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '@hey-api/client-core';\n\nimport type { Client, ClientOptions, Config, RequestOptions } from './types';\n\ninterface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\ntype ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\ntype ArraySeparatorStyle = ArrayStyle | MatrixStyle;\n\nconst defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(\n match,\n serializeArrayParam({ explode, name, style, value }),\n );\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const createQuerySerializer = <T = unknown>({\n allowReserved,\n array,\n object,\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n let search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n search = [\n ...search,\n serializeArrayParam({\n allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...array,\n }),\n ];\n continue;\n }\n\n if (typeof value === 'object') {\n search = [\n ...search,\n serializeObjectParam({\n allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...object,\n }),\n ];\n continue;\n }\n\n search = [\n ...search,\n serializePrimitiveParam({\n allowReserved,\n name,\n value: value as string,\n }),\n ];\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (\n contentType: string | null,\n): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (\n cleanContent.startsWith('application/json') ||\n cleanContent.endsWith('+json')\n ) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) =>\n cleanContent.startsWith(type),\n )\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n\n return;\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) => {\n const url = getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header || typeof header !== 'object') {\n continue;\n }\n\n const iterator =\n header instanceof Headers ? header.entries() : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (\n request: Req,\n options: Options,\n) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n _fns: Interceptor[];\n\n constructor() {\n this._fns = [];\n }\n\n clear() {\n this._fns = [];\n }\n\n exists(fn: Interceptor) {\n return this._fns.indexOf(fn) !== -1;\n }\n\n eject(fn: Interceptor) {\n const index = this._fns.indexOf(fn);\n if (index !== -1) {\n this._fns = [...this._fns.slice(0, index), ...this._fns.slice(index + 1)];\n }\n }\n\n use(fn: Interceptor) {\n this._fns = [...this._fns, fn];\n }\n}\n\n// `createInterceptors()` response, meant for external use as it does not\n// expose internals\nexport interface Middleware<Req, Res, Err, Options> {\n error: Pick<\n Interceptors<ErrInterceptor<Err, Res, Req, Options>>,\n 'eject' | 'use'\n >;\n request: Pick<Interceptors<ReqInterceptor<Req, Options>>, 'eject' | 'use'>;\n response: Pick<\n Interceptors<ResInterceptor<Res, Req, Options>>,\n 'eject' | 'use'\n >;\n}\n\n// do not add `Middleware` as return type so we can use _fns internally\nexport const createInterceptors = <Req, Res, Err, Options>() => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","import type { Client, Config, RequestOptions } from './types';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<\n Request,\n Response,\n unknown,\n RequestOptions\n >();\n\n // @ts-expect-error\n const request: Client['request'] = async (options) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.body && opts.bodySerializer) {\n opts.body = opts.bodySerializer(opts.body);\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.body === '') {\n opts.headers.delete('Content-Type');\n }\n\n const url = buildUrl(opts);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n };\n\n let request = new Request(url, requestInit);\n\n for (const fn of interceptors.request._fns) {\n request = await fn(request, opts);\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n let response = await _fetch(request);\n\n for (const fn of interceptors.response._fns) {\n response = await fn(response, request, opts);\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n if (\n response.status === 204 ||\n response.headers.get('Content-Length') === '0'\n ) {\n return {\n data: {},\n ...result,\n };\n }\n\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (parseAs === 'stream') {\n return {\n data: response.body,\n ...result,\n };\n }\n\n let data = await response[parseAs]();\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return {\n data,\n ...result,\n };\n }\n\n let error = await response.text();\n\n try {\n error = JSON.parse(error);\n } catch {\n // noop\n }\n\n let finalError = error;\n\n for (const fn of interceptors.error._fns) {\n finalError = (await fn(error, response, request, opts)) as string;\n }\n\n finalError = finalError || ({} as string);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n return {\n error: finalError,\n ...result,\n };\n };\n\n return {\n buildUrl,\n connect: (options) => request({ ...options, method: 'CONNECT' }),\n delete: (options) => request({ ...options, method: 'DELETE' }),\n get: (options) => request({ ...options, method: 'GET' }),\n getConfig,\n head: (options) => request({ ...options, method: 'HEAD' }),\n interceptors,\n options: (options) => request({ ...options, method: 'OPTIONS' }),\n patch: (options) => request({ ...options, method: 'PATCH' }),\n post: (options) => request({ ...options, method: 'POST' }),\n put: (options) => request({ ...options, method: 'PUT' }),\n request,\n setConfig,\n trace: (options) => request({ ...options, method: 'TRACE' }),\n };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ClientOptions } from './types.gen';\nimport { type Config, type ClientOptions as DefaultClientOptions, createClient, createConfig } from '@hey-api/client-fetch';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends DefaultClientOptions = ClientOptions> = (override?: Config<DefaultClientOptions & T>) => Config<Required<DefaultClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions>({\n baseUrl: 'https://app.sentio.xyz'\n}));","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Options as ClientOptions, TDataShape, Client } from '@hey-api/client-fetch';\nimport type { SaveAlertRuleData, SaveAlertRuleResponse, GetAlertRulesData, GetAlertRulesResponse, DeleteAlertRuleData, DeleteAlertRuleResponse, SaveAlertRule2Data, SaveAlertRule2Response, GetAlertData, GetAlertResponse, CancelSqlQueryData, CancelSqlQueryResponse, ExecuteSqlData, ExecuteSqlResponse, ExecuteSqlAsyncData, ExecuteSqlAsyncResponse, QuerySqlExecutionDetailData, QuerySqlExecutionDetailResponse, QuerySqlResultData, QuerySqlResultResponse, SaveSqlData, SaveSqlResponse, SaveSql2Data, SaveSql2Response, ListDashboardsData, ListDashboardsResponse, ImportDashboardData, ImportDashboardResponse, DeleteDashboardData, DeleteDashboardResponse, GetDashboardData, GetDashboardResponse, ExportDashboardData, ExportDashboardResponse, QueryLogData, QueryLogResponse, QueryLog2Data, QueryLog2Response, ListCoins2Data, ListCoins2Response, ListCoinsData, ListCoinsResponse, QueryData, QueryResponse, GetMetricsData, GetMetricsResponse, QueryInstantData, QueryInstantResponse, QueryRangeData, QueryRangeResponse, GetPriceData, GetPriceResponse, AddCoinByGeckoData, AddCoinByGeckoResponse, BatchGetPricesData, BatchGetPricesResponse, CheckLatestPriceData, CheckLatestPriceResponse, PriceListCoinsData, PriceListCoinsResponse, GetProcessorStatusV2Data, GetProcessorStatusV2Response, GetProjectData, GetProjectResponse, GetProjectByIdData, GetProjectByIdResponse, GetProjectListData, GetProjectListResponse, ListDashboards2Data, ListDashboards2Response, GetDashboard2Data, GetDashboard2Response, GetEstimatedGasPriceData, GetEstimatedGasPriceResponse, ListForksData, ListForksResponse, CreateForkData, CreateForkResponse, GetCallTraceOnForkBundleData, GetCallTraceOnForkBundleResponse, SimulateTransactionOnForkData, SimulateTransactionOnForkResponse, GetCallTraceOnForkSimulationData, GetCallTraceOnForkSimulationResponse, SimulateTransactionBundleOnForkData, SimulateTransactionBundleOnForkResponse, GetCallTraceOnForkTransactionData, GetCallTraceOnForkTransactionResponse, DeleteForkData, DeleteForkResponse, GetForkData, GetForkResponse, UpdateForkData, UpdateForkResponse, GetForkInfoData, GetForkInfoResponse, SearchTransactionsData, SearchTransactionsResponse, GetSimulationsData, GetSimulationsResponse, GetSimulationData, GetSimulationResponse, GetSimulationBundleInProjectData, GetSimulationBundleInProjectResponse, GetCallTraceByBundleData, GetCallTraceByBundleResponse, SimulateTransactionData, SimulateTransactionResponse, GetCallTraceBySimulationData, GetCallTraceBySimulationResponse, SimulateTransactionBundleData, SimulateTransactionBundleResponse, GetCallTraceByTransactionData, GetCallTraceByTransactionResponse } from './types.gen';\nimport { client as _heyApiClient } from './client.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = ClientOptions<TData, ThrowOnError> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\nexport class AlertsService {\n /**\n * Save an alert rule\n */\n public static saveAlertRule<ThrowOnError extends boolean = false>(options: Options<SaveAlertRuleData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<SaveAlertRuleResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/alerts/rule',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * List all alert rules for a project\n */\n public static getAlertRules<ThrowOnError extends boolean = false>(options: Options<GetAlertRulesData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetAlertRulesResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/alerts/rule/project/{projectId}',\n ...options\n });\n }\n \n /**\n * Delete an alert rule\n */\n public static deleteAlertRule<ThrowOnError extends boolean = false>(options: Options<DeleteAlertRuleData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).delete<DeleteAlertRuleResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/alerts/rule/{id}',\n ...options\n });\n }\n \n /**\n * Save an alert rule\n */\n public static saveAlertRule2<ThrowOnError extends boolean = false>(options: Options<SaveAlertRule2Data, ThrowOnError>) {\n return (options.client ?? _heyApiClient).put<SaveAlertRule2Response, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/alerts/rule/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Find an alert rule by id, and list all alerts for this rule\n */\n public static getAlert<ThrowOnError extends boolean = false>(options: Options<GetAlertData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetAlertResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/alerts/{ruleId}',\n ...options\n });\n }\n \n}\n\nexport class DataService {\n /**\n * Cancel SQL Query\n * Cancel a SQL query by execution_id.\n */\n public static cancelSqlQuery<ThrowOnError extends boolean = false>(options: Options<CancelSqlQueryData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).put<CancelSqlQueryResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/analytics/{owner}/{slug}/sql/cancel_query/{executionId}',\n ...options\n });\n }\n \n /**\n * Execute SQL\n * Execute SQL in a project. Go to \"Data Studio\" -> \"SQL Editor\", write your query and then click \"Export as cURL\"\n *\n * .png)\n *\n * Find more: https://docs.sentio.xyz/reference/data#sql-api\n */\n public static executeSql<ThrowOnError extends boolean = false>(options: Options<ExecuteSqlData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<ExecuteSqlResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/analytics/{owner}/{slug}/sql/execute',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Execute SQL by Async\n * Execute SQL in a project asynchronously.\n */\n public static executeSqlAsync<ThrowOnError extends boolean = false>(options: Options<ExecuteSqlAsyncData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<ExecuteSqlAsyncResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/analytics/{owner}/{slug}/sql/execute/async',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Query SQL Execution Detail\n * Query the execution detail of a SQL query by execution_id.\n */\n public static querySqlExecutionDetail<ThrowOnError extends boolean = false>(options: Options<QuerySqlExecutionDetailData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<QuerySqlExecutionDetailResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/analytics/{owner}/{slug}/sql/query_execution_detail/{executionId}',\n ...options\n });\n }\n \n /**\n * Query SQL Result\n * Query the result of a SQL query by execution_id.\n */\n public static querySqlResult<ThrowOnError extends boolean = false>(options: Options<QuerySqlResultData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<QuerySqlResultResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/analytics/{owner}/{slug}/sql/query_result/{executionId}',\n ...options\n });\n }\n \n /**\n * Save SQL\n * Save or update a SQL query in a project.\n */\n public static saveSql<ThrowOnError extends boolean = false>(options: Options<SaveSqlData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<SaveSqlResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/analytics/{owner}/{slug}/sql/save',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Save SQL\n * Save or update a SQL query in a project.\n */\n public static saveSql2<ThrowOnError extends boolean = false>(options: Options<SaveSql2Data, ThrowOnError>) {\n return (options.client ?? _heyApiClient).put<SaveSql2Response, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/analytics/{owner}/{slug}/sql/save',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Query event logs\n */\n public static queryLog<ThrowOnError extends boolean = false>(options: Options<QueryLogData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<QueryLogResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/eventlogs/{owner}/{slug}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Query event logs\n */\n public static queryLog2<ThrowOnError extends boolean = false>(options: Options<QueryLog2Data, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<QueryLog2Response, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/eventlogs/{owner}/{slug}/query',\n ...options\n });\n }\n \n /**\n * List coins\n * Get a list of coins in a project.\n */\n public static listCoins2<ThrowOnError extends boolean = false>(options?: Options<ListCoins2Data, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<ListCoins2Response, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/insights/coins',\n ...options\n });\n }\n \n /**\n * List coins\n * Get a list of coins in a project.\n */\n public static listCoins<ThrowOnError extends boolean = false>(options: Options<ListCoinsData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<ListCoinsResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/insights/{owner}/{slug}/coins',\n ...options\n });\n }\n \n /**\n * Insight Query\n * Query for metrics,event logs and coin prices in a project.\n */\n public static query<ThrowOnError extends boolean = false>(options: Options<QueryData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<QueryResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/insights/{owner}/{slug}/query',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Get a list of metrics in a project\n */\n public static getMetrics<ThrowOnError extends boolean = false>(options?: Options<GetMetricsData, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<GetMetricsResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/metrics',\n ...options\n });\n }\n \n /**\n * Metric instant queries\n */\n public static queryInstant<ThrowOnError extends boolean = false>(options: Options<QueryInstantData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<QueryInstantResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/metrics/{owner}/{slug}/query',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Metric range queries\n * The easiest way to build query is through UI, you could first create an insight chart, and then **Export as cURL**.\n *\n * .png)\n */\n public static queryRange<ThrowOnError extends boolean = false>(options: Options<QueryRangeData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<QueryRangeResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/metrics/{owner}/{slug}/query_range',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n}\n\nexport class WebService {\n /**\n * List all dashboards in a project\n */\n public static listDashboards<ThrowOnError extends boolean = false>(options?: Options<ListDashboardsData, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<ListDashboardsResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/dashboards',\n ...options\n });\n }\n \n /**\n * Import a dashboard to another dashboard\n */\n public static importDashboard<ThrowOnError extends boolean = false>(options: Options<ImportDashboardData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<ImportDashboardResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/dashboards/json',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Delete a dashboard by id\n */\n public static deleteDashboard<ThrowOnError extends boolean = false>(options: Options<DeleteDashboardData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).delete<DeleteDashboardResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/dashboards/{dashboardId}',\n ...options\n });\n }\n \n /**\n * Get a dashboard by id\n */\n public static getDashboard<ThrowOnError extends boolean = false>(options: Options<GetDashboardData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetDashboardResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/dashboards/{dashboardId}',\n ...options\n });\n }\n \n /**\n * Export a dashboard to json\n */\n public static exportDashboard<ThrowOnError extends boolean = false>(options: Options<ExportDashboardData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<ExportDashboardResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/dashboards/{dashboardId}/json',\n ...options\n });\n }\n \n /**\n * Get project details\n */\n public static getProject<ThrowOnError extends boolean = false>(options: Options<GetProjectData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetProjectResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/project/{owner}/{slug}',\n ...options\n });\n }\n \n /**\n * Get project details\n */\n public static getProjectById<ThrowOnError extends boolean = false>(options: Options<GetProjectByIdData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetProjectByIdResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/project/{projectId}',\n ...options\n });\n }\n \n /**\n * Get project list\n */\n public static getProjectList<ThrowOnError extends boolean = false>(options?: Options<GetProjectListData, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<GetProjectListResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/projects',\n ...options\n });\n }\n \n /**\n * List all dashboards in a project\n */\n public static listDashboards2<ThrowOnError extends boolean = false>(options: Options<ListDashboards2Data, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<ListDashboards2Response, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/projects/{owner}/{slug}/dashboards',\n ...options\n });\n }\n \n /**\n * Get a dashboard by id\n */\n public static getDashboard2<ThrowOnError extends boolean = false>(options: Options<GetDashboard2Data, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetDashboard2Response, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/projects/{owner}/{slug}/dashboards/{dashboardId}',\n ...options\n });\n }\n \n}\n\nexport class PriceService {\n /**\n * Get price\n * GetPrice returns the price of a given coin identifier, in a best effort way.\n * If we do not have any price data for the given coin, we will return NOT_FOUND error.\n * If we have at least one price data for the given coin, we will return it with the actual timestamp.\n * Client is responsible for checking the timestamp and decide whether to use the price or not.\n */\n public static getPrice<ThrowOnError extends boolean = false>(options?: Options<GetPriceData, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<GetPriceResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/prices',\n ...options\n });\n }\n \n /**\n * Add coin by Gecko\n * adds a coin by its coingecko id.\n *\n * coingecko id the API ID of the coin in coingecko web page.\n *\n * please AWARE that the coingecko id is NOT the same as the symbol of the coin.\n *\n * \n */\n public static addCoinByGecko<ThrowOnError extends boolean = false>(options: Options<AddCoinByGeckoData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<AddCoinByGeckoResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/prices/add_coin_by_gecko',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Batch get prices\n */\n public static batchGetPrices<ThrowOnError extends boolean = false>(options: Options<BatchGetPricesData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<BatchGetPricesResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/prices/batch',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Check latest price\n */\n public static checkLatestPrice<ThrowOnError extends boolean = false>(options?: Options<CheckLatestPriceData, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<CheckLatestPriceResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/prices/check_latest',\n ...options\n });\n }\n \n /**\n * List coins\n */\n public static priceListCoins<ThrowOnError extends boolean = false>(options?: Options<PriceListCoinsData, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<PriceListCoinsResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/prices/coins',\n ...options\n });\n }\n \n}\n\nexport class ProcessorService {\n /**\n * Get processor status\n */\n public static getProcessorStatusV2<ThrowOnError extends boolean = false>(options: Options<GetProcessorStatusV2Data, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetProcessorStatusV2Response, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/processors/{owner}/{slug}/status',\n ...options\n });\n }\n \n}\n\nexport class DebugAndSimulationService {\n /**\n * Estimate gas price\n */\n public static getEstimatedGasPrice<ThrowOnError extends boolean = false>(options?: Options<GetEstimatedGasPriceData, ThrowOnError>) {\n return (options?.client ?? _heyApiClient).get<GetEstimatedGasPriceResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/estimated_gas_price',\n ...options\n });\n }\n \n /**\n * Search transactions\n */\n public static searchTransactions<ThrowOnError extends boolean = false>(options: Options<SearchTransactionsData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<SearchTransactionsResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/search_transactions',\n ...options\n });\n }\n \n /**\n * Get list of simulations\n */\n public static getSimulations<ThrowOnError extends boolean = false>(options: Options<GetSimulationsData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetSimulationsResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/simulation',\n ...options\n });\n }\n \n /**\n * Get simulation by ID\n */\n public static getSimulation<ThrowOnError extends boolean = false>(options: Options<GetSimulationData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetSimulationResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/simulation/{simulationId}',\n ...options\n });\n }\n \n /**\n * Get bundle simulation by ID\n */\n public static getSimulationBundleInProject<ThrowOnError extends boolean = false>(options: Options<GetSimulationBundleInProjectData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetSimulationBundleInProjectResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/simulation_bundle/{bundleId}',\n ...options\n });\n }\n \n /**\n * Get trace by bundle simulation\n */\n public static getCallTraceByBundle<ThrowOnError extends boolean = false>(options: Options<GetCallTraceByBundleData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetCallTraceByBundleResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/{chainId}/bundle/{bundleId}/call_trace',\n ...options\n });\n }\n \n /**\n * Run simulation\n * Create a new transaction simulation. The simulation body should be included in the request body.\n * Your simulations will be saved, and a unique ID for each simulation is included in the response. It will be useful for fetching simulation details.\n */\n public static simulateTransaction<ThrowOnError extends boolean = false>(options: Options<SimulateTransactionData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<SimulateTransactionResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/{chainId}/simulation',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Get trace by simulation\n */\n public static getCallTraceBySimulation<ThrowOnError extends boolean = false>(options: Options<GetCallTraceBySimulationData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetCallTraceBySimulationResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/{chainId}/simulation/{simulationId}/call_trace',\n ...options\n });\n }\n \n /**\n * Run bundle simulation\n * You could also create bundle simulations so that one transaction could be executed one after another. For `blockNumber` `transactionIndex` `networkId` `stateOverrides` and `blockOverrides` fields, only the first simulation takes effect.\n */\n public static simulateTransactionBundle<ThrowOnError extends boolean = false>(options: Options<SimulateTransactionBundleData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<SimulateTransactionBundleResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/{chainId}/simulation_bundle',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Get trace by transaction\n * API to get Sentio call trace. It takes `txId.txHash` and `chainSpec.chainId` arguments, where the first is transaction hash, and the second is the numeric ethereum chain ID.\n *\n * The results looks very similar to the normal [Ethereum call trace](https://raw.githubusercontent.com/sentioxyz/docs/main/.gitbook/assets/image%20(2)%20(1)%20(1)%20(1).png). But we have an additional `startIndex` and `startIndex` on each trace entry even for the LOG, representing the execution order in the trace.\n *\n * This allows you to build chart that marks the order of fund flow.\n *\n * %20(1)%20(1)%20(1).png)\n */\n public static getCallTraceByTransaction<ThrowOnError extends boolean = false>(options: Options<GetCallTraceByTransactionData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetCallTraceByTransactionResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/{chainId}/transaction/{txHash}/call_trace',\n ...options\n });\n }\n \n}\n\nexport class ForksService {\n /**\n * List all forks\n */\n public static listForks<ThrowOnError extends boolean = false>(options: Options<ListForksData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<ListForksResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork',\n ...options\n });\n }\n \n /**\n * Create a fork\n */\n public static createFork<ThrowOnError extends boolean = false>(options: Options<CreateForkData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<CreateForkResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Get trace by bundle simulation\n */\n public static getCallTraceOnForkBundle<ThrowOnError extends boolean = false>(options: Options<GetCallTraceOnForkBundleData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetCallTraceOnForkBundleResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{forkId}/bundle/{bundleId}/call_trace',\n ...options\n });\n }\n \n /**\n * Run Simulation\n */\n public static simulateTransactionOnFork<ThrowOnError extends boolean = false>(options: Options<SimulateTransactionOnForkData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<SimulateTransactionOnForkResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{forkId}/simulation',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Get trace by simulation\n */\n public static getCallTraceOnForkSimulation<ThrowOnError extends boolean = false>(options: Options<GetCallTraceOnForkSimulationData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetCallTraceOnForkSimulationResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{forkId}/simulation/{simulationId}/call_trace',\n ...options\n });\n }\n \n /**\n * Run bundle simulation\n */\n public static simulateTransactionBundleOnFork<ThrowOnError extends boolean = false>(options: Options<SimulateTransactionBundleOnForkData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).post<SimulateTransactionBundleOnForkResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{forkId}/simulation_bundle',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Get trace by transaction\n */\n public static getCallTraceOnForkTransaction<ThrowOnError extends boolean = false>(options: Options<GetCallTraceOnForkTransactionData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetCallTraceOnForkTransactionResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{forkId}/transaction/{txHash}/call_trace',\n ...options\n });\n }\n \n /**\n * Delete fork by id\n */\n public static deleteFork<ThrowOnError extends boolean = false>(options: Options<DeleteForkData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).delete<DeleteForkResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{id}',\n ...options\n });\n }\n \n /**\n * Get fork by id\n */\n public static getFork<ThrowOnError extends boolean = false>(options: Options<GetForkData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetForkResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{id}',\n ...options\n });\n }\n \n /**\n * Update fork by id\n */\n public static updateFork<ThrowOnError extends boolean = false>(options: Options<UpdateForkData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).put<UpdateForkResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n \n /**\n * Get fork info by id\n */\n public static getForkInfo<ThrowOnError extends boolean = false>(options: Options<GetForkInfoData, ThrowOnError>) {\n return (options.client ?? _heyApiClient).get<GetForkInfoResponse, unknown, ThrowOnError>({\n security: [\n {\n name: 'api-key',\n type: 'apiKey'\n },\n {\n in: 'query',\n name: 'api-key',\n type: 'apiKey'\n }\n ],\n url: '/api/v1/solidity/{owner}/{slug}/fork/{id}/info',\n ...options\n });\n }\n \n}","// This file is auto-generated by @hey-api/openapi-ts\nexport * from './types.gen';\nexport * from './client.gen';\nexport * from './sdk.gen';","/* 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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","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 } else if (transaction?.blockNumber) {\n this.blockNumber = transaction.blockNumber\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, LogParams, 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, TimeOrBlock } from './bind-options.js'\nimport { PromiseOrVoid } from '../core/promises.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport {\n fixEmptyKey,\n formatEthData,\n RawEvent,\n RichBlock,\n Trace,\n TypedCallTrace,\n TypedEvent,\n validateAndNormalizeAddress\n} 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, HandlerOptions } 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 partitionHandler?: (event: Data_EthLog) => Promise<string | undefined>\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 partitionHandler?: (trace: Data_EthTrace) => Promise<string | undefined>\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 partitionHandler?: (block: Data_EthBlock) => Promise<string | undefined>\n}\n\nexport class TransactionHandler {\n handler: (tx: Data_EthTransaction) => Promise<ProcessResult>\n handlerName: string\n preprocessHandler?: (event: Data_EthTransaction, preprocessStore: { [k: string]: any }) => Promise<PreprocessResult>\n fetchConfig: EthFetchConfig\n partitionHandler?: (tx: Data_EthTransaction) => Promise<string | undefined>\n}\n\nclass BindInternalOptions {\n address: string\n network: EthChainId\n name: string\n start: TimeOrBlock\n end?: TimeOrBlock\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 eventHandlers: EventsHandler[] = []\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 start: config.start || {\n block: 0\n },\n end: config.end\n }\n if (config.startBlock) {\n this.config.start = {\n block: config.startBlock\n }\n }\n if (config.endBlock) {\n this.config.end = {\n block: config.endBlock\n }\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 handlerOptions?: HandlerOptions<EthFetchConfig, RichBlock>,\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 handlerOptions,\n preprocessHandler\n )\n }\n\n public onTimeInterval(\n handler: (block: RichBlock, ctx: GlobalContext) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n handlerOptions?: HandlerOptions<EthFetchConfig, RichBlock>,\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 handlerOptions,\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 handlerOptions?: HandlerOptions<EthFetchConfig, RichBlock>,\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(handlerOptions || {}),\n partitionHandler: async (data: Data_EthBlock): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const { block } = formatEthData(data)\n if (!block) return undefined\n return p(block)\n }\n return p\n }\n })\n return this\n }\n\n public onTransaction(\n handler: (transaction: TransactionResponseParams, ctx: GlobalContext) => PromiseOrVoid,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransactionResponseParams>,\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(handlerOptions || {}),\n partitionHandler: async (data: Data_EthTransaction): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const { transaction } = formatEthData(data)\n return p(transaction)\n }\n return p\n }\n })\n return this\n }\n\n public onEvent(\n handler: (rawLog: LogParams, ctx: GlobalContext) => PromiseOrVoid,\n filter?: AddressOrTypeEventFilter | AddressOrTypeEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TypedEvent>\n ): this {\n let _filters: AddressOrTypeEventFilter[] = []\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else if (filter) {\n _filters.push(filter)\n }\n const chainId = this.getChainId()\n\n this.eventHandlers.push({\n filters: _filters,\n fetchConfig: EthFetchConfig.fromPartial(handlerOptions || {}),\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 ctx = new GlobalContext(\n chainId,\n transaction?.to || '*',\n data.timestamp,\n block,\n log,\n undefined,\n transaction,\n transactionReceipt\n )\n\n await handler(log, ctx)\n return ctx.stopAndGetResult()\n }\n })\n return this\n }\n\n public onTrace(\n signatures: string | string[],\n handler: (trace: Trace, ctx: GlobalContext) => PromiseOrVoid,\n handlerOptions?: HandlerOptions<EthFetchConfig, Trace>,\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(handlerOptions || {}),\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 partitionHandler: async (data: Data_EthTrace): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const { trace } = formatEthData(data)\n if (!trace) return undefined\n return p(trace)\n }\n return p\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: validateAndNormalizeAddress(config.address),\n name: config.name || '',\n network: config.network || EthChainId.ETHEREUM,\n start: config.start || {\n block: 0\n },\n end: config.end,\n baseLabels: config.baseLabels\n }\n if (config.startBlock) {\n this.config.start = {\n block: config.startBlock\n }\n }\n if (config.endBlock) {\n this.config.end = {\n block: config.endBlock\n }\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 handlerOptions?: HandlerOptions<EthFetchConfig, TypedEvent>,\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, handlerOptions, preprocessHandler)\n }\n\n protected onEthEvent(\n handler: (event: TypedEvent | RawEvent, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n filter: DeferredTopicFilter | DeferredTopicFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TypedEvent>,\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(handlerOptions || {}),\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 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 if (handlerOptions?.skipDecoding) {\n await handler(log, ctx)\n return ctx.stopAndGetResult()\n }\n let parsed: LogDescription | null = null\n try {\n parsed = await getCachedParsedLog(data, 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 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 getCachedParsedLog(data, 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 partitionHandler: async (data: Data_EthLog): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const { log } = formatEthData(data)\n if (!log) return undefined\n let parsed: LogDescription | null = null\n try {\n parsed = await getCachedParsedLog(data, processor, log)\n } catch (e) {\n return undefined\n }\n if (parsed) {\n const event: TypedEvent = { ...log, name: parsed.name, args: fixEmptyKey(parsed) }\n return p(event)\n }\n return undefined\n }\n return p\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 handlerOptions?: HandlerOptions<EthFetchConfig, RichBlock>,\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 handlerOptions,\n preprocessHandler\n )\n }\n\n public onTimeInterval(\n handler: (block: RichBlock, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n handlerOptions?: HandlerOptions<EthFetchConfig, RichBlock>,\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 handlerOptions,\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 handlerOptions?: HandlerOptions<EthFetchConfig, RichBlock>,\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(handlerOptions || {}),\n partitionHandler: async (data: Data_EthBlock): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const { block } = formatEthData(data)\n if (!block) return undefined\n return p(block)\n }\n return p\n }\n })\n return this\n }\n\n protected onEthTrace(\n signatures: string | string[],\n handler: (trace: TypedCallTrace, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n handlerOptions?: HandlerOptions<EthFetchConfig, TypedCallTrace>,\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(handlerOptions || {}),\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 partitionHandler: async (data: Data_EthTrace): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const contractView = processor.CreateBoundContractView()\n const contractInterface = contractView.rawContract.interface\n const { trace } = formatEthData(data)\n if (!trace) return undefined\n const sighash = trace.action.input?.slice(0, 10)\n if (!sighash) return undefined\n const fragment = contractInterface.getFunction(sighash)\n if (!fragment) return undefined\n const typedTrace = trace as TypedCallTrace\n typedTrace.name = fragment.name\n typedTrace.functionSignature = fragment.format()\n if (trace.action.input) {\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 }\n }\n return p(typedTrace)\n }\n return p\n }\n })\n return this\n }\n\n public onTrace(\n handler: (event: TypedCallTrace, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,\n handlerOptions?: HandlerOptions<EthFetchConfig, TypedCallTrace>,\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, handlerOptions, preprocessHandler)\n }\n}\n\n// Helper function to get cached or parse log data\nasync function getCachedParsedLog(data: any, processor: any, log: any): Promise<LogDescription | null> {\n // Check if parsed log is already cached on data object\n if ((data as any).__parsedLog !== undefined) {\n return (data as any).__parsedLog\n }\n\n try {\n const parsed = await parseLog(processor, log)\n // Cache the parsed result on the data object\n ;(data as any).__parsedLog = parsed\n return parsed\n } catch (e) {\n // Cache the null result to avoid retrying\n ;(data as any).__parsedLog = null\n throw e\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 l1Fee: 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 RawEvent = Record<string, any>\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 l1Fee: 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 __formattedEthData?: any\n}) {\n // Return cached result if it exists\n if (data.__formattedEthData) {\n return data.__formattedEthData\n }\n\n try {\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\n const result = {\n log,\n block,\n trace,\n transaction,\n transactionReceipt\n }\n\n // Cache the result on the input data object\n data.__formattedEthData = result\n return result\n } catch (e) {\n console.error('Error formatting eth data', e)\n return data\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 start?: TimeOrBlock\n end?: TimeOrBlock\n startBlock?: bigint | number\n endBlock?: bigint | number\n baseLabels?: { [key: string]: string }\n}\n\nexport interface TimeOrBlock {\n block?: bigint | number\n time?: Date\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, validateAndNormalizeAddress } from './eth.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 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 instances = new Set<string>()\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 options = { ...options, address: validateAndNormalizeAddress(options.address) }\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\n ctx.sendTemplateInstance(instance)\n\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 public startInstance(options: Omit<BindOptions, 'network'>, ctx: EthContext) {\n options = { ...options, address: validateAndNormalizeAddress(options.address) }\n const sig = getOptionsSignature({\n address: options.address,\n network: ctx.chainId\n })\n\n if (this.instances.has(sig)) {\n console.debug(`Same address can be bind to one template only once, ignore duplicate bind: ${sig}`)\n return\n }\n\n const processor = this.bindInternal({ ...options, network: ctx.chainId })\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 this.instances.add(sig)\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 backfillTimeIntervalInMinutes = 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: backfillTimeIntervalInMinutes },\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;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 { 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;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 { 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;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 { 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;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 { 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;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 { 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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { EACAggregatorProxy__factory } from \"./EACAggregatorProxy__factory.js\";\nexport { ERC1155__factory } from \"./ERC1155__factory.js\";\nexport { ERC20__factory } from \"./ERC20__factory.js\";\nexport { ERC20Bytes__factory } from \"./ERC20Bytes__factory.js\";\nexport { ERC721__factory } from \"./ERC721__factory.js\";\nexport { WETH9__factory } from \"./WETH9__factory.js\";\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport type { EACAggregatorProxy } from \"./EACAggregatorProxy.js\";\nexport type { ERC1155 } from \"./ERC1155.js\";\nexport type { ERC20 } from \"./ERC20.js\";\nexport type { ERC20Bytes } from \"./ERC20Bytes.js\";\nexport type { ERC721 } from \"./ERC721.js\";\nexport type { WETH9 } from \"./WETH9.js\";\nexport * as factories from \"./factories/index.js\";\nexport { EACAggregatorProxy__factory } from \"./factories/EACAggregatorProxy__factory.js\";\nexport { ERC1155__factory } from \"./factories/ERC1155__factory.js\";\nexport { ERC20__factory } from \"./factories/ERC20__factory.js\";\nexport { ERC20Bytes__factory } from \"./factories/ERC20Bytes__factory.js\";\nexport { ERC721__factory } from \"./factories/ERC721__factory.js\";\nexport { WETH9__factory } from \"./factories/WETH9__factory.js\";\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* 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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { BigNumberish, Overrides } from \"ethers\";\nimport { HandlerOptions } from \"@sentio/sdk\";\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 handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventOwnershipTransferred(\n handler: (event: OwnershipTransferredEvent, ctx: ERC20Context) => void,\n filter?:\n | OwnershipTransferredEventFilter\n | OwnershipTransferredEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, OwnershipTransferredEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC20Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallAllowance(\n handler: (call: AllowanceCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, AllowanceCallTrace>,\n preprocessHandler?: (\n call: AllowanceCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xdd62ed3e\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallApprove(\n handler: (call: ApproveCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, ApproveCallTrace>,\n preprocessHandler?: (\n call: ApproveCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x095ea7b3\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallBalanceOf(\n handler: (call: BalanceOfCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, BalanceOfCallTrace>,\n preprocessHandler?: (\n call: BalanceOfCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x70a08231\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallBurn(\n handler: (call: BurnCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, BurnCallTrace>,\n preprocessHandler?: (\n call: BurnCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x42966c68\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallBurnFrom(\n handler: (call: BurnFromCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, BurnFromCallTrace>,\n preprocessHandler?: (\n call: BurnFromCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x79cc6790\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallDecimals(\n handler: (call: DecimalsCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, DecimalsCallTrace>,\n preprocessHandler?: (\n call: DecimalsCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x313ce567\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallDecreaseAllowance(\n handler: (call: DecreaseAllowanceCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, DecreaseAllowanceCallTrace>,\n preprocessHandler?: (\n call: DecreaseAllowanceCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa457c2d7\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallIncreaseAllowance(\n handler: (call: IncreaseAllowanceCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, IncreaseAllowanceCallTrace>,\n preprocessHandler?: (\n call: IncreaseAllowanceCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x39509351\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallLocker(\n handler: (call: LockerCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, LockerCallTrace>,\n preprocessHandler?: (\n call: LockerCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xd7b96d4e\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallName(\n handler: (call: NameCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, NameCallTrace>,\n preprocessHandler?: (\n call: NameCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x06fdde03\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallOwner(\n handler: (call: OwnerCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, OwnerCallTrace>,\n preprocessHandler?: (\n call: OwnerCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x8da5cb5b\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallRenounceOwnership(\n handler: (call: RenounceOwnershipCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, RenounceOwnershipCallTrace>,\n preprocessHandler?: (\n call: RenounceOwnershipCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x715018a6\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSetLocker(\n handler: (call: SetLockerCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, SetLockerCallTrace>,\n preprocessHandler?: (\n call: SetLockerCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x171060ec\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSymbol(\n handler: (call: SymbolCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, SymbolCallTrace>,\n preprocessHandler?: (\n call: SymbolCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x95d89b41\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTotalSupply(\n handler: (call: TotalSupplyCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TotalSupplyCallTrace>,\n preprocessHandler?: (\n call: TotalSupplyCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x18160ddd\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTransfer(\n handler: (call: TransferCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferCallTrace>,\n preprocessHandler?: (\n call: TransferCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa9059cbb\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTransferFrom(\n handler: (call: TransferFromCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferFromCallTrace>,\n preprocessHandler?: (\n call: TransferFromCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x23b872dd\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTransferOwnership(\n handler: (call: TransferOwnershipCallTrace, ctx: ERC20Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferOwnershipCallTrace>,\n preprocessHandler?: (\n call: TransferOwnershipCallTrace,\n ctx: ERC20Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xf2fde38b\",\n handler as any,\n handlerOptions,\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 handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventOwnershipTransferred(\n handler: (event: OwnershipTransferredEvent, ctx: ERC20Context) => void,\n filter?:\n | OwnershipTransferredEventFilter\n | OwnershipTransferredEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, OwnershipTransferredEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC20Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* 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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport type { BaseContract, Interface } from \"ethers\";\nimport type { ContractRunner } from \"ethers/providers\";\nimport type { TypedEventFilter, TypedEvent, PromiseOrValue } from \"./common.js\";\n\nexport interface ERC20Interface extends Interface {}\n\nexport interface ApprovalEventObject {\n owner: string;\n spender: string;\n value: bigint;\n}\nexport type ApprovalEvent = TypedEvent<\n [string, string, bigint],\n ApprovalEventObject\n>;\n\nexport type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;\n\nexport interface OwnershipTransferredEventObject {\n previousOwner: string;\n newOwner: string;\n}\nexport type OwnershipTransferredEvent = TypedEvent<\n [string, string],\n OwnershipTransferredEventObject\n>;\n\nexport type OwnershipTransferredEventFilter =\n TypedEventFilter<OwnershipTransferredEvent>;\n\nexport interface TransferEventObject {\n from: string;\n to: string;\n value: bigint;\n}\nexport type TransferEvent = TypedEvent<\n [string, string, bigint],\n TransferEventObject\n>;\n\nexport type TransferEventFilter = TypedEventFilter<TransferEvent>;\n\nexport interface ERC20 extends BaseContract {\n connect(runner: null | ContractRunner): this;\n\n interface: ERC20Interface;\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","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, validateAndNormalizeAddress } 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 address: validateAndNormalizeAddress(config.address),\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) => ERC20Processor.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 {\n errorString,\n getProvider,\n GLOBAL_CONFIG,\n mergeProcessResults,\n Plugin,\n PluginManager,\n USER_PROCESSOR\n} from '@sentio/runtime'\nimport { PartitionHandlerManager } from '../core/index.js'\nimport {\n AccountConfig,\n ContractConfig,\n DataBinding,\n HandlerType,\n InitResponse,\n LogFilter,\n LogHandlerConfig,\n PreparedData,\n PreprocessResult,\n ProcessConfigResponse,\n ProcessResult,\n ProcessStreamResponse_Partitions,\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 { GlobalProcessorState } from './base-processor.js'\nimport { validateAndNormalizeAddress } from './eth.js'\nimport { EthChainId } from '@sentio/chain'\nimport { EthContext } from './context.js'\nimport { timeOrBlockToBlockNumber } from '@sentio/sdk/utils'\nimport { HandlerRegister } from '../core/handler-register.js'\n\nexport class EthPlugin extends Plugin {\n name: string = 'EthPlugin'\n handlerRegister = new HandlerRegister()\n\n partitionManager = new PartitionHandlerManager()\n\n async init(config: InitResponse): Promise<void> {\n for (const state of [EthProcessorState.INSTANCE, GlobalProcessorState.INSTANCE, AccountProcessorState.INSTANCE]) {\n for (const processor of state.getValues()) {\n const chainId = processor.getChainId()\n config.chainIds.push(chainId)\n }\n }\n }\n\n async configure(config: ProcessConfigResponse, forChainId?: string) {\n this.handlerRegister.clear(forChainId as EthChainId)\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 if (forChainId !== undefined && forChainId !== chainId.toString()) {\n continue\n }\n const provider = getProvider(chainId)\n const startBlock = await timeOrBlockToBlockNumber(provider, processor.config.start)\n const endBlock = processor.config.end ? await timeOrBlockToBlockNumber(provider, processor.config.end) : undefined\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,\n endBlock\n })\n\n // Step 1. Prepare all the block handlers\n for (const blockHandler of processor.blockHandlers) {\n const handlerId = this.handlerRegister.register(blockHandler.handler, chainId)\n\n this.partitionManager.registerPartitionHandler(HandlerType.ETH_BLOCK, handlerId, blockHandler.partitionHandler)\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 const handlerId = this.handlerRegister.register(traceHandler.handler, chainId)\n\n this.partitionManager.registerPartitionHandler(HandlerType.ETH_TRACE, handlerId, traceHandler.partitionHandler)\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 const handlerId = this.handlerRegister.register(eventsHandler.handler, chainId)\n this.partitionManager.registerPartitionHandler(HandlerType.ETH_LOG, handlerId, eventsHandler.partitionHandler)\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 if (forChainId !== undefined && forChainId !== chainId.toString()) {\n continue\n }\n let startBlock, endBlock: bigint | undefined\n try {\n const provider = getProvider(chainId)\n startBlock = await timeOrBlockToBlockNumber(provider, processor.config.start)\n endBlock = processor.config.end ? await timeOrBlockToBlockNumber(provider, processor.config.end) : undefined\n } catch (e) {\n console.error('failed to get start/end block', e)\n startBlock = processor.config.start?.block != undefined ? BigInt(processor.config.start.block) : undefined\n endBlock = processor.config.end?.block != undefined ? BigInt(processor.config.end.block) : undefined\n }\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,\n endBlock\n })\n\n for (const blockHandler of processor.blockHandlers) {\n const handlerId = this.handlerRegister.register(blockHandler.handler, chainId)\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 const handlerId = this.handlerRegister.register(transactionHandler.handler, chainId)\n this.partitionManager.registerPartitionHandler(\n HandlerType.ETH_TRANSACTION,\n handlerId,\n transactionHandler.partitionHandler\n )\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 const handlerId = this.handlerRegister.register(traceHandler.handler, chainId)\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 for (const eventsHandler of processor.eventHandlers) {\n // associate id with filter\n const handlerId = this.handlerRegister.register(eventsHandler.handler, processor.getChainId())\n const logConfig: LogHandlerConfig = {\n handlerId: handlerId,\n handlerName: eventsHandler.handlerName,\n filters: [],\n fetchConfig: eventsHandler.fetchConfig\n }\n\n if (!eventsHandler.filters || eventsHandler.filters.length === 0) {\n // if no filter, then we assume all logs\n logConfig.filters.push({\n topics: []\n })\n } else {\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 }\n contractConfig.logConfigs.push(logConfig)\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 if (forChainId !== undefined && forChainId !== processor.getChainId().toString()) {\n continue\n }\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 const handlerId = this.handlerRegister.register(eventsHandler.handler, processor.getChainId())\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 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\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 async partition(request: DataBinding): Promise<ProcessStreamResponse_Partitions> {\n let data: any\n switch (request.handlerType) {\n case HandlerType.ETH_LOG:\n if (!request.data?.ethLog) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"ethLog can't be empty\")\n }\n data = request.data.ethLog\n break\n case HandlerType.ETH_TRACE:\n if (!request.data?.ethTrace) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"ethTrace can't be empty\")\n }\n data = request.data.ethTrace\n break\n case HandlerType.ETH_BLOCK:\n if (!request.data?.ethBlock) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"ethBlock can't be empty\")\n }\n data = request.data.ethBlock\n break\n case HandlerType.ETH_TRANSACTION:\n if (!request.data?.ethTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"ethTransaction can't be empty\")\n }\n data = request.data.ethTransaction\n break\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n const partitions = await this.partitionManager.processPartitionForHandlerType(\n request.handlerType,\n request.handlerIds,\n data\n )\n return {\n partitions\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.startInstance(\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 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.handlerRegister.getHandlerById(request.chainId, handlerId)\n const promise = handler(ethLog, preparedData).catch((e: any) => {\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.handlerRegister\n .getHandlerById(binding.chainId, handlerId)(ethTrace, preparedData)\n .catch((e: any) => {\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.handlerRegister\n .getHandlerById(binding.chainId, handlerId)(ethBlock, preparedData)\n .catch((e: any) => {\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.handlerRegister\n .getHandlerById(binding.chainId, handlerId)(ethTransaction, preparedData)\n .catch((e: any) => {\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(\"\"));","import { TimeOrBlock } from 'eth/bind-options.js'\nimport { Block, JsonRpcProvider, EthersError } from 'ethers'\n\nasync function getBlockSafely(provider: JsonRpcProvider, blockNumber: number | string): Promise<Block> {\n const block = await provider.getBlock(blockNumber)\n if (!block) {\n throw new Error(`Block ${blockNumber} not found.`)\n }\n return block\n}\n\nexport async function estimateBlockNumberAtDate(\n provider: JsonRpcProvider,\n targetDate: Date,\n startBlock?: number\n): Promise<number | undefined> {\n // Convert JS Date to Unix timestamp in hex\n const timestampHex = '0x' + Math.floor(targetDate.getTime()).toString(16)\n\n // You can customize these based on how your RPC expects it\n // Ensure rangeStart is hex if defined, else default to \"earliest\"\n const rangeStart = startBlock !== undefined ? '0x' + startBlock.toString(16) : 'earliest'\n\n const rangeEnd = 'latest'\n const strategy = 'LE' // or \"GE\", depending on your use case\n\n let result\n try {\n result = await provider.send('sentio_estimateBlockNumberAtDate', [timestampHex, rangeStart, rangeEnd, strategy])\n } catch (e) {\n const serverError = e as EthersError\n if (\n serverError.code === 'SERVER_ERROR' ||\n serverError.code === 'UNKNOWN_ERROR' ||\n serverError.code === 'UNSUPPORTED_OPERATION'\n ) {\n return await estimateBlockNumberAtDateSlow(provider, targetDate, startBlock)\n }\n throw e\n }\n\n if (result === null) {\n return undefined\n }\n\n return parseInt(result, 16)\n}\n\nexport async function estimateBlockNumberAtDateSlow(\n provider: JsonRpcProvider,\n targetDate: Date,\n startBlock?: number\n): Promise<number | undefined> {\n // Convert the Date object to a Unix timestamp (in seconds)\n const targetTimestamp = Math.floor(targetDate.getTime() / 1000)\n\n // Step 1: Get the current block number and its timestamp\n const latestBlock = await getBlockSafely(provider, 'latest')\n const earliestBlockNumber = startBlock !== undefined ? startBlock : 0\n const earliestBlock = await getBlockSafely(provider, earliestBlockNumber)\n\n // Binary search initialization\n let low = earliestBlock.number\n let high = latestBlock.number\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2)\n const midBlock = await getBlockSafely(provider, mid)\n\n if (midBlock.timestamp === targetTimestamp) {\n return midBlock.number // Exact match\n } else if (midBlock.timestamp < targetTimestamp) {\n low = mid + 1 // Target is in the upper half\n } else {\n high = mid - 1 // Target is in the lower half\n }\n }\n\n // If exact timestamp is not found, return undefined\n if (high === -1) return undefined\n\n const closestBlock = await getBlockSafely(provider, high)\n return closestBlock.number\n}\n\nexport async function timeOrBlockToBlockNumber(provider: JsonRpcProvider, timeOrBlock: TimeOrBlock): Promise<bigint> {\n if (timeOrBlock.block) {\n return BigInt(timeOrBlock.block)\n }\n if (!timeOrBlock.time) {\n return 0n\n }\n const block = await estimateBlockNumberAtDate(provider, timeOrBlock.time)\n if (!block) {\n throw new Error('Block not found')\n }\n return BigInt(block)\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","// import { BigDecimal } from '../core/big-decimal.js'\n// import { Numberish } from '../core/index.js'\n// import { MetricValue } from '@sentio/protos'\n\nexport function bytesToBigInt(bytes: Uint8Array) {\n let intValue = BigInt(0)\n for (let i = 0; i < bytes.length; i++) {\n intValue = intValue * BigInt(256) + BigInt(bytes[i])\n }\n return intValue\n}\n\n// export function metricValueToNumberish(v: MetricValue): Numberish {\n// if (v.doubleValue) {\n// return v.doubleValue\n// }\n// if (v.bigInteger) {\n// let intValue = bytesToBigInt(v.bigInteger.data)\n// if (v.bigInteger.negative) {\n// intValue = -intValue\n// }\n// return intValue\n// }\n//\n// if (v.bigDecimal) {\n// return new BigDecimal(v.bigDecimal)\n// }\n//\n// throw Error(\"MetricValue doesn't contain any of possible value\")\n// }\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { getERC20Contract } from '../eth/builtin/erc20.js'\nimport { getERC20BytesContract } from '../eth/builtin/erc20bytes.js'\nimport { BigDecimal, scaleDown } from '../core/big-decimal.js'\nimport { PromiseOrValue } from '../eth/builtin/internal/common.js'\nimport { decodeBytes32String } from 'ethers'\nimport { EthChainId, EthContext } from '../eth/index.js'\nimport { BaseContext } from '../core/index.js'\nimport { LRUCache } from 'lru-cache'\n\nexport interface TokenInfo {\n symbol: string\n name: string\n decimal: number\n}\n\nexport const NATIVE_ETH = {\n symbol: 'ETH',\n decimal: 18,\n name: 'Native ETH'\n}\n\nconst TOKEN_INFOS = new LRUCache<string, Promise<TokenInfo>>({\n max: 10000,\n ttl: 1000 * 60 * 60 // 1 hour\n})\n\nasync function getTokenInfoPromise(\n symbol: PromiseOrValue<string> | string,\n name: PromiseOrValue<string> | string,\n decimal: PromiseOrValue<bigint>\n): Promise<TokenInfo> {\n return {\n symbol: await symbol,\n name: await name,\n decimal: Number(await decimal)\n }\n}\n\nexport async function getERC20TokenInfo(\n contextOrNetworkish: EthContext | EthChainId,\n tokenAddress: string\n): Promise<TokenInfo> {\n let chainId: EthChainId\n if (contextOrNetworkish instanceof BaseContext) {\n chainId = contextOrNetworkish.getChainId()\n } else {\n chainId = contextOrNetworkish || EthChainId.ETHEREUM\n }\n\n const key = chainId + tokenAddress\n const res = TOKEN_INFOS.get(key)\n if (res) {\n return res\n }\n const contract = getERC20Contract(chainId, tokenAddress)\n const bytesContract = getERC20BytesContract(chainId, tokenAddress)\n\n let name = ''\n try {\n name = await contract.name()\n } catch (e) {\n name = decodeBytes32String(await bytesContract.name())\n }\n\n let symbol = ''\n try {\n symbol = await contract.symbol()\n } catch (e) {\n symbol = decodeBytes32String(await bytesContract.symbol())\n }\n\n const decimal = await contract.decimals()\n const info = getTokenInfoPromise(symbol, name, decimal)\n\n TOKEN_INFOS.set(key, info)\n return info\n}\n\nexport async function getER20NormalizedAmount(\n contextOrNetworkish: EthContext | EthChainId,\n tokenAddress: string,\n amount: bigint\n): Promise<BigDecimal> {\n const tokenInfo = await getERC20TokenInfo(contextOrNetworkish, tokenAddress)\n return scaleDown(amount, tokenInfo.decimal)\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport * from \"./internal/erc20bytes-processor.js\";\nexport * from \"./internal/erc20bytes-test-utils.js\";\nexport * from \"./internal/ERC20Bytes.js\";\nexport * from \"./internal/factories/ERC20Bytes__factory.js\";\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { BigNumberish, Overrides } from \"ethers\";\nimport { HandlerOptions } from \"@sentio/sdk\";\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 { ERC20Bytes__factory } from \"./index.js\";\nimport {\n ERC20Bytes,\n ApprovalEvent,\n ApprovalEventFilter,\n TransferEvent,\n TransferEventFilter,\n} from \"./ERC20Bytes.js\";\n\nexport interface NameCallObject {}\n\nexport type NameCallTrace = TypedCallTrace<[], NameCallObject>;\n\nexport interface ApproveCallObject {\n spender: string;\n value: 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 TransferFromCallObject {\n from: string;\n to: string;\n value: bigint;\n}\n\nexport type TransferFromCallTrace = TypedCallTrace<\n [string, string, bigint],\n TransferFromCallObject\n>;\n\nexport interface DecimalsCallObject {}\n\nexport type DecimalsCallTrace = TypedCallTrace<[], DecimalsCallObject>;\n\nexport interface BalanceOfCallObject {\n who: string;\n}\n\nexport type BalanceOfCallTrace = TypedCallTrace<[string], BalanceOfCallObject>;\n\nexport interface SymbolCallObject {}\n\nexport type SymbolCallTrace = TypedCallTrace<[], SymbolCallObject>;\n\nexport interface TransferCallObject {\n to: string;\n value: bigint;\n}\n\nexport type TransferCallTrace = TypedCallTrace<\n [string, bigint],\n TransferCallObject\n>;\n\nexport interface AllowanceCallObject {\n owner: string;\n spender: string;\n}\n\nexport type AllowanceCallTrace = TypedCallTrace<\n [string, string],\n AllowanceCallObject\n>;\n\nconst templateContract = ERC20Bytes__factory.connect(\"0x0\", DummyProvider);\n\nexport class ERC20BytesContractView extends ContractView<ERC20Bytes> {\n constructor(contract: ERC20Bytes) {\n super(contract);\n this.callStatic.contract = contract;\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 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 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 balanceOf(\n who: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"balanceOf(address)\")(\n who,\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 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 callStatic = {\n contract: this.contract,\n\n async approve(\n spender: string,\n value: 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, value, 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 value: 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(from, to, value, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async transfer(\n to: string,\n value: 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(to, value, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n };\n\n encodeCall = {\n name(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"name\", \"function name()\", []);\n },\n approve(\n spender: string,\n value: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"approve\",\n \"function approve(address,uint256)\",\n [spender, value],\n );\n },\n totalSupply(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"totalSupply\",\n \"function totalSupply()\",\n [],\n );\n },\n transferFrom(\n from: string,\n to: string,\n value: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"transferFrom\",\n \"function transferFrom(address,address,uint256)\",\n [from, to, value],\n );\n },\n decimals(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"decimals\", \"function decimals()\", []);\n },\n balanceOf(who: string, callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"balanceOf\",\n \"function balanceOf(address)\",\n [who],\n );\n },\n symbol(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"symbol\", \"function symbol()\", []);\n },\n transfer(\n to: string,\n value: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"transfer\",\n \"function transfer(address,uint256)\",\n [to, value],\n );\n },\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 };\n}\n\nexport class ERC20BytesBoundContractView extends BoundContractView<\n ERC20Bytes,\n ERC20BytesContractView\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 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 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 balanceOf(who: string, overrides?: Overrides): Promise<bigint> {\n return await this.view.balanceOf(\n who,\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 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 callStatic = {\n view: this.view,\n context: this.context,\n\n async approve(\n spender: string,\n value: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.approve(\n spender,\n value,\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 value: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.transferFrom(\n from,\n to,\n value,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async transfer(\n to: string,\n value: BigNumberish,\n overrides?: Overrides,\n ): Promise<boolean> {\n return await this.view.callStatic.transfer(\n to,\n value,\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 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 approve(\n spender: string,\n value: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.approve(spender, value, {\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 transferFrom(\n from: string,\n to: string,\n value: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.transferFrom(from, to, value, {\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 balanceOf(who: string, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.balanceOf(who, {\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 transfer(\n to: string,\n value: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.transfer(to, value, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\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 };\n}\n\nexport type ERC20BytesContext = ContractContext<\n ERC20Bytes,\n ERC20BytesBoundContractView\n>;\n\nexport class ERC20BytesProcessor extends BaseProcessor<\n ERC20Bytes,\n ERC20BytesBoundContractView\n> {\n onEventApproval(\n handler: (event: ApprovalEvent, ctx: ERC20BytesContext) => void,\n filter?: ApprovalEventFilter | ApprovalEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalEvent>,\n preprocessHandler?: (\n event: ApprovalEvent,\n ctx: ERC20BytesContext,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC20BytesContext) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferEvent>,\n preprocessHandler?: (\n event: TransferEvent,\n ctx: ERC20BytesContext,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallName(\n handler: (call: NameCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, NameCallTrace>,\n preprocessHandler?: (\n call: NameCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x06fdde03\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallApprove(\n handler: (call: ApproveCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, ApproveCallTrace>,\n preprocessHandler?: (\n call: ApproveCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x095ea7b3\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTotalSupply(\n handler: (call: TotalSupplyCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TotalSupplyCallTrace>,\n preprocessHandler?: (\n call: TotalSupplyCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x18160ddd\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTransferFrom(\n handler: (call: TransferFromCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferFromCallTrace>,\n preprocessHandler?: (\n call: TransferFromCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x23b872dd\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallDecimals(\n handler: (call: DecimalsCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, DecimalsCallTrace>,\n preprocessHandler?: (\n call: DecimalsCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x313ce567\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallBalanceOf(\n handler: (call: BalanceOfCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, BalanceOfCallTrace>,\n preprocessHandler?: (\n call: BalanceOfCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x70a08231\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSymbol(\n handler: (call: SymbolCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, SymbolCallTrace>,\n preprocessHandler?: (\n call: SymbolCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x95d89b41\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTransfer(\n handler: (call: TransferCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferCallTrace>,\n preprocessHandler?: (\n call: TransferCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa9059cbb\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallAllowance(\n handler: (call: AllowanceCallTrace, ctx: ERC20BytesContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, AllowanceCallTrace>,\n preprocessHandler?: (\n call: AllowanceCallTrace,\n ctx: ERC20BytesContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xdd62ed3e\",\n handler as any,\n handlerOptions,\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 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(): ERC20BytesBoundContractView {\n const view = getERC20BytesContract(\n this.config.network,\n this.config.address,\n );\n return new ERC20BytesBoundContractView(this.config.address, view);\n }\n\n public static bind(options: BindOptions): ERC20BytesProcessor {\n if (!options.name) {\n options.name = \"ERC20Bytes\";\n }\n let processor = getProcessor(options) as ERC20BytesProcessor;\n if (!processor) {\n processor = new ERC20BytesProcessor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n}\n\nexport class ERC20BytesProcessorTemplate extends BaseProcessorTemplate<\n ERC20Bytes,\n ERC20BytesBoundContractView\n> {\n bindInternal(options: BindOptions) {\n if (!options.name) {\n options.name = \"ERC20Bytes\";\n }\n let processor = getProcessor(options) as ERC20BytesProcessor;\n if (!processor) {\n processor = new ERC20BytesProcessor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n\n onEventApproval(\n handler: (event: ApprovalEvent, ctx: ERC20BytesContext) => void,\n filter?: ApprovalEventFilter | ApprovalEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalEvent>,\n preprocessHandler?: (\n event: ApprovalEvent,\n ctx: ERC20BytesContext,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC20BytesContext) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferEvent>,\n preprocessHandler?: (\n event: TransferEvent,\n ctx: ERC20BytesContext,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n}\n\nexport function getERC20BytesContract(\n chainId: EthChainId,\n address: string,\n): ERC20BytesContractView {\n let contract = getContractByABI(\n \"ERC20Bytes\",\n address,\n chainId,\n ) as ERC20BytesContractView;\n if (!contract) {\n const rawContract = ERC20Bytes__factory.connect(\n address,\n getProvider(chainId),\n );\n contract = new ERC20BytesContractView(rawContract);\n addContractByABI(\"ERC20Bytes\", address, chainId, contract);\n }\n return contract;\n}\n\nexport function getERC20BytesContractOnContext(\n context: EthContext,\n address: string,\n): ERC20BytesBoundContractView {\n const view = getERC20BytesContract(context.getChainId(), address);\n const boundView = new ERC20BytesBoundContractView(address, view);\n boundView.context = context;\n if (boundView.callStatic) {\n boundView.callStatic.context = context;\n }\n return boundView;\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { LogParams } from \"ethers/providers\";\nimport { EthChainId } from \"@sentio/sdk/eth\";\nimport { ApprovalEventObject, TransferEventObject } from \"./ERC20Bytes.js\";\nimport { getERC20BytesContract } from \"./erc20bytes-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 = getERC20BytesContract(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 mockTransferLog(\n contractAddress: string,\n event: TransferEventObject,\n): LogParams {\n const contract = getERC20BytesContract(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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport type { BaseContract, Interface } from \"ethers\";\nimport type { ContractRunner } from \"ethers/providers\";\nimport type { TypedEventFilter, TypedEvent, PromiseOrValue } from \"./common.js\";\n\nexport interface ERC20BytesInterface extends Interface {}\n\nexport interface ApprovalEventObject {\n owner: string;\n spender: string;\n value: bigint;\n}\nexport type ApprovalEvent = TypedEvent<\n [string, string, bigint],\n ApprovalEventObject\n>;\n\nexport type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;\n\nexport interface TransferEventObject {\n from: string;\n to: string;\n value: bigint;\n}\nexport type TransferEvent = TypedEvent<\n [string, string, bigint],\n TransferEventObject\n>;\n\nexport type TransferEventFilter = TypedEventFilter<TransferEvent>;\n\nexport interface ERC20Bytes extends BaseContract {\n connect(runner: null | ContractRunner): this;\n\n interface: ERC20BytesInterface;\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/**\n * @module LRUCache\n */\n\n// module-private names and types\n// this provides the default Perf object source.\n// it can be passed in via configuration to override it\n// for a single LRU object.\nexport type Perf = { now: () => number }\nconst defaultPerf: Perf =\n (\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ) ?\n performance\n : Date\n\nconst warned = new Set<string>()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n typeof process === 'object' && !!process ?\n process\n : {}) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n msg: string,\n type: string,\n code: string,\n fn: ForC,\n) => {\n typeof PROCESS.emitWarning === 'function' ?\n PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort?: (...a: any[]) => any\n _onabort: ((...a: any[]) => any)[] = []\n reason?: any\n aborted: boolean = false\n addEventListener(_: string, fn: (...a: any[]) => any) {\n this._onabort.push(fn)\n }\n }\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill()\n }\n signal = new AS()\n abort(reason: any) {\n if (this.signal.aborted) return\n //@ts-ignore\n this.signal.reason = reason\n //@ts-ignore\n this.signal.aborted = true\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason)\n }\n this.signal.onabort?.(reason)\n }\n }\n let printACPolyfillWarning =\n PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning) return\n printACPolyfillWarning = false\n emitWarning(\n 'AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n 'NO_ABORT_CONTROLLER',\n 'ENOTSUP',\n warnACPolyfill,\n )\n }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n !isPosInt(max) ? null\n : max <= Math.pow(2, 8) ? Uint8Array\n : max <= Math.pow(2, 16) ? Uint16Array\n : max <= Math.pow(2, 32) ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER ? ZeroArray\n : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array<number> {\n constructor(size: number) {\n super(size)\n this.fill(0)\n }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n heap: NumberArray\n length: number\n // private constructor\n static #constructing: boolean = false\n static create(max: number): StackLike {\n const HeapCls = getUintArray(max)\n if (!HeapCls) return []\n Stack.#constructing = true\n const s = new Stack(max, HeapCls)\n Stack.#constructing = false\n return s\n }\n constructor(\n max: number,\n HeapCls: { new (n: number): NumberArray },\n ) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)')\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max)\n this.length = 0\n }\n push(n: Index) {\n this.heap[this.length++] = n\n }\n pop(): Index {\n return this.heap[--this.length] as Index\n }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch<V> = Promise<V | undefined> & {\n __returned: BackgroundFetch<V> | undefined\n __abortController: AbortController\n __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask<K, V> = [\n value: V,\n key: K,\n reason: LRUCache.DisposeReason,\n]\n\nexport namespace LRUCache {\n /**\n * An integer greater than 0, reflecting the calculated size of items\n */\n export type Size = number\n\n /**\n * Integer greater than 0, representing some number of milliseconds, or the\n * time at which a TTL started counting from.\n */\n export type Milliseconds = number\n\n /**\n * An integer greater than 0, reflecting a number of items\n */\n export type Count = number\n\n /**\n * The reason why an item was removed from the cache, passed\n * to the {@link Disposer} methods.\n *\n * - `evict`: The item was evicted because it is the least recently used,\n * and the cache is full.\n * - `set`: A new value was set, overwriting the old value being disposed.\n * - `delete`: The item was explicitly deleted, either by calling\n * {@link LRUCache#delete}, {@link LRUCache#clear}, or\n * {@link LRUCache#set} with an undefined value.\n * - `expire`: The item was removed due to exceeding its TTL.\n * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n * `undefined` or was aborted, causing the item to be deleted.\n */\n export type DisposeReason =\n | 'evict'\n | 'set'\n | 'delete'\n | 'expire'\n | 'fetch'\n /**\n * A method called upon item removal, passed as the\n * {@link OptionsBase.dispose} and/or\n * {@link OptionsBase.disposeAfter} options.\n */\n export type Disposer<K, V> = (\n value: V,\n key: K,\n reason: DisposeReason,\n ) => void\n\n /**\n * The reason why an item was added to the cache, passed\n * to the {@link Inserter} methods.\n *\n * - `add`: the item was not found in the cache, and was added\n * - `update`: the item was in the cache, with the same value provided\n * - `replace`: the item was in the cache, and replaced\n */\n export type InsertReason = 'add' | 'update' | 'replace'\n\n /**\n * A method called upon item insertion, passed as the\n * {@link OptionsBase.insert}\n */\n export type Inserter<K, V> = (\n value: V,\n key: K,\n reason: InsertReason,\n ) => void\n\n /**\n * A function that returns the effective calculated size\n * of an entry in the cache.\n */\n export type SizeCalculator<K, V> = (value: V, key: K) => Size\n\n /**\n * Options provided to the\n * {@link OptionsBase.fetchMethod} function.\n */\n export interface FetcherOptions<K, V, FC = unknown> {\n signal: AbortSignal\n options: FetcherFetchOptions<K, V, FC>\n /**\n * Object provided in the {@link FetchOptions.context} option to\n * {@link LRUCache#fetch}\n */\n context: FC\n }\n\n /**\n * Occasionally, it may be useful to track the internal behavior of the\n * cache, particularly for logging, debugging, or for behavior within the\n * `fetchMethod`. To do this, you can pass a `status` object to the\n * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n *\n * The `status` option should be a plain JavaScript object. The following\n * fields will be set on it appropriately, depending on the situation.\n */\n export interface Status<V> {\n /**\n * The status of a set() operation.\n *\n * - add: the item was not found in the cache, and was added\n * - update: the item was in the cache, with the same value provided\n * - replace: the item was in the cache, and replaced\n * - miss: the item was not added to the cache for some reason\n */\n set?: 'add' | 'update' | 'replace' | 'miss'\n\n /**\n * the ttl stored for the item, or undefined if ttls are not used.\n */\n ttl?: Milliseconds\n\n /**\n * the start time for the item, or undefined if ttls are not used.\n */\n start?: Milliseconds\n\n /**\n * The timestamp used for TTL calculation\n */\n now?: Milliseconds\n\n /**\n * the remaining ttl for the item, or undefined if ttls are not used.\n */\n remainingTTL?: Milliseconds\n\n /**\n * The calculated size for the item, if sizes are used.\n */\n entrySize?: Size\n\n /**\n * The total calculated size of the cache, if sizes are used.\n */\n totalCalculatedSize?: Size\n\n /**\n * A flag indicating that the item was not stored, due to exceeding the\n * {@link OptionsBase.maxEntrySize}\n */\n maxEntrySizeExceeded?: true\n\n /**\n * The old value, specified in the case of `set:'update'` or\n * `set:'replace'`\n */\n oldValue?: V\n\n /**\n * The results of a {@link LRUCache#has} operation\n *\n * - hit: the item was found in the cache\n * - stale: the item was found in the cache, but is stale\n * - miss: the item was not found in the cache\n */\n has?: 'hit' | 'stale' | 'miss'\n\n /**\n * The status of a {@link LRUCache#fetch} operation.\n * Note that this can change as the underlying fetch() moves through\n * various states.\n *\n * - inflight: there is another fetch() for this key which is in process\n * - get: there is no {@link OptionsBase.fetchMethod}, so\n * {@link LRUCache#get} was called.\n * - miss: the item is not in cache, and will be fetched.\n * - hit: the item is in the cache, and was resolved immediately.\n * - stale: the item is in the cache, but stale.\n * - refresh: the item is in the cache, and not stale, but\n * {@link FetchOptions.forceRefresh} was specified.\n */\n fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n /**\n * The {@link OptionsBase.fetchMethod} was called\n */\n fetchDispatched?: true\n\n /**\n * The cached value was updated after a successful call to\n * {@link OptionsBase.fetchMethod}\n */\n fetchUpdated?: true\n\n /**\n * The reason for a fetch() rejection. Either the error raised by the\n * {@link OptionsBase.fetchMethod}, or the reason for an\n * AbortSignal.\n */\n fetchError?: Error\n\n /**\n * The fetch received an abort signal\n */\n fetchAborted?: true\n\n /**\n * The abort signal received was ignored, and the fetch was allowed to\n * continue.\n */\n fetchAbortIgnored?: true\n\n /**\n * The fetchMethod promise resolved successfully\n */\n fetchResolved?: true\n\n /**\n * The fetchMethod promise was rejected\n */\n fetchRejected?: true\n\n /**\n * The status of a {@link LRUCache#get} operation.\n *\n * - fetching: The item is currently being fetched. If a previous value\n * is present and allowed, that will be returned.\n * - stale: The item is in the cache, and is stale.\n * - hit: the item is in the cache\n * - miss: the item is not in the cache\n */\n get?: 'stale' | 'hit' | 'miss'\n\n /**\n * A fetch or get operation returned a stale value.\n */\n returnedStale?: true\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#fetch}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link OptionsBase.noDeleteOnFetchRejection},\n * {@link OptionsBase.allowStaleOnFetchRejection},\n * {@link FetchOptions.forceRefresh}, and\n * {@link FetcherOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the fetchMethod is called.\n */\n export interface FetcherFetchOptions<K, V, FC = unknown>\n extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n status?: Status<V>\n size?: Size\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#fetch} method.\n */\n export interface FetchOptions<K, V, FC>\n extends FetcherFetchOptions<K, V, FC> {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.fetchMethod} as\n * the {@link FetcherOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n signal?: AbortSignal\n status?: Status<V>\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface FetchOptionsWithContext<K, V, FC>\n extends FetchOptions<K, V, FC> {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is\n * `undefined` or `void`\n */\n export interface FetchOptionsNoContext<K, V>\n extends FetchOptions<K, V, undefined> {\n context?: undefined\n }\n\n export interface MemoOptions<K, V, FC = unknown>\n extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.memoMethod} as\n * the {@link MemoizerOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n status?: Status<V>\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface MemoOptionsWithContext<K, V, FC>\n extends MemoOptions<K, V, FC> {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is\n * `undefined` or `void`\n */\n export interface MemoOptionsNoContext<K, V>\n extends MemoOptions<K, V, undefined> {\n context?: undefined\n }\n\n /**\n * Options provided to the\n * {@link OptionsBase.memoMethod} function.\n */\n export interface MemoizerOptions<K, V, FC = unknown> {\n options: MemoizerMemoOptions<K, V, FC>\n /**\n * Object provided in the {@link MemoOptions.context} option to\n * {@link LRUCache#memo}\n */\n context: FC\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#memo}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link MemoOptions.forceRefresh}, and\n * {@link MemoOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.memoMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the memoMethod is called.\n */\n export interface MemoizerMemoOptions<K, V, FC = unknown>\n extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n > {\n status?: Status<V>\n size?: Size\n start?: Milliseconds\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#has} method.\n */\n export interface HasOptions<K, V, FC>\n extends Pick<OptionsBase<K, V, FC>, 'updateAgeOnHas'> {\n status?: Status<V>\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#get} method.\n */\n export interface GetOptions<K, V, FC>\n extends Pick<\n OptionsBase<K, V, FC>,\n 'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n > {\n status?: Status<V>\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#peek} method.\n */\n export interface PeekOptions<K, V, FC>\n extends Pick<OptionsBase<K, V, FC>, 'allowStale'> {}\n\n /**\n * Options that may be passed to the {@link LRUCache#set} method.\n */\n export interface SetOptions<K, V, FC>\n extends Pick<\n OptionsBase<K, V, FC>,\n 'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n > {\n /**\n * If size tracking is enabled, then setting an explicit size\n * in the {@link LRUCache#set} call will prevent calling the\n * {@link OptionsBase.sizeCalculation} function.\n */\n size?: Size\n /**\n * If TTL tracking is enabled, then setting an explicit start\n * time in the {@link LRUCache#set} call will override the\n * default time from `performance.now()` or `Date.now()`.\n *\n * Note that it must be a valid value for whichever time-tracking\n * method is in use.\n */\n start?: Milliseconds\n status?: Status<V>\n }\n\n /**\n * The type signature for the {@link OptionsBase.fetchMethod} option.\n */\n export type Fetcher<K, V, FC = unknown> = (\n key: K,\n staleValue: V | undefined,\n options: FetcherOptions<K, V, FC>,\n ) => Promise<V | undefined | void> | V | undefined | void\n\n /**\n * the type signature for the {@link OptionsBase.memoMethod} option.\n */\n export type Memoizer<K, V, FC = unknown> = (\n key: K,\n staleValue: V | undefined,\n options: MemoizerOptions<K, V, FC>,\n ) => V\n\n /**\n * Options which may be passed to the {@link LRUCache} constructor.\n *\n * Most of these may be overridden in the various options that use\n * them.\n *\n * Despite all being technically optional, the constructor requires that\n * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n *\n * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n * (and in fact required by the type definitions here) that the cache\n * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n * unbounded storage.\n *\n * All options are also available on the {@link LRUCache} instance, making\n * it safe to pass an LRUCache instance as the options argumemnt to\n * make another empty cache of the same type.\n *\n * Some options are marked as read-only, because changing them after\n * instantiation is not safe. Changing any of the other options will of\n * course only have an effect on subsequent method calls.\n */\n export interface OptionsBase<K, V, FC> {\n /**\n * The maximum number of items to store in the cache before evicting\n * old entries. This is read-only on the {@link LRUCache} instance,\n * and may not be overridden.\n *\n * If set, then storage space will be pre-allocated at construction\n * time, and the cache will perform significantly faster.\n *\n * Note that significantly fewer items may be stored, if\n * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n * set.\n *\n * **It is strongly recommended to set a `max` to prevent unbounded growth\n * of the cache.**\n */\n max?: Count\n\n /**\n * Max time in milliseconds for items to live in cache before they are\n * considered stale. Note that stale items are NOT preemptively removed by\n * default, and MAY live in the cache, contributing to its LRU max, long\n * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n * set.\n *\n * If set to `0` (the default value), then that means \"do not track\n * TTL\", not \"expire immediately\".\n *\n * Also, as this cache is optimized for LRU/MRU operations, some of\n * the staleness/TTL checks will reduce performance, as they will incur\n * overhead by deleting items.\n *\n * This is not primarily a TTL cache, and does not make strong TTL\n * guarantees. There is no pre-emptive pruning of expired items, but you\n * _may_ set a TTL on the cache, and it will treat expired items as missing\n * when they are fetched, and delete them.\n *\n * Optional, but must be a non-negative integer in ms if specified.\n *\n * This may be overridden by passing an options object to `cache.set()`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if ttl tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n * and `ttlAutopurge` is not set, then a warning will be emitted\n * cautioning about the potential for unbounded memory consumption.\n * (The TypeScript definitions will also discourage this.)\n */\n ttl?: Milliseconds\n\n /**\n * Minimum amount of time in ms in which to check for staleness.\n * Defaults to 1, which means that the current time is checked\n * at most once per millisecond.\n *\n * Set to 0 to check the current time every time staleness is tested.\n * (This reduces performance, and is theoretically unnecessary.)\n *\n * Setting this to a higher value will improve performance somewhat\n * while using ttl tracking, albeit at the expense of keeping stale\n * items around a bit longer than their TTLs would indicate.\n *\n * @default 1\n */\n ttlResolution?: Milliseconds\n\n /**\n * Preemptively remove stale items from the cache.\n *\n * Note that this may *significantly* degrade performance, especially if\n * the cache is storing a large number of items. It is almost always best\n * to just leave the stale items in the cache, and let them fall out as new\n * items are added.\n *\n * Note that this means that {@link OptionsBase.allowStale} is a bit\n * pointless, as stale items will be deleted almost as soon as they\n * expire.\n *\n * Use with caution!\n */\n ttlAutopurge?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever it is retrieved from cache with\n * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n * of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n */\n updateAgeOnGet?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever its presence in the cache is\n * checked with {@link LRUCache#has}, causing it to not expire. (It can\n * still fall out of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n */\n updateAgeOnHas?: boolean\n\n /**\n * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n * stale data, if available.\n *\n * By default, if you set `ttl`, stale items will only be deleted from the\n * cache when you `get(key)`. That is, it's not preemptively pruning items,\n * unless {@link OptionsBase.ttlAutopurge} is set.\n *\n * If you set `allowStale:true`, it'll return the stale value *as well as*\n * deleting it. If you don't set this, then it'll return `undefined` when\n * you try to get a stale entry.\n *\n * Note that when a stale entry is fetched, _even if it is returned due to\n * `allowStale` being set_, it is removed from the cache immediately. You\n * can suppress this behavior by setting\n * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n * the options provided to {@link LRUCache#get}.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n * The `cache.has()` method will always return `false` for stale items.\n *\n * Only relevant if a ttl is set.\n */\n allowStale?: boolean\n\n /**\n * Function that is called on items when they are dropped from the\n * cache, as `dispose(value, key, reason)`.\n *\n * This can be handy if you want to close file descriptors or do\n * other cleanup tasks when items are no longer stored in the cache.\n *\n * **NOTE**: It is called _before_ the item has been fully removed\n * from the cache, so if you want to put it right back in, you need\n * to wait until the next tick. If you try to add it back in during\n * the `dispose()` function call, it will break things in subtle and\n * weird ways.\n *\n * Unlike several other options, this may _not_ be overridden by\n * passing an option to `set()`, for performance reasons.\n *\n * The `reason` will be one of the following strings, corresponding\n * to the reason for the item's deletion:\n *\n * - `evict` Item was evicted to make space for a new addition\n * - `set` Item was overwritten by a new value\n * - `expire` Item expired its TTL\n * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n * fetchMethod returning `undefined.\n * - `delete` Item was removed by explicit `cache.delete(key)`,\n * `cache.clear()`, or `cache.set(key, undefined)`.\n */\n dispose?: Disposer<K, V>\n\n /**\n * Function that is called when new items are inserted into the cache,\n * as `onInsert(value, key, reason)`.\n *\n * This can be useful if you need to perform actions when an item is\n * added, such as logging or tracking insertions.\n *\n * Unlike some other options, this may _not_ be overridden by passing\n * an option to `set()`, for performance and consistency reasons.\n */\n onInsert?: Inserter<K, V>\n\n /**\n * The same as {@link OptionsBase.dispose}, but called *after* the entry\n * is completely removed and the cache is once again in a clean state.\n *\n * It is safe to add an item right back into the cache at this point.\n * However, note that it is *very* easy to inadvertently create infinite\n * recursion this way.\n */\n disposeAfter?: Disposer<K, V>\n\n /**\n * Set to true to suppress calling the\n * {@link OptionsBase.dispose} function if the entry key is\n * still accessible within the cache.\n *\n * This may be overridden by passing an options object to\n * {@link LRUCache#set}.\n *\n * Only relevant if `dispose` or `disposeAfter` are set.\n */\n noDisposeOnSet?: boolean\n\n /**\n * Boolean flag to tell the cache to not update the TTL when setting a new\n * value for an existing key (ie, when updating a value rather than\n * inserting a new value). Note that the TTL value is _always_ set (if\n * provided) when adding a new entry into the cache.\n *\n * Has no effect if a {@link OptionsBase.ttl} is not set.\n *\n * May be passed as an option to {@link LRUCache#set}.\n */\n noUpdateTTL?: boolean\n\n /**\n * Set to a positive integer to track the sizes of items added to the\n * cache, and automatically evict items in order to stay below this size.\n * Note that this may result in fewer than `max` items being stored.\n *\n * Attempting to add an item to the cache whose calculated size is greater\n * that this amount will be a no-op. The item will not be cached, and no\n * other items will be evicted.\n *\n * Optional, must be a positive integer if provided.\n *\n * Sets `maxEntrySize` to the same value, unless a different value is\n * provided for `maxEntrySize`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if size tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * Note also that size tracking can negatively impact performance,\n * though for most cases, only minimally.\n */\n maxSize?: Size\n\n /**\n * The maximum allowed size for any single item in the cache.\n *\n * If a larger item is passed to {@link LRUCache#set} or returned by a\n * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n * it will not be stored in the cache.\n *\n * Attempting to add an item whose calculated size is greater than\n * this amount will not cache the item or evict any old items, but\n * WILL delete an existing value if one is already present.\n *\n * Optional, must be a positive integer if provided. Defaults to\n * the value of `maxSize` if provided.\n */\n maxEntrySize?: Size\n\n /**\n * A function that returns a number indicating the item's size.\n *\n * Requires {@link OptionsBase.maxSize} to be set.\n *\n * If not provided, and {@link OptionsBase.maxSize} or\n * {@link OptionsBase.maxEntrySize} are set, then all\n * {@link LRUCache#set} calls **must** provide an explicit\n * {@link SetOptions.size} or sizeCalculation param.\n */\n sizeCalculation?: SizeCalculator<K, V>\n\n /**\n * Method that provides the implementation for {@link LRUCache#fetch}\n *\n * ```ts\n * fetchMethod(key, staleValue, { signal, options, context })\n * ```\n *\n * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n * to `Promise.resolve(cache.get(key))`.\n *\n * If at any time, `signal.aborted` is set to `true`, or if the\n * `signal.onabort` method is called, or if it emits an `'abort'` event\n * which you can listen to with `addEventListener`, then that means that\n * the fetch should be abandoned. This may be passed along to async\n * functions aware of AbortController/AbortSignal behavior.\n *\n * The `fetchMethod` should **only** return `undefined` or a Promise\n * resolving to `undefined` if the AbortController signaled an `abort`\n * event. In all other cases, it should return or resolve to a value\n * suitable for adding to the cache.\n *\n * The `options` object is a union of the options that may be provided to\n * `set()` and `get()`. If they are modified, then that will result in\n * modifying the settings to `cache.set()` when the value is resolved, and\n * in the case of\n * {@link OptionsBase.noDeleteOnFetchRejection} and\n * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n * `fetchMethod` failures.\n *\n * For example, a DNS cache may update the TTL based on the value returned\n * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n */\n fetchMethod?: Fetcher<K, V, FC>\n\n /**\n * Method that provides the implementation for {@link LRUCache#memo}\n */\n memoMethod?: Memoizer<K, V, FC>\n\n /**\n * Set to true to suppress the deletion of stale data when a\n * {@link OptionsBase.fetchMethod} returns a rejected promise.\n */\n noDeleteOnFetchRejection?: boolean\n\n /**\n * Do not delete stale items when they are retrieved with\n * {@link LRUCache#get}.\n *\n * Note that the `get` return value will still be `undefined`\n * unless {@link OptionsBase.allowStale} is true.\n *\n * When using time-expiring entries with `ttl`, by default stale\n * items will be removed from the cache when the key is accessed\n * with `cache.get()`.\n *\n * Setting this option will cause stale items to remain in the cache, until\n * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n * `noDeleteOnStaleGet` set to `false`.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n *\n * Only relevant if a ttl is used.\n */\n noDeleteOnStaleGet?: boolean\n\n /**\n * Set to true to allow returning stale data when a\n * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n * promise.\n *\n * This differs from using {@link OptionsBase.allowStale} in that stale\n * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n * fails, not any other times.\n *\n * If a `fetchMethod` fails, and there is no stale value available, the\n * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n * suppressed.\n *\n * Implies `noDeleteOnFetchRejection`.\n *\n * This may be set in calls to `fetch()`, or defaulted on the constructor,\n * or overridden by modifying the options object in the `fetchMethod`.\n */\n allowStaleOnFetchRejection?: boolean\n\n /**\n * Set to true to return a stale value from the cache when the\n * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n * an `'abort'` event, whether user-triggered, or due to internal cache\n * behavior.\n *\n * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n * any value it returns will be ignored and not cached.\n *\n * Caveat: since fetches are aborted when a new value is explicitly\n * set in the cache, this can lead to fetch returning a stale value,\n * since that was the fallback value _at the moment the `fetch()` was\n * initiated_, even though the new updated value is now present in\n * the cache.\n *\n * For example:\n *\n * ```ts\n * const cache = new LRUCache<string, any>({\n * ttl: 100,\n * fetchMethod: async (url, oldValue, { signal }) => {\n * const res = await fetch(url, { signal })\n * return await res.json()\n * }\n * })\n * cache.set('https://example.com/', { some: 'data' })\n * // 100ms go by...\n * const result = cache.fetch('https://example.com/')\n * cache.set('https://example.com/', { other: 'thing' })\n * console.log(await result) // { some: 'data' }\n * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n * ```\n */\n allowStaleOnFetchAbort?: boolean\n\n /**\n * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n * resulting resolution value, as long as it is not `undefined`.\n *\n * When used on its own, this means aborted {@link LRUCache#fetch} calls\n * are not immediately resolved or rejected when they are aborted, and\n * instead take the full time to await.\n *\n * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n * {@link LRUCache#fetch} calls will resolve immediately to their stale\n * cached value or `undefined`, and will continue to process and eventually\n * update the cache when they resolve, as long as the resulting value is\n * not `undefined`, thus supporting a \"return stale on timeout while\n * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n *\n * For example:\n *\n * ```ts\n * const c = new LRUCache({\n * ttl: 100,\n * ignoreFetchAbort: true,\n * allowStaleOnFetchAbort: true,\n * fetchMethod: async (key, oldValue, { signal }) => {\n * // note: do NOT pass the signal to fetch()!\n * // let's say this fetch can take a long time.\n * const res = await fetch(`https://slow-backend-server/${key}`)\n * return await res.json()\n * },\n * })\n *\n * // this will return the stale value after 100ms, while still\n * // updating in the background for next time.\n * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n * ```\n *\n * **Note**: regardless of this setting, an `abort` event _is still\n * emitted on the `AbortSignal` object_, so may result in invalid results\n * when passed to other underlying APIs that use AbortSignals.\n *\n * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n * call to {@link LRUCache#fetch}.\n */\n ignoreFetchAbort?: boolean\n\n /**\n * In some cases, you may want to swap out the performance/Date object\n * used for TTL tracking. This should almost certainly NOT be done in\n * production environments!\n *\n * This value defaults to `global.performance` if it has a `now()` method,\n * or the `global.Date` object otherwise.\n */\n perf?: Perf\n }\n\n export interface OptionsMaxLimit<K, V, FC>\n extends OptionsBase<K, V, FC> {\n max: Count\n }\n export interface OptionsTTLLimit<K, V, FC>\n extends OptionsBase<K, V, FC> {\n ttl: Milliseconds\n ttlAutopurge: boolean\n }\n export interface OptionsSizeLimit<K, V, FC>\n extends OptionsBase<K, V, FC> {\n maxSize: Size\n }\n\n /**\n * The valid safe options for the {@link LRUCache} constructor\n */\n export type Options<K, V, FC> =\n | OptionsMaxLimit<K, V, FC>\n | OptionsSizeLimit<K, V, FC>\n | OptionsTTLLimit<K, V, FC>\n\n /**\n * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n * and returned by {@link LRUCache#info}.\n */\n export interface Entry<V> {\n value: V\n ttl?: Milliseconds\n size?: Size\n start?: Milliseconds\n }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache<K extends {}, V extends {}, FC = unknown> {\n // options that cannot be changed without disaster\n readonly #max: LRUCache.Count\n readonly #maxSize: LRUCache.Size\n readonly #dispose?: LRUCache.Disposer<K, V>\n readonly #onInsert?: LRUCache.Inserter<K, V>\n readonly #disposeAfter?: LRUCache.Disposer<K, V>\n readonly #fetchMethod?: LRUCache.Fetcher<K, V, FC>\n readonly #memoMethod?: LRUCache.Memoizer<K, V, FC>\n readonly #perf: Perf\n\n /**\n * {@link LRUCache.OptionsBase.perf}\n */\n get perf() {\n return this.#perf\n }\n\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl: LRUCache.Milliseconds\n\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution: LRUCache.Milliseconds\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale: boolean\n\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet: boolean\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL: boolean\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize: LRUCache.Size\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation?: LRUCache.SizeCalculator<K, V>\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort: boolean\n\n // computed properties\n #size: LRUCache.Count\n #calculatedSize: LRUCache.Size\n #keyMap: Map<K, Index>\n #keyList: (K | undefined)[]\n #valList: (V | BackgroundFetch<V> | undefined)[]\n #next: NumberArray\n #prev: NumberArray\n #head: Index\n #tail: Index\n #free: StackLike\n #disposed?: DisposeTask<K, V>[]\n #sizes?: ZeroArray\n #starts?: ZeroArray\n #ttls?: ZeroArray\n\n #hasDispose: boolean\n #hasFetchMethod: boolean\n #hasDisposeAfter: boolean\n #hasOnInsert: boolean\n\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals<\n K extends {},\n V extends {},\n FC extends unknown = unknown,\n >(c: LRUCache<K, V, FC>) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap as Map<K, number>,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head\n },\n get tail() {\n return c.#tail\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n backgroundFetch: (\n k: K,\n index: number | undefined,\n options: LRUCache.FetchOptions<K, V, FC>,\n context: any,\n ): BackgroundFetch<V> =>\n c.#backgroundFetch(\n k,\n index as Index | undefined,\n options,\n context,\n ),\n moveToTail: (index: number): void =>\n c.#moveToTail(index as Index),\n indexes: (options?: { allowStale: boolean }) =>\n c.#indexes(options),\n rindexes: (options?: { allowStale: boolean }) =>\n c.#rindexes(options),\n isStale: (index: number | undefined) =>\n c.#isStale(index as Index),\n }\n }\n\n // Protected read-only members\n\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max(): LRUCache.Count {\n return this.#max\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize(): LRUCache.Count {\n return this.#maxSize\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize(): LRUCache.Size {\n return this.#calculatedSize\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size(): LRUCache.Count {\n return this.#size\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod(): LRUCache.Fetcher<K, V, FC> | undefined {\n return this.#fetchMethod\n }\n get memoMethod(): LRUCache.Memoizer<K, V, FC> | undefined {\n return this.#memoMethod\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose\n }\n /**\n * {@link LRUCache.OptionsBase.onInsert} (read-only)\n */\n get onInsert() {\n return this.#onInsert\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter\n }\n\n constructor(\n options: LRUCache.Options<K, V, FC> | LRUCache<K, V, FC>,\n ) {\n const {\n max = 0,\n ttl,\n ttlResolution = 1,\n ttlAutopurge,\n updateAgeOnGet,\n updateAgeOnHas,\n allowStale,\n dispose,\n onInsert,\n disposeAfter,\n noDisposeOnSet,\n noUpdateTTL,\n maxSize = 0,\n maxEntrySize = 0,\n sizeCalculation,\n fetchMethod,\n memoMethod,\n noDeleteOnFetchRejection,\n noDeleteOnStaleGet,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n perf,\n } = options\n\n if (perf !== undefined) {\n if (typeof perf?.now !== 'function') {\n throw new TypeError(\n 'perf option must have a now() method if specified',\n )\n }\n }\n\n this.#perf = perf ?? defaultPerf\n\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer')\n }\n\n const UintArray = max ? getUintArray(max) : Array\n if (!UintArray) {\n throw new Error('invalid max value: ' + max)\n }\n\n this.#max = max\n this.#maxSize = maxSize\n this.maxEntrySize = maxEntrySize || this.#maxSize\n this.sizeCalculation = sizeCalculation\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError(\n 'cannot set sizeCalculation without setting maxSize or maxEntrySize',\n )\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function')\n }\n }\n\n if (\n memoMethod !== undefined &&\n typeof memoMethod !== 'function'\n ) {\n throw new TypeError('memoMethod must be a function if defined')\n }\n this.#memoMethod = memoMethod\n\n if (\n fetchMethod !== undefined &&\n typeof fetchMethod !== 'function'\n ) {\n throw new TypeError(\n 'fetchMethod must be a function if specified',\n )\n }\n this.#fetchMethod = fetchMethod\n this.#hasFetchMethod = !!fetchMethod\n\n this.#keyMap = new Map()\n this.#keyList = new Array(max).fill(undefined)\n this.#valList = new Array(max).fill(undefined)\n this.#next = new UintArray(max)\n this.#prev = new UintArray(max)\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free = Stack.create(max)\n this.#size = 0\n this.#calculatedSize = 0\n\n if (typeof dispose === 'function') {\n this.#dispose = dispose\n }\n if (typeof onInsert === 'function') {\n this.#onInsert = onInsert\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter\n this.#disposed = []\n } else {\n this.#disposeAfter = undefined\n this.#disposed = undefined\n }\n this.#hasDispose = !!this.#dispose\n this.#hasOnInsert = !!this.#onInsert\n this.#hasDisposeAfter = !!this.#disposeAfter\n\n this.noDisposeOnSet = !!noDisposeOnSet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n this.ignoreFetchAbort = !!ignoreFetchAbort\n\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError(\n 'maxSize must be a positive integer if specified',\n )\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError(\n 'maxEntrySize must be a positive integer if specified',\n )\n }\n this.#initializeSizeTracking()\n }\n\n this.allowStale = !!allowStale\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n this.updateAgeOnGet = !!updateAgeOnGet\n this.updateAgeOnHas = !!updateAgeOnHas\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0 ?\n ttlResolution\n : 1\n this.ttlAutopurge = !!ttlAutopurge\n this.ttl = ttl || 0\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError(\n 'ttl must be a positive integer if specified',\n )\n }\n this.#initializeTTLTracking()\n }\n\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError(\n 'At least one of max, maxSize, or ttl is required',\n )\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED'\n if (shouldWarn(code)) {\n warned.add(code)\n const msg =\n 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.'\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n }\n }\n }\n\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key: K) {\n return this.#keyMap.has(key) ? Infinity : 0\n }\n\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max)\n const starts = new ZeroArray(this.#max)\n this.#ttls = ttls\n this.#starts = starts\n\n this.#setItemTTL = (index, ttl, start = this.#perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0\n ttls[index] = ttl\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index] as K, 'expire')\n }\n }, ttl + 1)\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n }\n\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0\n }\n\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index]\n const start = starts[index]\n /* c8 ignore next */\n if (!ttl || !start) return\n status.ttl = ttl\n status.start = start\n status.now = cachedNow || getNow()\n const age = status.now - start\n status.remainingTTL = ttl - age\n }\n }\n\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0\n const getNow = () => {\n const n = this.#perf.now()\n if (this.ttlResolution > 0) {\n cachedNow = n\n const t = setTimeout(\n () => (cachedNow = 0),\n this.ttlResolution,\n )\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n return n\n }\n\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key)\n if (index === undefined) {\n return 0\n }\n const ttl = ttls[index]\n const start = starts[index]\n if (!ttl || !start) {\n return Infinity\n }\n const age = (cachedNow || getNow()) - start\n return ttl - age\n }\n\n this.#isStale = index => {\n const s = starts[index]\n const t = ttls[index]\n return !!t && !!s && (cachedNow || getNow()) - s > t\n }\n }\n\n // conditionally set private methods related to TTL\n #updateItemAge: (index: Index) => void = () => {}\n #statusTTL: (status: LRUCache.Status<V>, index: Index) => void =\n () => {}\n #setItemTTL: (\n index: Index,\n ttl: LRUCache.Milliseconds,\n start?: LRUCache.Milliseconds,\n // ignore because we never call this if we're not already in TTL mode\n /* c8 ignore start */\n ) => void = () => {}\n /* c8 ignore stop */\n\n #isStale: (index: Index) => boolean = () => false\n\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max)\n this.#calculatedSize = 0\n this.#sizes = sizes\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index] as number\n sizes[index] = 0\n }\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function')\n }\n size = sizeCalculation(v, k)\n if (!isPosInt(size)) {\n throw new TypeError(\n 'sizeCalculation return invalid (expect positive integer)',\n )\n }\n } else {\n throw new TypeError(\n 'invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.',\n )\n }\n }\n return size\n }\n this.#addItemSize = (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status<V>,\n ) => {\n sizes[index] = size\n if (this.#maxSize) {\n const maxSize = this.#maxSize - (sizes[index] as number)\n while (this.#calculatedSize > maxSize) {\n this.#evict(true)\n }\n }\n this.#calculatedSize += sizes[index] as number\n if (status) {\n status.entrySize = size\n status.totalCalculatedSize = this.#calculatedSize\n }\n }\n }\n\n #removeItemSize: (index: Index) => void = _i => {}\n #addItemSize: (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status<V>,\n ) => void = (_i, _s, _st) => {}\n #requireSize: (\n k: K,\n v: V | BackgroundFetch<V>,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n ) => LRUCache.Size = (\n _k: K,\n _v: V | BackgroundFetch<V>,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n ) => {\n if (size || sizeCalculation) {\n throw new TypeError(\n 'cannot set size without setting maxSize or maxEntrySize on cache',\n )\n }\n return 0\n };\n\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#head) {\n break\n } else {\n i = this.#prev[i] as Index\n }\n }\n }\n }\n\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#tail) {\n break\n } else {\n i = this.#next[i] as Index\n }\n }\n }\n }\n\n #isValidIndex(index: Index) {\n return (\n index !== undefined &&\n this.#keyMap.get(this.#keyList[index] as K) === index\n )\n }\n\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]] as [K, V]\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]]\n }\n }\n }\n\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i] as V\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i]\n }\n }\n }\n\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries()\n }\n\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache'\n\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => boolean,\n getOptions: LRUCache.GetOptions<K, V, FC> = {},\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value =\n this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) continue\n if (fn(value, this.#keyList[i] as K, this)) {\n return this.get(this.#keyList[i] as K, getOptions)\n }\n }\n }\n\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n thisp: any = this,\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value =\n this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n thisp: any = this,\n ) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n const value =\n this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i] as K, 'expire')\n deleted = true\n }\n }\n return deleted\n }\n\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key: K): LRUCache.Entry<V> | undefined {\n const i = this.#keyMap.get(key)\n if (i === undefined) return undefined\n const v = this.#valList[i]\n /* c8 ignore start - this isn't tested for the info function,\n * but it's the same logic as found in other places. */\n const value: V | undefined =\n this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) return undefined\n /* c8 ignore end */\n const entry: LRUCache.Entry<V> = { value }\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i]\n const start = this.#starts[i]\n if (ttl && start) {\n const remain = ttl - (this.#perf.now() - start)\n entry.ttl = remain\n entry.start = Date.now()\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n return entry\n }\n\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr: [K, LRUCache.Entry<V>][] = []\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i]\n const v = this.#valList[i]\n const value: V | undefined =\n this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined || key === undefined) continue\n const entry: LRUCache.Entry<V> = { value }\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i]\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = this.#perf.now() - (this.#starts[i] as number)\n entry.start = Math.floor(Date.now() - age)\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n arr.unshift([key, entry])\n }\n return arr\n }\n\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr: [K, LRUCache.Entry<V>][]) {\n this.clear()\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start\n entry.start = this.#perf.now() - age\n }\n this.set(key, entry.value, entry)\n }\n }\n\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(\n k: K,\n v: V | BackgroundFetch<V> | undefined,\n setOptions: LRUCache.SetOptions<K, V, FC> = {},\n ) {\n if (v === undefined) {\n this.delete(k)\n return this\n }\n const {\n ttl = this.ttl,\n start,\n noDisposeOnSet = this.noDisposeOnSet,\n sizeCalculation = this.sizeCalculation,\n status,\n } = setOptions\n let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n const size = this.#requireSize(\n k,\n v,\n setOptions.size || 0,\n sizeCalculation,\n )\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss'\n status.maxEntrySizeExceeded = true\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set')\n return this\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n if (index === undefined) {\n // addition\n index = (\n this.#size === 0 ? this.#tail\n : this.#free.length !== 0 ? this.#free.pop()\n : this.#size === this.#max ? this.#evict(false)\n : this.#size) as Index\n this.#keyList[index] = k\n this.#valList[index] = v\n this.#keyMap.set(k, index)\n this.#next[this.#tail] = index\n this.#prev[index] = this.#tail\n this.#tail = index\n this.#size++\n this.#addItemSize(index, size, status)\n if (status) status.set = 'add'\n noUpdateTTL = false\n if (this.#hasOnInsert) {\n this.#onInsert?.(v as V, k, 'add')\n }\n } else {\n // update\n this.#moveToTail(index)\n const oldVal = this.#valList[index] as V | BackgroundFetch<V>\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'))\n const { __staleWhileFetching: s } = oldVal\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s as V, k, 'set'])\n }\n }\n } else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal as V, k, 'set'])\n }\n }\n this.#removeItemSize(index)\n this.#addItemSize(index, size, status)\n this.#valList[index] = v\n if (status) {\n status.set = 'replace'\n const oldValue =\n oldVal && this.#isBackgroundFetch(oldVal) ?\n oldVal.__staleWhileFetching\n : oldVal\n if (oldValue !== undefined) status.oldValue = oldValue\n }\n } else if (status) {\n status.set = 'update'\n }\n\n if (this.#hasOnInsert) {\n this.onInsert?.(\n v as V,\n k,\n v === oldVal ? 'update' : 'replace',\n )\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking()\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start)\n }\n if (status) this.#statusTTL(status, index)\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return this\n }\n\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop(): V | undefined {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head]\n this.#evict(true)\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching\n }\n } else if (val !== undefined) {\n return val\n }\n }\n } finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n }\n\n #evict(free: boolean) {\n const head = this.#head\n const k = this.#keyList[head] as K\n const v = this.#valList[head] as V\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict'])\n }\n }\n this.#removeItemSize(head)\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined\n this.#valList[head] = undefined\n this.#free.push(head)\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0 as Index\n this.#free.length = 0\n } else {\n this.#head = this.#next[head] as Index\n }\n this.#keyMap.delete(k)\n this.#size--\n return head\n }\n\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k: K, hasOptions: LRUCache.HasOptions<K, V, FC> = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } =\n hasOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const v = this.#valList[index]\n if (\n this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined\n ) {\n return false\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index)\n }\n if (status) {\n status.has = 'hit'\n this.#statusTTL(status, index)\n }\n return true\n } else if (status) {\n status.has = 'stale'\n this.#statusTTL(status, index)\n }\n } else if (status) {\n status.has = 'miss'\n }\n return false\n }\n\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k: K, peekOptions: LRUCache.PeekOptions<K, V, FC> = {}) {\n const { allowStale = this.allowStale } = peekOptions\n const index = this.#keyMap.get(k)\n if (\n index === undefined ||\n (!allowStale && this.#isStale(index))\n ) {\n return\n }\n const v = this.#valList[index]\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n }\n\n #backgroundFetch(\n k: K,\n index: Index | undefined,\n options: LRUCache.FetchOptions<K, V, FC>,\n context: any,\n ): BackgroundFetch<V> {\n const v = index === undefined ? undefined : this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n return v\n }\n\n const ac = new AC()\n const { signal } = options\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n })\n\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n }\n\n const cb = (\n v: V | undefined,\n updateCache = false,\n ): V | undefined => {\n const { aborted } = ac.signal\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true\n options.status.fetchError = ac.signal.reason\n if (ignoreAbort) options.status.fetchAbortIgnored = true\n } else {\n options.status.fetchResolved = true\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason)\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p as BackgroundFetch<V>\n if (this.#valList[index as Index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching !== undefined) {\n this.#valList[index as Index] = bf.__staleWhileFetching\n } else {\n this.#delete(k, 'fetch')\n }\n } else {\n if (options.status) options.status.fetchUpdated = true\n this.set(k, v, fetchOpts.options)\n }\n }\n return v\n }\n\n const eb = (er: any) => {\n if (options.status) {\n options.status.fetchRejected = true\n options.status.fetchError = er\n }\n return fetchFail(er)\n }\n\n const fetchFail = (er: any): V | undefined => {\n const { aborted } = ac.signal\n const allowStaleAborted =\n aborted && options.allowStaleOnFetchAbort\n const allowStale =\n allowStaleAborted || options.allowStaleOnFetchRejection\n const noDelete = allowStale || options.noDeleteOnFetchRejection\n const bf = p as BackgroundFetch<V>\n if (this.#valList[index as Index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined\n if (del) {\n this.#delete(k, 'fetch')\n } else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index as Index] = bf.__staleWhileFetching\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true\n }\n return bf.__staleWhileFetching\n } else if (bf.__returned === bf) {\n throw er\n }\n }\n\n const pcall = (\n res: (v: V | undefined) => void,\n rej: (e: any) => void,\n ) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej)\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (\n !options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort\n ) {\n res(undefined)\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true)\n }\n }\n })\n }\n\n if (options.status) options.status.fetchDispatched = true\n const p = new Promise(pcall).then(cb, eb)\n const bf: BackgroundFetch<V> = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n })\n\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined })\n index = this.#keyMap.get(k)\n } else {\n this.#valList[index] = bf\n }\n return bf\n }\n\n #isBackgroundFetch(p: any): p is BackgroundFetch<V> {\n if (!this.#hasFetchMethod) return false\n const b = p as BackgroundFetch<V>\n return (\n !!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC\n )\n }\n\n /**\n * Make an asynchronous cached fetch using the\n * {@link LRUCache.OptionsBase.fetchMethod} function.\n *\n * If the value is in the cache and not stale, then the returned\n * Promise resolves to the value.\n *\n * If not in the cache, or beyond its TTL staleness, then\n * `fetchMethod(key, staleValue, { options, signal, context })` is\n * called, and the value returned will be added to the cache once\n * resolved.\n *\n * If called with `allowStale`, and an asynchronous fetch is\n * currently in progress to reload a stale value, then the former\n * stale value will be returned.\n *\n * If called with `forceRefresh`, then the cached item will be\n * re-fetched, even if it is not stale. However, if `allowStale` is also\n * set, then the old value will still be returned. This is useful\n * in cases where you want to force a reload of a cached value. If\n * a background fetch is already in progress, then `forceRefresh`\n * has no effect.\n *\n * If multiple fetches for the same key are issued, then they will all be\n * coalesced into a single call to fetchMethod.\n *\n * Note that this means that handling options such as\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n * {@link LRUCache.FetchOptions.signal},\n * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n * determined by the FIRST fetch() call for a given key.\n *\n * This is a known (fixable) shortcoming which will be addresed on when\n * someone complains about it, as the fix would involve added complexity and\n * may not be worth the costs for this edge case.\n *\n * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n * effectively an alias for `Promise.resolve(cache.get(key))`.\n *\n * When the fetch method resolves to a value, if the fetch has not\n * been aborted due to deletion, eviction, or being overwritten,\n * then it is added to the cache using the options provided.\n *\n * If the key is evicted or deleted before the `fetchMethod`\n * resolves, then the AbortSignal passed to the `fetchMethod` will\n * receive an `abort` event, and the promise returned by `fetch()`\n * will reject with the reason for the abort.\n *\n * If a `signal` is passed to the `fetch()` call, then aborting the\n * signal will abort the fetch and cause the `fetch()` promise to\n * reject with the reason provided.\n *\n * **Setting `context`**\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the {@link LRUCache} constructor, then all\n * calls to `cache.fetch()` _must_ provide a `context` option. If\n * set to `undefined` or `void`, then calls to fetch _must not_\n * provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that\n * might be relevant in the course of fetching the data. It is only\n * relevant for the course of a single `fetch()` operation, and\n * discarded afterwards.\n *\n * **Note: `fetch()` calls are inflight-unique**\n *\n * If you call `fetch()` multiple times with the same key value,\n * then every call after the first will resolve on the same\n * promise<sup>1</sup>,\n * _even if they have different settings that would otherwise change\n * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n * or `ignoreFetchAbort`.\n *\n * In most cases, this is not a problem (in fact, only fetching\n * something once is what you probably want, if you're caching in\n * the first place). If you are changing the fetch() options\n * dramatically between runs, there's a good chance that you might\n * be trying to fit divergent semantics into a single object, and\n * would be better off with multiple cache instances.\n *\n * **1**: Ie, they're not the \"same Promise\", but they resolve at\n * the same time, because they're both waiting on the same\n * underlying fetchMethod response.\n */\n\n fetch(\n k: K,\n fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V>\n : LRUCache.FetchOptionsWithContext<K, V, FC>,\n ): Promise<undefined | V>\n\n // this overload not allowed if context is required\n fetch(\n k: unknown extends FC ? K\n : FC extends undefined | void ? K\n : never,\n fetchOptions?: unknown extends FC ?\n LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V>\n : never,\n ): Promise<undefined | V>\n\n async fetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n ): Promise<undefined | V> {\n const {\n // get options\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n // set options\n ttl = this.ttl,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n ignoreFetchAbort = this.ignoreFetchAbort,\n allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n context,\n forceRefresh = false,\n status,\n signal,\n } = fetchOptions\n\n if (!this.#hasFetchMethod) {\n if (status) status.fetch = 'get'\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n })\n }\n\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n }\n\n let index = this.#keyMap.get(k)\n if (index === undefined) {\n if (status) status.fetch = 'miss'\n const p = this.#backgroundFetch(k, index, options, context)\n return (p.__returned = p)\n } else {\n // in cache, maybe already fetching\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n const stale =\n allowStale && v.__staleWhileFetching !== undefined\n if (status) {\n status.fetch = 'inflight'\n if (stale) status.returnedStale = true\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v)\n }\n\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index)\n if (!forceRefresh && !isStale) {\n if (status) status.fetch = 'hit'\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n if (status) this.#statusTTL(status, index)\n return v\n }\n\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context)\n const hasStale = p.__staleWhileFetching !== undefined\n const staleVal = hasStale && allowStale\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh'\n if (staleVal && isStale) status.returnedStale = true\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n }\n }\n\n /**\n * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n * because `ignoreFetchAbort` was specified (either to the constructor or\n * in the {@link LRUCache.FetchOptions}). Also, the\n * {@link LRUCache.OptionsBase.fetchMethod} may return `undefined` or `void`, making\n * the test even more complicated.\n *\n * Because inferring the cases where `undefined` might be returned are so\n * cumbersome, but testing for `undefined` can also be annoying, this method\n * can be used, which will reject if `this.fetch()` resolves to undefined.\n */\n forceFetch(\n k: K,\n fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V>\n : LRUCache.FetchOptionsWithContext<K, V, FC>,\n ): Promise<V>\n // this overload not allowed if context is required\n forceFetch(\n k: unknown extends FC ? K\n : FC extends undefined | void ? K\n : never,\n fetchOptions?: unknown extends FC ?\n LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V>\n : never,\n ): Promise<V>\n async forceFetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n ): Promise<V> {\n const v = await this.fetch(\n k,\n fetchOptions as unknown extends FC ?\n LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V>\n : LRUCache.FetchOptionsWithContext<K, V, FC>,\n )\n if (v === undefined) throw new Error('fetch() returned undefined')\n return v\n }\n\n /**\n * If the key is found in the cache, then this is equivalent to\n * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n * _must_ provide a `context` option. If set to `undefined` or `void`, then\n * calls to memo _must not_ provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that might be\n * relevant in the course of fetching the data. It is only relevant for the\n * course of a single `memo()` operation, and discarded afterwards.\n */\n memo(\n k: K,\n memoOptions: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.MemoOptionsNoContext<K, V>\n : LRUCache.MemoOptionsWithContext<K, V, FC>,\n ): V\n // this overload not allowed if context is required\n memo(\n k: unknown extends FC ? K\n : FC extends undefined | void ? K\n : never,\n memoOptions?: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.MemoOptionsNoContext<K, V>\n : never,\n ): V\n memo(k: K, memoOptions: LRUCache.MemoOptions<K, V, FC> = {}) {\n const memoMethod = this.#memoMethod\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor')\n }\n const { context, forceRefresh, ...options } = memoOptions\n const v = this.get(k, options)\n if (!forceRefresh && v !== undefined) return v\n const vv = memoMethod(k, v, {\n options,\n context,\n } as LRUCache.MemoizerOptions<K, V, FC>)\n this.set(k, vv, options)\n return vv\n }\n\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k: K, getOptions: LRUCache.GetOptions<K, V, FC> = {}) {\n const {\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n status,\n } = getOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const value = this.#valList[index]\n const fetching = this.#isBackgroundFetch(value)\n if (status) this.#statusTTL(status, index)\n if (this.#isStale(index)) {\n if (status) status.get = 'stale'\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire')\n }\n if (status && allowStale) status.returnedStale = true\n return allowStale ? value : undefined\n } else {\n if (\n status &&\n allowStale &&\n value.__staleWhileFetching !== undefined\n ) {\n status.returnedStale = true\n }\n return allowStale ? value.__staleWhileFetching : undefined\n }\n } else {\n if (status) status.get = 'hit'\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching\n }\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n return value\n }\n } else if (status) {\n status.get = 'miss'\n }\n }\n\n #connect(p: Index, n: Index) {\n this.#prev[n] = p\n this.#next[p] = n\n }\n\n #moveToTail(index: Index): void {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n this.#connect(\n this.#prev[index] as Index,\n this.#next[index] as Index,\n )\n }\n this.#connect(this.#tail, index)\n this.#tail = index\n }\n }\n\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k: K) {\n return this.#delete(k, 'delete')\n }\n\n #delete(k: K, reason: LRUCache.DisposeReason) {\n let deleted = false\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n deleted = true\n if (this.#size === 1) {\n this.#clear(reason)\n } else {\n this.#removeItemSize(index)\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k, reason])\n }\n }\n this.#keyMap.delete(k)\n this.#keyList[index] = undefined\n this.#valList[index] = undefined\n if (index === this.#tail) {\n this.#tail = this.#prev[index] as Index\n } else if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n const pi = this.#prev[index] as number\n this.#next[pi] = this.#next[index] as number\n const ni = this.#next[index] as number\n this.#prev[ni] = this.#prev[index] as number\n }\n this.#size--\n this.#free.push(index)\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return deleted\n }\n\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete')\n }\n #clear(reason: LRUCache.DisposeReason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n const k = this.#keyList[index]\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k as K, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k as K, reason])\n }\n }\n }\n\n this.#keyMap.clear()\n this.#valList.fill(undefined)\n this.#keyList.fill(undefined)\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0)\n this.#starts.fill(0)\n }\n if (this.#sizes) {\n this.#sizes.fill(0)\n }\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free.length = 0\n this.#calculatedSize = 0\n this.#size = 0\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport * from \"./internal/eacaggregatorproxy-processor.js\";\nexport * from \"./internal/eacaggregatorproxy-test-utils.js\";\nexport * from \"./internal/EACAggregatorProxy.js\";\nexport * from \"./internal/factories/EACAggregatorProxy__factory.js\";\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { BigNumberish, Overrides } from \"ethers\";\nimport { HandlerOptions } from \"@sentio/sdk\";\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 { EACAggregatorProxy__factory } from \"./index.js\";\nimport {\n EACAggregatorProxy,\n AnswerUpdatedEvent,\n AnswerUpdatedEventFilter,\n NewRoundEvent,\n NewRoundEventFilter,\n OwnershipTransferRequestedEvent,\n OwnershipTransferRequestedEventFilter,\n OwnershipTransferredEvent,\n OwnershipTransferredEventFilter,\n} from \"./EACAggregatorProxy.js\";\n\nexport interface AcceptOwnershipCallObject {}\n\nexport type AcceptOwnershipCallTrace = TypedCallTrace<\n [],\n AcceptOwnershipCallObject\n>;\n\nexport interface AccessControllerCallObject {}\n\nexport type AccessControllerCallTrace = TypedCallTrace<\n [],\n AccessControllerCallObject\n>;\n\nexport interface AggregatorCallObject {}\n\nexport type AggregatorCallTrace = TypedCallTrace<[], AggregatorCallObject>;\n\nexport interface ConfirmAggregatorCallObject {\n _aggregator: string;\n}\n\nexport type ConfirmAggregatorCallTrace = TypedCallTrace<\n [string],\n ConfirmAggregatorCallObject\n>;\n\nexport interface DecimalsCallObject {}\n\nexport type DecimalsCallTrace = TypedCallTrace<[], DecimalsCallObject>;\n\nexport interface DescriptionCallObject {}\n\nexport type DescriptionCallTrace = TypedCallTrace<[], DescriptionCallObject>;\n\nexport interface GetAnswerCallObject {\n _roundId: bigint;\n}\n\nexport type GetAnswerCallTrace = TypedCallTrace<[bigint], GetAnswerCallObject>;\n\nexport interface GetRoundDataCallObject {\n _roundId: bigint;\n}\n\nexport type GetRoundDataCallTrace = TypedCallTrace<\n [bigint],\n GetRoundDataCallObject\n>;\n\nexport interface GetTimestampCallObject {\n _roundId: bigint;\n}\n\nexport type GetTimestampCallTrace = TypedCallTrace<\n [bigint],\n GetTimestampCallObject\n>;\n\nexport interface LatestAnswerCallObject {}\n\nexport type LatestAnswerCallTrace = TypedCallTrace<[], LatestAnswerCallObject>;\n\nexport interface LatestRoundCallObject {}\n\nexport type LatestRoundCallTrace = TypedCallTrace<[], LatestRoundCallObject>;\n\nexport interface LatestRoundDataCallObject {}\n\nexport type LatestRoundDataCallTrace = TypedCallTrace<\n [],\n LatestRoundDataCallObject\n>;\n\nexport interface LatestTimestampCallObject {}\n\nexport type LatestTimestampCallTrace = TypedCallTrace<\n [],\n LatestTimestampCallObject\n>;\n\nexport interface OwnerCallObject {}\n\nexport type OwnerCallTrace = TypedCallTrace<[], OwnerCallObject>;\n\nexport interface PhaseAggregatorsCallObject {}\n\nexport type PhaseAggregatorsCallTrace = TypedCallTrace<\n [bigint],\n PhaseAggregatorsCallObject\n>;\n\nexport interface PhaseIdCallObject {}\n\nexport type PhaseIdCallTrace = TypedCallTrace<[], PhaseIdCallObject>;\n\nexport interface ProposeAggregatorCallObject {\n _aggregator: string;\n}\n\nexport type ProposeAggregatorCallTrace = TypedCallTrace<\n [string],\n ProposeAggregatorCallObject\n>;\n\nexport interface ProposedAggregatorCallObject {}\n\nexport type ProposedAggregatorCallTrace = TypedCallTrace<\n [],\n ProposedAggregatorCallObject\n>;\n\nexport interface ProposedGetRoundDataCallObject {\n _roundId: bigint;\n}\n\nexport type ProposedGetRoundDataCallTrace = TypedCallTrace<\n [bigint],\n ProposedGetRoundDataCallObject\n>;\n\nexport interface ProposedLatestRoundDataCallObject {}\n\nexport type ProposedLatestRoundDataCallTrace = TypedCallTrace<\n [],\n ProposedLatestRoundDataCallObject\n>;\n\nexport interface SetControllerCallObject {\n _accessController: string;\n}\n\nexport type SetControllerCallTrace = TypedCallTrace<\n [string],\n SetControllerCallObject\n>;\n\nexport interface TransferOwnershipCallObject {\n _to: string;\n}\n\nexport type TransferOwnershipCallTrace = TypedCallTrace<\n [string],\n TransferOwnershipCallObject\n>;\n\nexport interface VersionCallObject {}\n\nexport type VersionCallTrace = TypedCallTrace<[], VersionCallObject>;\n\nconst templateContract = EACAggregatorProxy__factory.connect(\n \"0x0\",\n DummyProvider,\n);\n\nexport class EACAggregatorProxyContractView extends ContractView<EACAggregatorProxy> {\n constructor(contract: EACAggregatorProxy) {\n super(contract);\n this.callStatic.contract = contract;\n }\n\n async accessController(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"accessController()\")(\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async aggregator(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"aggregator()\")(overrides || {});\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 description(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"description()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async getAnswer(\n _roundId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"getAnswer(uint256)\")(\n _roundId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async getRoundData(\n _roundId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n try {\n return await this.contract.getFunction(\"getRoundData(uint80)\")(\n _roundId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async getTimestamp(\n _roundId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"getTimestamp(uint256)\")(\n _roundId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async latestAnswer(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"latestAnswer()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async latestRound(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"latestRound()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async latestRoundData(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n try {\n return await this.contract.getFunction(\"latestRoundData()\")(\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async latestTimestamp(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"latestTimestamp()\")(\n overrides || {},\n );\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 phaseAggregators(\n arg0: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"phaseAggregators(uint16)\")(\n arg0,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async phaseId(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"phaseId()\")(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async proposedAggregator(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<string> {\n try {\n return await this.contract.getFunction(\"proposedAggregator()\")(\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async proposedGetRoundData(\n _roundId: BigNumberish,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n try {\n return await this.contract.getFunction(\"proposedGetRoundData(uint80)\")(\n _roundId,\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async proposedLatestRoundData(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n try {\n return await this.contract.getFunction(\"proposedLatestRoundData()\")(\n overrides || {},\n );\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n }\n\n async version(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<bigint> {\n try {\n return await this.contract.getFunction(\"version()\")(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 acceptOwnership(\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"acceptOwnership()\")\n .staticCall(overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async confirmAggregator(\n _aggregator: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"confirmAggregator(address)\")\n .staticCall(_aggregator, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async proposeAggregator(\n _aggregator: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"proposeAggregator(address)\")\n .staticCall(_aggregator, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async setController(\n _accessController: string,\n overrides?: Overrides,\n preparedData?: PreparedData,\n ethCallContext?: EthCallContext,\n ): Promise<void> {\n try {\n return await this.contract\n .getFunction(\"setController(address)\")\n .staticCall(_accessController, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n async transferOwnership(\n _to: 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(_to, overrides || {});\n } catch (e) {\n const stack = new Error().stack;\n throw transformEtherError(e, undefined, stack);\n }\n },\n };\n\n encodeCall = {\n acceptOwnership(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"acceptOwnership\",\n \"function acceptOwnership()\",\n [],\n );\n },\n accessController(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"accessController\",\n \"function accessController()\",\n [],\n );\n },\n aggregator(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"aggregator\",\n \"function aggregator()\",\n [],\n );\n },\n confirmAggregator(\n _aggregator: string,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"confirmAggregator\",\n \"function confirmAggregator(address)\",\n [_aggregator],\n );\n },\n decimals(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"decimals\", \"function decimals()\", []);\n },\n description(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"description\",\n \"function description()\",\n [],\n );\n },\n getAnswer(\n _roundId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"getAnswer\",\n \"function getAnswer(uint256)\",\n [_roundId],\n );\n },\n getRoundData(\n _roundId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"getRoundData\",\n \"function getRoundData(uint80)\",\n [_roundId],\n );\n },\n getTimestamp(\n _roundId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"getTimestamp\",\n \"function getTimestamp(uint256)\",\n [_roundId],\n );\n },\n latestAnswer(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"latestAnswer\",\n \"function latestAnswer()\",\n [],\n );\n },\n latestRound(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"latestRound\",\n \"function latestRound()\",\n [],\n );\n },\n latestRoundData(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"latestRoundData\",\n \"function latestRoundData()\",\n [],\n );\n },\n latestTimestamp(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"latestTimestamp\",\n \"function latestTimestamp()\",\n [],\n );\n },\n owner(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"owner\", \"function owner()\", []);\n },\n phaseAggregators(\n arg0: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"phaseAggregators\",\n \"function phaseAggregators(uint16)\",\n [arg0],\n );\n },\n phaseId(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"phaseId\", \"function phaseId()\", []);\n },\n proposeAggregator(\n _aggregator: string,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"proposeAggregator\",\n \"function proposeAggregator(address)\",\n [_aggregator],\n );\n },\n proposedAggregator(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"proposedAggregator\",\n \"function proposedAggregator()\",\n [],\n );\n },\n proposedGetRoundData(\n _roundId: BigNumberish,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"proposedGetRoundData\",\n \"function proposedGetRoundData(uint80)\",\n [_roundId],\n );\n },\n proposedLatestRoundData(callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"proposedLatestRoundData\",\n \"function proposedLatestRoundData()\",\n [],\n );\n },\n setController(\n _accessController: string,\n callContext: EthCallContext,\n ): EthCallParam {\n return encodeCallData(\n callContext,\n \"setController\",\n \"function setController(address)\",\n [_accessController],\n );\n },\n transferOwnership(_to: string, callContext: EthCallContext): EthCallParam {\n return encodeCallData(\n callContext,\n \"transferOwnership\",\n \"function transferOwnership(address)\",\n [_to],\n );\n },\n version(callContext: EthCallContext): EthCallParam {\n return encodeCallData(callContext, \"version\", \"function version()\", []);\n },\n };\n}\n\nexport class EACAggregatorProxyBoundContractView extends BoundContractView<\n EACAggregatorProxy,\n EACAggregatorProxyContractView\n> {\n async accessController(overrides?: Overrides): Promise<string> {\n return await this.view.accessController(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async aggregator(overrides?: Overrides): Promise<string> {\n return await this.view.aggregator(\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 description(overrides?: Overrides): Promise<string> {\n return await this.view.description(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async getAnswer(\n _roundId: BigNumberish,\n overrides?: Overrides,\n ): Promise<bigint> {\n return await this.view.getAnswer(\n _roundId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async getRoundData(\n _roundId: BigNumberish,\n overrides?: Overrides,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n return await this.view.getRoundData(\n _roundId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async getTimestamp(\n _roundId: BigNumberish,\n overrides?: Overrides,\n ): Promise<bigint> {\n return await this.view.getTimestamp(\n _roundId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async latestAnswer(overrides?: Overrides): Promise<bigint> {\n return await this.view.latestAnswer(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async latestRound(overrides?: Overrides): Promise<bigint> {\n return await this.view.latestRound(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async latestRoundData(\n overrides?: Overrides,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n return await this.view.latestRoundData(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async latestTimestamp(overrides?: Overrides): Promise<bigint> {\n return await this.view.latestTimestamp(\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 phaseAggregators(\n arg0: BigNumberish,\n overrides?: Overrides,\n ): Promise<string> {\n return await this.view.phaseAggregators(\n arg0,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async phaseId(overrides?: Overrides): Promise<bigint> {\n return await this.view.phaseId(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async proposedAggregator(overrides?: Overrides): Promise<string> {\n return await this.view.proposedAggregator(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async proposedGetRoundData(\n _roundId: BigNumberish,\n overrides?: Overrides,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n return await this.view.proposedGetRoundData(\n _roundId,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async proposedLatestRoundData(\n overrides?: Overrides,\n ): Promise<\n [bigint, bigint, bigint, bigint, bigint] & {\n roundId: bigint;\n answer: bigint;\n startedAt: bigint;\n updatedAt: bigint;\n answeredInRound: bigint;\n }\n > {\n return await this.view.proposedLatestRoundData(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n }\n\n async version(overrides?: Overrides): Promise<bigint> {\n return await this.view.version(\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 acceptOwnership(overrides?: Overrides): Promise<void> {\n return await this.view.callStatic.acceptOwnership(\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async confirmAggregator(\n _aggregator: string,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.confirmAggregator(\n _aggregator,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async proposeAggregator(\n _aggregator: string,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.proposeAggregator(\n _aggregator,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async setController(\n _accessController: string,\n overrides?: Overrides,\n ): Promise<void> {\n return await this.view.callStatic.setController(\n _accessController,\n {\n blockTag: this.context.blockNumber,\n ...overrides,\n },\n this.context.preparedData,\n this.context.getEthCallContext(),\n );\n },\n async transferOwnership(_to: string, overrides?: Overrides): Promise<void> {\n return await this.view.callStatic.transferOwnership(\n _to,\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 acceptOwnership(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.acceptOwnership({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n accessController(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.accessController({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n aggregator(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.aggregator({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n confirmAggregator(\n _aggregator: string,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.confirmAggregator(_aggregator, {\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 description(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.description({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n getAnswer(_roundId: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.getAnswer(_roundId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n getRoundData(_roundId: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.getRoundData(_roundId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n getTimestamp(_roundId: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.getTimestamp(_roundId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n latestAnswer(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.latestAnswer({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n latestRound(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.latestRound({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n latestRoundData(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.latestRoundData({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n latestTimestamp(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.latestTimestamp({\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 phaseAggregators(arg0: BigNumberish, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.phaseAggregators(arg0, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n phaseId(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.phaseId({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n proposeAggregator(\n _aggregator: string,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.proposeAggregator(_aggregator, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n proposedAggregator(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.proposedAggregator({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n proposedGetRoundData(\n _roundId: BigNumberish,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.proposedGetRoundData(_roundId, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n proposedLatestRoundData(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.proposedLatestRoundData({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n setController(\n _accessController: string,\n overrides?: Overrides,\n ): EthCallParam {\n return this.view.encodeCall.setController(_accessController, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n transferOwnership(_to: string, overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.transferOwnership(_to, {\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n version(overrides?: Overrides): EthCallParam {\n return this.view.encodeCall.version({\n chainId: this.context.chainId.toString(),\n address: this.context.address,\n blockTag: this.context.getBlockTag(overrides),\n });\n },\n };\n}\n\nexport type EACAggregatorProxyContext = ContractContext<\n EACAggregatorProxy,\n EACAggregatorProxyBoundContractView\n>;\n\nexport class EACAggregatorProxyProcessor extends BaseProcessor<\n EACAggregatorProxy,\n EACAggregatorProxyBoundContractView\n> {\n onEventAnswerUpdated(\n handler: (\n event: AnswerUpdatedEvent,\n ctx: EACAggregatorProxyContext,\n ) => void,\n filter?: AnswerUpdatedEventFilter | AnswerUpdatedEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, AnswerUpdatedEvent>,\n preprocessHandler?: (\n event: AnswerUpdatedEvent,\n ctx: EACAggregatorProxyContext,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\n \"AnswerUpdated(int256,uint256,uint256)\"\n ](null, null, null);\n }\n return super.onEthEvent(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventNewRound(\n handler: (event: NewRoundEvent, ctx: EACAggregatorProxyContext) => void,\n filter?: NewRoundEventFilter | NewRoundEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, NewRoundEvent>,\n preprocessHandler?: (\n event: NewRoundEvent,\n ctx: EACAggregatorProxyContext,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"NewRound(uint256,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventOwnershipTransferRequested(\n handler: (\n event: OwnershipTransferRequestedEvent,\n ctx: EACAggregatorProxyContext,\n ) => void,\n filter?:\n | OwnershipTransferRequestedEventFilter\n | OwnershipTransferRequestedEventFilter[],\n handlerOptions?: HandlerOptions<\n EthFetchConfig,\n OwnershipTransferRequestedEvent\n >,\n preprocessHandler?: (\n event: OwnershipTransferRequestedEvent,\n ctx: EACAggregatorProxyContext,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\n \"OwnershipTransferRequested(address,address)\"\n ](null, null);\n }\n return super.onEthEvent(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventOwnershipTransferred(\n handler: (\n event: OwnershipTransferredEvent,\n ctx: EACAggregatorProxyContext,\n ) => void,\n filter?:\n | OwnershipTransferredEventFilter\n | OwnershipTransferredEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, OwnershipTransferredEvent>,\n preprocessHandler?: (\n event: OwnershipTransferredEvent,\n ctx: EACAggregatorProxyContext,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallAcceptOwnership(\n handler: (\n call: AcceptOwnershipCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, AcceptOwnershipCallTrace>,\n preprocessHandler?: (\n call: AcceptOwnershipCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x79ba5097\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallAccessController(\n handler: (\n call: AccessControllerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, AccessControllerCallTrace>,\n preprocessHandler?: (\n call: AccessControllerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xbc43cbaf\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallAggregator(\n handler: (\n call: AggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, AggregatorCallTrace>,\n preprocessHandler?: (\n call: AggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x245a7bfc\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallConfirmAggregator(\n handler: (\n call: ConfirmAggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, ConfirmAggregatorCallTrace>,\n preprocessHandler?: (\n call: ConfirmAggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa928c096\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallDecimals(\n handler: (call: DecimalsCallTrace, ctx: EACAggregatorProxyContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, DecimalsCallTrace>,\n preprocessHandler?: (\n call: DecimalsCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x313ce567\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallDescription(\n handler: (\n call: DescriptionCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, DescriptionCallTrace>,\n preprocessHandler?: (\n call: DescriptionCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x7284e416\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallGetAnswer(\n handler: (call: GetAnswerCallTrace, ctx: EACAggregatorProxyContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, GetAnswerCallTrace>,\n preprocessHandler?: (\n call: GetAnswerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xb5ab58dc\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallGetRoundData(\n handler: (\n call: GetRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, GetRoundDataCallTrace>,\n preprocessHandler?: (\n call: GetRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x9a6fc8f5\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallGetTimestamp(\n handler: (\n call: GetTimestampCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, GetTimestampCallTrace>,\n preprocessHandler?: (\n call: GetTimestampCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xb633620c\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallLatestAnswer(\n handler: (\n call: LatestAnswerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, LatestAnswerCallTrace>,\n preprocessHandler?: (\n call: LatestAnswerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x50d25bcd\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallLatestRound(\n handler: (\n call: LatestRoundCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, LatestRoundCallTrace>,\n preprocessHandler?: (\n call: LatestRoundCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x668a0f02\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallLatestRoundData(\n handler: (\n call: LatestRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, LatestRoundDataCallTrace>,\n preprocessHandler?: (\n call: LatestRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xfeaf968c\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallLatestTimestamp(\n handler: (\n call: LatestTimestampCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, LatestTimestampCallTrace>,\n preprocessHandler?: (\n call: LatestTimestampCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x8205bf6a\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallOwner(\n handler: (call: OwnerCallTrace, ctx: EACAggregatorProxyContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, OwnerCallTrace>,\n preprocessHandler?: (\n call: OwnerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x8da5cb5b\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallPhaseAggregators(\n handler: (\n call: PhaseAggregatorsCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, PhaseAggregatorsCallTrace>,\n preprocessHandler?: (\n call: PhaseAggregatorsCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xc1597304\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallPhaseId(\n handler: (call: PhaseIdCallTrace, ctx: EACAggregatorProxyContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, PhaseIdCallTrace>,\n preprocessHandler?: (\n call: PhaseIdCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x58303b10\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallProposeAggregator(\n handler: (\n call: ProposeAggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, ProposeAggregatorCallTrace>,\n preprocessHandler?: (\n call: ProposeAggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xf8a2abd3\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallProposedAggregator(\n handler: (\n call: ProposedAggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<\n EthFetchConfig,\n ProposedAggregatorCallTrace\n >,\n preprocessHandler?: (\n call: ProposedAggregatorCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xe8c4be30\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallProposedGetRoundData(\n handler: (\n call: ProposedGetRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<\n EthFetchConfig,\n ProposedGetRoundDataCallTrace\n >,\n preprocessHandler?: (\n call: ProposedGetRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x6001ac53\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallProposedLatestRoundData(\n handler: (\n call: ProposedLatestRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<\n EthFetchConfig,\n ProposedLatestRoundDataCallTrace\n >,\n preprocessHandler?: (\n call: ProposedLatestRoundDataCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x8f6b4d91\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSetController(\n handler: (\n call: SetControllerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, SetControllerCallTrace>,\n preprocessHandler?: (\n call: SetControllerCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x92eefe9b\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTransferOwnership(\n handler: (\n call: TransferOwnershipCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferOwnershipCallTrace>,\n preprocessHandler?: (\n call: TransferOwnershipCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xf2fde38b\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallVersion(\n handler: (call: VersionCallTrace, ctx: EACAggregatorProxyContext) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, VersionCallTrace>,\n preprocessHandler?: (\n call: VersionCallTrace,\n ctx: EACAggregatorProxyContext,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x54fd4d50\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n public static filters = {\n AnswerUpdated(\n current?: BigNumberish | null,\n roundId?: BigNumberish | null,\n updatedAt?: null,\n ): AnswerUpdatedEventFilter {\n return templateContract.filters[\"AnswerUpdated(int256,uint256,uint256)\"](\n current,\n roundId,\n updatedAt,\n );\n },\n NewRound(\n roundId?: BigNumberish | null,\n startedBy?: string | null,\n startedAt?: null,\n ): NewRoundEventFilter {\n return templateContract.filters[\"NewRound(uint256,address,uint256)\"](\n roundId,\n startedBy,\n startedAt,\n );\n },\n OwnershipTransferRequested(\n from?: string | null,\n to?: string | null,\n ): OwnershipTransferRequestedEventFilter {\n return templateContract.filters[\n \"OwnershipTransferRequested(address,address)\"\n ](from, to);\n },\n OwnershipTransferred(\n from?: string | null,\n to?: string | null,\n ): OwnershipTransferredEventFilter {\n return templateContract.filters[\"OwnershipTransferred(address,address)\"](\n from,\n to,\n );\n },\n };\n\n protected CreateBoundContractView(): EACAggregatorProxyBoundContractView {\n const view = getEACAggregatorProxyContract(\n this.config.network,\n this.config.address,\n );\n return new EACAggregatorProxyBoundContractView(this.config.address, view);\n }\n\n public static bind(options: BindOptions): EACAggregatorProxyProcessor {\n if (!options.name) {\n options.name = \"EACAggregatorProxy\";\n }\n let processor = getProcessor(options) as EACAggregatorProxyProcessor;\n if (!processor) {\n processor = new EACAggregatorProxyProcessor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n}\n\nexport class EACAggregatorProxyProcessorTemplate extends BaseProcessorTemplate<\n EACAggregatorProxy,\n EACAggregatorProxyBoundContractView\n> {\n bindInternal(options: BindOptions) {\n if (!options.name) {\n options.name = \"EACAggregatorProxy\";\n }\n let processor = getProcessor(options) as EACAggregatorProxyProcessor;\n if (!processor) {\n processor = new EACAggregatorProxyProcessor(options);\n addProcessor(options, processor);\n }\n return processor;\n }\n\n onEventAnswerUpdated(\n handler: (\n event: AnswerUpdatedEvent,\n ctx: EACAggregatorProxyContext,\n ) => void,\n filter?: AnswerUpdatedEventFilter | AnswerUpdatedEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, AnswerUpdatedEvent>,\n preprocessHandler?: (\n event: AnswerUpdatedEvent,\n ctx: EACAggregatorProxyContext,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\n \"AnswerUpdated(int256,uint256,uint256)\"\n ](null, null, null);\n }\n return super.onEthEvent(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventNewRound(\n handler: (event: NewRoundEvent, ctx: EACAggregatorProxyContext) => void,\n filter?: NewRoundEventFilter | NewRoundEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, NewRoundEvent>,\n preprocessHandler?: (\n event: NewRoundEvent,\n ctx: EACAggregatorProxyContext,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\"NewRound(uint256,address,uint256)\"](\n null,\n null,\n null,\n );\n }\n return super.onEthEvent(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventOwnershipTransferRequested(\n handler: (\n event: OwnershipTransferRequestedEvent,\n ctx: EACAggregatorProxyContext,\n ) => void,\n filter?:\n | OwnershipTransferRequestedEventFilter\n | OwnershipTransferRequestedEventFilter[],\n handlerOptions?: HandlerOptions<\n EthFetchConfig,\n OwnershipTransferRequestedEvent\n >,\n preprocessHandler?: (\n event: OwnershipTransferRequestedEvent,\n ctx: EACAggregatorProxyContext,\n preprocessStore: { [k: string]: any },\n ) => Promise<PreprocessResult>,\n ): this {\n if (!filter) {\n filter = templateContract.filters[\n \"OwnershipTransferRequested(address,address)\"\n ](null, null);\n }\n return super.onEthEvent(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventOwnershipTransferred(\n handler: (\n event: OwnershipTransferredEvent,\n ctx: EACAggregatorProxyContext,\n ) => void,\n filter?:\n | OwnershipTransferredEventFilter\n | OwnershipTransferredEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, OwnershipTransferredEvent>,\n preprocessHandler?: (\n event: OwnershipTransferredEvent,\n ctx: EACAggregatorProxyContext,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n}\n\nexport function getEACAggregatorProxyContract(\n chainId: EthChainId,\n address: string,\n): EACAggregatorProxyContractView {\n let contract = getContractByABI(\n \"EACAggregatorProxy\",\n address,\n chainId,\n ) as EACAggregatorProxyContractView;\n if (!contract) {\n const rawContract = EACAggregatorProxy__factory.connect(\n address,\n getProvider(chainId),\n );\n contract = new EACAggregatorProxyContractView(rawContract);\n addContractByABI(\"EACAggregatorProxy\", address, chainId, contract);\n }\n return contract;\n}\n\nexport function getEACAggregatorProxyContractOnContext(\n context: EthContext,\n address: string,\n): EACAggregatorProxyBoundContractView {\n const view = getEACAggregatorProxyContract(context.getChainId(), address);\n const boundView = new EACAggregatorProxyBoundContractView(address, view);\n boundView.context = context;\n if (boundView.callStatic) {\n boundView.callStatic.context = context;\n }\n return boundView;\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* 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 AnswerUpdatedEventObject,\n NewRoundEventObject,\n OwnershipTransferRequestedEventObject,\n OwnershipTransferredEventObject,\n} from \"./EACAggregatorProxy.js\";\nimport { getEACAggregatorProxyContract } from \"./eacaggregatorproxy-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 mockAnswerUpdatedLog(\n contractAddress: string,\n event: AnswerUpdatedEventObject,\n): LogParams {\n const contract = getEACAggregatorProxyContract(\n EthChainId.ETHEREUM,\n contractAddress,\n );\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"AnswerUpdated(int256,uint256,uint256)\",\n [event.current, event.roundId, event.updatedAt],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockNewRoundLog(\n contractAddress: string,\n event: NewRoundEventObject,\n): LogParams {\n const contract = getEACAggregatorProxyContract(\n EthChainId.ETHEREUM,\n contractAddress,\n );\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"NewRound(uint256,address,uint256)\",\n [event.roundId, event.startedBy, event.startedAt],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockOwnershipTransferRequestedLog(\n contractAddress: string,\n event: OwnershipTransferRequestedEventObject,\n): LogParams {\n const contract = getEACAggregatorProxyContract(\n EthChainId.ETHEREUM,\n contractAddress,\n );\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"OwnershipTransferRequested(address,address)\",\n [event.from, event.to],\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 = getEACAggregatorProxyContract(\n EthChainId.ETHEREUM,\n contractAddress,\n );\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"OwnershipTransferred(address,address)\",\n [event.from, event.to],\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport type { BaseContract, Interface } from \"ethers\";\nimport type { ContractRunner } from \"ethers/providers\";\nimport type { TypedEventFilter, TypedEvent, PromiseOrValue } from \"./common.js\";\n\nexport interface EACAggregatorProxyInterface extends Interface {}\n\nexport interface AnswerUpdatedEventObject {\n current: bigint;\n roundId: bigint;\n updatedAt: bigint;\n}\nexport type AnswerUpdatedEvent = TypedEvent<\n [bigint, bigint, bigint],\n AnswerUpdatedEventObject\n>;\n\nexport type AnswerUpdatedEventFilter = TypedEventFilter<AnswerUpdatedEvent>;\n\nexport interface NewRoundEventObject {\n roundId: bigint;\n startedBy: string;\n startedAt: bigint;\n}\nexport type NewRoundEvent = TypedEvent<\n [bigint, string, bigint],\n NewRoundEventObject\n>;\n\nexport type NewRoundEventFilter = TypedEventFilter<NewRoundEvent>;\n\nexport interface OwnershipTransferRequestedEventObject {\n from: string;\n to: string;\n}\nexport type OwnershipTransferRequestedEvent = TypedEvent<\n [string, string],\n OwnershipTransferRequestedEventObject\n>;\n\nexport type OwnershipTransferRequestedEventFilter =\n TypedEventFilter<OwnershipTransferRequestedEvent>;\n\nexport interface OwnershipTransferredEventObject {\n from: string;\n to: string;\n}\nexport type OwnershipTransferredEvent = TypedEvent<\n [string, string],\n OwnershipTransferredEventObject\n>;\n\nexport type OwnershipTransferredEventFilter =\n TypedEventFilter<OwnershipTransferredEvent>;\n\nexport interface EACAggregatorProxy extends BaseContract {\n connect(runner: null | ContractRunner): this;\n\n interface: EACAggregatorProxyInterface;\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { getEACAggregatorProxyContract } from '../eth/builtin/eacaggregatorproxy.js'\nimport fs from 'fs'\nimport { parse } from 'csv-parse/sync'\nimport { BlockTag } from 'ethers/providers'\nimport { scaleDown } from '../core/big-decimal.js'\nimport { EthChainId } from '@sentio/chain'\nimport { createRequire } from 'module'\nimport path from 'path'\n\ntype OralceRecord = {\n Pair: string\n Asset: string\n Type: string\n Address: string\n}\n\nexport enum PriceUnit {\n USD = 0,\n ETH = 1,\n BTC = 2\n}\n\nexport interface DexPriceResult {\n price?: number\n error?: string\n}\n\nexport function getPackageRoot(pkgId: string): string {\n const require = createRequire(import.meta.url)\n const m = require.resolve(pkgId)\n\n let dir = path.dirname(m)\n while (!fs.existsSync(path.join(dir, 'package.json'))) {\n dir = path.dirname(dir)\n }\n return dir\n}\n\n// Load price feed from https://docs.chain.link/docs/data-feeds/price-feeds/addresses/?network=ethereum\n// and then use EACAggregatorProxy contract to get price\nclass DexPrice {\n USD_ORACLE_MAP = new Map<string, string>()\n ETH_ORACLE_MAP = new Map<string, string>()\n BTC_ORACLE_MAP = new Map<string, string>()\n ASSETS_INFOS = new Map<string, number>()\n\n readonly chainId: EthChainId\n\n constructor(csvFileName: string, chainId: EthChainId) {\n this.chainId = chainId\n const packageRoot = getPackageRoot('@sentio/sdk')\n const csvFilePath = path.join(packageRoot, 'assets', csvFileName)\n const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' })\n const headers = ['Pair', 'Asset', 'Type', 'Address']\n\n const records: OralceRecord[] = parse(fileContent, {\n delimiter: ',',\n columns: headers,\n skip_empty_lines: true\n })\n\n for (const record of records) {\n const pair = record.Pair.split('/')\n const asset = pair[0].trim().toLowerCase()\n const target = pair[1].trim().toLowerCase()\n const address = record.Address.toLowerCase()\n if (target === 'usd') {\n this.USD_ORACLE_MAP.set(asset, address)\n } else if (target === 'eth') {\n this.ETH_ORACLE_MAP.set(asset, address)\n } else if (target == 'btc') {\n this.BTC_ORACLE_MAP.set(asset, address)\n } else {\n console.error('wrong asset record:' + JSON.stringify(record))\n }\n\n // console.log(asset, target, address)\n }\n }\n\n // asset: symbol of the asset\n // unit: usd, eth or btc\n // blockTag: blockNumber of block symbol like \"latest\"\n // returns the asset price,\n // throw exception if calling to price feed failed, e.g. due to a invalid block number\n async getPrice(\n asset: string,\n blockTag: BlockTag = 'latest',\n unit: PriceUnit = PriceUnit.USD\n ): Promise<DexPriceResult> {\n // if (chainId !== 1 && chainId !== 5) {\n // return {\n // error: \"current dex price only support chain 1 (mainnet) or 5 (goerli)\"\n // }\n // }\n\n let oracleMap = this.USD_ORACLE_MAP\n switch (unit) {\n case PriceUnit.ETH:\n oracleMap = this.ETH_ORACLE_MAP\n break\n case PriceUnit.BTC:\n oracleMap = this.BTC_ORACLE_MAP\n break\n default:\n }\n\n asset = asset.trim().toLowerCase()\n\n const addr = oracleMap.get(asset)\n if (!addr) {\n return {\n error: 'No price feed found for asset'\n }\n }\n\n const contract = getEACAggregatorProxyContract(this.chainId, addr)\n try {\n const price = await contract.latestAnswer({\n blockTag: blockTag\n })\n\n let decimal = this.ASSETS_INFOS.get(asset)\n if (!decimal) {\n decimal = Number(await contract.decimals())\n this.ASSETS_INFOS.set(asset, decimal)\n }\n\n return {\n price: scaleDown(price, decimal).toNumber()\n }\n } catch (e) {\n return {\n error:\n 'Price query error for ' +\n asset +\n ' failed at ' +\n addr +\n ' at chain ' +\n this.chainId +\n '. Details: ' +\n e.toString()\n }\n }\n }\n}\n\nexport const EthereumDexPrice = new DexPrice('chainlink-oracles.csv', EthChainId.ETHEREUM)\nexport const SepoliaDexPrice = new DexPrice('chainlink-oracles-sepolia.csv', EthChainId.SEPOLIA)\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","class CsvError extends Error {\n constructor(code, message, options, ...contexts) {\n if (Array.isArray(message)) message = message.join(\" \").trim();\n super(message);\n if (Error.captureStackTrace !== undefined) {\n Error.captureStackTrace(this, CsvError);\n }\n this.code = code;\n for (const context of contexts) {\n for (const key in context) {\n const value = context[key];\n this[key] = Buffer.isBuffer(value)\n ? value.toString(options.encoding)\n : value == null\n ? value\n : JSON.parse(JSON.stringify(value));\n }\n }\n }\n}\n\nexport { CsvError };\n","const is_object = function (obj) {\n return typeof obj === \"object\" && obj !== null && !Array.isArray(obj);\n};\n\nexport { is_object };\n","import { CsvError } from \"./CsvError.js\";\nimport { is_object } from \"../utils/is_object.js\";\n\nconst normalize_columns_array = function (columns) {\n const normalizedColumns = [];\n for (let i = 0, l = columns.length; i < l; i++) {\n const column = columns[i];\n if (column === undefined || column === null || column === false) {\n normalizedColumns[i] = { disabled: true };\n } else if (typeof column === \"string\") {\n normalizedColumns[i] = { name: column };\n } else if (is_object(column)) {\n if (typeof column.name !== \"string\") {\n throw new CsvError(\"CSV_OPTION_COLUMNS_MISSING_NAME\", [\n \"Option columns missing name:\",\n `property \"name\" is required at position ${i}`,\n \"when column is an object literal\",\n ]);\n }\n normalizedColumns[i] = column;\n } else {\n throw new CsvError(\"CSV_INVALID_COLUMN_DEFINITION\", [\n \"Invalid column definition:\",\n \"expect a string or a literal object,\",\n `got ${JSON.stringify(column)} at position ${i}`,\n ]);\n }\n }\n return normalizedColumns;\n};\n\nexport { normalize_columns_array };\n","class ResizeableBuffer {\n constructor(size = 100) {\n this.size = size;\n this.length = 0;\n this.buf = Buffer.allocUnsafe(size);\n }\n prepend(val) {\n if (Buffer.isBuffer(val)) {\n const length = this.length + val.length;\n if (length >= this.size) {\n this.resize();\n if (length >= this.size) {\n throw Error(\"INVALID_BUFFER_STATE\");\n }\n }\n const buf = this.buf;\n this.buf = Buffer.allocUnsafe(this.size);\n val.copy(this.buf, 0);\n buf.copy(this.buf, val.length);\n this.length += val.length;\n } else {\n const length = this.length++;\n if (length === this.size) {\n this.resize();\n }\n const buf = this.clone();\n this.buf[0] = val;\n buf.copy(this.buf, 1, 0, length);\n }\n }\n append(val) {\n const length = this.length++;\n if (length === this.size) {\n this.resize();\n }\n this.buf[length] = val;\n }\n clone() {\n return Buffer.from(this.buf.slice(0, this.length));\n }\n resize() {\n const length = this.length;\n this.size = this.size * 2;\n const buf = Buffer.allocUnsafe(this.size);\n this.buf.copy(buf, 0, 0, length);\n this.buf = buf;\n }\n toString(encoding) {\n if (encoding) {\n return this.buf.slice(0, this.length).toString(encoding);\n } else {\n return Uint8Array.prototype.slice.call(this.buf.slice(0, this.length));\n }\n }\n toJSON() {\n return this.toString(\"utf8\");\n }\n reset() {\n this.length = 0;\n }\n}\n\nexport default ResizeableBuffer;\n","import ResizeableBuffer from \"../utils/ResizeableBuffer.js\";\n\n// white space characters\n// https://en.wikipedia.org/wiki/Whitespace_character\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes#Types\n// \\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\nconst np = 12;\nconst cr = 13; // `\\r`, carriage return, 0x0D in hexadécimal, 13 in decimal\nconst nl = 10; // `\\n`, newline, 0x0A in hexadecimal, 10 in decimal\nconst space = 32;\nconst tab = 9;\n\nconst init_state = function (options) {\n return {\n bomSkipped: false,\n bufBytesStart: 0,\n castField: options.cast_function,\n commenting: false,\n // Current error encountered by a record\n error: undefined,\n enabled: options.from_line === 1,\n escaping: false,\n escapeIsQuote:\n Buffer.isBuffer(options.escape) &&\n Buffer.isBuffer(options.quote) &&\n Buffer.compare(options.escape, options.quote) === 0,\n // columns can be `false`, `true`, `Array`\n expectedRecordLength: Array.isArray(options.columns)\n ? options.columns.length\n : undefined,\n field: new ResizeableBuffer(20),\n firstLineToHeaders: options.cast_first_line_to_header,\n needMoreDataSize: Math.max(\n // Skip if the remaining buffer smaller than comment\n options.comment !== null ? options.comment.length : 0,\n // Skip if the remaining buffer can be delimiter\n ...options.delimiter.map((delimiter) => delimiter.length),\n // Skip if the remaining buffer can be escape sequence\n options.quote !== null ? options.quote.length : 0,\n ),\n previousBuf: undefined,\n quoting: false,\n stop: false,\n rawBuffer: new ResizeableBuffer(100),\n record: [],\n recordHasError: false,\n record_length: 0,\n recordDelimiterMaxLength:\n options.record_delimiter.length === 0\n ? 0\n : Math.max(...options.record_delimiter.map((v) => v.length)),\n trimChars: [\n Buffer.from(\" \", options.encoding)[0],\n Buffer.from(\"\\t\", options.encoding)[0],\n ],\n wasQuoting: false,\n wasRowDelimiter: false,\n timchars: [\n Buffer.from(Buffer.from([cr], \"utf8\").toString(), options.encoding),\n Buffer.from(Buffer.from([nl], \"utf8\").toString(), options.encoding),\n Buffer.from(Buffer.from([np], \"utf8\").toString(), options.encoding),\n Buffer.from(Buffer.from([space], \"utf8\").toString(), options.encoding),\n Buffer.from(Buffer.from([tab], \"utf8\").toString(), options.encoding),\n ],\n };\n};\n\nexport { init_state };\n","const underscore = function (str) {\n return str.replace(/([A-Z])/g, function (_, match) {\n return \"_\" + match.toLowerCase();\n });\n};\n\nexport { underscore };\n","import { normalize_columns_array } from \"./normalize_columns_array.js\";\nimport { CsvError } from \"./CsvError.js\";\nimport { underscore } from \"../utils/underscore.js\";\n\nconst normalize_options = function (opts) {\n const options = {};\n // Merge with user options\n for (const opt in opts) {\n options[underscore(opt)] = opts[opt];\n }\n // Normalize option `encoding`\n // Note: defined first because other options depends on it\n // to convert chars/strings into buffers.\n if (options.encoding === undefined || options.encoding === true) {\n options.encoding = \"utf8\";\n } else if (options.encoding === null || options.encoding === false) {\n options.encoding = null;\n } else if (\n typeof options.encoding !== \"string\" &&\n options.encoding !== null\n ) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_ENCODING\",\n [\n \"Invalid option encoding:\",\n \"encoding must be a string or null to return a buffer,\",\n `got ${JSON.stringify(options.encoding)}`,\n ],\n options,\n );\n }\n // Normalize option `bom`\n if (\n options.bom === undefined ||\n options.bom === null ||\n options.bom === false\n ) {\n options.bom = false;\n } else if (options.bom !== true) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_BOM\",\n [\n \"Invalid option bom:\",\n \"bom must be true,\",\n `got ${JSON.stringify(options.bom)}`,\n ],\n options,\n );\n }\n // Normalize option `cast`\n options.cast_function = null;\n if (\n options.cast === undefined ||\n options.cast === null ||\n options.cast === false ||\n options.cast === \"\"\n ) {\n options.cast = undefined;\n } else if (typeof options.cast === \"function\") {\n options.cast_function = options.cast;\n options.cast = true;\n } else if (options.cast !== true) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_CAST\",\n [\n \"Invalid option cast:\",\n \"cast must be true or a function,\",\n `got ${JSON.stringify(options.cast)}`,\n ],\n options,\n );\n }\n // Normalize option `cast_date`\n if (\n options.cast_date === undefined ||\n options.cast_date === null ||\n options.cast_date === false ||\n options.cast_date === \"\"\n ) {\n options.cast_date = false;\n } else if (options.cast_date === true) {\n options.cast_date = function (value) {\n const date = Date.parse(value);\n return !isNaN(date) ? new Date(date) : value;\n };\n } else if (typeof options.cast_date !== \"function\") {\n throw new CsvError(\n \"CSV_INVALID_OPTION_CAST_DATE\",\n [\n \"Invalid option cast_date:\",\n \"cast_date must be true or a function,\",\n `got ${JSON.stringify(options.cast_date)}`,\n ],\n options,\n );\n }\n // Normalize option `columns`\n options.cast_first_line_to_header = undefined;\n if (options.columns === true) {\n // Fields in the first line are converted as-is to columns\n options.cast_first_line_to_header = undefined;\n } else if (typeof options.columns === \"function\") {\n options.cast_first_line_to_header = options.columns;\n options.columns = true;\n } else if (Array.isArray(options.columns)) {\n options.columns = normalize_columns_array(options.columns);\n } else if (\n options.columns === undefined ||\n options.columns === null ||\n options.columns === false\n ) {\n options.columns = false;\n } else {\n throw new CsvError(\n \"CSV_INVALID_OPTION_COLUMNS\",\n [\n \"Invalid option columns:\",\n \"expect an array, a function or true,\",\n `got ${JSON.stringify(options.columns)}`,\n ],\n options,\n );\n }\n // Normalize option `group_columns_by_name`\n if (\n options.group_columns_by_name === undefined ||\n options.group_columns_by_name === null ||\n options.group_columns_by_name === false\n ) {\n options.group_columns_by_name = false;\n } else if (options.group_columns_by_name !== true) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_GROUP_COLUMNS_BY_NAME\",\n [\n \"Invalid option group_columns_by_name:\",\n \"expect an boolean,\",\n `got ${JSON.stringify(options.group_columns_by_name)}`,\n ],\n options,\n );\n } else if (options.columns === false) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_GROUP_COLUMNS_BY_NAME\",\n [\n \"Invalid option group_columns_by_name:\",\n \"the `columns` mode must be activated.\",\n ],\n options,\n );\n }\n // Normalize option `comment`\n if (\n options.comment === undefined ||\n options.comment === null ||\n options.comment === false ||\n options.comment === \"\"\n ) {\n options.comment = null;\n } else {\n if (typeof options.comment === \"string\") {\n options.comment = Buffer.from(options.comment, options.encoding);\n }\n if (!Buffer.isBuffer(options.comment)) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_COMMENT\",\n [\n \"Invalid option comment:\",\n \"comment must be a buffer or a string,\",\n `got ${JSON.stringify(options.comment)}`,\n ],\n options,\n );\n }\n }\n // Normalize option `comment_no_infix`\n if (\n options.comment_no_infix === undefined ||\n options.comment_no_infix === null ||\n options.comment_no_infix === false\n ) {\n options.comment_no_infix = false;\n } else if (options.comment_no_infix !== true) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_COMMENT\",\n [\n \"Invalid option comment_no_infix:\",\n \"value must be a boolean,\",\n `got ${JSON.stringify(options.comment_no_infix)}`,\n ],\n options,\n );\n }\n // Normalize option `delimiter`\n const delimiter_json = JSON.stringify(options.delimiter);\n if (!Array.isArray(options.delimiter))\n options.delimiter = [options.delimiter];\n if (options.delimiter.length === 0) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_DELIMITER\",\n [\n \"Invalid option delimiter:\",\n \"delimiter must be a non empty string or buffer or array of string|buffer,\",\n `got ${delimiter_json}`,\n ],\n options,\n );\n }\n options.delimiter = options.delimiter.map(function (delimiter) {\n if (delimiter === undefined || delimiter === null || delimiter === false) {\n return Buffer.from(\",\", options.encoding);\n }\n if (typeof delimiter === \"string\") {\n delimiter = Buffer.from(delimiter, options.encoding);\n }\n if (!Buffer.isBuffer(delimiter) || delimiter.length === 0) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_DELIMITER\",\n [\n \"Invalid option delimiter:\",\n \"delimiter must be a non empty string or buffer or array of string|buffer,\",\n `got ${delimiter_json}`,\n ],\n options,\n );\n }\n return delimiter;\n });\n // Normalize option `escape`\n if (options.escape === undefined || options.escape === true) {\n options.escape = Buffer.from('\"', options.encoding);\n } else if (typeof options.escape === \"string\") {\n options.escape = Buffer.from(options.escape, options.encoding);\n } else if (options.escape === null || options.escape === false) {\n options.escape = null;\n }\n if (options.escape !== null) {\n if (!Buffer.isBuffer(options.escape)) {\n throw new Error(\n `Invalid Option: escape must be a buffer, a string or a boolean, got ${JSON.stringify(options.escape)}`,\n );\n }\n }\n // Normalize option `from`\n if (options.from === undefined || options.from === null) {\n options.from = 1;\n } else {\n if (typeof options.from === \"string\" && /\\d+/.test(options.from)) {\n options.from = parseInt(options.from);\n }\n if (Number.isInteger(options.from)) {\n if (options.from < 0) {\n throw new Error(\n `Invalid Option: from must be a positive integer, got ${JSON.stringify(opts.from)}`,\n );\n }\n } else {\n throw new Error(\n `Invalid Option: from must be an integer, got ${JSON.stringify(options.from)}`,\n );\n }\n }\n // Normalize option `from_line`\n if (options.from_line === undefined || options.from_line === null) {\n options.from_line = 1;\n } else {\n if (\n typeof options.from_line === \"string\" &&\n /\\d+/.test(options.from_line)\n ) {\n options.from_line = parseInt(options.from_line);\n }\n if (Number.isInteger(options.from_line)) {\n if (options.from_line <= 0) {\n throw new Error(\n `Invalid Option: from_line must be a positive integer greater than 0, got ${JSON.stringify(opts.from_line)}`,\n );\n }\n } else {\n throw new Error(\n `Invalid Option: from_line must be an integer, got ${JSON.stringify(opts.from_line)}`,\n );\n }\n }\n // Normalize options `ignore_last_delimiters`\n if (\n options.ignore_last_delimiters === undefined ||\n options.ignore_last_delimiters === null\n ) {\n options.ignore_last_delimiters = false;\n } else if (typeof options.ignore_last_delimiters === \"number\") {\n options.ignore_last_delimiters = Math.floor(options.ignore_last_delimiters);\n if (options.ignore_last_delimiters === 0) {\n options.ignore_last_delimiters = false;\n }\n } else if (typeof options.ignore_last_delimiters !== \"boolean\") {\n throw new CsvError(\n \"CSV_INVALID_OPTION_IGNORE_LAST_DELIMITERS\",\n [\n \"Invalid option `ignore_last_delimiters`:\",\n \"the value must be a boolean value or an integer,\",\n `got ${JSON.stringify(options.ignore_last_delimiters)}`,\n ],\n options,\n );\n }\n if (options.ignore_last_delimiters === true && options.columns === false) {\n throw new CsvError(\n \"CSV_IGNORE_LAST_DELIMITERS_REQUIRES_COLUMNS\",\n [\n \"The option `ignore_last_delimiters`\",\n \"requires the activation of the `columns` option\",\n ],\n options,\n );\n }\n // Normalize option `info`\n if (\n options.info === undefined ||\n options.info === null ||\n options.info === false\n ) {\n options.info = false;\n } else if (options.info !== true) {\n throw new Error(\n `Invalid Option: info must be true, got ${JSON.stringify(options.info)}`,\n );\n }\n // Normalize option `max_record_size`\n if (\n options.max_record_size === undefined ||\n options.max_record_size === null ||\n options.max_record_size === false\n ) {\n options.max_record_size = 0;\n } else if (\n Number.isInteger(options.max_record_size) &&\n options.max_record_size >= 0\n ) {\n // Great, nothing to do\n } else if (\n typeof options.max_record_size === \"string\" &&\n /\\d+/.test(options.max_record_size)\n ) {\n options.max_record_size = parseInt(options.max_record_size);\n } else {\n throw new Error(\n `Invalid Option: max_record_size must be a positive integer, got ${JSON.stringify(options.max_record_size)}`,\n );\n }\n // Normalize option `objname`\n if (\n options.objname === undefined ||\n options.objname === null ||\n options.objname === false\n ) {\n options.objname = undefined;\n } else if (Buffer.isBuffer(options.objname)) {\n if (options.objname.length === 0) {\n throw new Error(`Invalid Option: objname must be a non empty buffer`);\n }\n if (options.encoding === null) {\n // Don't call `toString`, leave objname as a buffer\n } else {\n options.objname = options.objname.toString(options.encoding);\n }\n } else if (typeof options.objname === \"string\") {\n if (options.objname.length === 0) {\n throw new Error(`Invalid Option: objname must be a non empty string`);\n }\n // Great, nothing to do\n } else if (typeof options.objname === \"number\") {\n // if(options.objname.length === 0){\n // throw new Error(`Invalid Option: objname must be a non empty string`);\n // }\n // Great, nothing to do\n } else {\n throw new Error(\n `Invalid Option: objname must be a string or a buffer, got ${options.objname}`,\n );\n }\n if (options.objname !== undefined) {\n if (typeof options.objname === \"number\") {\n if (options.columns !== false) {\n throw Error(\n \"Invalid Option: objname index cannot be combined with columns or be defined as a field\",\n );\n }\n } else {\n // A string or a buffer\n if (options.columns === false) {\n throw Error(\n \"Invalid Option: objname field must be combined with columns or be defined as an index\",\n );\n }\n }\n }\n // Normalize option `on_record`\n if (options.on_record === undefined || options.on_record === null) {\n options.on_record = undefined;\n } else if (typeof options.on_record !== \"function\") {\n throw new CsvError(\n \"CSV_INVALID_OPTION_ON_RECORD\",\n [\n \"Invalid option `on_record`:\",\n \"expect a function,\",\n `got ${JSON.stringify(options.on_record)}`,\n ],\n options,\n );\n }\n // Normalize option `on_skip`\n // options.on_skip ??= (err, chunk) => {\n // this.emit('skip', err, chunk);\n // };\n if (\n options.on_skip !== undefined &&\n options.on_skip !== null &&\n typeof options.on_skip !== \"function\"\n ) {\n throw new Error(\n `Invalid Option: on_skip must be a function, got ${JSON.stringify(options.on_skip)}`,\n );\n }\n // Normalize option `quote`\n if (\n options.quote === null ||\n options.quote === false ||\n options.quote === \"\"\n ) {\n options.quote = null;\n } else {\n if (options.quote === undefined || options.quote === true) {\n options.quote = Buffer.from('\"', options.encoding);\n } else if (typeof options.quote === \"string\") {\n options.quote = Buffer.from(options.quote, options.encoding);\n }\n if (!Buffer.isBuffer(options.quote)) {\n throw new Error(\n `Invalid Option: quote must be a buffer or a string, got ${JSON.stringify(options.quote)}`,\n );\n }\n }\n // Normalize option `raw`\n if (\n options.raw === undefined ||\n options.raw === null ||\n options.raw === false\n ) {\n options.raw = false;\n } else if (options.raw !== true) {\n throw new Error(\n `Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`,\n );\n }\n // Normalize option `record_delimiter`\n if (options.record_delimiter === undefined) {\n options.record_delimiter = [];\n } else if (\n typeof options.record_delimiter === \"string\" ||\n Buffer.isBuffer(options.record_delimiter)\n ) {\n if (options.record_delimiter.length === 0) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_RECORD_DELIMITER\",\n [\n \"Invalid option `record_delimiter`:\",\n \"value must be a non empty string or buffer,\",\n `got ${JSON.stringify(options.record_delimiter)}`,\n ],\n options,\n );\n }\n options.record_delimiter = [options.record_delimiter];\n } else if (!Array.isArray(options.record_delimiter)) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_RECORD_DELIMITER\",\n [\n \"Invalid option `record_delimiter`:\",\n \"value must be a string, a buffer or array of string|buffer,\",\n `got ${JSON.stringify(options.record_delimiter)}`,\n ],\n options,\n );\n }\n options.record_delimiter = options.record_delimiter.map(function (rd, i) {\n if (typeof rd !== \"string\" && !Buffer.isBuffer(rd)) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_RECORD_DELIMITER\",\n [\n \"Invalid option `record_delimiter`:\",\n \"value must be a string, a buffer or array of string|buffer\",\n `at index ${i},`,\n `got ${JSON.stringify(rd)}`,\n ],\n options,\n );\n } else if (rd.length === 0) {\n throw new CsvError(\n \"CSV_INVALID_OPTION_RECORD_DELIMITER\",\n [\n \"Invalid option `record_delimiter`:\",\n \"value must be a non empty string or buffer\",\n `at index ${i},`,\n `got ${JSON.stringify(rd)}`,\n ],\n options,\n );\n }\n if (typeof rd === \"string\") {\n rd = Buffer.from(rd, options.encoding);\n }\n return rd;\n });\n // Normalize option `relax_column_count`\n if (typeof options.relax_column_count === \"boolean\") {\n // Great, nothing to do\n } else if (\n options.relax_column_count === undefined ||\n options.relax_column_count === null\n ) {\n options.relax_column_count = false;\n } else {\n throw new Error(\n `Invalid Option: relax_column_count must be a boolean, got ${JSON.stringify(options.relax_column_count)}`,\n );\n }\n if (typeof options.relax_column_count_less === \"boolean\") {\n // Great, nothing to do\n } else if (\n options.relax_column_count_less === undefined ||\n options.relax_column_count_less === null\n ) {\n options.relax_column_count_less = false;\n } else {\n throw new Error(\n `Invalid Option: relax_column_count_less must be a boolean, got ${JSON.stringify(options.relax_column_count_less)}`,\n );\n }\n if (typeof options.relax_column_count_more === \"boolean\") {\n // Great, nothing to do\n } else if (\n options.relax_column_count_more === undefined ||\n options.relax_column_count_more === null\n ) {\n options.relax_column_count_more = false;\n } else {\n throw new Error(\n `Invalid Option: relax_column_count_more must be a boolean, got ${JSON.stringify(options.relax_column_count_more)}`,\n );\n }\n // Normalize option `relax_quotes`\n if (typeof options.relax_quotes === \"boolean\") {\n // Great, nothing to do\n } else if (\n options.relax_quotes === undefined ||\n options.relax_quotes === null\n ) {\n options.relax_quotes = false;\n } else {\n throw new Error(\n `Invalid Option: relax_quotes must be a boolean, got ${JSON.stringify(options.relax_quotes)}`,\n );\n }\n // Normalize option `skip_empty_lines`\n if (typeof options.skip_empty_lines === \"boolean\") {\n // Great, nothing to do\n } else if (\n options.skip_empty_lines === undefined ||\n options.skip_empty_lines === null\n ) {\n options.skip_empty_lines = false;\n } else {\n throw new Error(\n `Invalid Option: skip_empty_lines must be a boolean, got ${JSON.stringify(options.skip_empty_lines)}`,\n );\n }\n // Normalize option `skip_records_with_empty_values`\n if (typeof options.skip_records_with_empty_values === \"boolean\") {\n // Great, nothing to do\n } else if (\n options.skip_records_with_empty_values === undefined ||\n options.skip_records_with_empty_values === null\n ) {\n options.skip_records_with_empty_values = false;\n } else {\n throw new Error(\n `Invalid Option: skip_records_with_empty_values must be a boolean, got ${JSON.stringify(options.skip_records_with_empty_values)}`,\n );\n }\n // Normalize option `skip_records_with_error`\n if (typeof options.skip_records_with_error === \"boolean\") {\n // Great, nothing to do\n } else if (\n options.skip_records_with_error === undefined ||\n options.skip_records_with_error === null\n ) {\n options.skip_records_with_error = false;\n } else {\n throw new Error(\n `Invalid Option: skip_records_with_error must be a boolean, got ${JSON.stringify(options.skip_records_with_error)}`,\n );\n }\n // Normalize option `rtrim`\n if (\n options.rtrim === undefined ||\n options.rtrim === null ||\n options.rtrim === false\n ) {\n options.rtrim = false;\n } else if (options.rtrim !== true) {\n throw new Error(\n `Invalid Option: rtrim must be a boolean, got ${JSON.stringify(options.rtrim)}`,\n );\n }\n // Normalize option `ltrim`\n if (\n options.ltrim === undefined ||\n options.ltrim === null ||\n options.ltrim === false\n ) {\n options.ltrim = false;\n } else if (options.ltrim !== true) {\n throw new Error(\n `Invalid Option: ltrim must be a boolean, got ${JSON.stringify(options.ltrim)}`,\n );\n }\n // Normalize option `trim`\n if (\n options.trim === undefined ||\n options.trim === null ||\n options.trim === false\n ) {\n options.trim = false;\n } else if (options.trim !== true) {\n throw new Error(\n `Invalid Option: trim must be a boolean, got ${JSON.stringify(options.trim)}`,\n );\n }\n // Normalize options `trim`, `ltrim` and `rtrim`\n if (options.trim === true && opts.ltrim !== false) {\n options.ltrim = true;\n } else if (options.ltrim !== true) {\n options.ltrim = false;\n }\n if (options.trim === true && opts.rtrim !== false) {\n options.rtrim = true;\n } else if (options.rtrim !== true) {\n options.rtrim = false;\n }\n // Normalize option `to`\n if (options.to === undefined || options.to === null) {\n options.to = -1;\n } else if (options.to !== -1) {\n if (typeof options.to === \"string\" && /\\d+/.test(options.to)) {\n options.to = parseInt(options.to);\n }\n if (Number.isInteger(options.to)) {\n if (options.to <= 0) {\n throw new Error(\n `Invalid Option: to must be a positive integer greater than 0, got ${JSON.stringify(opts.to)}`,\n );\n }\n } else {\n throw new Error(\n `Invalid Option: to must be an integer, got ${JSON.stringify(opts.to)}`,\n );\n }\n }\n // Normalize option `to_line`\n if (options.to_line === undefined || options.to_line === null) {\n options.to_line = -1;\n } else if (options.to_line !== -1) {\n if (typeof options.to_line === \"string\" && /\\d+/.test(options.to_line)) {\n options.to_line = parseInt(options.to_line);\n }\n if (Number.isInteger(options.to_line)) {\n if (options.to_line <= 0) {\n throw new Error(\n `Invalid Option: to_line must be a positive integer greater than 0, got ${JSON.stringify(opts.to_line)}`,\n );\n }\n } else {\n throw new Error(\n `Invalid Option: to_line must be an integer, got ${JSON.stringify(opts.to_line)}`,\n );\n }\n }\n return options;\n};\n\nexport { normalize_options };\n","import { normalize_columns_array } from \"./normalize_columns_array.js\";\nimport { init_state } from \"./init_state.js\";\nimport { normalize_options } from \"./normalize_options.js\";\nimport { CsvError } from \"./CsvError.js\";\n\nconst isRecordEmpty = function (record) {\n return record.every(\n (field) =>\n field == null || (field.toString && field.toString().trim() === \"\"),\n );\n};\n\nconst cr = 13; // `\\r`, carriage return, 0x0D in hexadécimal, 13 in decimal\nconst nl = 10; // `\\n`, newline, 0x0A in hexadecimal, 10 in decimal\n\nconst boms = {\n // Note, the following are equals:\n // Buffer.from(\"\\ufeff\")\n // Buffer.from([239, 187, 191])\n // Buffer.from('EFBBBF', 'hex')\n utf8: Buffer.from([239, 187, 191]),\n // Note, the following are equals:\n // Buffer.from \"\\ufeff\", 'utf16le\n // Buffer.from([255, 254])\n utf16le: Buffer.from([255, 254]),\n};\n\nconst transform = function (original_options = {}) {\n const info = {\n bytes: 0,\n comment_lines: 0,\n empty_lines: 0,\n invalid_field_length: 0,\n lines: 1,\n records: 0,\n };\n const options = normalize_options(original_options);\n return {\n info: info,\n original_options: original_options,\n options: options,\n state: init_state(options),\n __needMoreData: function (i, bufLen, end) {\n if (end) return false;\n const { encoding, escape, quote } = this.options;\n const { quoting, needMoreDataSize, recordDelimiterMaxLength } =\n this.state;\n const numOfCharLeft = bufLen - i - 1;\n const requiredLength = Math.max(\n needMoreDataSize,\n // Skip if the remaining buffer smaller than record delimiter\n // If \"record_delimiter\" is yet to be discovered:\n // 1. It is equals to `[]` and \"recordDelimiterMaxLength\" equals `0`\n // 2. We set the length to windows line ending in the current encoding\n // Note, that encoding is known from user or bom discovery at that point\n // recordDelimiterMaxLength,\n recordDelimiterMaxLength === 0\n ? Buffer.from(\"\\r\\n\", encoding).length\n : recordDelimiterMaxLength,\n // Skip if remaining buffer can be an escaped quote\n quoting ? (escape === null ? 0 : escape.length) + quote.length : 0,\n // Skip if remaining buffer can be record delimiter following the closing quote\n quoting ? quote.length + recordDelimiterMaxLength : 0,\n );\n return numOfCharLeft < requiredLength;\n },\n // Central parser implementation\n parse: function (nextBuf, end, push, close) {\n const {\n bom,\n comment_no_infix,\n encoding,\n from_line,\n ltrim,\n max_record_size,\n raw,\n relax_quotes,\n rtrim,\n skip_empty_lines,\n to,\n to_line,\n } = this.options;\n let { comment, escape, quote, record_delimiter } = this.options;\n const { bomSkipped, previousBuf, rawBuffer, escapeIsQuote } = this.state;\n let buf;\n if (previousBuf === undefined) {\n if (nextBuf === undefined) {\n // Handle empty string\n close();\n return;\n } else {\n buf = nextBuf;\n }\n } else if (previousBuf !== undefined && nextBuf === undefined) {\n buf = previousBuf;\n } else {\n buf = Buffer.concat([previousBuf, nextBuf]);\n }\n // Handle UTF BOM\n if (bomSkipped === false) {\n if (bom === false) {\n this.state.bomSkipped = true;\n } else if (buf.length < 3) {\n // No enough data\n if (end === false) {\n // Wait for more data\n this.state.previousBuf = buf;\n return;\n }\n } else {\n for (const encoding in boms) {\n if (boms[encoding].compare(buf, 0, boms[encoding].length) === 0) {\n // Skip BOM\n const bomLength = boms[encoding].length;\n this.state.bufBytesStart += bomLength;\n buf = buf.slice(bomLength);\n // Renormalize original options with the new encoding\n const options = normalize_options({\n ...this.original_options,\n encoding: encoding,\n });\n // Properties are merged with the existing options instance\n for (const key in options) {\n this.options[key] = options[key];\n }\n // Options will re-evaluate the Buffer with the new encoding\n ({ comment, escape, quote } = this.options);\n break;\n }\n }\n this.state.bomSkipped = true;\n }\n }\n const bufLen = buf.length;\n let pos;\n for (pos = 0; pos < bufLen; pos++) {\n // Ensure we get enough space to look ahead\n // There should be a way to move this out of the loop\n if (this.__needMoreData(pos, bufLen, end)) {\n break;\n }\n if (this.state.wasRowDelimiter === true) {\n this.info.lines++;\n this.state.wasRowDelimiter = false;\n }\n if (to_line !== -1 && this.info.lines > to_line) {\n this.state.stop = true;\n close();\n return;\n }\n // Auto discovery of record_delimiter, unix, mac and windows supported\n if (this.state.quoting === false && record_delimiter.length === 0) {\n const record_delimiterCount = this.__autoDiscoverRecordDelimiter(\n buf,\n pos,\n );\n if (record_delimiterCount) {\n record_delimiter = this.options.record_delimiter;\n }\n }\n const chr = buf[pos];\n if (raw === true) {\n rawBuffer.append(chr);\n }\n if (\n (chr === cr || chr === nl) &&\n this.state.wasRowDelimiter === false\n ) {\n this.state.wasRowDelimiter = true;\n }\n // Previous char was a valid escape char\n // treat the current char as a regular char\n if (this.state.escaping === true) {\n this.state.escaping = false;\n } else {\n // Escape is only active inside quoted fields\n // We are quoting, the char is an escape chr and there is a chr to escape\n // if(escape !== null && this.state.quoting === true && chr === escape && pos + 1 < bufLen){\n if (\n escape !== null &&\n this.state.quoting === true &&\n this.__isEscape(buf, pos, chr) &&\n pos + escape.length < bufLen\n ) {\n if (escapeIsQuote) {\n if (this.__isQuote(buf, pos + escape.length)) {\n this.state.escaping = true;\n pos += escape.length - 1;\n continue;\n }\n } else {\n this.state.escaping = true;\n pos += escape.length - 1;\n continue;\n }\n }\n // Not currently escaping and chr is a quote\n // TODO: need to compare bytes instead of single char\n if (this.state.commenting === false && this.__isQuote(buf, pos)) {\n if (this.state.quoting === true) {\n const nextChr = buf[pos + quote.length];\n const isNextChrTrimable =\n rtrim && this.__isCharTrimable(buf, pos + quote.length);\n const isNextChrComment =\n comment !== null &&\n this.__compareBytes(comment, buf, pos + quote.length, nextChr);\n const isNextChrDelimiter = this.__isDelimiter(\n buf,\n pos + quote.length,\n nextChr,\n );\n const isNextChrRecordDelimiter =\n record_delimiter.length === 0\n ? this.__autoDiscoverRecordDelimiter(buf, pos + quote.length)\n : this.__isRecordDelimiter(nextChr, buf, pos + quote.length);\n // Escape a quote\n // Treat next char as a regular character\n if (\n escape !== null &&\n this.__isEscape(buf, pos, chr) &&\n this.__isQuote(buf, pos + escape.length)\n ) {\n pos += escape.length - 1;\n } else if (\n !nextChr ||\n isNextChrDelimiter ||\n isNextChrRecordDelimiter ||\n isNextChrComment ||\n isNextChrTrimable\n ) {\n this.state.quoting = false;\n this.state.wasQuoting = true;\n pos += quote.length - 1;\n continue;\n } else if (relax_quotes === false) {\n const err = this.__error(\n new CsvError(\n \"CSV_INVALID_CLOSING_QUOTE\",\n [\n \"Invalid Closing Quote:\",\n `got \"${String.fromCharCode(nextChr)}\"`,\n `at line ${this.info.lines}`,\n \"instead of delimiter, record delimiter, trimable character\",\n \"(if activated) or comment\",\n ],\n this.options,\n this.__infoField(),\n ),\n );\n if (err !== undefined) return err;\n } else {\n this.state.quoting = false;\n this.state.wasQuoting = true;\n this.state.field.prepend(quote);\n pos += quote.length - 1;\n }\n } else {\n if (this.state.field.length !== 0) {\n // In relax_quotes mode, treat opening quote preceded by chrs as regular\n if (relax_quotes === false) {\n const info = this.__infoField();\n const bom = Object.keys(boms)\n .map((b) =>\n boms[b].equals(this.state.field.toString()) ? b : false,\n )\n .filter(Boolean)[0];\n const err = this.__error(\n new CsvError(\n \"INVALID_OPENING_QUOTE\",\n [\n \"Invalid Opening Quote:\",\n `a quote is found on field ${JSON.stringify(info.column)} at line ${info.lines}, value is ${JSON.stringify(this.state.field.toString(encoding))}`,\n bom ? `(${bom} bom)` : undefined,\n ],\n this.options,\n info,\n {\n field: this.state.field,\n },\n ),\n );\n if (err !== undefined) return err;\n }\n } else {\n this.state.quoting = true;\n pos += quote.length - 1;\n continue;\n }\n }\n }\n if (this.state.quoting === false) {\n const recordDelimiterLength = this.__isRecordDelimiter(\n chr,\n buf,\n pos,\n );\n if (recordDelimiterLength !== 0) {\n // Do not emit comments which take a full line\n const skipCommentLine =\n this.state.commenting &&\n this.state.wasQuoting === false &&\n this.state.record.length === 0 &&\n this.state.field.length === 0;\n if (skipCommentLine) {\n this.info.comment_lines++;\n // Skip full comment line\n } else {\n // Activate records emition if above from_line\n if (\n this.state.enabled === false &&\n this.info.lines +\n (this.state.wasRowDelimiter === true ? 1 : 0) >=\n from_line\n ) {\n this.state.enabled = true;\n this.__resetField();\n this.__resetRecord();\n pos += recordDelimiterLength - 1;\n continue;\n }\n // Skip if line is empty and skip_empty_lines activated\n if (\n skip_empty_lines === true &&\n this.state.wasQuoting === false &&\n this.state.record.length === 0 &&\n this.state.field.length === 0\n ) {\n this.info.empty_lines++;\n pos += recordDelimiterLength - 1;\n continue;\n }\n this.info.bytes = this.state.bufBytesStart + pos;\n const errField = this.__onField();\n if (errField !== undefined) return errField;\n this.info.bytes =\n this.state.bufBytesStart + pos + recordDelimiterLength;\n const errRecord = this.__onRecord(push);\n if (errRecord !== undefined) return errRecord;\n if (to !== -1 && this.info.records >= to) {\n this.state.stop = true;\n close();\n return;\n }\n }\n this.state.commenting = false;\n pos += recordDelimiterLength - 1;\n continue;\n }\n if (this.state.commenting) {\n continue;\n }\n if (\n comment !== null &&\n (comment_no_infix === false ||\n (this.state.record.length === 0 &&\n this.state.field.length === 0))\n ) {\n const commentCount = this.__compareBytes(comment, buf, pos, chr);\n if (commentCount !== 0) {\n this.state.commenting = true;\n continue;\n }\n }\n const delimiterLength = this.__isDelimiter(buf, pos, chr);\n if (delimiterLength !== 0) {\n this.info.bytes = this.state.bufBytesStart + pos;\n const errField = this.__onField();\n if (errField !== undefined) return errField;\n pos += delimiterLength - 1;\n continue;\n }\n }\n }\n if (this.state.commenting === false) {\n if (\n max_record_size !== 0 &&\n this.state.record_length + this.state.field.length > max_record_size\n ) {\n return this.__error(\n new CsvError(\n \"CSV_MAX_RECORD_SIZE\",\n [\n \"Max Record Size:\",\n \"record exceed the maximum number of tolerated bytes\",\n `of ${max_record_size}`,\n `at line ${this.info.lines}`,\n ],\n this.options,\n this.__infoField(),\n ),\n );\n }\n }\n const lappend =\n ltrim === false ||\n this.state.quoting === true ||\n this.state.field.length !== 0 ||\n !this.__isCharTrimable(buf, pos);\n // rtrim in non quoting is handle in __onField\n const rappend = rtrim === false || this.state.wasQuoting === false;\n if (lappend === true && rappend === true) {\n this.state.field.append(chr);\n } else if (rtrim === true && !this.__isCharTrimable(buf, pos)) {\n return this.__error(\n new CsvError(\n \"CSV_NON_TRIMABLE_CHAR_AFTER_CLOSING_QUOTE\",\n [\n \"Invalid Closing Quote:\",\n \"found non trimable byte after quote\",\n `at line ${this.info.lines}`,\n ],\n this.options,\n this.__infoField(),\n ),\n );\n } else {\n if (lappend === false) {\n pos += this.__isCharTrimable(buf, pos) - 1;\n }\n continue;\n }\n }\n if (end === true) {\n // Ensure we are not ending in a quoting state\n if (this.state.quoting === true) {\n const err = this.__error(\n new CsvError(\n \"CSV_QUOTE_NOT_CLOSED\",\n [\n \"Quote Not Closed:\",\n `the parsing is finished with an opening quote at line ${this.info.lines}`,\n ],\n this.options,\n this.__infoField(),\n ),\n );\n if (err !== undefined) return err;\n } else {\n // Skip last line if it has no characters\n if (\n this.state.wasQuoting === true ||\n this.state.record.length !== 0 ||\n this.state.field.length !== 0\n ) {\n this.info.bytes = this.state.bufBytesStart + pos;\n const errField = this.__onField();\n if (errField !== undefined) return errField;\n const errRecord = this.__onRecord(push);\n if (errRecord !== undefined) return errRecord;\n } else if (this.state.wasRowDelimiter === true) {\n this.info.empty_lines++;\n } else if (this.state.commenting === true) {\n this.info.comment_lines++;\n }\n }\n } else {\n this.state.bufBytesStart += pos;\n this.state.previousBuf = buf.slice(pos);\n }\n if (this.state.wasRowDelimiter === true) {\n this.info.lines++;\n this.state.wasRowDelimiter = false;\n }\n },\n __onRecord: function (push) {\n const {\n columns,\n group_columns_by_name,\n encoding,\n info,\n from,\n relax_column_count,\n relax_column_count_less,\n relax_column_count_more,\n raw,\n skip_records_with_empty_values,\n } = this.options;\n const { enabled, record } = this.state;\n if (enabled === false) {\n return this.__resetRecord();\n }\n // Convert the first line into column names\n const recordLength = record.length;\n if (columns === true) {\n if (skip_records_with_empty_values === true && isRecordEmpty(record)) {\n this.__resetRecord();\n return;\n }\n return this.__firstLineToColumns(record);\n }\n if (columns === false && this.info.records === 0) {\n this.state.expectedRecordLength = recordLength;\n }\n if (recordLength !== this.state.expectedRecordLength) {\n const err =\n columns === false\n ? new CsvError(\n \"CSV_RECORD_INCONSISTENT_FIELDS_LENGTH\",\n [\n \"Invalid Record Length:\",\n `expect ${this.state.expectedRecordLength},`,\n `got ${recordLength} on line ${this.info.lines}`,\n ],\n this.options,\n this.__infoField(),\n {\n record: record,\n },\n )\n : new CsvError(\n \"CSV_RECORD_INCONSISTENT_COLUMNS\",\n [\n \"Invalid Record Length:\",\n `columns length is ${columns.length},`, // rename columns\n `got ${recordLength} on line ${this.info.lines}`,\n ],\n this.options,\n this.__infoField(),\n {\n record: record,\n },\n );\n if (\n relax_column_count === true ||\n (relax_column_count_less === true &&\n recordLength < this.state.expectedRecordLength) ||\n (relax_column_count_more === true &&\n recordLength > this.state.expectedRecordLength)\n ) {\n this.info.invalid_field_length++;\n this.state.error = err;\n // Error is undefined with skip_records_with_error\n } else {\n const finalErr = this.__error(err);\n if (finalErr) return finalErr;\n }\n }\n if (skip_records_with_empty_values === true && isRecordEmpty(record)) {\n this.__resetRecord();\n return;\n }\n if (this.state.recordHasError === true) {\n this.__resetRecord();\n this.state.recordHasError = false;\n return;\n }\n this.info.records++;\n if (from === 1 || this.info.records >= from) {\n const { objname } = this.options;\n // With columns, records are object\n if (columns !== false) {\n const obj = {};\n // Transform record array to an object\n for (let i = 0, l = record.length; i < l; i++) {\n if (columns[i] === undefined || columns[i].disabled) continue;\n // Turn duplicate columns into an array\n if (\n group_columns_by_name === true &&\n obj[columns[i].name] !== undefined\n ) {\n if (Array.isArray(obj[columns[i].name])) {\n obj[columns[i].name] = obj[columns[i].name].concat(record[i]);\n } else {\n obj[columns[i].name] = [obj[columns[i].name], record[i]];\n }\n } else {\n obj[columns[i].name] = record[i];\n }\n }\n // Without objname (default)\n if (raw === true || info === true) {\n const extRecord = Object.assign(\n { record: obj },\n raw === true\n ? { raw: this.state.rawBuffer.toString(encoding) }\n : {},\n info === true ? { info: this.__infoRecord() } : {},\n );\n const err = this.__push(\n objname === undefined ? extRecord : [obj[objname], extRecord],\n push,\n );\n if (err) {\n return err;\n }\n } else {\n const err = this.__push(\n objname === undefined ? obj : [obj[objname], obj],\n push,\n );\n if (err) {\n return err;\n }\n }\n // Without columns, records are array\n } else {\n if (raw === true || info === true) {\n const extRecord = Object.assign(\n { record: record },\n raw === true\n ? { raw: this.state.rawBuffer.toString(encoding) }\n : {},\n info === true ? { info: this.__infoRecord() } : {},\n );\n const err = this.__push(\n objname === undefined ? extRecord : [record[objname], extRecord],\n push,\n );\n if (err) {\n return err;\n }\n } else {\n const err = this.__push(\n objname === undefined ? record : [record[objname], record],\n push,\n );\n if (err) {\n return err;\n }\n }\n }\n }\n this.__resetRecord();\n },\n __firstLineToColumns: function (record) {\n const { firstLineToHeaders } = this.state;\n try {\n const headers =\n firstLineToHeaders === undefined\n ? record\n : firstLineToHeaders.call(null, record);\n if (!Array.isArray(headers)) {\n return this.__error(\n new CsvError(\n \"CSV_INVALID_COLUMN_MAPPING\",\n [\n \"Invalid Column Mapping:\",\n \"expect an array from column function,\",\n `got ${JSON.stringify(headers)}`,\n ],\n this.options,\n this.__infoField(),\n {\n headers: headers,\n },\n ),\n );\n }\n const normalizedHeaders = normalize_columns_array(headers);\n this.state.expectedRecordLength = normalizedHeaders.length;\n this.options.columns = normalizedHeaders;\n this.__resetRecord();\n return;\n } catch (err) {\n return err;\n }\n },\n __resetRecord: function () {\n if (this.options.raw === true) {\n this.state.rawBuffer.reset();\n }\n this.state.error = undefined;\n this.state.record = [];\n this.state.record_length = 0;\n },\n __onField: function () {\n const { cast, encoding, rtrim, max_record_size } = this.options;\n const { enabled, wasQuoting } = this.state;\n // Short circuit for the from_line options\n if (enabled === false) {\n return this.__resetField();\n }\n let field = this.state.field.toString(encoding);\n if (rtrim === true && wasQuoting === false) {\n field = field.trimRight();\n }\n if (cast === true) {\n const [err, f] = this.__cast(field);\n if (err !== undefined) return err;\n field = f;\n }\n this.state.record.push(field);\n // Increment record length if record size must not exceed a limit\n if (max_record_size !== 0 && typeof field === \"string\") {\n this.state.record_length += field.length;\n }\n this.__resetField();\n },\n __resetField: function () {\n this.state.field.reset();\n this.state.wasQuoting = false;\n },\n __push: function (record, push) {\n const { on_record } = this.options;\n if (on_record !== undefined) {\n const info = this.__infoRecord();\n try {\n record = on_record.call(null, record, info);\n } catch (err) {\n return err;\n }\n if (record === undefined || record === null) {\n return;\n }\n }\n push(record);\n },\n // Return a tuple with the error and the casted value\n __cast: function (field) {\n const { columns, relax_column_count } = this.options;\n const isColumns = Array.isArray(columns);\n // Dont loose time calling cast\n // because the final record is an object\n // and this field can't be associated to a key present in columns\n if (\n isColumns === true &&\n relax_column_count &&\n this.options.columns.length <= this.state.record.length\n ) {\n return [undefined, undefined];\n }\n if (this.state.castField !== null) {\n try {\n const info = this.__infoField();\n return [undefined, this.state.castField.call(null, field, info)];\n } catch (err) {\n return [err];\n }\n }\n if (this.__isFloat(field)) {\n return [undefined, parseFloat(field)];\n } else if (this.options.cast_date !== false) {\n const info = this.__infoField();\n return [undefined, this.options.cast_date.call(null, field, info)];\n }\n return [undefined, field];\n },\n // Helper to test if a character is a space or a line delimiter\n __isCharTrimable: function (buf, pos) {\n const isTrim = (buf, pos) => {\n const { timchars } = this.state;\n loop1: for (let i = 0; i < timchars.length; i++) {\n const timchar = timchars[i];\n for (let j = 0; j < timchar.length; j++) {\n if (timchar[j] !== buf[pos + j]) continue loop1;\n }\n return timchar.length;\n }\n return 0;\n };\n return isTrim(buf, pos);\n },\n // Keep it in case we implement the `cast_int` option\n // __isInt(value){\n // // return Number.isInteger(parseInt(value))\n // // return !isNaN( parseInt( obj ) );\n // return /^(\\-|\\+)?[1-9][0-9]*$/.test(value)\n // }\n __isFloat: function (value) {\n return value - parseFloat(value) + 1 >= 0; // Borrowed from jquery\n },\n __compareBytes: function (sourceBuf, targetBuf, targetPos, firstByte) {\n if (sourceBuf[0] !== firstByte) return 0;\n const sourceLength = sourceBuf.length;\n for (let i = 1; i < sourceLength; i++) {\n if (sourceBuf[i] !== targetBuf[targetPos + i]) return 0;\n }\n return sourceLength;\n },\n __isDelimiter: function (buf, pos, chr) {\n const { delimiter, ignore_last_delimiters } = this.options;\n if (\n ignore_last_delimiters === true &&\n this.state.record.length === this.options.columns.length - 1\n ) {\n return 0;\n } else if (\n ignore_last_delimiters !== false &&\n typeof ignore_last_delimiters === \"number\" &&\n this.state.record.length === ignore_last_delimiters - 1\n ) {\n return 0;\n }\n loop1: for (let i = 0; i < delimiter.length; i++) {\n const del = delimiter[i];\n if (del[0] === chr) {\n for (let j = 1; j < del.length; j++) {\n if (del[j] !== buf[pos + j]) continue loop1;\n }\n return del.length;\n }\n }\n return 0;\n },\n __isRecordDelimiter: function (chr, buf, pos) {\n const { record_delimiter } = this.options;\n const recordDelimiterLength = record_delimiter.length;\n loop1: for (let i = 0; i < recordDelimiterLength; i++) {\n const rd = record_delimiter[i];\n const rdLength = rd.length;\n if (rd[0] !== chr) {\n continue;\n }\n for (let j = 1; j < rdLength; j++) {\n if (rd[j] !== buf[pos + j]) {\n continue loop1;\n }\n }\n return rd.length;\n }\n return 0;\n },\n __isEscape: function (buf, pos, chr) {\n const { escape } = this.options;\n if (escape === null) return false;\n const l = escape.length;\n if (escape[0] === chr) {\n for (let i = 0; i < l; i++) {\n if (escape[i] !== buf[pos + i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n },\n __isQuote: function (buf, pos) {\n const { quote } = this.options;\n if (quote === null) return false;\n const l = quote.length;\n for (let i = 0; i < l; i++) {\n if (quote[i] !== buf[pos + i]) {\n return false;\n }\n }\n return true;\n },\n __autoDiscoverRecordDelimiter: function (buf, pos) {\n const { encoding } = this.options;\n // Note, we don't need to cache this information in state,\n // It is only called on the first line until we find out a suitable\n // record delimiter.\n const rds = [\n // Important, the windows line ending must be before mac os 9\n Buffer.from(\"\\r\\n\", encoding),\n Buffer.from(\"\\n\", encoding),\n Buffer.from(\"\\r\", encoding),\n ];\n loop: for (let i = 0; i < rds.length; i++) {\n const l = rds[i].length;\n for (let j = 0; j < l; j++) {\n if (rds[i][j] !== buf[pos + j]) {\n continue loop;\n }\n }\n this.options.record_delimiter.push(rds[i]);\n this.state.recordDelimiterMaxLength = rds[i].length;\n return rds[i].length;\n }\n return 0;\n },\n __error: function (msg) {\n const { encoding, raw, skip_records_with_error } = this.options;\n const err = typeof msg === \"string\" ? new Error(msg) : msg;\n if (skip_records_with_error) {\n this.state.recordHasError = true;\n if (this.options.on_skip !== undefined) {\n try {\n this.options.on_skip(\n err,\n raw ? this.state.rawBuffer.toString(encoding) : undefined,\n );\n } catch (err) {\n return err;\n }\n }\n // this.emit('skip', err, raw ? this.state.rawBuffer.toString(encoding) : undefined);\n return undefined;\n } else {\n return err;\n }\n },\n __infoDataSet: function () {\n return {\n ...this.info,\n columns: this.options.columns,\n };\n },\n __infoRecord: function () {\n const { columns, raw, encoding } = this.options;\n return {\n ...this.__infoDataSet(),\n error: this.state.error,\n header: columns === true,\n index: this.state.record.length,\n raw: raw ? this.state.rawBuffer.toString(encoding) : undefined,\n };\n },\n __infoField: function () {\n const { columns } = this.options;\n const isColumns = Array.isArray(columns);\n return {\n ...this.__infoRecord(),\n column:\n isColumns === true\n ? columns.length > this.state.record.length\n ? columns[this.state.record.length].name\n : null\n : this.state.record.length,\n quoting: this.state.wasQuoting,\n };\n },\n };\n};\n\nexport { transform, CsvError };\n","import { CsvError, transform } from \"./api/index.js\";\n\nconst parse = function (data, opts = {}) {\n if (typeof data === \"string\") {\n data = Buffer.from(data);\n }\n const records = opts && opts.objname ? {} : [];\n const parser = transform(opts);\n const push = (record) => {\n if (parser.options.objname === undefined) records.push(record);\n else {\n records[record[0]] = record[1];\n }\n };\n const close = () => {};\n const error = parser.parse(data, true, push, close);\n if (error !== undefined) throw error;\n // 250606: `parser.parse` was implemented as 2 calls:\n // const err1 = parser.parse(data, false, push, close);\n // if (err1 !== undefined) throw err1;\n // const err2 = parser.parse(undefined, true, push, close);\n // if (err2 !== undefined) throw err2;\n return records;\n};\n\n// export default parse\nexport { parse };\nexport { CsvError };\n","import { CoinID } from '@sentio/protos'\nimport { Endpoints, processMetrics } from '@sentio/runtime'\nimport { ChainId } from '@sentio/chain'\nimport { LRUCache } from 'lru-cache'\nimport { client, PriceService } from '@sentio/api'\nimport path from 'path'\nimport fs from 'fs'\nimport os from 'os'\n\nfunction getApiKey() {\n try {\n const content = fs.readFileSync(path.join(os.homedir(), '.sentio', 'config.json'), 'utf8')\n const config = JSON.parse(content)\n return config['https://app.sentio.xyz']?.api_keys\n } catch (e) {}\n}\n\nexport function getPriceClient(basePath = Endpoints.INSTANCE.priceFeedAPI) {\n if (basePath && !basePath.startsWith('http')) {\n basePath = 'http://' + basePath\n }\n if (basePath.endsWith('/')) {\n basePath = basePath.slice(0, -1)\n }\n client.setConfig({\n baseUrl: basePath || 'https://api.sentio.xyz',\n auth: getApiKey()\n })\n return PriceService\n}\n\nconst priceMap = new LRUCache<string, Promise<number | undefined>>({\n max: 100000,\n ttl: 1000 * 60 * 5 // 5 minutes\n})\n\ntype PriceApi = typeof PriceService\nlet priceClient: PriceApi\n\ninterface PriceOptions {\n toleranceInDays?: number\n}\nasync function getPriceByTypeOrSymbol(date: Date, coinId: CoinID, options?: PriceOptions): Promise<number | undefined> {\n if (!priceClient) {\n priceClient = getPriceClient()\n }\n return getPriceByTypeOrSymbolInternal(priceClient, date, coinId, options)\n}\n\nexport async function getPriceByTypeOrSymbolInternal(\n priceClient: PriceApi,\n date: Date,\n coinId: CoinID,\n options?: PriceOptions\n): Promise<number | undefined> {\n const dateStr = dateString(date)\n const todayDateString = dateString(new Date())\n\n let key: string\n if (coinId.symbol) {\n key = `${coinId.symbol}-${dateStr}`\n } else {\n key = `${coinId.address?.address}-${coinId.address?.chain}-${dateStr}`\n }\n let price = priceMap.get(key)\n if (price) {\n return price\n }\n\n processMetrics.process_pricecall_count.add(1)\n const response = priceClient.getPrice({\n query: {\n timestamp: date.toISOString(),\n 'coinId.symbol': coinId.symbol,\n 'coinId.address.address': coinId.address?.address,\n 'coinId.address.chain': coinId.address?.chain\n }\n })\n price = response\n .then((res) => {\n const { data } = res\n if (data?.timestamp) {\n const responseDate = new Date(data.timestamp)\n const responseDateString = dateString(responseDate)\n if (responseDateString === todayDateString) {\n priceMap.delete(key)\n } else {\n // https://www.javatpoint.com/javascript-date-difference\n const diff = Math.abs(responseDate.getTime() - date.getTime())\n const daysDiff = diff / (1000 * 60 * 60 * 24)\n const tolerance = options?.toleranceInDays || 2\n if (daysDiff > tolerance) {\n priceMap.delete(key)\n return undefined\n }\n }\n } else {\n priceMap.delete(key)\n }\n return data?.price\n })\n .catch((e) => {\n setTimeout(() => {\n priceMap.delete(key)\n }, 1000)\n\n if (e.response?.status === 404) {\n console.error('price not found for ', JSON.stringify(coinId), ' at ', dateStr)\n return undefined\n }\n // TODO maybe use small set of error\n priceMap.delete(key)\n throw e\n })\n priceMap.set(key, price)\n return price\n}\n\n/**\n *\n * @param chainId chain id refers to CHAIN_MAP\n * @param coinType\n * @param date\n * @param options other behavior options\n */\nexport async function getPriceByType(\n chainId: ChainId,\n coinType: string,\n date: Date,\n options?: PriceOptions\n): Promise<number | undefined> {\n return getPriceByTypeOrSymbol(\n date,\n {\n address: {\n chain: chainId,\n address: coinType\n }\n },\n options\n )\n}\n\n/**\n * @param symbol token symbol like BTC, etc\n * @param date\n * @param options other behavior options\n */\nexport async function getPriceBySymbol(\n symbol: string,\n date: Date,\n options?: PriceOptions\n): Promise<number | undefined> {\n return getPriceByTypeOrSymbol(date, { symbol }, options)\n}\n\nfunction dateString(date: Date) {\n return [date.getHours(), date.getUTCDate(), date.getUTCMonth() + 1, date.getUTCFullYear()].join('-')\n}\n\n/**\n * get coins that has price, return results are list of coin id with both symbol and address field set\n * @param chainId\n */\nexport async function getCoinsThatHasPrice(chainId: ChainId) {\n if (!priceClient) {\n priceClient = getPriceClient()\n }\n const { data } = await priceClient.priceListCoins({\n query: {\n chain: chainId,\n limit: 1000\n }\n })\n\n if (!data?.coinAddressesInChain) {\n return []\n }\n return Object.entries(data.coinAddressesInChain).map(([symbol, coin]) => {\n coin.symbol = symbol\n return coin\n })\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { SimpleEthersError } from '../eth/index.js'\n\n/**\n * ignore eth call exception and return undefined if that happened\n * @param promise promise return by eth call\n * @param logError whether to log error\n */\nexport async function ignoreEthCallException<Res>(promise: Promise<Res>, logError = false): Promise<Res | undefined> {\n try {\n return await promise\n } catch (err) {\n if (err instanceof SimpleEthersError || err.code === 'CALL_EXCEPTION' || err.code === 'BAD_DATA') {\n if (logError) {\n console.error('eth call exception, return undefined', err)\n }\n return undefined\n }\n throw err\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","export * from './block.js'\nexport * from './conversion.js'\nexport * as token from './token.js'\nexport * from './dex-price.js'\nexport { getPriceByType, getPriceClient, getPriceBySymbol, getCoinsThatHasPrice } from './price.js'\nexport * from './call.js'\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { BigNumberish, Overrides, BytesLike } from \"ethers\";\nimport { HandlerOptions } from \"@sentio/sdk\";\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 handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventApprovalForAll(\n handler: (event: ApprovalForAllEvent, ctx: ERC721Context) => void,\n filter?: ApprovalForAllEventFilter | ApprovalForAllEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalForAllEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC721Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallApprove(\n handler: (call: ApproveCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, ApproveCallTrace>,\n preprocessHandler?: (\n call: ApproveCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x095ea7b3\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTotalSupply(\n handler: (call: TotalSupplyCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TotalSupplyCallTrace>,\n preprocessHandler?: (\n call: TotalSupplyCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x18160ddd\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallBalanceOf(\n handler: (call: BalanceOfCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, BalanceOfCallTrace>,\n preprocessHandler?: (\n call: BalanceOfCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x70a08231\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallGetApproved(\n handler: (call: GetApprovedCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, GetApprovedCallTrace>,\n preprocessHandler?: (\n call: GetApprovedCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x081812fc\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallIsApprovedForAll(\n handler: (call: IsApprovedForAllCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, IsApprovedForAllCallTrace>,\n preprocessHandler?: (\n call: IsApprovedForAllCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xe985e9c5\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallName(\n handler: (call: NameCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, NameCallTrace>,\n preprocessHandler?: (\n call: NameCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x06fdde03\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallOwnerOf(\n handler: (call: OwnerOfCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, OwnerOfCallTrace>,\n preprocessHandler?: (\n call: OwnerOfCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x6352211e\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSafeTransferFrom_address_address_uint256(\n handler: (\n call: SafeTransferFrom_address_address_uint256CallTrace,\n ctx: ERC721Context,\n ) => void,\n handlerOptions?: HandlerOptions<\n EthFetchConfig,\n SafeTransferFrom_address_address_uint256CallTrace\n >,\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 handlerOptions,\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 handlerOptions?: HandlerOptions<\n EthFetchConfig,\n SafeTransferFrom_address_address_uint256_bytesCallTrace\n >,\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 handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSetApprovalForAll(\n handler: (call: SetApprovalForAllCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, SetApprovalForAllCallTrace>,\n preprocessHandler?: (\n call: SetApprovalForAllCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xa22cb465\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSupportsInterface(\n handler: (call: SupportsInterfaceCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, SupportsInterfaceCallTrace>,\n preprocessHandler?: (\n call: SupportsInterfaceCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x01ffc9a7\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallSymbol(\n handler: (call: SymbolCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, SymbolCallTrace>,\n preprocessHandler?: (\n call: SymbolCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x95d89b41\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTokenURI(\n handler: (call: TokenURICallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TokenURICallTrace>,\n preprocessHandler?: (\n call: TokenURICallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0xc87b56dd\",\n handler as any,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onCallTransferFrom(\n handler: (call: TransferFromCallTrace, ctx: ERC721Context) => void,\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferFromCallTrace>,\n preprocessHandler?: (\n call: TransferFromCallTrace,\n ctx: ERC721Context,\n ) => Promise<PreprocessResult>,\n ): this {\n return super.onEthTrace(\n \"0x23b872dd\",\n handler as any,\n handlerOptions,\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 handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventApprovalForAll(\n handler: (event: ApprovalForAllEvent, ctx: ERC721Context) => void,\n filter?: ApprovalForAllEventFilter | ApprovalForAllEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, ApprovalForAllEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\n }\n\n onEventTransfer(\n handler: (event: TransferEvent, ctx: ERC721Context) => void,\n filter?: TransferEventFilter | TransferEventFilter[],\n handlerOptions?: HandlerOptions<EthFetchConfig, TransferEvent>,\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(\n handler,\n filter!,\n handlerOptions,\n preprocessHandler,\n );\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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","/* 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(\"node:process\").then((p) => p.stdout.write(\"\"));","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport type { BaseContract, Interface } from \"ethers\";\nimport type { ContractRunner } from \"ethers/providers\";\nimport type { TypedEventFilter, TypedEvent, PromiseOrValue } from \"./common.js\";\n\nexport interface ERC721Interface extends Interface {}\n\nexport interface ApprovalEventObject {\n owner: string;\n approved: string;\n tokenId: bigint;\n}\nexport type ApprovalEvent = TypedEvent<\n [string, string, bigint],\n ApprovalEventObject\n>;\n\nexport type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;\n\nexport interface ApprovalForAllEventObject {\n owner: string;\n operator: string;\n approved: boolean;\n}\nexport type ApprovalForAllEvent = TypedEvent<\n [string, string, boolean],\n ApprovalForAllEventObject\n>;\n\nexport type ApprovalForAllEventFilter = TypedEventFilter<ApprovalForAllEvent>;\n\nexport interface TransferEventObject {\n from: string;\n to: string;\n tokenId: bigint;\n}\nexport type TransferEvent = TypedEvent<\n [string, string, bigint],\n TransferEventObject\n>;\n\nexport type TransferEventFilter = TypedEventFilter<TransferEvent>;\n\nexport interface ERC721 extends BaseContract {\n connect(runner: null | ContractRunner): this;\n\n interface: ERC721Interface;\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,wBACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,wBACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,YACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,wBACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aACE,SACA,gBACA,mBAIM;AACN,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA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","names":["i","bits","createMethod","j","getAuthToken","auth","callback","token","serializeFormDataPair","data","key","value","serializeUrlSearchParamsPair","formDataBodySerializer","body","v","jsonBodySerializer","urlSearchParamsBodySerializer","separatorArrayExplode","style","separatorArrayNoExplode","separatorObjectExplode","serializeArrayParam","allowReserved","explode","name","joinedValues","separator","serializePrimitiveParam","serializeObjectParam","values","PATH_PARAM_RE","defaultPathSerializer","path","_url","url","matches","match","h","g","c","replaceValue","createQuerySerializer","array","object","queryParams","search","getParseAs","contentType","cleanContent","type","setAuthParams","security","options","x","buildUrl","getUrl","baseUrl","query","querySerializer","pathUrl","mergeConfigs","a","b","config","mergeHeaders","headers","mergedHeaders","header","iterator","Interceptors","fn","index","createInterceptors","defaultQuerySerializer","defaultHeaders","createConfig","override","z","createClient","_config","getConfig","setConfig","interceptors","request","opts","requestInit","_fetch","response","result","parseAs","error","finalError","PriceService","mockApprovalLog","mockTransferLog","allowNull","value","_formatTransactionReceipt","index","sha3","EthChainId","EthChainId","ListStateStorage","processMetrics","ListStateStorage","processMetrics","_abi","_abi","_abi","_abi","_abi","getProvider","EthChainId","ListStateStorage","ListStateStorage","import_nice_grpc","EthChainId","EthChainId","getProvider","getProvider","GLOBAL_CONFIG","import_nice_grpc","EthChainId","mockApprovalLog","mockTransferLog","templateContract","getProvider","mockField","mockApprovalLog","EthChainId","mockTransferLog","v","bf","EthChainId","mockOwnershipTransferredLog","templateContract","getProvider","mockField","EthChainId","mockOwnershipTransferredLog","cr","nl","encoding","options","info","bom","buf","pos","err","EthChainId","PriceUnit","require","EthChainId","processMetrics","import_api","path","fs","fs","path","priceClient","processMetrics","getProvider","EthChainId","GLOBAL_CONFIG","EthChainId","templateContract","getProvider","mockField","mockApprovalLog","EthChainId","mockTransferLog"]}
|