@flarenetwork/flare-periphery-contract-artifacts 0.1.39 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/coston/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  2. package/coston/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  3. package/coston/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  4. package/coston/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
  5. package/coston2/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  6. package/coston2/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  7. package/coston2/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  8. package/coston2/artifacts/contracts/ICustomInstructionsFacet.sol/ICustomInstructionsFacet.json +186 -0
  9. package/coston2/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
  10. package/coston2/artifacts/contracts/IInstructionsFacet.sol/IInstructionsFacet.json +61 -2
  11. package/coston2/artifacts/contracts/IMasterAccountController.sol/IMasterAccountController.json +310 -15
  12. package/coston2/artifacts/contracts/IPersonalAccount.sol/IPersonalAccount.json +72 -2
  13. package/coston2/artifacts/contracts/ISwapFacet.sol/ISwapFacet.json +37 -10
  14. package/coston2/artifacts/contracts/IVaultsFacet.sol/IVaultsFacet.json +25 -0
  15. package/dist/coston/abis.d.ts.map +1 -1
  16. package/dist/coston/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  17. package/dist/coston/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  18. package/dist/coston/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  19. package/dist/coston/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
  20. package/dist/coston2/abis.d.ts.map +1 -1
  21. package/dist/coston2/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  22. package/dist/coston2/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  23. package/dist/coston2/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  24. package/dist/coston2/artifacts/contracts/ICustomInstructionsFacet.sol/ICustomInstructionsFacet.json +186 -0
  25. package/dist/coston2/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
  26. package/dist/coston2/artifacts/contracts/IInstructionsFacet.sol/IInstructionsFacet.json +61 -2
  27. package/dist/coston2/artifacts/contracts/IMasterAccountController.sol/IMasterAccountController.json +310 -15
  28. package/dist/coston2/artifacts/contracts/IPersonalAccount.sol/IPersonalAccount.json +72 -2
  29. package/dist/coston2/artifacts/contracts/ISwapFacet.sol/ISwapFacet.json +37 -10
  30. package/dist/coston2/artifacts/contracts/IVaultsFacet.sol/IVaultsFacet.json +25 -0
  31. package/dist/flare/abis.d.ts.map +1 -1
  32. package/dist/flare/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  33. package/dist/flare/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  34. package/dist/flare/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  35. package/dist/flare/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
  36. package/dist/index.js +10 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/songbird/abis.d.ts.map +1 -1
  39. package/dist/songbird/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  40. package/dist/songbird/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  41. package/dist/songbird/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  42. package/dist/songbird/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
  43. package/flare/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  44. package/flare/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  45. package/flare/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  46. package/flare/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
  47. package/package.json +1 -1
  48. package/songbird/artifacts/contracts/IAssetManager.sol/IAssetManager.json +20 -1
  49. package/songbird/artifacts/contracts/IAssetManagerController.sol/IAssetManagerController.json +26 -0
  50. package/songbird/artifacts/contracts/IAssetManagerEvents.sol/IAssetManagerEvents.json +19 -0
  51. package/songbird/artifacts/contracts/IFAsset.sol/IFAsset.json +263 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/ethers/lib.esm/_version.js","../node_modules/ethers/lib.esm/utils/properties.js","../node_modules/ethers/lib.esm/utils/errors.js","../node_modules/ethers/lib.esm/utils/data.js","../node_modules/ethers/lib.esm/utils/maths.js","../node_modules/ethers/lib.esm/utils/events.js","../node_modules/ethers/lib.esm/utils/utf8.js","../node_modules/ethers/lib.esm/abi/coders/abstract-coder.js","../node_modules/@noble/hashes/esm/_assert.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/sha3.js","../node_modules/ethers/lib.esm/crypto/keccak.js","../node_modules/ethers/lib.esm/address/address.js","../node_modules/ethers/lib.esm/address/checks.js","../node_modules/ethers/lib.esm/abi/typed.js","../node_modules/ethers/lib.esm/abi/coders/address.js","../node_modules/ethers/lib.esm/abi/coders/anonymous.js","../node_modules/ethers/lib.esm/abi/coders/array.js","../node_modules/ethers/lib.esm/abi/coders/boolean.js","../node_modules/ethers/lib.esm/abi/coders/bytes.js","../node_modules/ethers/lib.esm/abi/coders/fixed-bytes.js","../node_modules/ethers/lib.esm/abi/coders/null.js","../node_modules/ethers/lib.esm/abi/coders/number.js","../node_modules/ethers/lib.esm/abi/coders/string.js","../node_modules/ethers/lib.esm/abi/coders/tuple.js","../node_modules/ethers/lib.esm/transaction/accesslist.js","../node_modules/ethers/lib.esm/hash/id.js","../node_modules/ethers/lib.esm/abi/fragments.js","../node_modules/ethers/lib.esm/abi/abi-coder.js","../node_modules/ethers/lib.esm/abi/interface.js","../node_modules/ethers/lib.esm/providers/provider.js","../node_modules/ethers/lib.esm/contract/wrappers.js","../node_modules/ethers/lib.esm/contract/contract.js","../../coston/abis.ts","../../coston/mapper.ts","../../coston2/abis.ts","../../coston2/mapper.ts","../../flare/abis.ts","../../flare/mapper.ts","../../songbird/abis.ts","../../songbird/mapper.ts","../../index.ts"],"sourcesContent":["/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.16.0\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value, seen) {\n if (value == null) {\n return \"null\";\n }\n if (seen == null) {\n seen = new Set();\n }\n if (typeof (value) === \"object\") {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map((v) => stringify(v, seen))).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON(), seen);\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"number\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k, seen)}: ${stringify(value[k], seen)}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing argument\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && (value.length % 2) === 0 &&\n value.match(/^0x[0-9a-f]*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Some mathematic operations.\n *\n * @_subsection: api/utils:Math Helpers [about-maths]\n */\nimport { hexlify, isBytesLike } from \"./data.js\";\nimport { assert, assertArgument } from \"./errors.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n//const BN_Max256 = (BN_1 << BigInt(256)) - BN_1;\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n/**\n * Convert %%value%% from a twos-compliment representation of %%width%%\n * bits to its value.\n *\n * If the highest bit is ``1``, the result will be negative.\n */\nexport function fromTwos(_value, _width) {\n const value = getUint(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n assert((value >> width) === BN_0, \"overflow\", \"NUMERIC_FAULT\", {\n operation: \"fromTwos\", fault: \"overflow\", value: _value\n });\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n/**\n * Convert %%value%% to a twos-compliment representation of\n * %%width%% bits.\n *\n * The result will always be positive.\n */\nexport function toTwos(_value, _width) {\n let value = getBigInt(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n const limit = (BN_1 << (width - BN_1));\n if (value < BN_0) {\n value = -value;\n assert(value <= limit, \"too low\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n const mask = (BN_1 << width) - BN_1;\n return ((~value) & mask) + BN_1;\n }\n else {\n assert(value < limit, \"too high\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n }\n return value;\n}\n/**\n * Mask %%value%% with a bitmask of %%bits%% ones.\n */\nexport function mask(_value, _bits) {\n const value = getUint(_value, \"value\");\n const bits = BigInt(getNumber(_bits, \"bits\"));\n return value & ((BN_1 << bits) - BN_1);\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\", name || \"value\", value);\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nexport function getUint(value, name) {\n const result = getBigInt(value, name);\n assert(result >= BN_0, \"unsigned value cannot be negative\", \"NUMERIC_FAULT\", {\n fault: \"overflow\", operation: \"getUint\", value\n });\n return result;\n}\nconst Nibbles = \"0123456789abcdef\";\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nexport function toBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\n/**\n * Gets a //number// from %%value%%. If it is an invalid value for\n * a //number//, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return Number(value);\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return value;\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n return getNumber(BigInt(value), name);\n }\n catch (e) {\n assertArgument(false, `invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid numeric value\", name || \"value\", value);\n}\n/**\n * Converts %%value%% to a number. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data. Throws if the value is not safe.\n */\nexport function toNumber(value) {\n return getNumber(toBigInt(value));\n}\n/**\n * Converts %%value%% to a Big Endian hexstring, optionally padded to\n * %%width%% bytes.\n */\nexport function toBeHex(_value, _width) {\n const value = getUint(_value, \"value\");\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = getNumber(_width, \"width\");\n // Special case when both value and width are 0 (see: #5025)\n if (width === 0 && value === BN_0) {\n return \"0x\";\n }\n assert(width * 2 >= result.length, `value exceeds width (${width} bytes)`, \"NUMERIC_FAULT\", {\n operation: \"toBeHex\",\n fault: \"overflow\",\n value: _value\n });\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\n/**\n * Converts %%value%% to a Big Endian Uint8Array.\n */\nexport function toBeArray(_value, _width) {\n const value = getUint(_value, \"value\");\n if (value === BN_0) {\n const width = (_width != null) ? getNumber(_width, \"width\") : 0;\n return new Uint8Array(width);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n if (_width != null) {\n const width = getNumber(_width, \"width\");\n while (hex.length < (width * 2)) {\n hex = \"00\" + hex;\n }\n assert((width * 2) === hex.length, `value exceeds width (${width} bytes)`, \"NUMERIC_FAULT\", {\n operation: \"toBeArray\",\n fault: \"overflow\",\n value: _value\n });\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns a [[HexString]] for %%value%% safe to use as a //Quantity//.\n *\n * A //Quantity// does not have and leading 0 values unless the value is\n * the literal value `0x0`. This is most commonly used for JSSON-RPC\n * numeric values.\n */\nexport function toQuantity(value) {\n let result = hexlify(isBytesLike(value) ? value : toBeArray(value)).substring(2);\n while (result.startsWith(\"0\")) {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=maths.js.map","/**\n * Events allow for applications to use the observer pattern, which\n * allows subscribing and publishing events, outside the normal\n * execution paths.\n *\n * @_section api/utils/events:Events [about-events]\n */\nimport { defineProperties } from \"./properties.js\";\n/**\n * When an [[EventEmitterable]] triggers a [[Listener]], the\n * callback always ahas one additional argument passed, which is\n * an **EventPayload**.\n */\nexport class EventPayload {\n /**\n * The event filter.\n */\n filter;\n /**\n * The **EventEmitterable**.\n */\n emitter;\n #listener;\n /**\n * Create a new **EventPayload** for %%emitter%% with\n * the %%listener%% and for %%filter%%.\n */\n constructor(emitter, listener, filter) {\n this.#listener = listener;\n defineProperties(this, { emitter, filter });\n }\n /**\n * Unregister the triggered listener for future events.\n */\n async removeListener() {\n if (this.#listener == null) {\n return;\n }\n await this.emitter.off(this.filter, this.#listener);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { defineProperties, concat, getBytesCopy, getNumber, hexlify, toBeArray, toBigInt, toNumber, assert, assertArgument\n/*, isError*/\n } from \"../../utils/index.js\";\n/**\n * @_ignore:\n */\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nconst resultNames = new WeakMap();\nfunction getNames(result) {\n return resultNames.get(result);\n}\nfunction setNames(result, names) {\n resultNames.set(result, names);\n}\nfunction throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n}\nfunction toObject(names, items, deep) {\n if (names.indexOf(null) >= 0) {\n return items.map((item, index) => {\n if (item instanceof Result) {\n return toObject(getNames(item), item, deep);\n }\n return item;\n });\n }\n return names.reduce((accum, name, index) => {\n let item = items.getValue(name);\n if (!(name in accum)) {\n if (deep && item instanceof Result) {\n item = toObject(getNames(item), item, deep);\n }\n accum[name] = item;\n }\n return accum;\n }, {});\n}\n/**\n * A [[Result]] is a sub-class of Array, which allows accessing any\n * of its values either positionally by its index or, if keys are\n * provided by its name.\n *\n * @_docloc: api/abi\n */\nexport class Result extends Array {\n // No longer used; but cannot be removed as it will remove the\n // #private field from the .d.ts which may break backwards\n // compatibility\n #names;\n /**\n * @private\n */\n constructor(...args) {\n // To properly sub-class Array so the other built-in\n // functions work, the constructor has to behave fairly\n // well. So, in the event we are created via fromItems()\n // we build the read-only Result object we want, but on\n // any other input, we use the default constructor\n // constructor(guard: any, items: Array<any>, keys?: Array<null | string>);\n const guard = args[0];\n let items = args[1];\n let names = (args[2] || []).slice();\n let wrap = true;\n if (guard !== _guard) {\n items = args;\n names = [];\n wrap = false;\n }\n // Can't just pass in ...items since an array of length 1\n // is a special case in the super.\n super(items.length);\n items.forEach((item, index) => { this[index] = item; });\n // Find all unique keys\n const nameCounts = names.reduce((accum, name) => {\n if (typeof (name) === \"string\") {\n accum.set(name, (accum.get(name) || 0) + 1);\n }\n return accum;\n }, (new Map()));\n // Remove any key thats not unique\n setNames(this, Object.freeze(items.map((item, index) => {\n const name = names[index];\n if (name != null && nameCounts.get(name) === 1) {\n return name;\n }\n return null;\n })));\n // Dummy operations to prevent TypeScript from complaining\n this.#names = [];\n if (this.#names == null) {\n void (this.#names);\n }\n if (!wrap) {\n return;\n }\n // A wrapped Result is immutable\n Object.freeze(this);\n // Proxy indices and names so we can trap deferred errors\n const proxy = new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n // Index accessor\n if (prop.match(/^[0-9]+$/)) {\n const index = getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n throwError(`index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n const value = target[prop];\n if (value instanceof Function) {\n // Make sure functions work with private variables\n // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#no_private_property_forwarding\n return function (...args) {\n return value.apply((this === receiver) ? target : this, args);\n };\n }\n else if (!(prop in target)) {\n // Possible name accessor\n return target.getValue.apply((this === receiver) ? target : this, [prop]);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n setNames(proxy, getNames(this));\n return proxy;\n }\n /**\n * Returns the Result as a normal Array. If %%deep%%, any children\n * which are Result objects are also converted to a normal Array.\n *\n * This will throw if there are any outstanding deferred\n * errors.\n */\n toArray(deep) {\n const result = [];\n this.forEach((item, index) => {\n if (item instanceof Error) {\n throwError(`index ${index}`, item);\n }\n if (deep && item instanceof Result) {\n item = item.toArray(deep);\n }\n result.push(item);\n });\n return result;\n }\n /**\n * Returns the Result as an Object with each name-value pair. If\n * %%deep%%, any children which are Result objects are also\n * converted to an Object.\n *\n * This will throw if any value is unnamed, or if there are\n * any outstanding deferred errors.\n */\n toObject(deep) {\n const names = getNames(this);\n return names.reduce((accum, name, index) => {\n assert(name != null, `value at index ${index} unnamed`, \"UNSUPPORTED_OPERATION\", {\n operation: \"toObject()\"\n });\n return toObject(names, this, deep);\n }, {});\n }\n /**\n * @_ignore\n */\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (start < 0) {\n start += this.length;\n if (start < 0) {\n start = 0;\n }\n }\n if (end == null) {\n end = this.length;\n }\n if (end < 0) {\n end += this.length;\n if (end < 0) {\n end = 0;\n }\n }\n if (end > this.length) {\n end = this.length;\n }\n const _names = getNames(this);\n const result = [], names = [];\n for (let i = start; i < end; i++) {\n result.push(this[i]);\n names.push(_names[i]);\n }\n return new Result(_guard, result, names);\n }\n /**\n * @_ignore\n */\n filter(callback, thisArg) {\n const _names = getNames(this);\n const result = [], names = [];\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n if (item instanceof Error) {\n throwError(`index ${i}`, item);\n }\n if (callback.call(thisArg, item, i, this)) {\n result.push(item);\n names.push(_names[i]);\n }\n }\n return new Result(_guard, result, names);\n }\n /**\n * @_ignore\n */\n map(callback, thisArg) {\n const result = [];\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n if (item instanceof Error) {\n throwError(`index ${i}`, item);\n }\n result.push(callback.call(thisArg, item, i, this));\n }\n return result;\n }\n /**\n * Returns the value for %%name%%.\n *\n * Since it is possible to have a key whose name conflicts with\n * a method on a [[Result]] or its superclass Array, or any\n * JavaScript keyword, this ensures all named values are still\n * accessible by name.\n */\n getValue(name) {\n const index = getNames(this).indexOf(name);\n if (index === -1) {\n return undefined;\n }\n const value = this[index];\n if (value instanceof Error) {\n throwError(`property ${JSON.stringify(name)}`, value.error);\n }\n return value;\n }\n /**\n * Creates a new [[Result]] for %%items%% with each entry\n * also accessible by its corresponding name in %%keys%%.\n */\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n/**\n * Returns all errors found in a [[Result]].\n *\n * Since certain errors encountered when creating a [[Result]] do\n * not impact the ability to continue parsing data, they are\n * deferred until they are actually accessed. Hence a faulty string\n * in an Event that is never used does not impact the program flow.\n *\n * However, sometimes it may be useful to access, identify or\n * validate correctness of a [[Result]].\n *\n * @_docloc api/abi\n */\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toBeArray(value);\n assert(bytes.length <= WordSize, \"value out-of-bounds\", \"BUFFER_OVERRUN\", { buffer: bytes, length: WordSize, offset: bytes.length });\n if (bytes.length !== WordSize) {\n bytes = getBytesCopy(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\n/**\n * @_ignore\n */\nexport class Coder {\n // The coder name:\n // - address, uint256, tuple, array, etc.\n name;\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n type;\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n localName;\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n dynamic;\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n assertArgument(false, message, this.localName, value);\n }\n}\n/**\n * @_ignore\n */\nexport class Writer {\n // An array of WordSize lengthed objects to concatenation\n #data;\n #dataLength;\n constructor() {\n this.#data = [];\n this.#dataLength = 0;\n }\n get data() {\n return concat(this.#data);\n }\n get length() { return this.#dataLength; }\n #writeData(data) {\n this.#data.push(data);\n this.#dataLength += data.length;\n return data.length;\n }\n appendWriter(writer) {\n return this.#writeData(getBytesCopy(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = getBytesCopy(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = getBytesCopy(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return this.#writeData(bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return this.#writeData(getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = this.#data.length;\n this.#data.push(Padding);\n this.#dataLength += WordSize;\n return (value) => {\n this.#data[offset] = getValue(value);\n };\n }\n}\n/**\n * @_ignore\n */\nexport class Reader {\n // Allows incomplete unpadded data to be read; otherwise an error\n // is raised if attempting to overrun the buffer. This is required\n // to deal with an old Solidity bug, in which event data for\n // external (not public thoguh) was tightly packed.\n allowLoose;\n #data;\n #offset;\n #bytesRead;\n #parent;\n #maxInflation;\n constructor(data, allowLoose, maxInflation) {\n defineProperties(this, { allowLoose: !!allowLoose });\n this.#data = getBytesCopy(data);\n this.#bytesRead = 0;\n this.#parent = null;\n this.#maxInflation = (maxInflation != null) ? maxInflation : 1024;\n this.#offset = 0;\n }\n get data() { return hexlify(this.#data); }\n get dataLength() { return this.#data.length; }\n get consumed() { return this.#offset; }\n get bytes() { return new Uint8Array(this.#data); }\n #incrementBytesRead(count) {\n if (this.#parent) {\n return this.#parent.#incrementBytesRead(count);\n }\n this.#bytesRead += count;\n // Check for excessive inflation (see: #4537)\n assert(this.#maxInflation < 1 || this.#bytesRead <= this.#maxInflation * this.dataLength, `compressed ABI data exceeds inflation ratio of ${this.#maxInflation} ( see: https:/\\/github.com/ethers-io/ethers.js/issues/4537 )`, \"BUFFER_OVERRUN\", {\n buffer: getBytesCopy(this.#data), offset: this.#offset,\n length: count, info: {\n bytesRead: this.#bytesRead,\n dataLength: this.dataLength\n }\n });\n }\n #peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (this.#offset + alignedLength > this.#data.length) {\n if (this.allowLoose && loose && this.#offset + length <= this.#data.length) {\n alignedLength = length;\n }\n else {\n assert(false, \"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: getBytesCopy(this.#data),\n length: this.#data.length,\n offset: this.#offset + alignedLength\n });\n }\n }\n return this.#data.slice(this.#offset, this.#offset + alignedLength);\n }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n const reader = new Reader(this.#data.slice(this.#offset + offset), this.allowLoose, this.#maxInflation);\n reader.#parent = this;\n return reader;\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = this.#peekBytes(0, length, !!loose);\n this.#incrementBytesRead(length);\n this.#offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n//# sourceMappingURL=abstract-coder.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { assert, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n/**\n * Returns true if %%value%% is an object which implements the\n * [[Addressable]] interface.\n *\n * @example:\n * // Wallets and AbstractSigner sub-classes\n * isAddressable(Wallet.createRandom())\n * //_result:\n *\n * // Contracts\n * contract = new Contract(\"dai.tokens.ethers.eth\", [ ], provider)\n * isAddressable(contract)\n * //_result:\n */\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\n/**\n * Returns true if %%value%% is a valid address.\n *\n * @example:\n * // Valid address\n * isAddress(\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Valid ICAP address\n * isAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\")\n * //_result:\n *\n * // Invalid checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBa72\")\n * //_result:\n *\n * // Invalid ICAP checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Not an address (an ENS name requires a provided and an\n * // asynchronous API to access)\n * isAddress(\"ricmoo.eth\")\n * //_result:\n */\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\nasync function checkAddress(target, promise) {\n const result = await promise;\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n assert(typeof (target) !== \"string\", \"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n assertArgument(false, \"invalid AddressLike value; did not resolve to a value address\", \"target\", target);\n }\n return getAddress(result);\n}\n/**\n * Resolves to an address for the %%target%%, which may be any\n * supported address type, an [[Addressable]] or a Promise which\n * resolves to an address.\n *\n * If an ENS name is provided, but that name has not been correctly\n * configured a [[UnconfiguredNameError]] is thrown.\n *\n * @example:\n * addr = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n *\n * // Addresses are return synchronously\n * resolveAddress(addr, provider)\n * //_result:\n *\n * // Address promises are resolved asynchronously\n * resolveAddress(Promise.resolve(addr))\n * //_result:\n *\n * // ENS names are resolved asynchronously\n * resolveAddress(\"dai.tokens.ethers.eth\", provider)\n * //_result:\n *\n * // Addressable objects are resolved asynchronously\n * contract = new Contract(addr, [ ])\n * resolveAddress(contract, provider)\n * //_result:\n *\n * // Unconfigured ENS names reject\n * resolveAddress(\"nothing-here.ricmoo.eth\", provider)\n * //_error:\n *\n * // ENS names require a NameResolver object passed in\n * // (notice the provider was omitted)\n * resolveAddress(\"nothing-here.ricmoo.eth\")\n * //_error:\n */\nexport function resolveAddress(target, resolver) {\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n assert(resolver != null, \"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"resolveName\" });\n return checkAddress(target, resolver.resolveName(target));\n }\n else if (isAddressable(target)) {\n return checkAddress(target, target.getAddress());\n }\n else if (target && typeof (target.then) === \"function\") {\n return checkAddress(target, target);\n }\n assertArgument(false, \"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","/**\n * A Typed object allows a value to have its type explicitly\n * specified.\n *\n * For example, in Solidity, the value ``45`` could represent a\n * ``uint8`` or a ``uint256``. The value ``0x1234`` could represent\n * a ``bytes2`` or ``bytes``.\n *\n * Since JavaScript has no meaningful way to explicitly inform any\n * APIs which what the type is, this allows transparent interoperation\n * with Soldity.\n *\n * @_subsection: api/abi:Typed Values\n */\nimport { assertPrivate, defineProperties } from \"../utils/index.js\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\n/**\n * The **Typed** class to wrap values providing explicit type information.\n */\nexport class Typed {\n /**\n * The type, as a Solidity-compatible type.\n */\n type;\n /**\n * The actual value.\n */\n value;\n #options;\n /**\n * @_ignore:\n */\n _typedSymbol;\n /**\n * @_ignore:\n */\n constructor(gaurd, type, value, options) {\n if (options == null) {\n options = null;\n }\n assertPrivate(_gaurd, gaurd, \"Typed\");\n defineProperties(this, { _typedSymbol, type, value });\n this.#options = options;\n // Check the value is valid\n this.format();\n }\n /**\n * Format the type as a Human-Readable type.\n */\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n /**\n * The default value returned by this type.\n */\n defaultValue() {\n return 0;\n }\n /**\n * The minimum value for numeric types.\n */\n minValue() {\n return 0;\n }\n /**\n * The maximum value for numeric types.\n */\n maxValue() {\n return 0;\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedBigInt]].\n */\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedData]].\n */\n isData() {\n return this.type.startsWith(\"bytes\");\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedString]].\n */\n isString() {\n return (this.type === \"string\");\n }\n /**\n * Returns the tuple name, if this is a tuple. Throws otherwise.\n */\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return this.#options;\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n /**\n * Returns the length of the array type or ``-1`` if it is dynamic.\n *\n * Throws if the type is not an array.\n */\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (this.#options === true) {\n return -1;\n }\n if (this.#options === false) {\n return (this.value).length;\n }\n return null;\n }\n /**\n * Returns a new **Typed** of %%type%% with the %%value%%.\n */\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n /**\n * Return a new ``uint8`` type for %%v%%.\n */\n static uint8(v) { return n(v, 8); }\n /**\n * Return a new ``uint16`` type for %%v%%.\n */\n static uint16(v) { return n(v, 16); }\n /**\n * Return a new ``uint24`` type for %%v%%.\n */\n static uint24(v) { return n(v, 24); }\n /**\n * Return a new ``uint32`` type for %%v%%.\n */\n static uint32(v) { return n(v, 32); }\n /**\n * Return a new ``uint40`` type for %%v%%.\n */\n static uint40(v) { return n(v, 40); }\n /**\n * Return a new ``uint48`` type for %%v%%.\n */\n static uint48(v) { return n(v, 48); }\n /**\n * Return a new ``uint56`` type for %%v%%.\n */\n static uint56(v) { return n(v, 56); }\n /**\n * Return a new ``uint64`` type for %%v%%.\n */\n static uint64(v) { return n(v, 64); }\n /**\n * Return a new ``uint72`` type for %%v%%.\n */\n static uint72(v) { return n(v, 72); }\n /**\n * Return a new ``uint80`` type for %%v%%.\n */\n static uint80(v) { return n(v, 80); }\n /**\n * Return a new ``uint88`` type for %%v%%.\n */\n static uint88(v) { return n(v, 88); }\n /**\n * Return a new ``uint96`` type for %%v%%.\n */\n static uint96(v) { return n(v, 96); }\n /**\n * Return a new ``uint104`` type for %%v%%.\n */\n static uint104(v) { return n(v, 104); }\n /**\n * Return a new ``uint112`` type for %%v%%.\n */\n static uint112(v) { return n(v, 112); }\n /**\n * Return a new ``uint120`` type for %%v%%.\n */\n static uint120(v) { return n(v, 120); }\n /**\n * Return a new ``uint128`` type for %%v%%.\n */\n static uint128(v) { return n(v, 128); }\n /**\n * Return a new ``uint136`` type for %%v%%.\n */\n static uint136(v) { return n(v, 136); }\n /**\n * Return a new ``uint144`` type for %%v%%.\n */\n static uint144(v) { return n(v, 144); }\n /**\n * Return a new ``uint152`` type for %%v%%.\n */\n static uint152(v) { return n(v, 152); }\n /**\n * Return a new ``uint160`` type for %%v%%.\n */\n static uint160(v) { return n(v, 160); }\n /**\n * Return a new ``uint168`` type for %%v%%.\n */\n static uint168(v) { return n(v, 168); }\n /**\n * Return a new ``uint176`` type for %%v%%.\n */\n static uint176(v) { return n(v, 176); }\n /**\n * Return a new ``uint184`` type for %%v%%.\n */\n static uint184(v) { return n(v, 184); }\n /**\n * Return a new ``uint192`` type for %%v%%.\n */\n static uint192(v) { return n(v, 192); }\n /**\n * Return a new ``uint200`` type for %%v%%.\n */\n static uint200(v) { return n(v, 200); }\n /**\n * Return a new ``uint208`` type for %%v%%.\n */\n static uint208(v) { return n(v, 208); }\n /**\n * Return a new ``uint216`` type for %%v%%.\n */\n static uint216(v) { return n(v, 216); }\n /**\n * Return a new ``uint224`` type for %%v%%.\n */\n static uint224(v) { return n(v, 224); }\n /**\n * Return a new ``uint232`` type for %%v%%.\n */\n static uint232(v) { return n(v, 232); }\n /**\n * Return a new ``uint240`` type for %%v%%.\n */\n static uint240(v) { return n(v, 240); }\n /**\n * Return a new ``uint248`` type for %%v%%.\n */\n static uint248(v) { return n(v, 248); }\n /**\n * Return a new ``uint256`` type for %%v%%.\n */\n static uint256(v) { return n(v, 256); }\n /**\n * Return a new ``uint256`` type for %%v%%.\n */\n static uint(v) { return n(v, 256); }\n /**\n * Return a new ``int8`` type for %%v%%.\n */\n static int8(v) { return n(v, -8); }\n /**\n * Return a new ``int16`` type for %%v%%.\n */\n static int16(v) { return n(v, -16); }\n /**\n * Return a new ``int24`` type for %%v%%.\n */\n static int24(v) { return n(v, -24); }\n /**\n * Return a new ``int32`` type for %%v%%.\n */\n static int32(v) { return n(v, -32); }\n /**\n * Return a new ``int40`` type for %%v%%.\n */\n static int40(v) { return n(v, -40); }\n /**\n * Return a new ``int48`` type for %%v%%.\n */\n static int48(v) { return n(v, -48); }\n /**\n * Return a new ``int56`` type for %%v%%.\n */\n static int56(v) { return n(v, -56); }\n /**\n * Return a new ``int64`` type for %%v%%.\n */\n static int64(v) { return n(v, -64); }\n /**\n * Return a new ``int72`` type for %%v%%.\n */\n static int72(v) { return n(v, -72); }\n /**\n * Return a new ``int80`` type for %%v%%.\n */\n static int80(v) { return n(v, -80); }\n /**\n * Return a new ``int88`` type for %%v%%.\n */\n static int88(v) { return n(v, -88); }\n /**\n * Return a new ``int96`` type for %%v%%.\n */\n static int96(v) { return n(v, -96); }\n /**\n * Return a new ``int104`` type for %%v%%.\n */\n static int104(v) { return n(v, -104); }\n /**\n * Return a new ``int112`` type for %%v%%.\n */\n static int112(v) { return n(v, -112); }\n /**\n * Return a new ``int120`` type for %%v%%.\n */\n static int120(v) { return n(v, -120); }\n /**\n * Return a new ``int128`` type for %%v%%.\n */\n static int128(v) { return n(v, -128); }\n /**\n * Return a new ``int136`` type for %%v%%.\n */\n static int136(v) { return n(v, -136); }\n /**\n * Return a new ``int144`` type for %%v%%.\n */\n static int144(v) { return n(v, -144); }\n /**\n * Return a new ``int52`` type for %%v%%.\n */\n static int152(v) { return n(v, -152); }\n /**\n * Return a new ``int160`` type for %%v%%.\n */\n static int160(v) { return n(v, -160); }\n /**\n * Return a new ``int168`` type for %%v%%.\n */\n static int168(v) { return n(v, -168); }\n /**\n * Return a new ``int176`` type for %%v%%.\n */\n static int176(v) { return n(v, -176); }\n /**\n * Return a new ``int184`` type for %%v%%.\n */\n static int184(v) { return n(v, -184); }\n /**\n * Return a new ``int92`` type for %%v%%.\n */\n static int192(v) { return n(v, -192); }\n /**\n * Return a new ``int200`` type for %%v%%.\n */\n static int200(v) { return n(v, -200); }\n /**\n * Return a new ``int208`` type for %%v%%.\n */\n static int208(v) { return n(v, -208); }\n /**\n * Return a new ``int216`` type for %%v%%.\n */\n static int216(v) { return n(v, -216); }\n /**\n * Return a new ``int224`` type for %%v%%.\n */\n static int224(v) { return n(v, -224); }\n /**\n * Return a new ``int232`` type for %%v%%.\n */\n static int232(v) { return n(v, -232); }\n /**\n * Return a new ``int240`` type for %%v%%.\n */\n static int240(v) { return n(v, -240); }\n /**\n * Return a new ``int248`` type for %%v%%.\n */\n static int248(v) { return n(v, -248); }\n /**\n * Return a new ``int256`` type for %%v%%.\n */\n static int256(v) { return n(v, -256); }\n /**\n * Return a new ``int256`` type for %%v%%.\n */\n static int(v) { return n(v, -256); }\n /**\n * Return a new ``bytes1`` type for %%v%%.\n */\n static bytes1(v) { return b(v, 1); }\n /**\n * Return a new ``bytes2`` type for %%v%%.\n */\n static bytes2(v) { return b(v, 2); }\n /**\n * Return a new ``bytes3`` type for %%v%%.\n */\n static bytes3(v) { return b(v, 3); }\n /**\n * Return a new ``bytes4`` type for %%v%%.\n */\n static bytes4(v) { return b(v, 4); }\n /**\n * Return a new ``bytes5`` type for %%v%%.\n */\n static bytes5(v) { return b(v, 5); }\n /**\n * Return a new ``bytes6`` type for %%v%%.\n */\n static bytes6(v) { return b(v, 6); }\n /**\n * Return a new ``bytes7`` type for %%v%%.\n */\n static bytes7(v) { return b(v, 7); }\n /**\n * Return a new ``bytes8`` type for %%v%%.\n */\n static bytes8(v) { return b(v, 8); }\n /**\n * Return a new ``bytes9`` type for %%v%%.\n */\n static bytes9(v) { return b(v, 9); }\n /**\n * Return a new ``bytes10`` type for %%v%%.\n */\n static bytes10(v) { return b(v, 10); }\n /**\n * Return a new ``bytes11`` type for %%v%%.\n */\n static bytes11(v) { return b(v, 11); }\n /**\n * Return a new ``bytes12`` type for %%v%%.\n */\n static bytes12(v) { return b(v, 12); }\n /**\n * Return a new ``bytes13`` type for %%v%%.\n */\n static bytes13(v) { return b(v, 13); }\n /**\n * Return a new ``bytes14`` type for %%v%%.\n */\n static bytes14(v) { return b(v, 14); }\n /**\n * Return a new ``bytes15`` type for %%v%%.\n */\n static bytes15(v) { return b(v, 15); }\n /**\n * Return a new ``bytes16`` type for %%v%%.\n */\n static bytes16(v) { return b(v, 16); }\n /**\n * Return a new ``bytes17`` type for %%v%%.\n */\n static bytes17(v) { return b(v, 17); }\n /**\n * Return a new ``bytes18`` type for %%v%%.\n */\n static bytes18(v) { return b(v, 18); }\n /**\n * Return a new ``bytes19`` type for %%v%%.\n */\n static bytes19(v) { return b(v, 19); }\n /**\n * Return a new ``bytes20`` type for %%v%%.\n */\n static bytes20(v) { return b(v, 20); }\n /**\n * Return a new ``bytes21`` type for %%v%%.\n */\n static bytes21(v) { return b(v, 21); }\n /**\n * Return a new ``bytes22`` type for %%v%%.\n */\n static bytes22(v) { return b(v, 22); }\n /**\n * Return a new ``bytes23`` type for %%v%%.\n */\n static bytes23(v) { return b(v, 23); }\n /**\n * Return a new ``bytes24`` type for %%v%%.\n */\n static bytes24(v) { return b(v, 24); }\n /**\n * Return a new ``bytes25`` type for %%v%%.\n */\n static bytes25(v) { return b(v, 25); }\n /**\n * Return a new ``bytes26`` type for %%v%%.\n */\n static bytes26(v) { return b(v, 26); }\n /**\n * Return a new ``bytes27`` type for %%v%%.\n */\n static bytes27(v) { return b(v, 27); }\n /**\n * Return a new ``bytes28`` type for %%v%%.\n */\n static bytes28(v) { return b(v, 28); }\n /**\n * Return a new ``bytes29`` type for %%v%%.\n */\n static bytes29(v) { return b(v, 29); }\n /**\n * Return a new ``bytes30`` type for %%v%%.\n */\n static bytes30(v) { return b(v, 30); }\n /**\n * Return a new ``bytes31`` type for %%v%%.\n */\n static bytes31(v) { return b(v, 31); }\n /**\n * Return a new ``bytes32`` type for %%v%%.\n */\n static bytes32(v) { return b(v, 32); }\n /**\n * Return a new ``address`` type for %%v%%.\n */\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n /**\n * Return a new ``bool`` type for %%v%%.\n */\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n /**\n * Return a new ``bytes`` type for %%v%%.\n */\n static bytes(v) { return new Typed(_gaurd, \"bytes\", v); }\n /**\n * Return a new ``string`` type for %%v%%.\n */\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n /**\n * Return a new ``array`` type for %%v%%, allowing %%dynamic%% length.\n */\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n /**\n * Return a new ``tuple`` type for %%v%%, with the optional %%name%%.\n */\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n /**\n * Return a new ``uint8`` type for %%v%%.\n */\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n /**\n * Returns true only if %%value%% is a [[Typed]] instance.\n */\n static isTyped(value) {\n return (value\n && typeof (value) === \"object\"\n && \"_typedSymbol\" in value\n && value._typedSymbol === _typedSymbol);\n }\n /**\n * If the value is a [[Typed]] instance, validates the underlying value\n * and returns it, otherwise returns value directly.\n *\n * This is useful for functions that with to accept either a [[Typed]]\n * object or values.\n */\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"../../address/index.js\";\nimport { toBeHex } from \"../../utils/maths.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toBeHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n/**\n * Clones the functionality of an existing Coder, but without a localName\n *\n * @_ignore\n */\nexport class AnonymousCoder extends Coder {\n coder;\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties, isError, assert, assertArgument, assertArgumentCount } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\n/**\n * @_ignore\n */\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n assert(name, \"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", { argument: \"values\", info: { coder }, value: values });\n assert(!unique[name], \"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", { argument: \"values\", info: { coder }, value: values });\n unique[name] = true;\n return values[name];\n });\n }\n else {\n assertArgument(false, \"invalid tuple value\", \"tuple\", values);\n }\n assertArgument(coders.length === arrayValues.length, \"types/value length mismatch\", \"tuple\", values);\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n/**\n * @_ignore\n */\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n else {\n try {\n value = coder.decode(reader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\n/**\n * @_ignore\n */\nexport class ArrayCoder extends Coder {\n coder;\n length;\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n assert(count * WordSize <= reader.dataLength, \"insufficient data length\", \"BUFFER_OVERRUN\", { buffer: reader.bytes, offset: count * WordSize, length: reader.dataLength });\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { getBytesCopy, hexlify } from \"../../utils/index.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = getBytesCopy(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\n/**\n * @_ignore\n */\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { defineProperties, getBytesCopy, hexlify } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class FixedBytesCoder extends Coder {\n size;\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = getBytesCopy(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\n/**\n * @_ignore\n */\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { defineProperties, fromTwos, getBigInt, mask, toTwos } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n/**\n * @_ignore\n */\nexport class NumberCoder extends Coder {\n size;\n signed;\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = toTwos(value, 8 * WordSize);\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","import { toUtf8Bytes, toUtf8String } from \"../../utils/utf8.js\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\n/**\n * @_ignore\n */\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"../../utils/properties.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\n/**\n * @_ignore\n */\nexport class TupleCoder extends Coder {\n coders;\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","import { getAddress } from \"../address/index.js\";\nimport { assertArgument, isHexString } from \"../utils/index.js\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: storageKeys.map((storageKey, index) => {\n assertArgument(isHexString(storageKey, 32), \"invalid slot\", `storageKeys[${index}]`, storageKey);\n return storageKey.toLowerCase();\n })\n };\n}\n/**\n * Returns a [[AccessList]] from any ethers-supported access-list structure.\n */\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n assertArgument(set.length === 2, \"invalid slot set\", `value[${index}]`, set);\n return accessSetify(set[0], set[1]);\n }\n assertArgument(set != null && typeof (set) === \"object\", \"invalid address-slot set\", \"value\", value);\n return accessSetify(set.address, set.storageKeys);\n });\n }\n assertArgument(value != null && typeof (value) === \"object\", \"invalid access list\", \"value\", value);\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n//# sourceMappingURL=accesslist.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","/**\n * A fragment is a single item from an ABI, which may represent any of:\n *\n * - [Functions](FunctionFragment)\n * - [Events](EventFragment)\n * - [Constructors](ConstructorFragment)\n * - Custom [Errors](ErrorFragment)\n * - [Fallback or Receive](FallbackFragment) functions\n *\n * @_subsection api/abi/abi-coder:Fragments [about-fragments]\n */\nimport { defineProperties, getBigInt, getNumber, assert, assertPrivate, assertArgument } from \"../utils/index.js\";\nimport { id } from \"../hash/index.js\";\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\nconst _kwVisibDeploy = \"external public payable override\";\nconst KwVisibDeploy = setify(_kwVisibDeploy.split(\" \"));\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view override\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event fallback function receive struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespacePrefix = new RegExp(\"^(\\\\s*)\");\nconst regexNumberPrefix = new RegExp(\"^([0-9]+)\");\nconst regexIdPrefix = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\n// Parser regexs to check validity\nconst regexId = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)$\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$\");\nclass TokenString {\n #offset;\n #tokens;\n get offset() { return this.#offset; }\n get length() { return this.#tokens.length - this.#offset; }\n constructor(tokens) {\n this.#offset = 0;\n this.#tokens = tokens.slice();\n }\n clone() { return new TokenString(this.#tokens); }\n reset() { this.#offset = 0; }\n #subTokenString(from = 0, to = 0) {\n return new TokenString(this.#tokens.slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n }));\n }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n const top = this.peek();\n throw new Error(`expected ${type}; got ${top.type} ${JSON.stringify(top.text)}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = this.#subTokenString(this.#offset + 1, top.match + 1);\n this.#offset = top.match + 1;\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (this.#offset < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(this.#subTokenString(this.#offset + 1, link));\n this.#offset = link;\n }\n this.#offset = top.match + 1;\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (this.#offset >= this.#tokens.length) {\n throw new Error(\"out-of-bounds\");\n }\n return this.#tokens[this.#offset];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n const result = this.peek();\n this.#offset++;\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = this.#offset; i < this.#tokens.length; i++) {\n const token = this.#tokens[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return `<TokenString ${tokens.join(\" \")}>`;\n }\n}\nfunction lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespacePrefix);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdPrefix);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumberPrefix);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.from(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens at offset ${tokens.offset}: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n assertArgument(match, \"invalid type\", \"type\", type);\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n assertArgument(length !== 0 && length <= 32, \"invalid bytes length\", \"type\", type);\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n assertArgument(size !== 0 && size <= 256 && (size % 8) === 0, \"invalid numeric width\", \"type\", type);\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nconst ErrorFragmentInternal = \"_ErrorInternal\";\nconst EventFragmentInternal = \"_EventInternal\";\nconst ConstructorFragmentInternal = \"_ConstructorInternal\";\nconst FallbackFragmentInternal = \"_FallbackInternal\";\nconst FunctionFragmentInternal = \"_FunctionInternal\";\nconst StructFragmentInternal = \"_StructInternal\";\n/**\n * Each input and output of a [[Fragment]] is an Array of **ParamType**.\n */\nexport class ParamType {\n /**\n * The local name of the parameter (or ``\"\"`` if unbound)\n */\n name;\n /**\n * The fully qualified type (e.g. ``\"address\"``, ``\"tuple(address)\"``,\n * ``\"uint256[3][]\"``)\n */\n type;\n /**\n * The base type (e.g. ``\"address\"``, ``\"tuple\"``, ``\"array\"``)\n */\n baseType;\n /**\n * True if the parameters is indexed.\n *\n * For non-indexable types this is ``null``.\n */\n indexed;\n /**\n * The components for the tuple.\n *\n * For non-tuple types this is ``null``.\n */\n components;\n /**\n * The array length, or ``-1`` for dynamic-lengthed arrays.\n *\n * For non-array types this is ``null``.\n */\n arrayLength;\n /**\n * The type of each child in the array.\n *\n * For non-array types this is ``null``.\n */\n arrayChildren;\n /**\n * @private\n */\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\n });\n }\n /**\n * Return a string representation of this type.\n *\n * For example,\n *\n * ``sighash\" => \"(uint256,address)\"``\n *\n * ``\"minimal\" => \"tuple(uint256,address) indexed\"``\n *\n * ``\"full\" => \"tuple(uint256 foo, address bar) indexed baz\"``\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n const name = this.name || \"\";\n if (this.isArray()) {\n const result = JSON.parse(this.arrayChildren.format(\"json\"));\n result.name = name;\n result.type += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n return JSON.stringify(result);\n }\n const result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== \"sighash\") {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === \"full\" && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n /**\n * Returns true if %%this%% is an Array type.\n *\n * This provides a type gaurd ensuring that [[arrayChildren]]\n * and [[arrayLength]] are non-null.\n */\n isArray() {\n return (this.baseType === \"array\");\n }\n /**\n * Returns true if %%this%% is a Tuple type.\n *\n * This provides a type gaurd ensuring that [[components]]\n * is non-null.\n */\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n /**\n * Returns true if %%this%% is an Indexable type.\n *\n * This provides a type gaurd ensuring that [[indexed]]\n * is non-null.\n */\n isIndexable() {\n return (this.indexed != null);\n }\n /**\n * Walks the **ParamType** with %%value%%, calling %%process%%\n * on each type, destructing the %%value%% recursively.\n */\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v) => (_this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v, i) => (_this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n #walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n childType.#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invalid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (result.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n components[index].#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n }\n /**\n * Walks the **ParamType** with %%value%%, asynchronously calling\n * %%process%% on each type, destructing the %%value%% recursively.\n *\n * This can be used to resolve ENS names by walking and resolving each\n * ``\"address\"`` type.\n */\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n this.#walkAsync(promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n /**\n * Creates a new **ParamType** for %%obj%%.\n *\n * If %%allowIndexed%% then the ``indexed`` keyword is permitted,\n * otherwise the ``indexed`` keyword will throw an error.\n */\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ParamType.from(lex(obj), allowIndexed);\n }\n catch (error) {\n assertArgument(false, \"invalid param type\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(obj, setify([\"tuple\"])).has(\"tuple\") || obj.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = obj.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(obj.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (obj.length && obj.peekType(\"BRACKET\")) {\n const bracket = obj.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(obj, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (obj.peekType(\"ID\") ? obj.pop().text : \"\");\n if (obj.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n const name = obj.name;\n assertArgument(!name || (typeof (name) === \"string\" && name.match(regexId)), \"invalid name\", \"obj.name\", name);\n let indexed = obj.indexed;\n if (indexed != null) {\n assertArgument(allowIndexed, \"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = parseInt(arrayMatch[2] || \"-1\");\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name || \"\", type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type === \"tuple\" || type.startsWith(\"tuple(\" /* fix: ) */) || type.startsWith(\"(\" /* fix: ) */)) {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name || \"\", type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name || \"\", type, type, indexed, null, null, null);\n }\n /**\n * Returns true if %%value%% is a **ParamType**.\n */\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n/**\n * An abstract class to represent An individual fragment from a parse ABI.\n */\nexport class Fragment {\n /**\n * The type of the fragment.\n */\n type;\n /**\n * The inputs for the fragment.\n */\n inputs;\n /**\n * @private\n */\n constructor(guard, type, inputs) {\n assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n /**\n * Creates a new **Fragment** for %%obj%%, wich can be any supported\n * ABI frgament type.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n // Try parsing JSON...\n try {\n Fragment.from(JSON.parse(obj));\n }\n catch (e) { }\n // ...otherwise, use the human-readable lexer\n return Fragment.from(lex(obj));\n }\n if (obj instanceof TokenString) {\n // Human-readable ABI (already lexed)\n const type = obj.peekKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n }\n else if (typeof (obj) === \"object\") {\n // JSON ABI\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n assert(false, `unsupported type: ${obj.type}`, \"UNSUPPORTED_OPERATION\", {\n operation: \"Fragment.from\"\n });\n }\n assertArgument(false, \"unsupported frgament object\", \"obj\", obj);\n }\n /**\n * Returns true if %%value%% is a [[ConstructorFragment]].\n */\n static isConstructor(value) {\n return ConstructorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[ErrorFragment]].\n */\n static isError(value) {\n return ErrorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[EventFragment]].\n */\n static isEvent(value) {\n return EventFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[FunctionFragment]].\n */\n static isFunction(value) {\n return FunctionFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[StructFragment]].\n */\n static isStruct(value) {\n return StructFragment.isFragment(value);\n }\n}\n/**\n * An abstract class to represent An individual fragment\n * which has a name from a parse ABI.\n */\nexport class NamedFragment extends Fragment {\n /**\n * The name of the fragment.\n */\n name;\n /**\n * @private\n */\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n assertArgument(typeof (name) === \"string\" && name.match(regexId), \"invalid identifier\", \"name\", name);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n}\n/**\n * A Fragment which represents a //Custom Error//.\n */\nexport class ErrorFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"error\", name, inputs);\n Object.defineProperty(this, internal, { value: ErrorFragmentInternal });\n }\n /**\n * The Custom Error selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this fragment as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n /**\n * Returns a new **ErrorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ErrorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ErrorFragment.from(lex(obj));\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"error\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new ErrorFragment(_guard, name, inputs);\n }\n return new ErrorFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **ErrorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ErrorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents an Event.\n */\nexport class EventFragment extends NamedFragment {\n /**\n * Whether this event is anonymous.\n */\n anonymous;\n /**\n * @private\n */\n constructor(guard, name, inputs, anonymous) {\n super(guard, \"event\", name, inputs);\n Object.defineProperty(this, internal, { value: EventFragmentInternal });\n defineProperties(this, { anonymous });\n }\n /**\n * The Event topic hash.\n */\n get topicHash() {\n return id(this.format(\"sighash\"));\n }\n /**\n * Returns a string representation of this event as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\" && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n /**\n * Return the topic hash for an event with %%name%% and %%params%%.\n */\n static getTopicHash(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new EventFragment(_guard, name, params, false);\n return fragment.topicHash;\n }\n /**\n * Returns a new **EventFragment** for %%obj%%.\n */\n static from(obj) {\n if (EventFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return EventFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid event fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"event\", obj);\n const inputs = consumeParams(obj, true);\n const anonymous = !!consumeKeywords(obj, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(obj);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n return new EventFragment(_guard, obj.name, obj.inputs ? obj.inputs.map((p) => ParamType.from(p, true)) : [], !!obj.anonymous);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **EventFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === EventFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a constructor.\n */\nexport class ConstructorFragment extends Fragment {\n /**\n * Whether the constructor can receive an endowment.\n */\n payable;\n /**\n * The recommended gas limit for deployment or ``null``.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n Object.defineProperty(this, internal, { value: ConstructorFragmentInternal });\n defineProperties(this, { payable, gas });\n }\n /**\n * Returns a string representation of this constructor as %%format%%.\n */\n format(format) {\n assert(format != null && format !== \"sighash\", \"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", { operation: \"format(sighash)\" });\n if (format === \"json\") {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n if (this.payable) {\n result.push(\"payable\");\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n /**\n * Returns a new **ConstructorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ConstructorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ConstructorFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid constuctor fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n consumeKeywords(obj, setify([\"constructor\"]));\n const inputs = consumeParams(obj);\n const payable = !!consumeKeywords(obj, KwVisibDeploy).has(\"payable\");\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new ConstructorFragment(_guard, \"constructor\", inputs, payable, gas);\n }\n return new ConstructorFragment(_guard, \"constructor\", obj.inputs ? obj.inputs.map(ParamType.from) : [], !!obj.payable, (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **ConstructorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ConstructorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FallbackFragment extends Fragment {\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n constructor(guard, inputs, payable) {\n super(guard, \"fallback\", inputs);\n Object.defineProperty(this, internal, { value: FallbackFragmentInternal });\n defineProperties(this, { payable });\n }\n /**\n * Returns a string representation of this fallback as %%format%%.\n */\n format(format) {\n const type = ((this.inputs.length === 0) ? \"receive\" : \"fallback\");\n if (format === \"json\") {\n const stateMutability = (this.payable ? \"payable\" : \"nonpayable\");\n return JSON.stringify({ type, stateMutability });\n }\n return `${type}()${this.payable ? \" payable\" : \"\"}`;\n }\n /**\n * Returns a new **FallbackFragment** for %%obj%%.\n */\n static from(obj) {\n if (FallbackFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FallbackFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid fallback fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const errorObj = obj.toString();\n const topIsValid = obj.peekKeyword(setify([\"fallback\", \"receive\"]));\n assertArgument(topIsValid, \"type must be fallback or receive\", \"obj\", errorObj);\n const type = obj.popKeyword(setify([\"fallback\", \"receive\"]));\n // receive()\n if (type === \"receive\") {\n const inputs = consumeParams(obj);\n assertArgument(inputs.length === 0, `receive cannot have arguments`, \"obj.inputs\", inputs);\n consumeKeywords(obj, setify([\"payable\"]));\n consumeEoi(obj);\n return new FallbackFragment(_guard, [], true);\n }\n // fallback() [payable]\n // fallback(bytes) [payable] returns (bytes)\n let inputs = consumeParams(obj);\n if (inputs.length) {\n assertArgument(inputs.length === 1 && inputs[0].type === \"bytes\", \"invalid fallback inputs\", \"obj.inputs\", inputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n else {\n inputs = [ParamType.from(\"bytes\")];\n }\n const mutability = consumeMutability(obj);\n assertArgument(mutability === \"nonpayable\" || mutability === \"payable\", \"fallback cannot be constants\", \"obj.stateMutability\", mutability);\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n const outputs = consumeParams(obj);\n assertArgument(outputs.length === 1 && outputs[0].type === \"bytes\", \"invalid fallback outputs\", \"obj.outputs\", outputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n consumeEoi(obj);\n return new FallbackFragment(_guard, inputs, mutability === \"payable\");\n }\n if (obj.type === \"receive\") {\n return new FallbackFragment(_guard, [], true);\n }\n if (obj.type === \"fallback\") {\n const inputs = [ParamType.from(\"bytes\")];\n const payable = (obj.stateMutability === \"payable\");\n return new FallbackFragment(_guard, inputs, payable);\n }\n assertArgument(false, \"invalid fallback description\", \"obj\", obj);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FallbackFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FallbackFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FunctionFragment extends NamedFragment {\n /**\n * If the function is constant (e.g. ``pure`` or ``view`` functions).\n */\n constant;\n /**\n * The returned types for the result of calling this function.\n */\n outputs;\n /**\n * The state mutability (e.g. ``payable``, ``nonpayable``, ``view``\n * or ``pure``)\n */\n stateMutability;\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n /**\n * The recommended gas limit to send when calling this function.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, \"function\", name, inputs);\n Object.defineProperty(this, internal, { value: FunctionFragmentInternal });\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n /**\n * The Function selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this function as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability : undefined),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\") {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n /**\n * Return the selector for a function with %%name%% and %%params%%.\n */\n static getSelector(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new FunctionFragment(_guard, name, \"view\", params, [], null);\n return fragment.selector;\n }\n /**\n * Returns a new **FunctionFragment** for %%obj%%.\n */\n static from(obj) {\n if (FunctionFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FunctionFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid function fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"function\", obj);\n const inputs = consumeParams(obj);\n const mutability = consumeMutability(obj);\n let outputs = [];\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(obj);\n }\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n let stateMutability = obj.stateMutability;\n // Use legacy Solidity ABI logic if stateMutability is missing\n if (stateMutability == null) {\n stateMutability = \"payable\";\n if (typeof (obj.constant) === \"boolean\") {\n stateMutability = \"view\";\n if (!obj.constant) {\n stateMutability = \"payable\";\n if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n }\n else if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n // @TODO: verifyState for stateMutability (e.g. throw if\n // payable: false but stateMutability is \"nonpayable\")\n return new FunctionFragment(_guard, obj.name, stateMutability, obj.inputs ? obj.inputs.map(ParamType.from) : [], obj.outputs ? obj.outputs.map(ParamType.from) : [], (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FunctionFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FunctionFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a structure.\n */\nexport class StructFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"struct\", name, inputs);\n Object.defineProperty(this, internal, { value: StructFragmentInternal });\n }\n /**\n * Returns a string representation of this struct as %%format%%.\n */\n format() {\n throw new Error(\"@TODO\");\n }\n /**\n * Returns a new **StructFragment** for %%obj%%.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n try {\n return StructFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid struct fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"struct\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new StructFragment(_guard, name, inputs);\n }\n return new StructFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n // @TODO: fix this return type\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **StructFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === StructFragmentInternal);\n }\n}\n//# sourceMappingURL=fragments.js.map","/**\n * When sending values to or receiving values from a [[Contract]], the\n * data is generally encoded using the [ABI standard](link-solc-abi).\n *\n * The AbiCoder provides a utility to encode values to ABI data and\n * decode values from ABI data.\n *\n * Most of the time, developers should favour the [[Contract]] class,\n * which further abstracts a lot of the finer details of ABI data.\n *\n * @_section api/abi/abi-coder:ABI Encoding\n */\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nimport { assertArgumentCount, assertArgument } from \"../utils/index.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nimport { getAddress } from \"../address/index.js\";\nimport { getBytes, hexlify, makeError } from \"../utils/index.js\";\n// https://docs.soliditylang.org/en/v0.8.17/control-structures.html\nconst PanicReasons = new Map();\nPanicReasons.set(0x00, \"GENERIC_PANIC\");\nPanicReasons.set(0x01, \"ASSERT_FALSE\");\nPanicReasons.set(0x11, \"OVERFLOW\");\nPanicReasons.set(0x12, \"DIVIDE_BY_ZERO\");\nPanicReasons.set(0x21, \"ENUM_RANGE_ERROR\");\nPanicReasons.set(0x22, \"BAD_STORAGE_DATA\");\nPanicReasons.set(0x31, \"STACK_UNDERFLOW\");\nPanicReasons.set(0x32, \"ARRAY_RANGE_ERROR\");\nPanicReasons.set(0x41, \"OUT_OF_MEMORY\");\nPanicReasons.set(0x51, \"UNINITIALIZED_FUNCTION_CALL\");\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nlet defaultCoder = null;\nlet defaultMaxInflation = 1024;\nfunction getBuiltinCallException(action, tx, data, abiCoder) {\n let message = \"missing revert data\";\n let reason = null;\n const invocation = null;\n let revert = null;\n if (data) {\n message = \"execution reverted\";\n const bytes = getBytes(data);\n data = hexlify(data);\n if (bytes.length === 0) {\n message += \" (no data present; likely require(false) occurred\";\n reason = \"require(false)\";\n }\n else if (bytes.length % 32 !== 4) {\n message += \" (could not decode reason; invalid data length)\";\n }\n else if (hexlify(bytes.slice(0, 4)) === \"0x08c379a0\") {\n // Error(string)\n try {\n reason = abiCoder.decode([\"string\"], bytes.slice(4))[0];\n revert = {\n signature: \"Error(string)\",\n name: \"Error\",\n args: [reason]\n };\n message += `: ${JSON.stringify(reason)}`;\n }\n catch (error) {\n message += \" (could not decode reason; invalid string data)\";\n }\n }\n else if (hexlify(bytes.slice(0, 4)) === \"0x4e487b71\") {\n // Panic(uint256)\n try {\n const code = Number(abiCoder.decode([\"uint256\"], bytes.slice(4))[0]);\n revert = {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n args: [code]\n };\n reason = `Panic due to ${PanicReasons.get(code) || \"UNKNOWN\"}(${code})`;\n message += `: ${reason}`;\n }\n catch (error) {\n message += \" (could not decode panic code)\";\n }\n }\n else {\n message += \" (unknown custom error)\";\n }\n }\n const transaction = {\n to: (tx.to ? getAddress(tx.to) : null),\n data: (tx.data || \"0x\")\n };\n if (tx.from) {\n transaction.from = getAddress(tx.from);\n }\n return makeError(message, \"CALL_EXCEPTION\", {\n action, data, reason, transaction, invocation, revert\n });\n}\n/**\n * The **AbiCoder** is a low-level class responsible for encoding JavaScript\n * values into binary data and decoding binary data into JavaScript values.\n */\nexport class AbiCoder {\n #getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(this.#getCoder(param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => this.#getCoder(c)), param.name);\n }\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n assertArgument(size !== 0 && size <= 256 && (size % 8) === 0, \"invalid \" + match[1] + \" bit length\", \"param\", param);\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n assertArgument(size !== 0 && size <= 32, \"invalid bytes length\", \"param\", param);\n return new FixedBytesCoder(size, param.name);\n }\n assertArgument(false, \"invalid type\", \"type\", param.type);\n }\n /**\n * Get the default values for the given %%types%%.\n *\n * For example, a ``uint`` is by default ``0`` and ``bool``\n * is by default ``false``.\n */\n getDefaultValue(types) {\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n /**\n * Encode the %%values%% as the %%types%% into ABI data.\n *\n * @returns DataHexstring\n */\n encode(types, values) {\n assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n /**\n * Decode the ABI %%data%% as the %%types%% into values.\n *\n * If %%loose%% decoding is enabled, then strict padding is\n * not enforced. Some older versions of Solidity incorrectly\n * padded event data emitted from ``external`` functions.\n */\n decode(types, data, loose) {\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose, defaultMaxInflation));\n }\n static _setDefaultMaxInflation(value) {\n assertArgument(typeof (value) === \"number\" && Number.isInteger(value), \"invalid defaultMaxInflation factor\", \"value\", value);\n defaultMaxInflation = value;\n }\n /**\n * Returns the shared singleton instance of a default [[AbiCoder]].\n *\n * On the first call, the instance is created internally.\n */\n static defaultAbiCoder() {\n if (defaultCoder == null) {\n defaultCoder = new AbiCoder();\n }\n return defaultCoder;\n }\n /**\n * Returns an ethers-compatible [[CallExceptionError]] Error for the given\n * result %%data%% for the [[CallExceptionAction]] %%action%% against\n * the Transaction %%tx%%.\n */\n static getBuiltinCallException(action, tx, data) {\n return getBuiltinCallException(action, tx, data, AbiCoder.defaultAbiCoder());\n }\n}\n//# sourceMappingURL=abi-coder.js.map","/**\n * The Interface class is a low-level class that accepts an\n * ABI and provides all the necessary functionality to encode\n * and decode paramaters to and results from methods, events\n * and errors.\n *\n * It also provides several convenience methods to automatically\n * search and find matching transactions and events to parse them.\n *\n * @_subsection api/abi:Interfaces [interfaces]\n */\nimport { keccak256 } from \"../crypto/index.js\";\nimport { id } from \"../hash/index.js\";\nimport { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadBytes, zeroPadValue, isHexString, defineProperties, assertArgument, toBeHex, assert } from \"../utils/index.js\";\nimport { AbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\n/**\n * When using the [[Interface-parseLog]] to automatically match a Log to its event\n * for parsing, a **LogDescription** is returned.\n */\nexport class LogDescription {\n /**\n * The matching fragment for the ``topic0``.\n */\n fragment;\n /**\n * The name of the Event.\n */\n name;\n /**\n * The full Event signature.\n */\n signature;\n /**\n * The topic hash for the Event.\n */\n topic;\n /**\n * The arguments passed into the Event with ``emit``.\n */\n args;\n /**\n * @_ignore:\n */\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\n/**\n * When using the [[Interface-parseTransaction]] to automatically match\n * a transaction data to its function for parsing,\n * a **TransactionDescription** is returned.\n */\nexport class TransactionDescription {\n /**\n * The matching fragment from the transaction ``data``.\n */\n fragment;\n /**\n * The name of the Function from the transaction ``data``.\n */\n name;\n /**\n * The arguments passed to the Function from the transaction ``data``.\n */\n args;\n /**\n * The full Function signature from the transaction ``data``.\n */\n signature;\n /**\n * The selector for the Function from the transaction ``data``.\n */\n selector;\n /**\n * The ``value`` (in wei) from the transaction.\n */\n value;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\n/**\n * When using the [[Interface-parseError]] to automatically match an\n * error for a call result for parsing, an **ErrorDescription** is returned.\n */\nexport class ErrorDescription {\n /**\n * The matching fragment.\n */\n fragment;\n /**\n * The name of the Error.\n */\n name;\n /**\n * The arguments passed to the Error with ``revert``.\n */\n args;\n /**\n * The full Error signature.\n */\n signature;\n /**\n * The selector for the Error.\n */\n selector;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\n/**\n * An **Indexed** is used as a value when a value that does not\n * fit within a topic (i.e. not a fixed-length, 32-byte type). It\n * is the ``keccak256`` of the value, and used for types such as\n * arrays, tuples, bytes and strings.\n */\nexport class Indexed {\n /**\n * The ``keccak256`` of the value logged.\n */\n hash;\n /**\n * @_ignore:\n */\n _isIndexed;\n /**\n * Returns ``true`` if %%value%% is an **Indexed**.\n *\n * This provides a Type Guard for property access.\n */\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n /**\n * @_ignore:\n */\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\n/**\n * An Interface abstracts many of the low-level details for\n * encoding and decoding the data on the blockchain.\n *\n * An ABI provides information on how to encode data to send to\n * a Contract, how to decode the results and events and how to\n * interpret revert errors.\n *\n * The ABI can be specified by [any supported format](InterfaceAbi).\n */\nexport class Interface {\n /**\n * All the Contract ABI members (i.e. methods, events, errors, etc).\n */\n fragments;\n /**\n * The Contract constructor.\n */\n deploy;\n /**\n * The Fallback method, if any.\n */\n fallback;\n /**\n * If receiving ether is supported.\n */\n receive;\n #errors;\n #events;\n #functions;\n // #structs: Map<string, StructFragment>;\n #abiCoder;\n /**\n * Create a new Interface for the %%fragments%%.\n */\n constructor(fragments) {\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n this.#functions = new Map();\n this.#errors = new Map();\n this.#events = new Map();\n // this.#structs = new Map();\n const frags = [];\n for (const a of abi) {\n try {\n frags.push(Fragment.from(a));\n }\n catch (error) {\n console.log(`[Warning] Invalid Fragment ${JSON.stringify(a)}:`, error.message);\n }\n }\n defineProperties(this, {\n fragments: Object.freeze(frags)\n });\n let fallback = null;\n let receive = false;\n this.#abiCoder = this.getAbiCoder();\n // Add all fragments by their signature\n this.fragments.forEach((fragment, index) => {\n let bucket;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n console.log(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineProperties(this, { deploy: fragment });\n return;\n case \"fallback\":\n if (fragment.inputs.length === 0) {\n receive = true;\n }\n else {\n assertArgument(!fallback || fragment.payable !== fallback.payable, \"conflicting fallback fragments\", `fragments[${index}]`, fragment);\n fallback = fragment;\n receive = fallback.payable;\n }\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (<FunctionFragment>fragment).outputs);\n bucket = this.#functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.#events;\n break;\n case \"error\":\n bucket = this.#errors;\n break;\n default:\n return;\n }\n // Two identical entries; ignore it\n const signature = fragment.format();\n if (bucket.has(signature)) {\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.from(\"constructor()\")\n });\n }\n defineProperties(this, { fallback, receive });\n }\n /**\n * Returns the entire Human-Readable ABI, as an array of\n * signatures, optionally as %%minimal%% strings, which\n * removes parameter names and unneceesary spaces.\n */\n format(minimal) {\n const format = (minimal ? \"minimal\" : \"full\");\n const abi = this.fragments.map((f) => f.format(format));\n return abi;\n }\n /**\n * Return the JSON-encoded ABI. This is the format Solidiy\n * returns.\n */\n formatJson() {\n const abi = this.fragments.map((f) => f.format(\"json\"));\n // We need to re-bundle the JSON fragments a bit\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n /**\n * The ABI coder that will be used to encode and decode binary\n * data.\n */\n getAbiCoder() {\n return AbiCoder.defaultAbiCoder();\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n #getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of this.#functions.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#functions) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous function description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#functions.get(FunctionFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the function name for %%key%%, which may be a function selector,\n * function name or function signature that belongs to the ABI.\n */\n getFunctionName(key) {\n const fragment = this.#getFunction(key, null, false);\n assertArgument(fragment, \"no matching function\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (a function selector, function name or\n * function signature) is present in the ABI.\n *\n * In the case of a function name, the name may be ambiguous, so\n * accessing the [[FunctionFragment]] may require refinement.\n */\n hasFunction(key) {\n return !!this.#getFunction(key, null, false);\n }\n /**\n * Get the [[FunctionFragment]] for %%key%%, which may be a function\n * selector, function name or function signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple functions match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single function in\n * the ABI, this will throw.\n */\n getFunction(key, values) {\n return this.#getFunction(key, values || null, true);\n }\n /**\n * Iterate over all functions, calling %%callback%%, sorted by their name.\n */\n forEachFunction(callback) {\n const names = Array.from(this.#functions.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#functions.get(name)), i);\n }\n }\n // Find an event definition by any means necessary (unless it is ambiguous)\n #getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of this.#events.values()) {\n if (eventTopic === fragment.topicHash) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#events) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous event description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#events.get(EventFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the event name for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n */\n getEventName(key) {\n const fragment = this.#getEvent(key, null, false);\n assertArgument(fragment, \"no matching event\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (an event topic hash, event name or\n * event signature) is present in the ABI.\n *\n * In the case of an event name, the name may be ambiguous, so\n * accessing the [[EventFragment]] may require refinement.\n */\n hasEvent(key) {\n return !!this.#getEvent(key, null, false);\n }\n /**\n * Get the [[EventFragment]] for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple events match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single event in\n * the ABI, this will throw.\n */\n getEvent(key, values) {\n return this.#getEvent(key, values || null, true);\n }\n /**\n * Iterate over all events, calling %%callback%%, sorted by their name.\n */\n forEachEvent(callback) {\n const names = Array.from(this.#events.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#events.get(name)), i);\n }\n }\n /**\n * Get the [[ErrorFragment]] for %%key%%, which may be an error\n * selector, error name or error signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple errors match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single error in\n * the ABI, this will throw.\n */\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n if (BuiltinErrors[selector]) {\n return ErrorFragment.from(BuiltinErrors[selector].signature);\n }\n for (const fragment of this.#errors.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#errors) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n if (key === \"Error\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n return null;\n }\n else if (matching.length > 1) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous error description (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n key = ErrorFragment.from(key).format();\n if (key === \"Error(string)\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic(uint256)\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n const result = this.#errors.get(key);\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Iterate over all errors, calling %%callback%%, sorted by their name.\n */\n forEachError(callback) {\n const names = Array.from(this.#errors.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#errors.get(name)), i);\n }\n }\n // Get the 4-byte selector used by Solidity to identify a function\n /*\ngetSelector(fragment: ErrorFragment | FunctionFragment): string {\n if (typeof(fragment) === \"string\") {\n const matches: Array<Fragment> = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(<string>fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n\n return dataSlice(id(fragment.format()), 0, 4);\n}\n */\n // Get the 32-byte topic hash used by Solidity to identify an event\n /*\n getEventTopic(fragment: EventFragment): string {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n */\n _decodeParams(params, data) {\n return this.#abiCoder.decode(params, data);\n }\n _encodeParams(params, values) {\n return this.#abiCoder.encode(params, values);\n }\n /**\n * Encodes a ``tx.data`` object for deploying the Contract with\n * the %%values%% as the constructor arguments.\n */\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified error (see [[getError]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match error ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the transaction revert data for a call result that\n * reverted from the the Contract with the sepcified %%error%%\n * (see [[getError]] for valid values for %%fragment%%) with the %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the %%data%% from a transaction ``tx.data`` for\n * the function specified (see [[getFunction]] for valid values\n * for %%fragment%%).\n *\n * Most developers should prefer the [[parseTransaction]] method\n * instead, which will automatically detect the fragment.\n */\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match function ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the ``tx.data`` for a transaction that calls the function\n * specified (see [[getFunction]] for valid values for %%fragment%%) with\n * the %%values%%.\n */\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n let message = \"invalid length for result data\";\n const bytes = getBytesCopy(data);\n if ((bytes.length % 32) === 0) {\n try {\n return this.#abiCoder.decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n assert(false, message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(_data, tx) {\n const data = getBytes(_data, \"data\");\n const error = AbiCoder.getBuiltinCallException(\"call\", tx, data);\n // Not a built-in error; try finding a custom error\n const customPrefix = \"execution reverted (unknown custom error)\";\n if (error.message.startsWith(customPrefix)) {\n const selector = hexlify(data.slice(0, 4));\n const ef = this.getError(selector);\n if (ef) {\n try {\n const args = this.#abiCoder.decode(ef.inputs, data.slice(4));\n error.revert = {\n name: ef.name, signature: ef.format(), args\n };\n error.reason = error.revert.signature;\n error.message = `execution reverted: ${error.reason}`;\n }\n catch (e) {\n error.message = `execution reverted (coult not decode custom error)`;\n }\n }\n }\n // Add the invocation, if available\n const parsed = this.parseTransaction(tx);\n if (parsed) {\n error.invocation = {\n method: parsed.name,\n signature: parsed.signature,\n args: parsed.args\n };\n }\n return error;\n }\n /**\n * Encodes the result data (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values\n * for %%fragment%%) with %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeFunctionResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return hexlify(this.#abiCoder.encode(fragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array<ParamType>, values: ReadonlyArray<any>, processfunc: (type: string, value: any) => Promise<any>): Promise<Array<any>> {\n const promises: Array<Promise<>> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array<ParamType>, values: ReadonlyArray<any>) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array<any> = [ ];\n values.forEach((value, index) => {\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n }\n */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n assert(values.length <= fragment.inputs.length, `too many arguments for ${fragment.format()}`, \"UNEXPECTED_ARGUMENT\", { count: values.length, expectedCount: fragment.inputs.length });\n const topics = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n // @TODO: Use the coders for this; to properly support tuples, etc.\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n if (param.type === \"bool\" && typeof (value) === \"boolean\") {\n value = (value ? \"0x01\" : \"0x00\");\n }\n else if (param.type.match(/^u?int/)) {\n value = toBeHex(value); // @TODO: Should this toTwos??\n }\n else if (param.type.match(/^bytes/)) {\n value = zeroPadBytes(value, 32);\n }\n else if (param.type === \"address\") {\n // Check addresses are valid\n this.#abiCoder.encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n };\n values.forEach((value, index) => {\n const param = fragment.inputs[index];\n if (!param.indexed) {\n assertArgument(value == null, \"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n return;\n }\n if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n assertArgument(false, \"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n assertArgument(values.length === fragment.inputs.length, \"event arguments/values mismatch\", \"values\", values);\n fragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value));\n }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(this.#abiCoder.encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: this.#abiCoder.encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(fragment, data, topics) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n if (topics != null && !fragment.anonymous) {\n const eventTopic = fragment.topicHash;\n assertArgument(isHexString(topics[0], 32) && topics[0].toLowerCase() === eventTopic, \"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\n fragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.from({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? this.#abiCoder.decode(indexed, concat(topics)) : null;\n const resultNonIndexed = this.#abiCoder.decode(nonIndexed, data, true);\n //const result: (Array<any> & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n fragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n /**\n * Parses a transaction, finding the matching function and extracts\n * the parameter values along with other useful function details.\n *\n * If the matching function cannot be found, return null.\n */\n parseTransaction(tx) {\n const data = getBytes(tx.data, \"tx.data\");\n const value = getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, fragment.selector, args, value);\n }\n parseCallResult(data) {\n throw new Error(\"@TODO\");\n }\n /**\n * Parses a receipt log, finding the matching event and extracts\n * the parameter values along with other useful event details.\n *\n * If the matching event cannot be found, returns null.\n */\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n return null;\n }\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n return new LogDescription(fragment, fragment.topicHash, this.decodeEventLog(fragment, log.data, log.topics));\n }\n /**\n * Parses a revert data, finding the matching error and extracts\n * the parameter values along with other useful error details.\n *\n * If the matching error cannot be found, returns null.\n */\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, fragment.selector, args);\n }\n /**\n * Creates a new [[Interface]] from the ABI %%value%%.\n *\n * The %%value%% may be provided as an existing [[Interface]] object,\n * a JSON-encoded ABI or any Human-Readable ABI format.\n */\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // An Interface; possibly from another v6 instance\n if (typeof (value.formatJson) === \"function\") {\n return new Interface(value.formatJson());\n }\n // A legacy Interface; from an older version\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(\"json\"));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n//# sourceMappingURL=interface.js.map","//import { resolveAddress } from \"@ethersproject/address\";\nimport { defineProperties, getBigInt, getNumber, hexlify, isBytesLike, resolveProperties, assert, assertArgument, isError, makeError } from \"../utils/index.js\";\nimport { accessListify } from \"../transaction/index.js\";\nconst BN_0 = BigInt(0);\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? <T extends FeeData = { }> implements Required<T>\n/**\n * A **FeeData** wraps all the fee-related values associated with\n * the network.\n */\nexport class FeeData {\n /**\n * The gas price for legacy networks.\n */\n gasPrice;\n /**\n * The maximum fee to pay per gas.\n *\n * The base fee per gas is defined by the network and based on\n * congestion, increasing the cost during times of heavy load\n * and lowering when less busy.\n *\n * The actual fee per gas will be the base fee for the block\n * and the priority fee, up to the max fee per gas.\n *\n * This will be ``null`` on legacy networks (i.e. [pre-EIP-1559](link-eip-1559))\n */\n maxFeePerGas;\n /**\n * The additional amout to pay per gas to encourage a validator\n * to include the transaction.\n *\n * The purpose of this is to compensate the validator for the\n * adjusted risk for including a given transaction.\n *\n * This will be ``null`` on legacy networks (i.e. [pre-EIP-1559](link-eip-1559))\n */\n maxPriorityFeePerGas;\n /**\n * Creates a new FeeData for %%gasPrice%%, %%maxFeePerGas%% and\n * %%maxPriorityFeePerGas%%.\n */\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n /**\n * Returns a JSON-friendly value.\n */\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\n/**\n * Returns a copy of %%req%% with all properties coerced to their strict\n * types.\n */\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value\".split(/,/);\n for (const key of bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key of numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (req.authorizationList) {\n result.authorizationList = req.authorizationList.slice();\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipRead = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n if (\"blobVersionedHashes\" in req && req.blobVersionedHashes) {\n result.blobVersionedHashes = req.blobVersionedHashes.slice();\n }\n if (\"kzg\" in req) {\n result.kzg = req.kzg;\n }\n if (\"blobWrapperVersion\" in req) {\n result.blobWrapperVersion = req.blobWrapperVersion;\n }\n if (\"blobs\" in req && req.blobs) {\n result.blobs = req.blobs.map((b) => {\n if (isBytesLike(b)) {\n return hexlify(b);\n }\n return Object.assign({}, b);\n });\n }\n return result;\n}\n/**\n * A **Block** represents the data associated with a full block on\n * Ethereum.\n */\nexport class Block {\n /**\n * The provider connected to the block used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The block number, sometimes called the block height. This is a\n * sequential number that is one higher than the parent block.\n */\n number;\n /**\n * The block hash.\n *\n * This hash includes all properties, so can be safely used to identify\n * an exact set of block properties.\n */\n hash;\n /**\n * The timestamp for this block, which is the number of seconds since\n * epoch that this block was included.\n */\n timestamp;\n /**\n * The block hash of the parent block.\n */\n parentHash;\n /**\n * The hash tree root of the parent beacon block for the given\n * execution block. See [[link-eip-4788]].\n */\n parentBeaconBlockRoot;\n /**\n * The nonce.\n *\n * On legacy networks, this is the random number inserted which\n * permitted the difficulty target to be reached.\n */\n nonce;\n /**\n * The difficulty target.\n *\n * On legacy networks, this is the proof-of-work target required\n * for a block to meet the protocol rules to be included.\n *\n * On modern networks, this is a random number arrived at using\n * randao. @TODO: Find links?\n */\n difficulty;\n /**\n * The total gas limit for this block.\n */\n gasLimit;\n /**\n * The total gas used in this block.\n */\n gasUsed;\n /**\n * The root hash for the global state after applying changes\n * in this block.\n */\n stateRoot;\n /**\n * The hash of the transaction receipts trie.\n */\n receiptsRoot;\n /**\n * The total amount of blob gas consumed by the transactions\n * within the block. See [[link-eip-4844]].\n */\n blobGasUsed;\n /**\n * The running total of blob gas consumed in excess of the\n * target, prior to the block. See [[link-eip-4844]].\n */\n excessBlobGas;\n /**\n * The miner coinbase address, wihch receives any subsidies for\n * including this block.\n */\n miner;\n /**\n * The latest RANDAO mix of the post beacon state of\n * the previous block.\n */\n prevRandao;\n /**\n * Any extra data the validator wished to include.\n */\n extraData;\n /**\n * The base fee per gas that all transactions in this block were\n * charged.\n *\n * This adjusts after each block, depending on how congested the network\n * is.\n */\n baseFeePerGas;\n #transactions;\n /**\n * Create a new **Block** object.\n *\n * This should generally not be necessary as the unless implementing a\n * low-level library.\n */\n constructor(block, provider) {\n this.#transactions = block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\") {\n return new TransactionResponse(tx, provider);\n }\n return tx;\n });\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n parentBeaconBlockRoot: block.parentBeaconBlockRoot,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n blobGasUsed: block.blobGasUsed,\n excessBlobGas: block.excessBlobGas,\n miner: block.miner,\n prevRandao: getValue(block.prevRandao),\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas),\n stateRoot: block.stateRoot,\n receiptsRoot: block.receiptsRoot,\n });\n }\n /**\n * Returns the list of transaction hashes, in the order\n * they were executed within the block.\n */\n get transactions() {\n return this.#transactions.map((tx) => {\n if (typeof (tx) === \"string\") {\n return tx;\n }\n return tx.hash;\n });\n }\n /**\n * Returns the complete transactions, in the order they\n * were executed within the block.\n *\n * This is only available for blocks which prefetched\n * transactions, by passing ``true`` to %%prefetchTxs%%\n * into [[Provider-getBlock]].\n */\n get prefetchedTransactions() {\n const txs = this.#transactions.slice();\n // Doesn't matter...\n if (txs.length === 0) {\n return [];\n }\n // Make sure we prefetched the transactions\n assert(typeof (txs[0]) === \"object\", \"transactions were not prefetched with block request\", \"UNSUPPORTED_OPERATION\", {\n operation: \"transactionResponses()\"\n });\n return txs;\n }\n /**\n * Returns a JSON-friendly value.\n */\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, prevRandao, nonce, number, parentHash, parentBeaconBlockRoot, stateRoot, receiptsRoot, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n blobGasUsed: toJson(this.blobGasUsed),\n excessBlobGas: toJson(this.excessBlobGas),\n hash, miner, prevRandao, nonce, number, parentHash, timestamp,\n parentBeaconBlockRoot, stateRoot, receiptsRoot,\n transactions,\n };\n }\n [Symbol.iterator]() {\n let index = 0;\n const txs = this.transactions;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: txs[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n /**\n * The number of transactions in this block.\n */\n get length() { return this.#transactions.length; }\n /**\n * The [[link-js-date]] this block was included at.\n */\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n /**\n * Get the transaction at %%indexe%% within this block.\n */\n async getTransaction(indexOrHash) {\n // Find the internal value by its index or hash\n let tx = undefined;\n if (typeof (indexOrHash) === \"number\") {\n tx = this.#transactions[indexOrHash];\n }\n else {\n const hash = indexOrHash.toLowerCase();\n for (const v of this.#transactions) {\n if (typeof (v) === \"string\") {\n if (v !== hash) {\n continue;\n }\n tx = v;\n break;\n }\n else {\n if (v.hash !== hash) {\n continue;\n }\n tx = v;\n break;\n }\n }\n }\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n /**\n * If a **Block** was fetched with a request to include the transactions\n * this will allow synchronous access to those transactions.\n *\n * If the transactions were not prefetched, this will throw.\n */\n getPrefetchedTransaction(indexOrHash) {\n const txs = this.prefetchedTransactions;\n if (typeof (indexOrHash) === \"number\") {\n return txs[indexOrHash];\n }\n indexOrHash = indexOrHash.toLowerCase();\n for (const tx of txs) {\n if (tx.hash === indexOrHash) {\n return tx;\n }\n }\n assertArgument(false, \"no matching transaction\", \"indexOrHash\", indexOrHash);\n }\n /**\n * Returns true if this block been mined. This provides a type guard\n * for all properties on a [[MinedBlock]].\n */\n isMined() { return !!this.hash; }\n /**\n * Returns true if this block is an [[link-eip-2930]] block.\n */\n isLondon() {\n return !!this.baseFeePerGas;\n }\n /**\n * @_ignore:\n */\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\n//////////////////////\n// Log\n/**\n * A **Log** in Ethereum represents an event that has been included in a\n * transaction using the ``LOG*`` opcodes, which are most commonly used by\n * Solidity's emit for announcing events.\n */\nexport class Log {\n /**\n * The provider connected to the log used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The transaction hash of the transaction this log occurred in. Use the\n * [[Log-getTransaction]] to get the [[TransactionResponse]].\n */\n transactionHash;\n /**\n * The block hash of the block this log occurred in. Use the\n * [[Log-getBlock]] to get the [[Block]].\n */\n blockHash;\n /**\n * The block number of the block this log occurred in. It is preferred\n * to use the [[Block-hash]] when fetching the related [[Block]],\n * since in the case of an orphaned block, the block at that height may\n * have changed.\n */\n blockNumber;\n /**\n * If the **Log** represents a block that was removed due to an orphaned\n * block, this will be true.\n *\n * This can only happen within an orphan event listener.\n */\n removed;\n /**\n * The address of the contract that emitted this log.\n */\n address;\n /**\n * The data included in this log when it was emitted.\n */\n data;\n /**\n * The indexed topics included in this log when it was emitted.\n *\n * All topics are included in the bloom filters, so they can be\n * efficiently filtered using the [[Provider-getLogs]] method.\n */\n topics;\n /**\n * The index within the block this log occurred at. This is generally\n * not useful to developers, but can be used with the various roots\n * to proof inclusion within a block.\n */\n index;\n /**\n * The index within the transaction of this log.\n */\n transactionIndex;\n /**\n * @_ignore:\n */\n constructor(log, provider) {\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n /**\n * Returns a JSON-compatible object.\n */\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n /**\n * Returns the block that this log occurred in.\n */\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n assert(!!block, \"failed to find transaction\", \"UNKNOWN_ERROR\", {});\n return block;\n }\n /**\n * Returns the transaction that this log occurred in.\n */\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.transactionHash);\n assert(!!tx, \"failed to find transaction\", \"UNKNOWN_ERROR\", {});\n return tx;\n }\n /**\n * Returns the transaction receipt fot the transaction that this\n * log occurred in.\n */\n async getTransactionReceipt() {\n const receipt = await this.provider.getTransactionReceipt(this.transactionHash);\n assert(!!receipt, \"failed to find transaction receipt\", \"UNKNOWN_ERROR\", {});\n return receipt;\n }\n /**\n * @_ignore:\n */\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\n//////////////////////\n// Transaction Receipt\n/*\nexport interface LegacyTransactionReceipt {\n byzantium: false;\n status: null;\n root: string;\n}\n\nexport interface ByzantiumTransactionReceipt {\n byzantium: true;\n status: number;\n root: null;\n}\n*/\n/**\n * A **TransactionReceipt** includes additional information about a\n * transaction that is only available after it has been mined.\n */\nexport class TransactionReceipt {\n /**\n * The provider connected to the log used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The address the transaction was sent to.\n */\n to;\n /**\n * The sender of the transaction.\n */\n from;\n /**\n * The address of the contract if the transaction was directly\n * responsible for deploying one.\n *\n * This is non-null **only** if the ``to`` is empty and the ``data``\n * was successfully executed as initcode.\n */\n contractAddress;\n /**\n * The transaction hash.\n */\n hash;\n /**\n * The index of this transaction within the block transactions.\n */\n index;\n /**\n * The block hash of the [[Block]] this transaction was included in.\n */\n blockHash;\n /**\n * The block number of the [[Block]] this transaction was included in.\n */\n blockNumber;\n /**\n * The bloom filter bytes that represent all logs that occurred within\n * this transaction. This is generally not useful for most developers,\n * but can be used to validate the included logs.\n */\n logsBloom;\n /**\n * The actual amount of gas used by this transaction.\n *\n * When creating a transaction, the amount of gas that will be used can\n * only be approximated, but the sender must pay the gas fee for the\n * entire gas limit. After the transaction, the difference is refunded.\n */\n gasUsed;\n /**\n * The gas used for BLObs. See [[link-eip-4844]].\n */\n blobGasUsed;\n /**\n * The amount of gas used by all transactions within the block for this\n * and all transactions with a lower ``index``.\n *\n * This is generally not useful for developers but can be used to\n * validate certain aspects of execution.\n */\n cumulativeGasUsed;\n /**\n * The actual gas price used during execution.\n *\n * Due to the complexity of [[link-eip-1559]] this value can only\n * be caluclated after the transaction has been mined, snce the base\n * fee is protocol-enforced.\n */\n gasPrice;\n /**\n * The price paid per BLOB in gas. See [[link-eip-4844]].\n */\n blobGasPrice;\n /**\n * The [[link-eip-2718]] transaction type.\n */\n type;\n //readonly byzantium!: boolean;\n /**\n * The status of this transaction, indicating success (i.e. ``1``) or\n * a revert (i.e. ``0``).\n *\n * This is available in post-byzantium blocks, but some backends may\n * backfill this value.\n */\n status;\n /**\n * The root hash of this transaction.\n *\n * This is no present and was only included in pre-byzantium blocks, but\n * could be used to validate certain parts of the receipt.\n */\n root;\n #logs;\n /**\n * @_ignore:\n */\n constructor(tx, provider) {\n this.#logs = Object.freeze(tx.logs.map((log) => {\n return new Log(log, provider);\n }));\n let gasPrice = BN_0;\n if (tx.effectiveGasPrice != null) {\n gasPrice = tx.effectiveGasPrice;\n }\n else if (tx.gasPrice != null) {\n gasPrice = tx.gasPrice;\n }\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n blobGasUsed: tx.blobGasUsed,\n gasPrice,\n blobGasPrice: tx.blobGasPrice,\n type: tx.type,\n //byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n /**\n * The logs for this transaction.\n */\n get logs() { return this.#logs; }\n /**\n * Returns a JSON-compatible representation.\n */\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, //byzantium, \n status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber,\n //byzantium, \n contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n blobGasUsed: toJson(this.blobGasUsed),\n blobGasPrice: toJson(this.blobGasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n /**\n * @_ignore:\n */\n get length() { return this.logs.length; }\n [Symbol.iterator]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n /**\n * The total fee for this transaction, in wei.\n */\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n /**\n * Resolves to the block this transaction occurred in.\n */\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n /**\n * Resolves to the transaction this transaction occurred in.\n */\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n /**\n * Resolves to the return value of the execution of this transaction.\n *\n * Support for this feature is limited, as it requires an archive node\n * with the ``debug_`` or ``trace_`` API enabled.\n */\n async getResult() {\n return (await this.provider.getTransactionResult(this.hash));\n }\n /**\n * Resolves to the number of confirmations this transaction has.\n */\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n /**\n * @_ignore:\n */\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n /**\n * @_ignore:\n */\n reorderedEvent(other) {\n assert(!other || other.isMined(), \"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"reorderedEvent(other)\" });\n return createReorderedTransactionFilter(this, other);\n }\n}\n/**\n * A **TransactionResponse** includes all properties about a transaction\n * that was sent to the network, which may or may not be included in a\n * block.\n *\n * The [[TransactionResponse-isMined]] can be used to check if the\n * transaction has been mined as well as type guard that the otherwise\n * possibly ``null`` properties are defined.\n */\nexport class TransactionResponse {\n /**\n * The provider this is connected to, which will influence how its\n * methods will resolve its async inspection methods.\n */\n provider;\n /**\n * The block number of the block that this transaction was included in.\n *\n * This is ``null`` for pending transactions.\n */\n blockNumber;\n /**\n * The blockHash of the block that this transaction was included in.\n *\n * This is ``null`` for pending transactions.\n */\n blockHash;\n /**\n * The index within the block that this transaction resides at.\n */\n index;\n /**\n * The transaction hash.\n */\n hash;\n /**\n * The [[link-eip-2718]] transaction envelope type. This is\n * ``0`` for legacy transactions types.\n */\n type;\n /**\n * The receiver of this transaction.\n *\n * If ``null``, then the transaction is an initcode transaction.\n * This means the result of executing the [[data]] will be deployed\n * as a new contract on chain (assuming it does not revert) and the\n * address may be computed using [[getCreateAddress]].\n */\n to;\n /**\n * The sender of this transaction. It is implicitly computed\n * from the transaction pre-image hash (as the digest) and the\n * [[signature]] using ecrecover.\n */\n from;\n /**\n * The nonce, which is used to prevent replay attacks and offer\n * a method to ensure transactions from a given sender are explicitly\n * ordered.\n *\n * When sending a transaction, this must be equal to the number of\n * transactions ever sent by [[from]].\n */\n nonce;\n /**\n * The maximum units of gas this transaction can consume. If execution\n * exceeds this, the entries transaction is reverted and the sender\n * is charged for the full amount, despite not state changes being made.\n */\n gasLimit;\n /**\n * The gas price can have various values, depending on the network.\n *\n * In modern networks, for transactions that are included this is\n * the //effective gas price// (the fee per gas that was actually\n * charged), while for transactions that have not been included yet\n * is the [[maxFeePerGas]].\n *\n * For legacy transactions, or transactions on legacy networks, this\n * is the fee that will be charged per unit of gas the transaction\n * consumes.\n */\n gasPrice;\n /**\n * The maximum priority fee (per unit of gas) to allow a\n * validator to charge the sender. This is inclusive of the\n * [[maxFeeFeePerGas]].\n */\n maxPriorityFeePerGas;\n /**\n * The maximum fee (per unit of gas) to allow this transaction\n * to charge the sender.\n */\n maxFeePerGas;\n /**\n * The [[link-eip-4844]] max fee per BLOb gas.\n */\n maxFeePerBlobGas;\n /**\n * The data.\n */\n data;\n /**\n * The value, in wei. Use [[formatEther]] to format this value\n * as ether.\n */\n value;\n /**\n * The chain ID.\n */\n chainId;\n /**\n * The signature.\n */\n signature;\n /**\n * The [[link-eip-2930]] access list for transaction types that\n * support it, otherwise ``null``.\n */\n accessList;\n /**\n * The [[link-eip-4844]] BLOb versioned hashes.\n */\n blobVersionedHashes;\n /**\n * The [[link-eip-7702]] authorizations (if any).\n */\n authorizationList;\n #startBlock;\n /**\n * @_ignore:\n */\n constructor(tx, provider) {\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.maxFeePerBlobGas = (tx.maxFeePerBlobGas != null) ? tx.maxFeePerBlobGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n this.blobVersionedHashes = (tx.blobVersionedHashes != null) ? tx.blobVersionedHashes : null;\n this.authorizationList = (tx.authorizationList != null) ? tx.authorizationList : null;\n this.#startBlock = -1;\n }\n /**\n * Returns a JSON-compatible representation of this transaction.\n */\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList, blobVersionedHashes } = this;\n return {\n _type: \"TransactionResponse\",\n accessList, blockNumber, blockHash,\n blobVersionedHashes,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n maxFeePerBlobGas: toJson(this.maxFeePerBlobGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n /**\n * Resolves to the Block that this transaction was included in.\n *\n * This will return null if the transaction has not been included yet.\n */\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n /**\n * Resolves to this transaction being re-requested from the\n * provider. This can be used if you have an unmined transaction\n * and wish to get an up-to-date populated instance.\n */\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n /**\n * Resolve to the number of confirmations this transaction has.\n */\n async confirmations() {\n if (this.blockNumber == null) {\n const { tx, blockNumber } = await resolveProperties({\n tx: this.getTransaction(),\n blockNumber: this.provider.getBlockNumber()\n });\n // Not mined yet...\n if (tx == null || tx.blockNumber == null) {\n return 0;\n }\n return blockNumber - tx.blockNumber + 1;\n }\n const blockNumber = await this.provider.getBlockNumber();\n return blockNumber - this.blockNumber + 1;\n }\n /**\n * Resolves once this transaction has been mined and has\n * %%confirms%% blocks including it (default: ``1``) with an\n * optional %%timeout%%.\n *\n * This can resolve to ``null`` only if %%confirms%% is ``0``\n * and the transaction has not been mined, otherwise this will\n * wait until enough confirmations have completed.\n */\n async wait(_confirms, _timeout) {\n const confirms = (_confirms == null) ? 1 : _confirms;\n const timeout = (_timeout == null) ? 0 : _timeout;\n let startBlock = this.#startBlock;\n let nextScan = -1;\n let stopScanning = (startBlock === -1) ? true : false;\n const checkReplacement = async () => {\n // Get the current transaction count for this sender\n if (stopScanning) {\n return null;\n }\n const { blockNumber, nonce } = await resolveProperties({\n blockNumber: this.provider.getBlockNumber(),\n nonce: this.provider.getTransactionCount(this.from)\n });\n // No transaction or our nonce has not been mined yet; but we\n // can start scanning later when we do start\n if (nonce < this.nonce) {\n startBlock = blockNumber;\n return;\n }\n // We were mined; no replacement\n if (stopScanning) {\n return null;\n }\n const mined = await this.getTransaction();\n if (mined && mined.blockNumber != null) {\n return;\n }\n // We were replaced; start scanning for that transaction\n // Starting to scan; look back a few extra blocks for safety\n if (nextScan === -1) {\n nextScan = startBlock - 3;\n if (nextScan < this.#startBlock) {\n nextScan = this.#startBlock;\n }\n }\n while (nextScan <= blockNumber) {\n // Get the next block to scan\n if (stopScanning) {\n return null;\n }\n const block = await this.provider.getBlock(nextScan, true);\n // This should not happen; but we'll try again shortly\n if (block == null) {\n return;\n }\n // We were mined; no replacement\n for (const hash of block) {\n if (hash === this.hash) {\n return;\n }\n }\n // Search for the transaction that replaced us\n for (let i = 0; i < block.length; i++) {\n const tx = await block.getTransaction(i);\n if (tx.from === this.from && tx.nonce === this.nonce) {\n // Get the receipt\n if (stopScanning) {\n return null;\n }\n const receipt = await this.provider.getTransactionReceipt(tx.hash);\n // This should not happen; but we'll try again shortly\n if (receipt == null) {\n return;\n }\n // We will retry this on the next block (this case could be optimized)\n if ((blockNumber - receipt.blockNumber + 1) < confirms) {\n return;\n }\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === this.data && tx.to === this.to && tx.value === this.value) {\n reason = \"repriced\";\n }\n else if (tx.data === \"0x\" && tx.from === tx.to && tx.value === BN_0) {\n reason = \"cancelled\";\n }\n assert(false, \"transaction was replaced\", \"TRANSACTION_REPLACED\", {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: tx.replaceableTransaction(startBlock),\n hash: tx.hash,\n receipt\n });\n }\n }\n nextScan++;\n }\n return;\n };\n const checkReceipt = (receipt) => {\n if (receipt == null || receipt.status !== 0) {\n return receipt;\n }\n assert(false, \"transaction execution reverted\", \"CALL_EXCEPTION\", {\n action: \"sendTransaction\",\n data: null, reason: null, invocation: null, revert: null,\n transaction: {\n to: receipt.to,\n from: receipt.from,\n data: \"\" // @TODO: in v7, split out sendTransaction properties\n }, receipt\n });\n };\n const receipt = await this.provider.getTransactionReceipt(this.hash);\n if (confirms === 0) {\n return checkReceipt(receipt);\n }\n if (receipt) {\n if (confirms === 1 || (await receipt.confirmations()) >= confirms) {\n return checkReceipt(receipt);\n }\n }\n else {\n // Check for a replacement; throws if a replacement was found\n await checkReplacement();\n // Allow null only when the confirms is 0\n if (confirms === 0) {\n return null;\n }\n }\n const waiter = new Promise((resolve, reject) => {\n // List of things to cancel when we have a result (one way or the other)\n const cancellers = [];\n const cancel = () => { cancellers.forEach((c) => c()); };\n // On cancel, stop scanning for replacements\n cancellers.push(() => { stopScanning = true; });\n // Set up any timeout requested\n if (timeout > 0) {\n const timer = setTimeout(() => {\n cancel();\n reject(makeError(\"wait for transaction timeout\", \"TIMEOUT\"));\n }, timeout);\n cancellers.push(() => { clearTimeout(timer); });\n }\n const txListener = async (receipt) => {\n // Done; return it!\n if ((await receipt.confirmations()) >= confirms) {\n cancel();\n try {\n resolve(checkReceipt(receipt));\n }\n catch (error) {\n reject(error);\n }\n }\n };\n cancellers.push(() => { this.provider.off(this.hash, txListener); });\n this.provider.on(this.hash, txListener);\n // We support replacement detection; start checking\n if (startBlock >= 0) {\n const replaceListener = async () => {\n try {\n // Check for a replacement; this throws only if one is found\n await checkReplacement();\n }\n catch (error) {\n // We were replaced (with enough confirms); re-throw the error\n if (isError(error, \"TRANSACTION_REPLACED\")) {\n cancel();\n reject(error);\n return;\n }\n }\n // Rescheudle a check on the next block\n if (!stopScanning) {\n this.provider.once(\"block\", replaceListener);\n }\n };\n cancellers.push(() => { this.provider.off(\"block\", replaceListener); });\n this.provider.once(\"block\", replaceListener);\n }\n });\n return await waiter;\n }\n /**\n * Returns ``true`` if this transaction has been included.\n *\n * This is effective only as of the time the TransactionResponse\n * was instantiated. To get up-to-date information, use\n * [[getTransaction]].\n *\n * This provides a Type Guard that this transaction will have\n * non-null property values for properties that are null for\n * unmined transactions.\n */\n isMined() {\n return (this.blockHash != null);\n }\n /**\n * Returns true if the transaction is a legacy (i.e. ``type == 0``)\n * transaction.\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isLegacy() {\n return (this.type === 0);\n }\n /**\n * Returns true if the transaction is a Berlin (i.e. ``type == 1``)\n * transaction. See [[link-eip-2070]].\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isBerlin() {\n return (this.type === 1);\n }\n /**\n * Returns true if the transaction is a London (i.e. ``type == 2``)\n * transaction. See [[link-eip-1559]].\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isLondon() {\n return (this.type === 2);\n }\n /**\n * Returns true if hte transaction is a Cancun (i.e. ``type == 3``)\n * transaction. See [[link-eip-4844]].\n */\n isCancun() {\n return (this.type === 3);\n }\n /**\n * Returns a filter which can be used to listen for orphan events\n * that evict this transaction.\n */\n removedEvent() {\n assert(this.isMined(), \"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n return createRemovedTransactionFilter(this);\n }\n /**\n * Returns a filter which can be used to listen for orphan events\n * that re-order this event against %%other%%.\n */\n reorderedEvent(other) {\n assert(this.isMined(), \"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n assert(!other || other.isMined(), \"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n return createReorderedTransactionFilter(this, other);\n }\n /**\n * Returns a new TransactionResponse instance which has the ability to\n * detect (and throw an error) if the transaction is replaced, which\n * will begin scanning at %%startBlock%%.\n *\n * This should generally not be used by developers and is intended\n * primarily for internal use. Setting an incorrect %%startBlock%% can\n * have devastating performance consequences if used incorrectly.\n */\n replaceableTransaction(startBlock) {\n assertArgument(Number.isInteger(startBlock) && startBlock >= 0, \"invalid startBlock\", \"startBlock\", startBlock);\n const tx = new TransactionResponse(this, this.provider);\n tx.#startBlock = startBlock;\n return tx;\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\n//# sourceMappingURL=provider.js.map","// import from provider.ts instead of index.ts to prevent circular dep\n// from EtherscanProvider\nimport { Log, TransactionReceipt, TransactionResponse } from \"../providers/provider.js\";\nimport { defineProperties, EventPayload } from \"../utils/index.js\";\n/**\n * An **EventLog** contains additional properties parsed from the [[Log]].\n */\nexport class EventLog extends Log {\n /**\n * The Contract Interface.\n */\n interface;\n /**\n * The matching event.\n */\n fragment;\n /**\n * The parsed arguments passed to the event by ``emit``.\n */\n args;\n /**\n * @_ignore:\n */\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n /**\n * The name of the event.\n */\n get eventName() { return this.fragment.name; }\n /**\n * The signature of the event.\n */\n get eventSignature() { return this.fragment.format(); }\n}\n/**\n * An **EventLog** contains additional properties parsed from the [[Log]].\n */\nexport class UndecodedEventLog extends Log {\n /**\n * The error encounted when trying to decode the log.\n */\n error;\n /**\n * @_ignore:\n */\n constructor(log, error) {\n super(log, log.provider);\n defineProperties(this, { error });\n }\n}\n/**\n * A **ContractTransactionReceipt** includes the parsed logs from a\n * [[TransactionReceipt]].\n */\nexport class ContractTransactionReceipt extends TransactionReceipt {\n #iface;\n /**\n * @_ignore:\n */\n constructor(iface, provider, tx) {\n super(tx, provider);\n this.#iface = iface;\n }\n /**\n * The parsed logs for any [[Log]] which has a matching event in the\n * Contract ABI.\n */\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? this.#iface.getEvent(log.topics[0]) : null;\n if (fragment) {\n try {\n return new EventLog(log, this.#iface, fragment);\n }\n catch (error) {\n return new UndecodedEventLog(log, error);\n }\n }\n return log;\n });\n }\n}\n/**\n * A **ContractTransactionResponse** will return a\n * [[ContractTransactionReceipt]] when waited on.\n */\nexport class ContractTransactionResponse extends TransactionResponse {\n #iface;\n /**\n * @_ignore:\n */\n constructor(iface, provider, tx) {\n super(tx, provider);\n this.#iface = iface;\n }\n /**\n * Resolves once this transaction has been mined and has\n * %%confirms%% blocks including it (default: ``1``) with an\n * optional %%timeout%%.\n *\n * This can resolve to ``null`` only if %%confirms%% is ``0``\n * and the transaction has not been mined, otherwise this will\n * wait until enough confirmations have completed.\n */\n async wait(confirms, timeout) {\n const receipt = await super.wait(confirms, timeout);\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(this.#iface, this.provider, receipt);\n }\n}\n/**\n * A **ContractUnknownEventPayload** is included as the last parameter to\n * Contract Events when the event does not match any events in the ABI.\n */\nexport class ContractUnknownEventPayload extends EventPayload {\n /**\n * The log with no matching events.\n */\n log;\n /**\n * @_event:\n */\n constructor(contract, listener, filter, log) {\n super(contract, listener, filter);\n defineProperties(this, { log });\n }\n /**\n * Resolves to the block the event occured in.\n */\n async getBlock() {\n return await this.log.getBlock();\n }\n /**\n * Resolves to the transaction the event occured in.\n */\n async getTransaction() {\n return await this.log.getTransaction();\n }\n /**\n * Resolves to the transaction receipt the event occured in.\n */\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n/**\n * A **ContractEventPayload** is included as the last parameter to\n * Contract Events when the event is known.\n */\nexport class ContractEventPayload extends ContractUnknownEventPayload {\n /**\n * @_ignore:\n */\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter, new EventLog(_log, contract.interface, fragment));\n const args = contract.interface.decodeEventLog(fragment, this.log.data, this.log.topics);\n defineProperties(this, { args, fragment });\n }\n /**\n * The event name.\n */\n get eventName() {\n return this.fragment.name;\n }\n /**\n * The event signature.\n */\n get eventSignature() {\n return this.fragment.format();\n }\n}\n//# sourceMappingURL=wrappers.js.map","import { Interface, Typed } from \"../abi/index.js\";\nimport { isAddressable, resolveAddress } from \"../address/index.js\";\n// import from provider.ts instead of index.ts to prevent circular dep\n// from EtherscanProvider\nimport { copyRequest, Log } from \"../providers/provider.js\";\nimport { defineProperties, getBigInt, isCallException, isHexString, resolveProperties, isError, makeError, assert, assertArgument } from \"../utils/index.js\";\nimport { ContractEventPayload, ContractUnknownEventPayload, ContractTransactionResponse, EventLog, UndecodedEventLog } from \"./wrappers.js\";\nconst BN_0 = BigInt(0);\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction getResolver(value) {\n if (value != null) {\n if (canResolve(value)) {\n return value;\n }\n if (value.provider) {\n return value.provider;\n }\n }\n return undefined;\n}\nclass PreparedTopicFilter {\n #filter;\n fragment;\n constructor(contract, fragment, args) {\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n this.#filter = (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n const arg = args[index];\n if (arg == null) {\n return null;\n }\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n if (Array.isArray(value)) {\n return Promise.all(value.map((v) => resolveAddress(v, resolver)));\n }\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })();\n }\n getTopicFilter() {\n return this.#filter;\n }\n}\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod<A extends Array<any> = Array<any>, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\n/**\n * @_ignore:\n */\nexport async function copyOverrides(arg, allowed) {\n // Make sure the overrides passed in are a valid overrides object\n const _overrides = Typed.dereference(arg, \"overrides\");\n assertArgument(typeof (_overrides) === \"object\", \"invalid overrides parameter\", \"overrides\", arg);\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(_overrides);\n assertArgument(overrides.to == null || (allowed || []).indexOf(\"to\") >= 0, \"cannot override to\", \"overrides.to\", overrides.to);\n assertArgument(overrides.data == null || (allowed || []).indexOf(\"data\") >= 0, \"cannot override data\", \"overrides.data\", overrides.data);\n // Resolve any from\n if (overrides.from) {\n overrides.from = overrides.from;\n }\n return overrides;\n}\n/**\n * @_ignore:\n */\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n value = Typed.dereference(value, type);\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nfunction buildWrappedFallback(contract) {\n const populateTransaction = async function (overrides) {\n // If an overrides was passed in, copy it and normalize the values\n const tx = (await copyOverrides(overrides, [\"data\"]));\n tx.to = await contract.getAddress();\n if (tx.from) {\n tx.from = await resolveAddress(tx.from, getResolver(contract.runner));\n }\n const iface = contract.interface;\n const noValue = (getBigInt((tx.value || BN_0), \"overrides.value\") === BN_0);\n const noData = ((tx.data || \"0x\") === \"0x\");\n if (iface.fallback && !iface.fallback.payable && iface.receive && !noData && !noValue) {\n assertArgument(false, \"cannot send data to receive or send value to non-payable fallback\", \"overrides\", overrides);\n }\n assertArgument(iface.fallback || noData, \"cannot send data to receive-only contract\", \"overrides.data\", tx.data);\n // Only allow payable contracts to set non-zero value\n const payable = iface.receive || (iface.fallback && iface.fallback.payable);\n assertArgument(payable || noValue, \"cannot send value to non-payable fallback\", \"overrides.value\", tx.value);\n // Only allow fallback contracts to set non-empty data\n assertArgument(iface.fallback || noData, \"cannot send data to receive-only contract\", \"overrides.data\", tx.data);\n return tx;\n };\n const staticCall = async function (overrides) {\n const runner = getRunner(contract.runner, \"call\");\n assert(canCall(runner), \"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", { operation: \"call\" });\n const tx = await populateTransaction(overrides);\n try {\n return await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error) && error.data) {\n throw contract.interface.makeError(error.data, tx);\n }\n throw error;\n }\n };\n const send = async function (overrides) {\n const runner = contract.runner;\n assert(canSend(runner), \"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", { operation: \"sendTransaction\" });\n const tx = await runner.sendTransaction(await populateTransaction(overrides));\n const provider = getProvider(contract.runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n return new ContractTransactionResponse(contract.interface, provider, tx);\n };\n const estimateGas = async function (overrides) {\n const runner = getRunner(contract.runner, \"estimateGas\");\n assert(canEstimate(runner), \"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", { operation: \"estimateGas\" });\n return await runner.estimateGas(await populateTransaction(overrides));\n };\n const method = async (overrides) => {\n return await send(overrides);\n };\n defineProperties(method, {\n _contract: contract,\n estimateGas,\n populateTransaction,\n send, staticCall\n });\n return method;\n}\nfunction buildWrappedMethod(contract, key) {\n const getFragment = function (...args) {\n const fragment = contract.interface.getFunction(key, args);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key, args }\n });\n return fragment;\n };\n const populateTransaction = async function (...args) {\n const fragment = getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from, getResolver(contract.runner));\n }\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: contract.getAddress(),\n data: contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n };\n const staticCall = async function (...args) {\n const result = await staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n };\n const send = async function (...args) {\n const runner = contract.runner;\n assert(canSend(runner), \"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", { operation: \"sendTransaction\" });\n const tx = await runner.sendTransaction(await populateTransaction(...args));\n const provider = getProvider(contract.runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n return new ContractTransactionResponse(contract.interface, provider, tx);\n };\n const estimateGas = async function (...args) {\n const runner = getRunner(contract.runner, \"estimateGas\");\n assert(canEstimate(runner), \"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", { operation: \"estimateGas\" });\n return await runner.estimateGas(await populateTransaction(...args));\n };\n const staticCallResult = async function (...args) {\n const runner = getRunner(contract.runner, \"call\");\n assert(canCall(runner), \"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", { operation: \"call\" });\n const tx = await populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error) && error.data) {\n throw contract.interface.makeError(error.data, tx);\n }\n throw error;\n }\n const fragment = getFragment(...args);\n return contract.interface.decodeFunctionResult(fragment, result);\n };\n const method = async (...args) => {\n const fragment = getFragment(...args);\n if (fragment.constant) {\n return await staticCall(...args);\n }\n return await send(...args);\n };\n defineProperties(method, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key,\n getFragment,\n estimateGas,\n populateTransaction,\n send, staticCall, staticCallResult,\n });\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n Object.defineProperty(method, \"fragment\", {\n configurable: false,\n enumerable: true,\n get: () => {\n const fragment = contract.interface.getFunction(key);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key }\n });\n return fragment;\n }\n });\n return method;\n}\nfunction buildWrappedEvent(contract, key) {\n const getFragment = function (...args) {\n const fragment = contract.interface.getEvent(key, args);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key, args }\n });\n return fragment;\n };\n const method = function (...args) {\n return new PreparedTopicFilter(contract, getFragment(...args), args);\n };\n defineProperties(method, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key,\n getFragment\n });\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n Object.defineProperty(method, \"fragment\", {\n configurable: false,\n enumerable: true,\n get: () => {\n const fragment = contract.interface.getEvent(key);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key }\n });\n return fragment;\n }\n });\n return method;\n}\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubInfo(contract, event) {\n let topics;\n let fragment = null;\n // Convert named events to topicHash and get the fragment for\n // events which need deconstructing.\n if (Array.isArray(event)) {\n const topicHashify = function (name) {\n if (isHexString(name, 32)) {\n return name;\n }\n const fragment = contract.interface.getEvent(name);\n assertArgument(fragment, \"unknown fragment\", \"name\", name);\n return fragment.topicHash;\n };\n // Array of Topics and Names; e.g. `[ \"0x1234...89ab\", \"Transfer(address)\" ]`\n topics = event.map((e) => {\n if (e == null) {\n return null;\n }\n if (Array.isArray(e)) {\n return e.map(topicHashify);\n }\n return topicHashify(e);\n });\n }\n else if (event === \"*\") {\n topics = [null];\n }\n else if (typeof (event) === \"string\") {\n if (isHexString(event, 32)) {\n // Topic Hash\n topics = [event];\n }\n else {\n // Name or Signature; e.g. `\"Transfer\", `\"Transfer(address)\"`\n fragment = contract.interface.getEvent(event);\n assertArgument(fragment, \"unknown fragment\", \"event\", event);\n topics = [fragment.topicHash];\n }\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [fragment.topicHash];\n }\n else {\n assertArgument(false, \"unknown event name\", \"event\", event);\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n const items = Array.from(new Set(t.map((t) => t.toLowerCase())).values());\n if (items.length === 1) {\n return items[0];\n }\n items.sort();\n return items;\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubInfo(contract, event)).tag) || null;\n}\nasync function getSub(contract, operation, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n assert(provider, \"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", { operation });\n const { fragment, tag, topics } = await getSubInfo(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n let foundFragment = fragment;\n if (foundFragment == null) {\n try {\n foundFragment = contract.interface.getEvent(log.topics[0]);\n }\n catch (error) { }\n }\n // If fragment is null, we do not deconstruct the args to emit\n if (foundFragment) {\n const _foundFragment = foundFragment;\n const args = fragment ? contract.interface.decodeEventLog(fragment, log.data, log.topics) : [];\n emit(contract, event, args, (listener) => {\n return new ContractEventPayload(contract, listener, event, _foundFragment, log);\n });\n }\n else {\n emit(contract, event, [], (listener) => {\n return new ContractUnknownEventPayload(contract, listener, event, log);\n });\n }\n };\n let starting = [];\n const start = () => {\n if (starting.length) {\n return;\n }\n starting.push(provider.on(filter, listener));\n };\n const stop = async () => {\n if (starting.length == 0) {\n return;\n }\n let started = starting;\n starting = [];\n await Promise.all(started);\n provider.off(filter, listener);\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function _emit(contract, event, args, payloadFunc) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = Array.from(args);\n if (payloadFunc) {\n passArgs.push(payloadFunc(once ? null : listener));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n if (sub.listeners.length === 0) {\n sub.stop();\n getInternal(contract).subs.delete(sub.tag);\n }\n return (count > 0);\n}\nasync function emit(contract, event, args, payloadFunc) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payloadFunc);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n /**\n * The target to connect to.\n *\n * This can be an address, ENS name or any [[Addressable]], such as\n * another contract. To get the resolved address, use the ``getAddress``\n * method.\n */\n target;\n /**\n * The contract Interface.\n */\n interface;\n /**\n * The connected runner. This is generally a [[Provider]] or a\n * [[Signer]], which dictates what operations are supported.\n *\n * For example, a **Contract** connected to a [[Provider]] may\n * only execute read-only operations.\n */\n runner;\n /**\n * All the Events available on this contract.\n */\n filters;\n /**\n * @_ignore:\n */\n [internal];\n /**\n * The fallback or receive function if any.\n */\n fallback;\n /**\n * Creates a new contract connected to %%target%% with the %%abi%% and\n * optionally connected to a %%runner%% to perform operations on behalf\n * of.\n */\n constructor(target, abi, runner, _deployTx) {\n assertArgument(typeof (target) === \"string\" || isAddressable(target), \"invalid value for Contract target\", \"target\", target);\n if (runner == null) {\n runner = null;\n }\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw makeError(\"an ENS name used for a contract target must be correctly configured\", \"UNCONFIGURED_NAME\", {\n value: target\n });\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (typeof (prop) === \"symbol\" || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n try {\n return this.getEvent(prop);\n }\n catch (error) {\n if (!isError(error, \"INVALID_ARGUMENT\") || error.argument !== \"key\") {\n throw error;\n }\n }\n return undefined;\n },\n has: (target, prop) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(prop) >= 0) {\n return Reflect.has(target, prop);\n }\n return Reflect.has(target, prop) || this.interface.hasEvent(String(prop));\n }\n });\n defineProperties(this, { filters });\n defineProperties(this, {\n fallback: ((iface.receive || iface.fallback) ? (buildWrappedFallback(this)) : null)\n });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"symbol\" || prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Undefined properties should return undefined\n try {\n return target.getFunction(prop);\n }\n catch (error) {\n if (!isError(error, \"INVALID_ARGUMENT\") || error.argument !== \"key\") {\n throw error;\n }\n }\n return undefined;\n },\n has: (target, prop) => {\n if (typeof (prop) === \"symbol\" || prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.has(target, prop);\n }\n return target.interface.hasFunction(prop);\n }\n });\n }\n /**\n * Return a new Contract instance with the same target and ABI, but\n * a different %%runner%%.\n */\n connect(runner) {\n return new BaseContract(this.target, this.interface, runner);\n }\n /**\n * Return a new Contract instance with the same ABI and runner, but\n * a different %%target%%.\n */\n attach(target) {\n return new BaseContract(target, this.interface, this.runner);\n }\n /**\n * Return the resolved address of this Contract.\n */\n async getAddress() { return await getInternal(this).addrPromise; }\n /**\n * Return the deployed bytecode or null if no bytecode is found.\n */\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n assert(provider, \"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", { operation: \"getDeployedCode\" });\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n /**\n * Resolve to this Contract once the bytecode has been deployed, or\n * resolve immediately if already deployed.\n */\n async waitForDeployment() {\n // We have the deployment transaction; just use that (throws if deployment fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n assert(provider != null, \"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", { operation: \"waitForDeployment\" });\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n /**\n * Return the transaction used to deploy this contract.\n *\n * This is only available if this instance was returned from a\n * [[ContractFactory]].\n */\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n /**\n * Return the function for a given name. This is useful when a contract\n * method name conflicts with a JavaScript name such as ``prototype`` or\n * when using a Contract programmatically.\n */\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n const func = buildWrappedMethod(this, key);\n return func;\n }\n /**\n * Return the event for a given name. This is useful when a contract\n * event name conflicts with a JavaScript name such as ``prototype`` or\n * when using a Contract programmatically.\n */\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return buildWrappedEvent(this, key);\n }\n /**\n * @_ignore:\n */\n async queryTransaction(hash) {\n throw new Error(\"@TODO\");\n }\n /*\n // @TODO: this is a non-backwards compatible change, but will be added\n // in v7 and in a potential SmartContract class in an upcoming\n // v6 release\n async getTransactionReceipt(hash: string): Promise<null | ContractTransactionReceipt> {\n const provider = getProvider(this.runner);\n assert(provider, \"contract runner does not have a provider\",\n \"UNSUPPORTED_OPERATION\", { operation: \"queryTransaction\" });\n\n const receipt = await provider.getTransactionReceipt(hash);\n if (receipt == null) { return null; }\n\n return new ContractTransactionReceipt(this.interface, provider, receipt);\n }\n */\n /**\n * Provide historic access to event data for %%event%% in the range\n * %%fromBlock%% (default: ``0``) to %%toBlock%% (default: ``\"latest\"``)\n * inclusive.\n */\n async queryFilter(event, fromBlock, toBlock) {\n if (fromBlock == null) {\n fromBlock = 0;\n }\n if (toBlock == null) {\n toBlock = \"latest\";\n }\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubInfo(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n assert(provider, \"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"queryFilter\" });\n return (await provider.getLogs(filter)).map((log) => {\n let foundFragment = fragment;\n if (foundFragment == null) {\n try {\n foundFragment = this.interface.getEvent(log.topics[0]);\n }\n catch (error) { }\n }\n if (foundFragment) {\n try {\n return new EventLog(log, this.interface, foundFragment);\n }\n catch (error) {\n return new UndecodedEventLog(log, error);\n }\n }\n return new Log(log, provider);\n });\n }\n /**\n * Add an event %%listener%% for the %%event%%.\n */\n async on(event, listener) {\n const sub = await getSub(this, \"on\", event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n /**\n * Add an event %%listener%% for the %%event%%, but remove the listener\n * after it is fired once.\n */\n async once(event, listener) {\n const sub = await getSub(this, \"once\", event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n /**\n * Emit an %%event%% calling all listeners with %%args%%.\n *\n * Resolves to ``true`` if any listeners were called.\n */\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n /**\n * Resolves to the number of listeners of %%event%% or the total number\n * of listeners if unspecified.\n */\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n /**\n * Resolves to the listeners subscribed to %%event%% or all listeners\n * if unspecified.\n */\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n /**\n * Remove the %%listener%% from the listeners for %%event%% or remove\n * all listeners if unspecified.\n */\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n /**\n * Remove all the listeners for %%event%% or remove all listeners if\n * unspecified.\n */\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n /**\n * Alias for [on].\n */\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n /**\n * Alias for [off].\n */\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n /**\n * Create a new Class for the %%abi%%.\n */\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n /**\n * Create a new BaseContract with a specified Interface.\n */\n static from(target, abi, runner) {\n if (runner == null) {\n runner = null;\n }\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\n/**\n * A [[BaseContract]] with no type guards on its methods or events.\n */\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map",null,null,null,null,null,null,null,null,null],"names":["BN_0","BN_1","passProperties","_guard","internal","PanicReasons","nameToAddress","interfaceAbis","products","nameToAbi","interfaceToAbi","AgentInfo","AgentSettings","AssetManagerSettings","AvailableAgentInfo","CollateralReservationInfo","CollateralType","ContractRegistry","EmergencyPause","FtsoV2Interface","IAddressValidity","IAddressValidityVerification","IAgentAlwaysAllowedMinters","IAgentOwnerRegistry","IAgentPing","IAssetManager","IAssetManagerController","IAssetManagerEvents","IBalanceDecreasingTransaction","IBalanceDecreasingTransactionVerification","ICChainStake","ICChainVotePower","IClaimSetupManager","ICollateralizable","IConfirmedBlockHeightExists","IConfirmedBlockHeightExistsVerification","ICoreVaultClient","ICoreVaultClientSettings","IDelegationAccount","IDiamondLoupe","IEVMTransaction","IEVMTransactionVerification","IEntityManager","IFastUpdateIncentiveManager","IFastUpdater","IFastUpdatesConfiguration","IFdcHub","IFdcInflationConfigurations","IFdcRequestFeeConfigurations","IFdcVerification","IFeeCalculator","IFlareAssetRegistry","IFlareContractRegistry","IFlareDaemonize","IFlareSystemsCalculator","IFlareSystemsManager","IFtso","IFtsoFeedDecimals","IFtsoFeedIdConverter","IFtsoFeedPublisher","IFtsoGenesis","IFtsoInflationConfigurations","IFtsoManager","IFtsoManagerGenesis","IFtsoRegistry","IFtsoRegistryGenesis","IFtsoRewardManager","IFtsoRewardOffersManager","IGenericRewardManager","IGovernanceSettings","IGovernanceVotePower","IGovernor","IIAddressUpdatable","IIAddressUpdater","IIClaimSetupManager","IICleanable","IICleanupBlockNumberManager","IICustomFeed","IIERC20WithMetadata","IIEntityManager","IIFastUpdaterView","IIFlareAssetRegistry","IIFlareAssetRegistryProvider","IIFlareSystemsCalculator","IIFlareSystemsManager","IIFtso","IIFtsoFeedPublisher","IIFtsoManager","IIFtsoManagerProxy","IIFtsoManagerV1","IIFtsoRegistry","IIFtsoRewardManager","IIGovernanceVotePower","IIGovernorProposer","IIInflationAllocation","IIInflationReceiver","IIInflationReceiverV1","IIInflationV1","IINodePossessionVerifier","IIPollingFoundation","IIPollingManagementGroup","IIPreInflationCalculation","IIPriceSubmitter","IIPublicKeyVerifier","IIRNat","IIRNatAccount","IIRandomProvider","IIRelay","IIRewardEpochSwitchoverTrigger","IIRewardManager","IISubmission","IISupply","IITokenPool","IIVPContract","IIVPToken","IIVoterRegistrationTrigger","IIVoterRegistry","IIVoterWhitelister","IIncreaseManager","IInflationGenesis","IJsonApi","IJsonApiVerification","IPayment","IPaymentVerification","IPollingFtso","IPollingManagementGroup","IPriceSubmitter","IRNat","IRNatAccount","IRandomProvider","IRedemptionTimeExtension","IReferencedPaymentNonexistence","IReferencedPaymentNonexistenceVerification","IRelay","IRewardManager","ISubmission","ITypeTemplate","ITypeTemplateVerification","IUpdateValidators","IVPContractEvents","IVPToken","IValidatorRewardOffersManager","IVoterPreRegistry","IVoterRegistry","IVoterWhitelister","IWNat","IWNatDelegationFee","IWeb2Json","IWeb2JsonVerification","ProtocolsV2Interface","RandomNumberV2Interface","RedemptionRequestInfo","RedemptionTicketInfo","RewardsV2Interface","TestFtsoV2Interface","IAddressBinder","IDistributionToDelegators","IICombinedNatBalance","IIGenericRewardManager","IIIncentivePoolAllocation","IIIncentivePoolPercentageProvider","IIIncentivePoolReceiver","IIIncentivePoolSharingPercentageProvider","IIPChainStakeMirrorVerifier","IPChainStakeMirror","IPChainStakeMirrorMultiSigVoting","IPChainStakeMirrorVerifier","IPChainVotePower","IValidatorRegistry","IIFtsoRegistryV1","ethers.Contract","nameToAbiFLR","nameToAbiSGB","nameToAbiCST","nameToAbiCST2","interfaceToAbiFLR","interfaceToAbiSGB","interfaceToAbiCST","interfaceToAbiCST2"],"mappings":"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ACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAA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AI,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5E,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,8BAA8B,CAAC,IAAI,CAAC;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,+CAA+C,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;AAC3J,QAAQ,OAAO,gCAAgC,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,CAAC;AACjC;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS;AACb;AACA;AACA;AACA,IAAI,KAAK;AACT;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK;AACT;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA,IAAI,KAAK;AACT;AACA;AACA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/ethers/lib.esm/_version.js","../node_modules/ethers/lib.esm/utils/properties.js","../node_modules/ethers/lib.esm/utils/errors.js","../node_modules/ethers/lib.esm/utils/data.js","../node_modules/ethers/lib.esm/utils/maths.js","../node_modules/ethers/lib.esm/utils/events.js","../node_modules/ethers/lib.esm/utils/utf8.js","../node_modules/ethers/lib.esm/abi/coders/abstract-coder.js","../node_modules/@noble/hashes/esm/_assert.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/sha3.js","../node_modules/ethers/lib.esm/crypto/keccak.js","../node_modules/ethers/lib.esm/address/address.js","../node_modules/ethers/lib.esm/address/checks.js","../node_modules/ethers/lib.esm/abi/typed.js","../node_modules/ethers/lib.esm/abi/coders/address.js","../node_modules/ethers/lib.esm/abi/coders/anonymous.js","../node_modules/ethers/lib.esm/abi/coders/array.js","../node_modules/ethers/lib.esm/abi/coders/boolean.js","../node_modules/ethers/lib.esm/abi/coders/bytes.js","../node_modules/ethers/lib.esm/abi/coders/fixed-bytes.js","../node_modules/ethers/lib.esm/abi/coders/null.js","../node_modules/ethers/lib.esm/abi/coders/number.js","../node_modules/ethers/lib.esm/abi/coders/string.js","../node_modules/ethers/lib.esm/abi/coders/tuple.js","../node_modules/ethers/lib.esm/transaction/accesslist.js","../node_modules/ethers/lib.esm/hash/id.js","../node_modules/ethers/lib.esm/abi/fragments.js","../node_modules/ethers/lib.esm/abi/abi-coder.js","../node_modules/ethers/lib.esm/abi/interface.js","../node_modules/ethers/lib.esm/providers/provider.js","../node_modules/ethers/lib.esm/contract/wrappers.js","../node_modules/ethers/lib.esm/contract/contract.js","../../coston/abis.ts","../../coston/mapper.ts","../../coston2/abis.ts","../../coston2/mapper.ts","../../flare/abis.ts","../../flare/mapper.ts","../../songbird/abis.ts","../../songbird/mapper.ts","../../index.ts"],"sourcesContent":["/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.16.0\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value, seen) {\n if (value == null) {\n return \"null\";\n }\n if (seen == null) {\n seen = new Set();\n }\n if (typeof (value) === \"object\") {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map((v) => stringify(v, seen))).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON(), seen);\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"number\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k, seen)}: ${stringify(value[k], seen)}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing argument\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && (value.length % 2) === 0 &&\n value.match(/^0x[0-9a-f]*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Some mathematic operations.\n *\n * @_subsection: api/utils:Math Helpers [about-maths]\n */\nimport { hexlify, isBytesLike } from \"./data.js\";\nimport { assert, assertArgument } from \"./errors.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n//const BN_Max256 = (BN_1 << BigInt(256)) - BN_1;\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n/**\n * Convert %%value%% from a twos-compliment representation of %%width%%\n * bits to its value.\n *\n * If the highest bit is ``1``, the result will be negative.\n */\nexport function fromTwos(_value, _width) {\n const value = getUint(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n assert((value >> width) === BN_0, \"overflow\", \"NUMERIC_FAULT\", {\n operation: \"fromTwos\", fault: \"overflow\", value: _value\n });\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n/**\n * Convert %%value%% to a twos-compliment representation of\n * %%width%% bits.\n *\n * The result will always be positive.\n */\nexport function toTwos(_value, _width) {\n let value = getBigInt(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n const limit = (BN_1 << (width - BN_1));\n if (value < BN_0) {\n value = -value;\n assert(value <= limit, \"too low\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n const mask = (BN_1 << width) - BN_1;\n return ((~value) & mask) + BN_1;\n }\n else {\n assert(value < limit, \"too high\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n }\n return value;\n}\n/**\n * Mask %%value%% with a bitmask of %%bits%% ones.\n */\nexport function mask(_value, _bits) {\n const value = getUint(_value, \"value\");\n const bits = BigInt(getNumber(_bits, \"bits\"));\n return value & ((BN_1 << bits) - BN_1);\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\", name || \"value\", value);\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nexport function getUint(value, name) {\n const result = getBigInt(value, name);\n assert(result >= BN_0, \"unsigned value cannot be negative\", \"NUMERIC_FAULT\", {\n fault: \"overflow\", operation: \"getUint\", value\n });\n return result;\n}\nconst Nibbles = \"0123456789abcdef\";\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nexport function toBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\n/**\n * Gets a //number// from %%value%%. If it is an invalid value for\n * a //number//, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return Number(value);\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return value;\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n return getNumber(BigInt(value), name);\n }\n catch (e) {\n assertArgument(false, `invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid numeric value\", name || \"value\", value);\n}\n/**\n * Converts %%value%% to a number. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data. Throws if the value is not safe.\n */\nexport function toNumber(value) {\n return getNumber(toBigInt(value));\n}\n/**\n * Converts %%value%% to a Big Endian hexstring, optionally padded to\n * %%width%% bytes.\n */\nexport function toBeHex(_value, _width) {\n const value = getUint(_value, \"value\");\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = getNumber(_width, \"width\");\n // Special case when both value and width are 0 (see: #5025)\n if (width === 0 && value === BN_0) {\n return \"0x\";\n }\n assert(width * 2 >= result.length, `value exceeds width (${width} bytes)`, \"NUMERIC_FAULT\", {\n operation: \"toBeHex\",\n fault: \"overflow\",\n value: _value\n });\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\n/**\n * Converts %%value%% to a Big Endian Uint8Array.\n */\nexport function toBeArray(_value, _width) {\n const value = getUint(_value, \"value\");\n if (value === BN_0) {\n const width = (_width != null) ? getNumber(_width, \"width\") : 0;\n return new Uint8Array(width);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n if (_width != null) {\n const width = getNumber(_width, \"width\");\n while (hex.length < (width * 2)) {\n hex = \"00\" + hex;\n }\n assert((width * 2) === hex.length, `value exceeds width (${width} bytes)`, \"NUMERIC_FAULT\", {\n operation: \"toBeArray\",\n fault: \"overflow\",\n value: _value\n });\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns a [[HexString]] for %%value%% safe to use as a //Quantity//.\n *\n * A //Quantity// does not have and leading 0 values unless the value is\n * the literal value `0x0`. This is most commonly used for JSSON-RPC\n * numeric values.\n */\nexport function toQuantity(value) {\n let result = hexlify(isBytesLike(value) ? value : toBeArray(value)).substring(2);\n while (result.startsWith(\"0\")) {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=maths.js.map","/**\n * Events allow for applications to use the observer pattern, which\n * allows subscribing and publishing events, outside the normal\n * execution paths.\n *\n * @_section api/utils/events:Events [about-events]\n */\nimport { defineProperties } from \"./properties.js\";\n/**\n * When an [[EventEmitterable]] triggers a [[Listener]], the\n * callback always ahas one additional argument passed, which is\n * an **EventPayload**.\n */\nexport class EventPayload {\n /**\n * The event filter.\n */\n filter;\n /**\n * The **EventEmitterable**.\n */\n emitter;\n #listener;\n /**\n * Create a new **EventPayload** for %%emitter%% with\n * the %%listener%% and for %%filter%%.\n */\n constructor(emitter, listener, filter) {\n this.#listener = listener;\n defineProperties(this, { emitter, filter });\n }\n /**\n * Unregister the triggered listener for future events.\n */\n async removeListener() {\n if (this.#listener == null) {\n return;\n }\n await this.emitter.off(this.filter, this.#listener);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { defineProperties, concat, getBytesCopy, getNumber, hexlify, toBeArray, toBigInt, toNumber, assert, assertArgument\n/*, isError*/\n } from \"../../utils/index.js\";\n/**\n * @_ignore:\n */\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nconst resultNames = new WeakMap();\nfunction getNames(result) {\n return resultNames.get(result);\n}\nfunction setNames(result, names) {\n resultNames.set(result, names);\n}\nfunction throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n}\nfunction toObject(names, items, deep) {\n if (names.indexOf(null) >= 0) {\n return items.map((item, index) => {\n if (item instanceof Result) {\n return toObject(getNames(item), item, deep);\n }\n return item;\n });\n }\n return names.reduce((accum, name, index) => {\n let item = items.getValue(name);\n if (!(name in accum)) {\n if (deep && item instanceof Result) {\n item = toObject(getNames(item), item, deep);\n }\n accum[name] = item;\n }\n return accum;\n }, {});\n}\n/**\n * A [[Result]] is a sub-class of Array, which allows accessing any\n * of its values either positionally by its index or, if keys are\n * provided by its name.\n *\n * @_docloc: api/abi\n */\nexport class Result extends Array {\n // No longer used; but cannot be removed as it will remove the\n // #private field from the .d.ts which may break backwards\n // compatibility\n #names;\n /**\n * @private\n */\n constructor(...args) {\n // To properly sub-class Array so the other built-in\n // functions work, the constructor has to behave fairly\n // well. So, in the event we are created via fromItems()\n // we build the read-only Result object we want, but on\n // any other input, we use the default constructor\n // constructor(guard: any, items: Array<any>, keys?: Array<null | string>);\n const guard = args[0];\n let items = args[1];\n let names = (args[2] || []).slice();\n let wrap = true;\n if (guard !== _guard) {\n items = args;\n names = [];\n wrap = false;\n }\n // Can't just pass in ...items since an array of length 1\n // is a special case in the super.\n super(items.length);\n items.forEach((item, index) => { this[index] = item; });\n // Find all unique keys\n const nameCounts = names.reduce((accum, name) => {\n if (typeof (name) === \"string\") {\n accum.set(name, (accum.get(name) || 0) + 1);\n }\n return accum;\n }, (new Map()));\n // Remove any key thats not unique\n setNames(this, Object.freeze(items.map((item, index) => {\n const name = names[index];\n if (name != null && nameCounts.get(name) === 1) {\n return name;\n }\n return null;\n })));\n // Dummy operations to prevent TypeScript from complaining\n this.#names = [];\n if (this.#names == null) {\n void (this.#names);\n }\n if (!wrap) {\n return;\n }\n // A wrapped Result is immutable\n Object.freeze(this);\n // Proxy indices and names so we can trap deferred errors\n const proxy = new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n // Index accessor\n if (prop.match(/^[0-9]+$/)) {\n const index = getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n throwError(`index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n const value = target[prop];\n if (value instanceof Function) {\n // Make sure functions work with private variables\n // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#no_private_property_forwarding\n return function (...args) {\n return value.apply((this === receiver) ? target : this, args);\n };\n }\n else if (!(prop in target)) {\n // Possible name accessor\n return target.getValue.apply((this === receiver) ? target : this, [prop]);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n setNames(proxy, getNames(this));\n return proxy;\n }\n /**\n * Returns the Result as a normal Array. If %%deep%%, any children\n * which are Result objects are also converted to a normal Array.\n *\n * This will throw if there are any outstanding deferred\n * errors.\n */\n toArray(deep) {\n const result = [];\n this.forEach((item, index) => {\n if (item instanceof Error) {\n throwError(`index ${index}`, item);\n }\n if (deep && item instanceof Result) {\n item = item.toArray(deep);\n }\n result.push(item);\n });\n return result;\n }\n /**\n * Returns the Result as an Object with each name-value pair. If\n * %%deep%%, any children which are Result objects are also\n * converted to an Object.\n *\n * This will throw if any value is unnamed, or if there are\n * any outstanding deferred errors.\n */\n toObject(deep) {\n const names = getNames(this);\n return names.reduce((accum, name, index) => {\n assert(name != null, `value at index ${index} unnamed`, \"UNSUPPORTED_OPERATION\", {\n operation: \"toObject()\"\n });\n return toObject(names, this, deep);\n }, {});\n }\n /**\n * @_ignore\n */\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (start < 0) {\n start += this.length;\n if (start < 0) {\n start = 0;\n }\n }\n if (end == null) {\n end = this.length;\n }\n if (end < 0) {\n end += this.length;\n if (end < 0) {\n end = 0;\n }\n }\n if (end > this.length) {\n end = this.length;\n }\n const _names = getNames(this);\n const result = [], names = [];\n for (let i = start; i < end; i++) {\n result.push(this[i]);\n names.push(_names[i]);\n }\n return new Result(_guard, result, names);\n }\n /**\n * @_ignore\n */\n filter(callback, thisArg) {\n const _names = getNames(this);\n const result = [], names = [];\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n if (item instanceof Error) {\n throwError(`index ${i}`, item);\n }\n if (callback.call(thisArg, item, i, this)) {\n result.push(item);\n names.push(_names[i]);\n }\n }\n return new Result(_guard, result, names);\n }\n /**\n * @_ignore\n */\n map(callback, thisArg) {\n const result = [];\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n if (item instanceof Error) {\n throwError(`index ${i}`, item);\n }\n result.push(callback.call(thisArg, item, i, this));\n }\n return result;\n }\n /**\n * Returns the value for %%name%%.\n *\n * Since it is possible to have a key whose name conflicts with\n * a method on a [[Result]] or its superclass Array, or any\n * JavaScript keyword, this ensures all named values are still\n * accessible by name.\n */\n getValue(name) {\n const index = getNames(this).indexOf(name);\n if (index === -1) {\n return undefined;\n }\n const value = this[index];\n if (value instanceof Error) {\n throwError(`property ${JSON.stringify(name)}`, value.error);\n }\n return value;\n }\n /**\n * Creates a new [[Result]] for %%items%% with each entry\n * also accessible by its corresponding name in %%keys%%.\n */\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n/**\n * Returns all errors found in a [[Result]].\n *\n * Since certain errors encountered when creating a [[Result]] do\n * not impact the ability to continue parsing data, they are\n * deferred until they are actually accessed. Hence a faulty string\n * in an Event that is never used does not impact the program flow.\n *\n * However, sometimes it may be useful to access, identify or\n * validate correctness of a [[Result]].\n *\n * @_docloc api/abi\n */\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toBeArray(value);\n assert(bytes.length <= WordSize, \"value out-of-bounds\", \"BUFFER_OVERRUN\", { buffer: bytes, length: WordSize, offset: bytes.length });\n if (bytes.length !== WordSize) {\n bytes = getBytesCopy(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\n/**\n * @_ignore\n */\nexport class Coder {\n // The coder name:\n // - address, uint256, tuple, array, etc.\n name;\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n type;\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n localName;\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n dynamic;\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n assertArgument(false, message, this.localName, value);\n }\n}\n/**\n * @_ignore\n */\nexport class Writer {\n // An array of WordSize lengthed objects to concatenation\n #data;\n #dataLength;\n constructor() {\n this.#data = [];\n this.#dataLength = 0;\n }\n get data() {\n return concat(this.#data);\n }\n get length() { return this.#dataLength; }\n #writeData(data) {\n this.#data.push(data);\n this.#dataLength += data.length;\n return data.length;\n }\n appendWriter(writer) {\n return this.#writeData(getBytesCopy(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = getBytesCopy(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = getBytesCopy(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return this.#writeData(bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return this.#writeData(getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = this.#data.length;\n this.#data.push(Padding);\n this.#dataLength += WordSize;\n return (value) => {\n this.#data[offset] = getValue(value);\n };\n }\n}\n/**\n * @_ignore\n */\nexport class Reader {\n // Allows incomplete unpadded data to be read; otherwise an error\n // is raised if attempting to overrun the buffer. This is required\n // to deal with an old Solidity bug, in which event data for\n // external (not public thoguh) was tightly packed.\n allowLoose;\n #data;\n #offset;\n #bytesRead;\n #parent;\n #maxInflation;\n constructor(data, allowLoose, maxInflation) {\n defineProperties(this, { allowLoose: !!allowLoose });\n this.#data = getBytesCopy(data);\n this.#bytesRead = 0;\n this.#parent = null;\n this.#maxInflation = (maxInflation != null) ? maxInflation : 1024;\n this.#offset = 0;\n }\n get data() { return hexlify(this.#data); }\n get dataLength() { return this.#data.length; }\n get consumed() { return this.#offset; }\n get bytes() { return new Uint8Array(this.#data); }\n #incrementBytesRead(count) {\n if (this.#parent) {\n return this.#parent.#incrementBytesRead(count);\n }\n this.#bytesRead += count;\n // Check for excessive inflation (see: #4537)\n assert(this.#maxInflation < 1 || this.#bytesRead <= this.#maxInflation * this.dataLength, `compressed ABI data exceeds inflation ratio of ${this.#maxInflation} ( see: https:/\\/github.com/ethers-io/ethers.js/issues/4537 )`, \"BUFFER_OVERRUN\", {\n buffer: getBytesCopy(this.#data), offset: this.#offset,\n length: count, info: {\n bytesRead: this.#bytesRead,\n dataLength: this.dataLength\n }\n });\n }\n #peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (this.#offset + alignedLength > this.#data.length) {\n if (this.allowLoose && loose && this.#offset + length <= this.#data.length) {\n alignedLength = length;\n }\n else {\n assert(false, \"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: getBytesCopy(this.#data),\n length: this.#data.length,\n offset: this.#offset + alignedLength\n });\n }\n }\n return this.#data.slice(this.#offset, this.#offset + alignedLength);\n }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n const reader = new Reader(this.#data.slice(this.#offset + offset), this.allowLoose, this.#maxInflation);\n reader.#parent = this;\n return reader;\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = this.#peekBytes(0, length, !!loose);\n this.#incrementBytesRead(length);\n this.#offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n//# sourceMappingURL=abstract-coder.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { assert, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n/**\n * Returns true if %%value%% is an object which implements the\n * [[Addressable]] interface.\n *\n * @example:\n * // Wallets and AbstractSigner sub-classes\n * isAddressable(Wallet.createRandom())\n * //_result:\n *\n * // Contracts\n * contract = new Contract(\"dai.tokens.ethers.eth\", [ ], provider)\n * isAddressable(contract)\n * //_result:\n */\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\n/**\n * Returns true if %%value%% is a valid address.\n *\n * @example:\n * // Valid address\n * isAddress(\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Valid ICAP address\n * isAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\")\n * //_result:\n *\n * // Invalid checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBa72\")\n * //_result:\n *\n * // Invalid ICAP checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Not an address (an ENS name requires a provided and an\n * // asynchronous API to access)\n * isAddress(\"ricmoo.eth\")\n * //_result:\n */\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\nasync function checkAddress(target, promise) {\n const result = await promise;\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n assert(typeof (target) !== \"string\", \"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n assertArgument(false, \"invalid AddressLike value; did not resolve to a value address\", \"target\", target);\n }\n return getAddress(result);\n}\n/**\n * Resolves to an address for the %%target%%, which may be any\n * supported address type, an [[Addressable]] or a Promise which\n * resolves to an address.\n *\n * If an ENS name is provided, but that name has not been correctly\n * configured a [[UnconfiguredNameError]] is thrown.\n *\n * @example:\n * addr = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n *\n * // Addresses are return synchronously\n * resolveAddress(addr, provider)\n * //_result:\n *\n * // Address promises are resolved asynchronously\n * resolveAddress(Promise.resolve(addr))\n * //_result:\n *\n * // ENS names are resolved asynchronously\n * resolveAddress(\"dai.tokens.ethers.eth\", provider)\n * //_result:\n *\n * // Addressable objects are resolved asynchronously\n * contract = new Contract(addr, [ ])\n * resolveAddress(contract, provider)\n * //_result:\n *\n * // Unconfigured ENS names reject\n * resolveAddress(\"nothing-here.ricmoo.eth\", provider)\n * //_error:\n *\n * // ENS names require a NameResolver object passed in\n * // (notice the provider was omitted)\n * resolveAddress(\"nothing-here.ricmoo.eth\")\n * //_error:\n */\nexport function resolveAddress(target, resolver) {\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n assert(resolver != null, \"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"resolveName\" });\n return checkAddress(target, resolver.resolveName(target));\n }\n else if (isAddressable(target)) {\n return checkAddress(target, target.getAddress());\n }\n else if (target && typeof (target.then) === \"function\") {\n return checkAddress(target, target);\n }\n assertArgument(false, \"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","/**\n * A Typed object allows a value to have its type explicitly\n * specified.\n *\n * For example, in Solidity, the value ``45`` could represent a\n * ``uint8`` or a ``uint256``. The value ``0x1234`` could represent\n * a ``bytes2`` or ``bytes``.\n *\n * Since JavaScript has no meaningful way to explicitly inform any\n * APIs which what the type is, this allows transparent interoperation\n * with Soldity.\n *\n * @_subsection: api/abi:Typed Values\n */\nimport { assertPrivate, defineProperties } from \"../utils/index.js\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\n/**\n * The **Typed** class to wrap values providing explicit type information.\n */\nexport class Typed {\n /**\n * The type, as a Solidity-compatible type.\n */\n type;\n /**\n * The actual value.\n */\n value;\n #options;\n /**\n * @_ignore:\n */\n _typedSymbol;\n /**\n * @_ignore:\n */\n constructor(gaurd, type, value, options) {\n if (options == null) {\n options = null;\n }\n assertPrivate(_gaurd, gaurd, \"Typed\");\n defineProperties(this, { _typedSymbol, type, value });\n this.#options = options;\n // Check the value is valid\n this.format();\n }\n /**\n * Format the type as a Human-Readable type.\n */\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n /**\n * The default value returned by this type.\n */\n defaultValue() {\n return 0;\n }\n /**\n * The minimum value for numeric types.\n */\n minValue() {\n return 0;\n }\n /**\n * The maximum value for numeric types.\n */\n maxValue() {\n return 0;\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedBigInt]].\n */\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedData]].\n */\n isData() {\n return this.type.startsWith(\"bytes\");\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedString]].\n */\n isString() {\n return (this.type === \"string\");\n }\n /**\n * Returns the tuple name, if this is a tuple. Throws otherwise.\n */\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return this.#options;\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n /**\n * Returns the length of the array type or ``-1`` if it is dynamic.\n *\n * Throws if the type is not an array.\n */\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (this.#options === true) {\n return -1;\n }\n if (this.#options === false) {\n return (this.value).length;\n }\n return null;\n }\n /**\n * Returns a new **Typed** of %%type%% with the %%value%%.\n */\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n /**\n * Return a new ``uint8`` type for %%v%%.\n */\n static uint8(v) { return n(v, 8); }\n /**\n * Return a new ``uint16`` type for %%v%%.\n */\n static uint16(v) { return n(v, 16); }\n /**\n * Return a new ``uint24`` type for %%v%%.\n */\n static uint24(v) { return n(v, 24); }\n /**\n * Return a new ``uint32`` type for %%v%%.\n */\n static uint32(v) { return n(v, 32); }\n /**\n * Return a new ``uint40`` type for %%v%%.\n */\n static uint40(v) { return n(v, 40); }\n /**\n * Return a new ``uint48`` type for %%v%%.\n */\n static uint48(v) { return n(v, 48); }\n /**\n * Return a new ``uint56`` type for %%v%%.\n */\n static uint56(v) { return n(v, 56); }\n /**\n * Return a new ``uint64`` type for %%v%%.\n */\n static uint64(v) { return n(v, 64); }\n /**\n * Return a new ``uint72`` type for %%v%%.\n */\n static uint72(v) { return n(v, 72); }\n /**\n * Return a new ``uint80`` type for %%v%%.\n */\n static uint80(v) { return n(v, 80); }\n /**\n * Return a new ``uint88`` type for %%v%%.\n */\n static uint88(v) { return n(v, 88); }\n /**\n * Return a new ``uint96`` type for %%v%%.\n */\n static uint96(v) { return n(v, 96); }\n /**\n * Return a new ``uint104`` type for %%v%%.\n */\n static uint104(v) { return n(v, 104); }\n /**\n * Return a new ``uint112`` type for %%v%%.\n */\n static uint112(v) { return n(v, 112); }\n /**\n * Return a new ``uint120`` type for %%v%%.\n */\n static uint120(v) { return n(v, 120); }\n /**\n * Return a new ``uint128`` type for %%v%%.\n */\n static uint128(v) { return n(v, 128); }\n /**\n * Return a new ``uint136`` type for %%v%%.\n */\n static uint136(v) { return n(v, 136); }\n /**\n * Return a new ``uint144`` type for %%v%%.\n */\n static uint144(v) { return n(v, 144); }\n /**\n * Return a new ``uint152`` type for %%v%%.\n */\n static uint152(v) { return n(v, 152); }\n /**\n * Return a new ``uint160`` type for %%v%%.\n */\n static uint160(v) { return n(v, 160); }\n /**\n * Return a new ``uint168`` type for %%v%%.\n */\n static uint168(v) { return n(v, 168); }\n /**\n * Return a new ``uint176`` type for %%v%%.\n */\n static uint176(v) { return n(v, 176); }\n /**\n * Return a new ``uint184`` type for %%v%%.\n */\n static uint184(v) { return n(v, 184); }\n /**\n * Return a new ``uint192`` type for %%v%%.\n */\n static uint192(v) { return n(v, 192); }\n /**\n * Return a new ``uint200`` type for %%v%%.\n */\n static uint200(v) { return n(v, 200); }\n /**\n * Return a new ``uint208`` type for %%v%%.\n */\n static uint208(v) { return n(v, 208); }\n /**\n * Return a new ``uint216`` type for %%v%%.\n */\n static uint216(v) { return n(v, 216); }\n /**\n * Return a new ``uint224`` type for %%v%%.\n */\n static uint224(v) { return n(v, 224); }\n /**\n * Return a new ``uint232`` type for %%v%%.\n */\n static uint232(v) { return n(v, 232); }\n /**\n * Return a new ``uint240`` type for %%v%%.\n */\n static uint240(v) { return n(v, 240); }\n /**\n * Return a new ``uint248`` type for %%v%%.\n */\n static uint248(v) { return n(v, 248); }\n /**\n * Return a new ``uint256`` type for %%v%%.\n */\n static uint256(v) { return n(v, 256); }\n /**\n * Return a new ``uint256`` type for %%v%%.\n */\n static uint(v) { return n(v, 256); }\n /**\n * Return a new ``int8`` type for %%v%%.\n */\n static int8(v) { return n(v, -8); }\n /**\n * Return a new ``int16`` type for %%v%%.\n */\n static int16(v) { return n(v, -16); }\n /**\n * Return a new ``int24`` type for %%v%%.\n */\n static int24(v) { return n(v, -24); }\n /**\n * Return a new ``int32`` type for %%v%%.\n */\n static int32(v) { return n(v, -32); }\n /**\n * Return a new ``int40`` type for %%v%%.\n */\n static int40(v) { return n(v, -40); }\n /**\n * Return a new ``int48`` type for %%v%%.\n */\n static int48(v) { return n(v, -48); }\n /**\n * Return a new ``int56`` type for %%v%%.\n */\n static int56(v) { return n(v, -56); }\n /**\n * Return a new ``int64`` type for %%v%%.\n */\n static int64(v) { return n(v, -64); }\n /**\n * Return a new ``int72`` type for %%v%%.\n */\n static int72(v) { return n(v, -72); }\n /**\n * Return a new ``int80`` type for %%v%%.\n */\n static int80(v) { return n(v, -80); }\n /**\n * Return a new ``int88`` type for %%v%%.\n */\n static int88(v) { return n(v, -88); }\n /**\n * Return a new ``int96`` type for %%v%%.\n */\n static int96(v) { return n(v, -96); }\n /**\n * Return a new ``int104`` type for %%v%%.\n */\n static int104(v) { return n(v, -104); }\n /**\n * Return a new ``int112`` type for %%v%%.\n */\n static int112(v) { return n(v, -112); }\n /**\n * Return a new ``int120`` type for %%v%%.\n */\n static int120(v) { return n(v, -120); }\n /**\n * Return a new ``int128`` type for %%v%%.\n */\n static int128(v) { return n(v, -128); }\n /**\n * Return a new ``int136`` type for %%v%%.\n */\n static int136(v) { return n(v, -136); }\n /**\n * Return a new ``int144`` type for %%v%%.\n */\n static int144(v) { return n(v, -144); }\n /**\n * Return a new ``int52`` type for %%v%%.\n */\n static int152(v) { return n(v, -152); }\n /**\n * Return a new ``int160`` type for %%v%%.\n */\n static int160(v) { return n(v, -160); }\n /**\n * Return a new ``int168`` type for %%v%%.\n */\n static int168(v) { return n(v, -168); }\n /**\n * Return a new ``int176`` type for %%v%%.\n */\n static int176(v) { return n(v, -176); }\n /**\n * Return a new ``int184`` type for %%v%%.\n */\n static int184(v) { return n(v, -184); }\n /**\n * Return a new ``int92`` type for %%v%%.\n */\n static int192(v) { return n(v, -192); }\n /**\n * Return a new ``int200`` type for %%v%%.\n */\n static int200(v) { return n(v, -200); }\n /**\n * Return a new ``int208`` type for %%v%%.\n */\n static int208(v) { return n(v, -208); }\n /**\n * Return a new ``int216`` type for %%v%%.\n */\n static int216(v) { return n(v, -216); }\n /**\n * Return a new ``int224`` type for %%v%%.\n */\n static int224(v) { return n(v, -224); }\n /**\n * Return a new ``int232`` type for %%v%%.\n */\n static int232(v) { return n(v, -232); }\n /**\n * Return a new ``int240`` type for %%v%%.\n */\n static int240(v) { return n(v, -240); }\n /**\n * Return a new ``int248`` type for %%v%%.\n */\n static int248(v) { return n(v, -248); }\n /**\n * Return a new ``int256`` type for %%v%%.\n */\n static int256(v) { return n(v, -256); }\n /**\n * Return a new ``int256`` type for %%v%%.\n */\n static int(v) { return n(v, -256); }\n /**\n * Return a new ``bytes1`` type for %%v%%.\n */\n static bytes1(v) { return b(v, 1); }\n /**\n * Return a new ``bytes2`` type for %%v%%.\n */\n static bytes2(v) { return b(v, 2); }\n /**\n * Return a new ``bytes3`` type for %%v%%.\n */\n static bytes3(v) { return b(v, 3); }\n /**\n * Return a new ``bytes4`` type for %%v%%.\n */\n static bytes4(v) { return b(v, 4); }\n /**\n * Return a new ``bytes5`` type for %%v%%.\n */\n static bytes5(v) { return b(v, 5); }\n /**\n * Return a new ``bytes6`` type for %%v%%.\n */\n static bytes6(v) { return b(v, 6); }\n /**\n * Return a new ``bytes7`` type for %%v%%.\n */\n static bytes7(v) { return b(v, 7); }\n /**\n * Return a new ``bytes8`` type for %%v%%.\n */\n static bytes8(v) { return b(v, 8); }\n /**\n * Return a new ``bytes9`` type for %%v%%.\n */\n static bytes9(v) { return b(v, 9); }\n /**\n * Return a new ``bytes10`` type for %%v%%.\n */\n static bytes10(v) { return b(v, 10); }\n /**\n * Return a new ``bytes11`` type for %%v%%.\n */\n static bytes11(v) { return b(v, 11); }\n /**\n * Return a new ``bytes12`` type for %%v%%.\n */\n static bytes12(v) { return b(v, 12); }\n /**\n * Return a new ``bytes13`` type for %%v%%.\n */\n static bytes13(v) { return b(v, 13); }\n /**\n * Return a new ``bytes14`` type for %%v%%.\n */\n static bytes14(v) { return b(v, 14); }\n /**\n * Return a new ``bytes15`` type for %%v%%.\n */\n static bytes15(v) { return b(v, 15); }\n /**\n * Return a new ``bytes16`` type for %%v%%.\n */\n static bytes16(v) { return b(v, 16); }\n /**\n * Return a new ``bytes17`` type for %%v%%.\n */\n static bytes17(v) { return b(v, 17); }\n /**\n * Return a new ``bytes18`` type for %%v%%.\n */\n static bytes18(v) { return b(v, 18); }\n /**\n * Return a new ``bytes19`` type for %%v%%.\n */\n static bytes19(v) { return b(v, 19); }\n /**\n * Return a new ``bytes20`` type for %%v%%.\n */\n static bytes20(v) { return b(v, 20); }\n /**\n * Return a new ``bytes21`` type for %%v%%.\n */\n static bytes21(v) { return b(v, 21); }\n /**\n * Return a new ``bytes22`` type for %%v%%.\n */\n static bytes22(v) { return b(v, 22); }\n /**\n * Return a new ``bytes23`` type for %%v%%.\n */\n static bytes23(v) { return b(v, 23); }\n /**\n * Return a new ``bytes24`` type for %%v%%.\n */\n static bytes24(v) { return b(v, 24); }\n /**\n * Return a new ``bytes25`` type for %%v%%.\n */\n static bytes25(v) { return b(v, 25); }\n /**\n * Return a new ``bytes26`` type for %%v%%.\n */\n static bytes26(v) { return b(v, 26); }\n /**\n * Return a new ``bytes27`` type for %%v%%.\n */\n static bytes27(v) { return b(v, 27); }\n /**\n * Return a new ``bytes28`` type for %%v%%.\n */\n static bytes28(v) { return b(v, 28); }\n /**\n * Return a new ``bytes29`` type for %%v%%.\n */\n static bytes29(v) { return b(v, 29); }\n /**\n * Return a new ``bytes30`` type for %%v%%.\n */\n static bytes30(v) { return b(v, 30); }\n /**\n * Return a new ``bytes31`` type for %%v%%.\n */\n static bytes31(v) { return b(v, 31); }\n /**\n * Return a new ``bytes32`` type for %%v%%.\n */\n static bytes32(v) { return b(v, 32); }\n /**\n * Return a new ``address`` type for %%v%%.\n */\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n /**\n * Return a new ``bool`` type for %%v%%.\n */\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n /**\n * Return a new ``bytes`` type for %%v%%.\n */\n static bytes(v) { return new Typed(_gaurd, \"bytes\", v); }\n /**\n * Return a new ``string`` type for %%v%%.\n */\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n /**\n * Return a new ``array`` type for %%v%%, allowing %%dynamic%% length.\n */\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n /**\n * Return a new ``tuple`` type for %%v%%, with the optional %%name%%.\n */\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n /**\n * Return a new ``uint8`` type for %%v%%.\n */\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n /**\n * Returns true only if %%value%% is a [[Typed]] instance.\n */\n static isTyped(value) {\n return (value\n && typeof (value) === \"object\"\n && \"_typedSymbol\" in value\n && value._typedSymbol === _typedSymbol);\n }\n /**\n * If the value is a [[Typed]] instance, validates the underlying value\n * and returns it, otherwise returns value directly.\n *\n * This is useful for functions that with to accept either a [[Typed]]\n * object or values.\n */\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"../../address/index.js\";\nimport { toBeHex } from \"../../utils/maths.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toBeHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n/**\n * Clones the functionality of an existing Coder, but without a localName\n *\n * @_ignore\n */\nexport class AnonymousCoder extends Coder {\n coder;\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties, isError, assert, assertArgument, assertArgumentCount } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\n/**\n * @_ignore\n */\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n assert(name, \"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", { argument: \"values\", info: { coder }, value: values });\n assert(!unique[name], \"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", { argument: \"values\", info: { coder }, value: values });\n unique[name] = true;\n return values[name];\n });\n }\n else {\n assertArgument(false, \"invalid tuple value\", \"tuple\", values);\n }\n assertArgument(coders.length === arrayValues.length, \"types/value length mismatch\", \"tuple\", values);\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n/**\n * @_ignore\n */\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n else {\n try {\n value = coder.decode(reader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\n/**\n * @_ignore\n */\nexport class ArrayCoder extends Coder {\n coder;\n length;\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n assert(count * WordSize <= reader.dataLength, \"insufficient data length\", \"BUFFER_OVERRUN\", { buffer: reader.bytes, offset: count * WordSize, length: reader.dataLength });\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { getBytesCopy, hexlify } from \"../../utils/index.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = getBytesCopy(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\n/**\n * @_ignore\n */\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { defineProperties, getBytesCopy, hexlify } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class FixedBytesCoder extends Coder {\n size;\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = getBytesCopy(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\n/**\n * @_ignore\n */\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { defineProperties, fromTwos, getBigInt, mask, toTwos } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n/**\n * @_ignore\n */\nexport class NumberCoder extends Coder {\n size;\n signed;\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = toTwos(value, 8 * WordSize);\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","import { toUtf8Bytes, toUtf8String } from \"../../utils/utf8.js\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\n/**\n * @_ignore\n */\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"../../utils/properties.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\n/**\n * @_ignore\n */\nexport class TupleCoder extends Coder {\n coders;\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","import { getAddress } from \"../address/index.js\";\nimport { assertArgument, isHexString } from \"../utils/index.js\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: storageKeys.map((storageKey, index) => {\n assertArgument(isHexString(storageKey, 32), \"invalid slot\", `storageKeys[${index}]`, storageKey);\n return storageKey.toLowerCase();\n })\n };\n}\n/**\n * Returns a [[AccessList]] from any ethers-supported access-list structure.\n */\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n assertArgument(set.length === 2, \"invalid slot set\", `value[${index}]`, set);\n return accessSetify(set[0], set[1]);\n }\n assertArgument(set != null && typeof (set) === \"object\", \"invalid address-slot set\", \"value\", value);\n return accessSetify(set.address, set.storageKeys);\n });\n }\n assertArgument(value != null && typeof (value) === \"object\", \"invalid access list\", \"value\", value);\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n//# sourceMappingURL=accesslist.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","/**\n * A fragment is a single item from an ABI, which may represent any of:\n *\n * - [Functions](FunctionFragment)\n * - [Events](EventFragment)\n * - [Constructors](ConstructorFragment)\n * - Custom [Errors](ErrorFragment)\n * - [Fallback or Receive](FallbackFragment) functions\n *\n * @_subsection api/abi/abi-coder:Fragments [about-fragments]\n */\nimport { defineProperties, getBigInt, getNumber, assert, assertPrivate, assertArgument } from \"../utils/index.js\";\nimport { id } from \"../hash/index.js\";\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\nconst _kwVisibDeploy = \"external public payable override\";\nconst KwVisibDeploy = setify(_kwVisibDeploy.split(\" \"));\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view override\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event fallback function receive struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespacePrefix = new RegExp(\"^(\\\\s*)\");\nconst regexNumberPrefix = new RegExp(\"^([0-9]+)\");\nconst regexIdPrefix = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\n// Parser regexs to check validity\nconst regexId = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)$\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$\");\nclass TokenString {\n #offset;\n #tokens;\n get offset() { return this.#offset; }\n get length() { return this.#tokens.length - this.#offset; }\n constructor(tokens) {\n this.#offset = 0;\n this.#tokens = tokens.slice();\n }\n clone() { return new TokenString(this.#tokens); }\n reset() { this.#offset = 0; }\n #subTokenString(from = 0, to = 0) {\n return new TokenString(this.#tokens.slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n }));\n }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n const top = this.peek();\n throw new Error(`expected ${type}; got ${top.type} ${JSON.stringify(top.text)}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = this.#subTokenString(this.#offset + 1, top.match + 1);\n this.#offset = top.match + 1;\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (this.#offset < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(this.#subTokenString(this.#offset + 1, link));\n this.#offset = link;\n }\n this.#offset = top.match + 1;\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (this.#offset >= this.#tokens.length) {\n throw new Error(\"out-of-bounds\");\n }\n return this.#tokens[this.#offset];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n const result = this.peek();\n this.#offset++;\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = this.#offset; i < this.#tokens.length; i++) {\n const token = this.#tokens[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return `<TokenString ${tokens.join(\" \")}>`;\n }\n}\nfunction lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespacePrefix);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdPrefix);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumberPrefix);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.from(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens at offset ${tokens.offset}: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n assertArgument(match, \"invalid type\", \"type\", type);\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n assertArgument(length !== 0 && length <= 32, \"invalid bytes length\", \"type\", type);\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n assertArgument(size !== 0 && size <= 256 && (size % 8) === 0, \"invalid numeric width\", \"type\", type);\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nconst ErrorFragmentInternal = \"_ErrorInternal\";\nconst EventFragmentInternal = \"_EventInternal\";\nconst ConstructorFragmentInternal = \"_ConstructorInternal\";\nconst FallbackFragmentInternal = \"_FallbackInternal\";\nconst FunctionFragmentInternal = \"_FunctionInternal\";\nconst StructFragmentInternal = \"_StructInternal\";\n/**\n * Each input and output of a [[Fragment]] is an Array of **ParamType**.\n */\nexport class ParamType {\n /**\n * The local name of the parameter (or ``\"\"`` if unbound)\n */\n name;\n /**\n * The fully qualified type (e.g. ``\"address\"``, ``\"tuple(address)\"``,\n * ``\"uint256[3][]\"``)\n */\n type;\n /**\n * The base type (e.g. ``\"address\"``, ``\"tuple\"``, ``\"array\"``)\n */\n baseType;\n /**\n * True if the parameters is indexed.\n *\n * For non-indexable types this is ``null``.\n */\n indexed;\n /**\n * The components for the tuple.\n *\n * For non-tuple types this is ``null``.\n */\n components;\n /**\n * The array length, or ``-1`` for dynamic-lengthed arrays.\n *\n * For non-array types this is ``null``.\n */\n arrayLength;\n /**\n * The type of each child in the array.\n *\n * For non-array types this is ``null``.\n */\n arrayChildren;\n /**\n * @private\n */\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\n });\n }\n /**\n * Return a string representation of this type.\n *\n * For example,\n *\n * ``sighash\" => \"(uint256,address)\"``\n *\n * ``\"minimal\" => \"tuple(uint256,address) indexed\"``\n *\n * ``\"full\" => \"tuple(uint256 foo, address bar) indexed baz\"``\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n const name = this.name || \"\";\n if (this.isArray()) {\n const result = JSON.parse(this.arrayChildren.format(\"json\"));\n result.name = name;\n result.type += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n return JSON.stringify(result);\n }\n const result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== \"sighash\") {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === \"full\" && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n /**\n * Returns true if %%this%% is an Array type.\n *\n * This provides a type gaurd ensuring that [[arrayChildren]]\n * and [[arrayLength]] are non-null.\n */\n isArray() {\n return (this.baseType === \"array\");\n }\n /**\n * Returns true if %%this%% is a Tuple type.\n *\n * This provides a type gaurd ensuring that [[components]]\n * is non-null.\n */\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n /**\n * Returns true if %%this%% is an Indexable type.\n *\n * This provides a type gaurd ensuring that [[indexed]]\n * is non-null.\n */\n isIndexable() {\n return (this.indexed != null);\n }\n /**\n * Walks the **ParamType** with %%value%%, calling %%process%%\n * on each type, destructing the %%value%% recursively.\n */\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v) => (_this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v, i) => (_this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n #walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n childType.#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invalid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (result.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n components[index].#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n }\n /**\n * Walks the **ParamType** with %%value%%, asynchronously calling\n * %%process%% on each type, destructing the %%value%% recursively.\n *\n * This can be used to resolve ENS names by walking and resolving each\n * ``\"address\"`` type.\n */\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n this.#walkAsync(promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n /**\n * Creates a new **ParamType** for %%obj%%.\n *\n * If %%allowIndexed%% then the ``indexed`` keyword is permitted,\n * otherwise the ``indexed`` keyword will throw an error.\n */\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ParamType.from(lex(obj), allowIndexed);\n }\n catch (error) {\n assertArgument(false, \"invalid param type\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(obj, setify([\"tuple\"])).has(\"tuple\") || obj.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = obj.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(obj.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (obj.length && obj.peekType(\"BRACKET\")) {\n const bracket = obj.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(obj, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (obj.peekType(\"ID\") ? obj.pop().text : \"\");\n if (obj.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n const name = obj.name;\n assertArgument(!name || (typeof (name) === \"string\" && name.match(regexId)), \"invalid name\", \"obj.name\", name);\n let indexed = obj.indexed;\n if (indexed != null) {\n assertArgument(allowIndexed, \"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = parseInt(arrayMatch[2] || \"-1\");\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name || \"\", type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type === \"tuple\" || type.startsWith(\"tuple(\" /* fix: ) */) || type.startsWith(\"(\" /* fix: ) */)) {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name || \"\", type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name || \"\", type, type, indexed, null, null, null);\n }\n /**\n * Returns true if %%value%% is a **ParamType**.\n */\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n/**\n * An abstract class to represent An individual fragment from a parse ABI.\n */\nexport class Fragment {\n /**\n * The type of the fragment.\n */\n type;\n /**\n * The inputs for the fragment.\n */\n inputs;\n /**\n * @private\n */\n constructor(guard, type, inputs) {\n assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n /**\n * Creates a new **Fragment** for %%obj%%, wich can be any supported\n * ABI frgament type.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n // Try parsing JSON...\n try {\n Fragment.from(JSON.parse(obj));\n }\n catch (e) { }\n // ...otherwise, use the human-readable lexer\n return Fragment.from(lex(obj));\n }\n if (obj instanceof TokenString) {\n // Human-readable ABI (already lexed)\n const type = obj.peekKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n }\n else if (typeof (obj) === \"object\") {\n // JSON ABI\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n assert(false, `unsupported type: ${obj.type}`, \"UNSUPPORTED_OPERATION\", {\n operation: \"Fragment.from\"\n });\n }\n assertArgument(false, \"unsupported frgament object\", \"obj\", obj);\n }\n /**\n * Returns true if %%value%% is a [[ConstructorFragment]].\n */\n static isConstructor(value) {\n return ConstructorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[ErrorFragment]].\n */\n static isError(value) {\n return ErrorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[EventFragment]].\n */\n static isEvent(value) {\n return EventFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[FunctionFragment]].\n */\n static isFunction(value) {\n return FunctionFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[StructFragment]].\n */\n static isStruct(value) {\n return StructFragment.isFragment(value);\n }\n}\n/**\n * An abstract class to represent An individual fragment\n * which has a name from a parse ABI.\n */\nexport class NamedFragment extends Fragment {\n /**\n * The name of the fragment.\n */\n name;\n /**\n * @private\n */\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n assertArgument(typeof (name) === \"string\" && name.match(regexId), \"invalid identifier\", \"name\", name);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n}\n/**\n * A Fragment which represents a //Custom Error//.\n */\nexport class ErrorFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"error\", name, inputs);\n Object.defineProperty(this, internal, { value: ErrorFragmentInternal });\n }\n /**\n * The Custom Error selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this fragment as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n /**\n * Returns a new **ErrorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ErrorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ErrorFragment.from(lex(obj));\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"error\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new ErrorFragment(_guard, name, inputs);\n }\n return new ErrorFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **ErrorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ErrorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents an Event.\n */\nexport class EventFragment extends NamedFragment {\n /**\n * Whether this event is anonymous.\n */\n anonymous;\n /**\n * @private\n */\n constructor(guard, name, inputs, anonymous) {\n super(guard, \"event\", name, inputs);\n Object.defineProperty(this, internal, { value: EventFragmentInternal });\n defineProperties(this, { anonymous });\n }\n /**\n * The Event topic hash.\n */\n get topicHash() {\n return id(this.format(\"sighash\"));\n }\n /**\n * Returns a string representation of this event as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\" && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n /**\n * Return the topic hash for an event with %%name%% and %%params%%.\n */\n static getTopicHash(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new EventFragment(_guard, name, params, false);\n return fragment.topicHash;\n }\n /**\n * Returns a new **EventFragment** for %%obj%%.\n */\n static from(obj) {\n if (EventFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return EventFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid event fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"event\", obj);\n const inputs = consumeParams(obj, true);\n const anonymous = !!consumeKeywords(obj, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(obj);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n return new EventFragment(_guard, obj.name, obj.inputs ? obj.inputs.map((p) => ParamType.from(p, true)) : [], !!obj.anonymous);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **EventFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === EventFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a constructor.\n */\nexport class ConstructorFragment extends Fragment {\n /**\n * Whether the constructor can receive an endowment.\n */\n payable;\n /**\n * The recommended gas limit for deployment or ``null``.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n Object.defineProperty(this, internal, { value: ConstructorFragmentInternal });\n defineProperties(this, { payable, gas });\n }\n /**\n * Returns a string representation of this constructor as %%format%%.\n */\n format(format) {\n assert(format != null && format !== \"sighash\", \"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", { operation: \"format(sighash)\" });\n if (format === \"json\") {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n if (this.payable) {\n result.push(\"payable\");\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n /**\n * Returns a new **ConstructorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ConstructorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ConstructorFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid constuctor fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n consumeKeywords(obj, setify([\"constructor\"]));\n const inputs = consumeParams(obj);\n const payable = !!consumeKeywords(obj, KwVisibDeploy).has(\"payable\");\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new ConstructorFragment(_guard, \"constructor\", inputs, payable, gas);\n }\n return new ConstructorFragment(_guard, \"constructor\", obj.inputs ? obj.inputs.map(ParamType.from) : [], !!obj.payable, (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **ConstructorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ConstructorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FallbackFragment extends Fragment {\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n constructor(guard, inputs, payable) {\n super(guard, \"fallback\", inputs);\n Object.defineProperty(this, internal, { value: FallbackFragmentInternal });\n defineProperties(this, { payable });\n }\n /**\n * Returns a string representation of this fallback as %%format%%.\n */\n format(format) {\n const type = ((this.inputs.length === 0) ? \"receive\" : \"fallback\");\n if (format === \"json\") {\n const stateMutability = (this.payable ? \"payable\" : \"nonpayable\");\n return JSON.stringify({ type, stateMutability });\n }\n return `${type}()${this.payable ? \" payable\" : \"\"}`;\n }\n /**\n * Returns a new **FallbackFragment** for %%obj%%.\n */\n static from(obj) {\n if (FallbackFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FallbackFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid fallback fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const errorObj = obj.toString();\n const topIsValid = obj.peekKeyword(setify([\"fallback\", \"receive\"]));\n assertArgument(topIsValid, \"type must be fallback or receive\", \"obj\", errorObj);\n const type = obj.popKeyword(setify([\"fallback\", \"receive\"]));\n // receive()\n if (type === \"receive\") {\n const inputs = consumeParams(obj);\n assertArgument(inputs.length === 0, `receive cannot have arguments`, \"obj.inputs\", inputs);\n consumeKeywords(obj, setify([\"payable\"]));\n consumeEoi(obj);\n return new FallbackFragment(_guard, [], true);\n }\n // fallback() [payable]\n // fallback(bytes) [payable] returns (bytes)\n let inputs = consumeParams(obj);\n if (inputs.length) {\n assertArgument(inputs.length === 1 && inputs[0].type === \"bytes\", \"invalid fallback inputs\", \"obj.inputs\", inputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n else {\n inputs = [ParamType.from(\"bytes\")];\n }\n const mutability = consumeMutability(obj);\n assertArgument(mutability === \"nonpayable\" || mutability === \"payable\", \"fallback cannot be constants\", \"obj.stateMutability\", mutability);\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n const outputs = consumeParams(obj);\n assertArgument(outputs.length === 1 && outputs[0].type === \"bytes\", \"invalid fallback outputs\", \"obj.outputs\", outputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n consumeEoi(obj);\n return new FallbackFragment(_guard, inputs, mutability === \"payable\");\n }\n if (obj.type === \"receive\") {\n return new FallbackFragment(_guard, [], true);\n }\n if (obj.type === \"fallback\") {\n const inputs = [ParamType.from(\"bytes\")];\n const payable = (obj.stateMutability === \"payable\");\n return new FallbackFragment(_guard, inputs, payable);\n }\n assertArgument(false, \"invalid fallback description\", \"obj\", obj);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FallbackFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FallbackFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FunctionFragment extends NamedFragment {\n /**\n * If the function is constant (e.g. ``pure`` or ``view`` functions).\n */\n constant;\n /**\n * The returned types for the result of calling this function.\n */\n outputs;\n /**\n * The state mutability (e.g. ``payable``, ``nonpayable``, ``view``\n * or ``pure``)\n */\n stateMutability;\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n /**\n * The recommended gas limit to send when calling this function.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, \"function\", name, inputs);\n Object.defineProperty(this, internal, { value: FunctionFragmentInternal });\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n /**\n * The Function selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this function as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability : undefined),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\") {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n /**\n * Return the selector for a function with %%name%% and %%params%%.\n */\n static getSelector(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new FunctionFragment(_guard, name, \"view\", params, [], null);\n return fragment.selector;\n }\n /**\n * Returns a new **FunctionFragment** for %%obj%%.\n */\n static from(obj) {\n if (FunctionFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FunctionFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid function fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"function\", obj);\n const inputs = consumeParams(obj);\n const mutability = consumeMutability(obj);\n let outputs = [];\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(obj);\n }\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n let stateMutability = obj.stateMutability;\n // Use legacy Solidity ABI logic if stateMutability is missing\n if (stateMutability == null) {\n stateMutability = \"payable\";\n if (typeof (obj.constant) === \"boolean\") {\n stateMutability = \"view\";\n if (!obj.constant) {\n stateMutability = \"payable\";\n if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n }\n else if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n // @TODO: verifyState for stateMutability (e.g. throw if\n // payable: false but stateMutability is \"nonpayable\")\n return new FunctionFragment(_guard, obj.name, stateMutability, obj.inputs ? obj.inputs.map(ParamType.from) : [], obj.outputs ? obj.outputs.map(ParamType.from) : [], (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FunctionFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FunctionFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a structure.\n */\nexport class StructFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"struct\", name, inputs);\n Object.defineProperty(this, internal, { value: StructFragmentInternal });\n }\n /**\n * Returns a string representation of this struct as %%format%%.\n */\n format() {\n throw new Error(\"@TODO\");\n }\n /**\n * Returns a new **StructFragment** for %%obj%%.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n try {\n return StructFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid struct fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"struct\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new StructFragment(_guard, name, inputs);\n }\n return new StructFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n // @TODO: fix this return type\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **StructFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === StructFragmentInternal);\n }\n}\n//# sourceMappingURL=fragments.js.map","/**\n * When sending values to or receiving values from a [[Contract]], the\n * data is generally encoded using the [ABI standard](link-solc-abi).\n *\n * The AbiCoder provides a utility to encode values to ABI data and\n * decode values from ABI data.\n *\n * Most of the time, developers should favour the [[Contract]] class,\n * which further abstracts a lot of the finer details of ABI data.\n *\n * @_section api/abi/abi-coder:ABI Encoding\n */\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nimport { assertArgumentCount, assertArgument } from \"../utils/index.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nimport { getAddress } from \"../address/index.js\";\nimport { getBytes, hexlify, makeError } from \"../utils/index.js\";\n// https://docs.soliditylang.org/en/v0.8.17/control-structures.html\nconst PanicReasons = new Map();\nPanicReasons.set(0x00, \"GENERIC_PANIC\");\nPanicReasons.set(0x01, \"ASSERT_FALSE\");\nPanicReasons.set(0x11, \"OVERFLOW\");\nPanicReasons.set(0x12, \"DIVIDE_BY_ZERO\");\nPanicReasons.set(0x21, \"ENUM_RANGE_ERROR\");\nPanicReasons.set(0x22, \"BAD_STORAGE_DATA\");\nPanicReasons.set(0x31, \"STACK_UNDERFLOW\");\nPanicReasons.set(0x32, \"ARRAY_RANGE_ERROR\");\nPanicReasons.set(0x41, \"OUT_OF_MEMORY\");\nPanicReasons.set(0x51, \"UNINITIALIZED_FUNCTION_CALL\");\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nlet defaultCoder = null;\nlet defaultMaxInflation = 1024;\nfunction getBuiltinCallException(action, tx, data, abiCoder) {\n let message = \"missing revert data\";\n let reason = null;\n const invocation = null;\n let revert = null;\n if (data) {\n message = \"execution reverted\";\n const bytes = getBytes(data);\n data = hexlify(data);\n if (bytes.length === 0) {\n message += \" (no data present; likely require(false) occurred\";\n reason = \"require(false)\";\n }\n else if (bytes.length % 32 !== 4) {\n message += \" (could not decode reason; invalid data length)\";\n }\n else if (hexlify(bytes.slice(0, 4)) === \"0x08c379a0\") {\n // Error(string)\n try {\n reason = abiCoder.decode([\"string\"], bytes.slice(4))[0];\n revert = {\n signature: \"Error(string)\",\n name: \"Error\",\n args: [reason]\n };\n message += `: ${JSON.stringify(reason)}`;\n }\n catch (error) {\n message += \" (could not decode reason; invalid string data)\";\n }\n }\n else if (hexlify(bytes.slice(0, 4)) === \"0x4e487b71\") {\n // Panic(uint256)\n try {\n const code = Number(abiCoder.decode([\"uint256\"], bytes.slice(4))[0]);\n revert = {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n args: [code]\n };\n reason = `Panic due to ${PanicReasons.get(code) || \"UNKNOWN\"}(${code})`;\n message += `: ${reason}`;\n }\n catch (error) {\n message += \" (could not decode panic code)\";\n }\n }\n else {\n message += \" (unknown custom error)\";\n }\n }\n const transaction = {\n to: (tx.to ? getAddress(tx.to) : null),\n data: (tx.data || \"0x\")\n };\n if (tx.from) {\n transaction.from = getAddress(tx.from);\n }\n return makeError(message, \"CALL_EXCEPTION\", {\n action, data, reason, transaction, invocation, revert\n });\n}\n/**\n * The **AbiCoder** is a low-level class responsible for encoding JavaScript\n * values into binary data and decoding binary data into JavaScript values.\n */\nexport class AbiCoder {\n #getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(this.#getCoder(param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => this.#getCoder(c)), param.name);\n }\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n assertArgument(size !== 0 && size <= 256 && (size % 8) === 0, \"invalid \" + match[1] + \" bit length\", \"param\", param);\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n assertArgument(size !== 0 && size <= 32, \"invalid bytes length\", \"param\", param);\n return new FixedBytesCoder(size, param.name);\n }\n assertArgument(false, \"invalid type\", \"type\", param.type);\n }\n /**\n * Get the default values for the given %%types%%.\n *\n * For example, a ``uint`` is by default ``0`` and ``bool``\n * is by default ``false``.\n */\n getDefaultValue(types) {\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n /**\n * Encode the %%values%% as the %%types%% into ABI data.\n *\n * @returns DataHexstring\n */\n encode(types, values) {\n assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n /**\n * Decode the ABI %%data%% as the %%types%% into values.\n *\n * If %%loose%% decoding is enabled, then strict padding is\n * not enforced. Some older versions of Solidity incorrectly\n * padded event data emitted from ``external`` functions.\n */\n decode(types, data, loose) {\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose, defaultMaxInflation));\n }\n static _setDefaultMaxInflation(value) {\n assertArgument(typeof (value) === \"number\" && Number.isInteger(value), \"invalid defaultMaxInflation factor\", \"value\", value);\n defaultMaxInflation = value;\n }\n /**\n * Returns the shared singleton instance of a default [[AbiCoder]].\n *\n * On the first call, the instance is created internally.\n */\n static defaultAbiCoder() {\n if (defaultCoder == null) {\n defaultCoder = new AbiCoder();\n }\n return defaultCoder;\n }\n /**\n * Returns an ethers-compatible [[CallExceptionError]] Error for the given\n * result %%data%% for the [[CallExceptionAction]] %%action%% against\n * the Transaction %%tx%%.\n */\n static getBuiltinCallException(action, tx, data) {\n return getBuiltinCallException(action, tx, data, AbiCoder.defaultAbiCoder());\n }\n}\n//# sourceMappingURL=abi-coder.js.map","/**\n * The Interface class is a low-level class that accepts an\n * ABI and provides all the necessary functionality to encode\n * and decode paramaters to and results from methods, events\n * and errors.\n *\n * It also provides several convenience methods to automatically\n * search and find matching transactions and events to parse them.\n *\n * @_subsection api/abi:Interfaces [interfaces]\n */\nimport { keccak256 } from \"../crypto/index.js\";\nimport { id } from \"../hash/index.js\";\nimport { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadBytes, zeroPadValue, isHexString, defineProperties, assertArgument, toBeHex, assert } from \"../utils/index.js\";\nimport { AbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\n/**\n * When using the [[Interface-parseLog]] to automatically match a Log to its event\n * for parsing, a **LogDescription** is returned.\n */\nexport class LogDescription {\n /**\n * The matching fragment for the ``topic0``.\n */\n fragment;\n /**\n * The name of the Event.\n */\n name;\n /**\n * The full Event signature.\n */\n signature;\n /**\n * The topic hash for the Event.\n */\n topic;\n /**\n * The arguments passed into the Event with ``emit``.\n */\n args;\n /**\n * @_ignore:\n */\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\n/**\n * When using the [[Interface-parseTransaction]] to automatically match\n * a transaction data to its function for parsing,\n * a **TransactionDescription** is returned.\n */\nexport class TransactionDescription {\n /**\n * The matching fragment from the transaction ``data``.\n */\n fragment;\n /**\n * The name of the Function from the transaction ``data``.\n */\n name;\n /**\n * The arguments passed to the Function from the transaction ``data``.\n */\n args;\n /**\n * The full Function signature from the transaction ``data``.\n */\n signature;\n /**\n * The selector for the Function from the transaction ``data``.\n */\n selector;\n /**\n * The ``value`` (in wei) from the transaction.\n */\n value;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\n/**\n * When using the [[Interface-parseError]] to automatically match an\n * error for a call result for parsing, an **ErrorDescription** is returned.\n */\nexport class ErrorDescription {\n /**\n * The matching fragment.\n */\n fragment;\n /**\n * The name of the Error.\n */\n name;\n /**\n * The arguments passed to the Error with ``revert``.\n */\n args;\n /**\n * The full Error signature.\n */\n signature;\n /**\n * The selector for the Error.\n */\n selector;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\n/**\n * An **Indexed** is used as a value when a value that does not\n * fit within a topic (i.e. not a fixed-length, 32-byte type). It\n * is the ``keccak256`` of the value, and used for types such as\n * arrays, tuples, bytes and strings.\n */\nexport class Indexed {\n /**\n * The ``keccak256`` of the value logged.\n */\n hash;\n /**\n * @_ignore:\n */\n _isIndexed;\n /**\n * Returns ``true`` if %%value%% is an **Indexed**.\n *\n * This provides a Type Guard for property access.\n */\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n /**\n * @_ignore:\n */\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\n/**\n * An Interface abstracts many of the low-level details for\n * encoding and decoding the data on the blockchain.\n *\n * An ABI provides information on how to encode data to send to\n * a Contract, how to decode the results and events and how to\n * interpret revert errors.\n *\n * The ABI can be specified by [any supported format](InterfaceAbi).\n */\nexport class Interface {\n /**\n * All the Contract ABI members (i.e. methods, events, errors, etc).\n */\n fragments;\n /**\n * The Contract constructor.\n */\n deploy;\n /**\n * The Fallback method, if any.\n */\n fallback;\n /**\n * If receiving ether is supported.\n */\n receive;\n #errors;\n #events;\n #functions;\n // #structs: Map<string, StructFragment>;\n #abiCoder;\n /**\n * Create a new Interface for the %%fragments%%.\n */\n constructor(fragments) {\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n this.#functions = new Map();\n this.#errors = new Map();\n this.#events = new Map();\n // this.#structs = new Map();\n const frags = [];\n for (const a of abi) {\n try {\n frags.push(Fragment.from(a));\n }\n catch (error) {\n console.log(`[Warning] Invalid Fragment ${JSON.stringify(a)}:`, error.message);\n }\n }\n defineProperties(this, {\n fragments: Object.freeze(frags)\n });\n let fallback = null;\n let receive = false;\n this.#abiCoder = this.getAbiCoder();\n // Add all fragments by their signature\n this.fragments.forEach((fragment, index) => {\n let bucket;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n console.log(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineProperties(this, { deploy: fragment });\n return;\n case \"fallback\":\n if (fragment.inputs.length === 0) {\n receive = true;\n }\n else {\n assertArgument(!fallback || fragment.payable !== fallback.payable, \"conflicting fallback fragments\", `fragments[${index}]`, fragment);\n fallback = fragment;\n receive = fallback.payable;\n }\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (<FunctionFragment>fragment).outputs);\n bucket = this.#functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.#events;\n break;\n case \"error\":\n bucket = this.#errors;\n break;\n default:\n return;\n }\n // Two identical entries; ignore it\n const signature = fragment.format();\n if (bucket.has(signature)) {\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.from(\"constructor()\")\n });\n }\n defineProperties(this, { fallback, receive });\n }\n /**\n * Returns the entire Human-Readable ABI, as an array of\n * signatures, optionally as %%minimal%% strings, which\n * removes parameter names and unneceesary spaces.\n */\n format(minimal) {\n const format = (minimal ? \"minimal\" : \"full\");\n const abi = this.fragments.map((f) => f.format(format));\n return abi;\n }\n /**\n * Return the JSON-encoded ABI. This is the format Solidiy\n * returns.\n */\n formatJson() {\n const abi = this.fragments.map((f) => f.format(\"json\"));\n // We need to re-bundle the JSON fragments a bit\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n /**\n * The ABI coder that will be used to encode and decode binary\n * data.\n */\n getAbiCoder() {\n return AbiCoder.defaultAbiCoder();\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n #getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of this.#functions.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#functions) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous function description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#functions.get(FunctionFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the function name for %%key%%, which may be a function selector,\n * function name or function signature that belongs to the ABI.\n */\n getFunctionName(key) {\n const fragment = this.#getFunction(key, null, false);\n assertArgument(fragment, \"no matching function\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (a function selector, function name or\n * function signature) is present in the ABI.\n *\n * In the case of a function name, the name may be ambiguous, so\n * accessing the [[FunctionFragment]] may require refinement.\n */\n hasFunction(key) {\n return !!this.#getFunction(key, null, false);\n }\n /**\n * Get the [[FunctionFragment]] for %%key%%, which may be a function\n * selector, function name or function signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple functions match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single function in\n * the ABI, this will throw.\n */\n getFunction(key, values) {\n return this.#getFunction(key, values || null, true);\n }\n /**\n * Iterate over all functions, calling %%callback%%, sorted by their name.\n */\n forEachFunction(callback) {\n const names = Array.from(this.#functions.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#functions.get(name)), i);\n }\n }\n // Find an event definition by any means necessary (unless it is ambiguous)\n #getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of this.#events.values()) {\n if (eventTopic === fragment.topicHash) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#events) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous event description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#events.get(EventFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the event name for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n */\n getEventName(key) {\n const fragment = this.#getEvent(key, null, false);\n assertArgument(fragment, \"no matching event\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (an event topic hash, event name or\n * event signature) is present in the ABI.\n *\n * In the case of an event name, the name may be ambiguous, so\n * accessing the [[EventFragment]] may require refinement.\n */\n hasEvent(key) {\n return !!this.#getEvent(key, null, false);\n }\n /**\n * Get the [[EventFragment]] for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple events match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single event in\n * the ABI, this will throw.\n */\n getEvent(key, values) {\n return this.#getEvent(key, values || null, true);\n }\n /**\n * Iterate over all events, calling %%callback%%, sorted by their name.\n */\n forEachEvent(callback) {\n const names = Array.from(this.#events.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#events.get(name)), i);\n }\n }\n /**\n * Get the [[ErrorFragment]] for %%key%%, which may be an error\n * selector, error name or error signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple errors match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single error in\n * the ABI, this will throw.\n */\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n if (BuiltinErrors[selector]) {\n return ErrorFragment.from(BuiltinErrors[selector].signature);\n }\n for (const fragment of this.#errors.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#errors) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n if (key === \"Error\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n return null;\n }\n else if (matching.length > 1) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous error description (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n key = ErrorFragment.from(key).format();\n if (key === \"Error(string)\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic(uint256)\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n const result = this.#errors.get(key);\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Iterate over all errors, calling %%callback%%, sorted by their name.\n */\n forEachError(callback) {\n const names = Array.from(this.#errors.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#errors.get(name)), i);\n }\n }\n // Get the 4-byte selector used by Solidity to identify a function\n /*\ngetSelector(fragment: ErrorFragment | FunctionFragment): string {\n if (typeof(fragment) === \"string\") {\n const matches: Array<Fragment> = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(<string>fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n\n return dataSlice(id(fragment.format()), 0, 4);\n}\n */\n // Get the 32-byte topic hash used by Solidity to identify an event\n /*\n getEventTopic(fragment: EventFragment): string {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n */\n _decodeParams(params, data) {\n return this.#abiCoder.decode(params, data);\n }\n _encodeParams(params, values) {\n return this.#abiCoder.encode(params, values);\n }\n /**\n * Encodes a ``tx.data`` object for deploying the Contract with\n * the %%values%% as the constructor arguments.\n */\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified error (see [[getError]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match error ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the transaction revert data for a call result that\n * reverted from the the Contract with the sepcified %%error%%\n * (see [[getError]] for valid values for %%fragment%%) with the %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the %%data%% from a transaction ``tx.data`` for\n * the function specified (see [[getFunction]] for valid values\n * for %%fragment%%).\n *\n * Most developers should prefer the [[parseTransaction]] method\n * instead, which will automatically detect the fragment.\n */\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match function ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the ``tx.data`` for a transaction that calls the function\n * specified (see [[getFunction]] for valid values for %%fragment%%) with\n * the %%values%%.\n */\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n let message = \"invalid length for result data\";\n const bytes = getBytesCopy(data);\n if ((bytes.length % 32) === 0) {\n try {\n return this.#abiCoder.decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n assert(false, message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(_data, tx) {\n const data = getBytes(_data, \"data\");\n const error = AbiCoder.getBuiltinCallException(\"call\", tx, data);\n // Not a built-in error; try finding a custom error\n const customPrefix = \"execution reverted (unknown custom error)\";\n if (error.message.startsWith(customPrefix)) {\n const selector = hexlify(data.slice(0, 4));\n const ef = this.getError(selector);\n if (ef) {\n try {\n const args = this.#abiCoder.decode(ef.inputs, data.slice(4));\n error.revert = {\n name: ef.name, signature: ef.format(), args\n };\n error.reason = error.revert.signature;\n error.message = `execution reverted: ${error.reason}`;\n }\n catch (e) {\n error.message = `execution reverted (coult not decode custom error)`;\n }\n }\n }\n // Add the invocation, if available\n const parsed = this.parseTransaction(tx);\n if (parsed) {\n error.invocation = {\n method: parsed.name,\n signature: parsed.signature,\n args: parsed.args\n };\n }\n return error;\n }\n /**\n * Encodes the result data (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values\n * for %%fragment%%) with %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeFunctionResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return hexlify(this.#abiCoder.encode(fragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array<ParamType>, values: ReadonlyArray<any>, processfunc: (type: string, value: any) => Promise<any>): Promise<Array<any>> {\n const promises: Array<Promise<>> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array<ParamType>, values: ReadonlyArray<any>) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array<any> = [ ];\n values.forEach((value, index) => {\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n }\n */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n assert(values.length <= fragment.inputs.length, `too many arguments for ${fragment.format()}`, \"UNEXPECTED_ARGUMENT\", { count: values.length, expectedCount: fragment.inputs.length });\n const topics = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n // @TODO: Use the coders for this; to properly support tuples, etc.\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n if (param.type === \"bool\" && typeof (value) === \"boolean\") {\n value = (value ? \"0x01\" : \"0x00\");\n }\n else if (param.type.match(/^u?int/)) {\n value = toBeHex(value); // @TODO: Should this toTwos??\n }\n else if (param.type.match(/^bytes/)) {\n value = zeroPadBytes(value, 32);\n }\n else if (param.type === \"address\") {\n // Check addresses are valid\n this.#abiCoder.encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n };\n values.forEach((value, index) => {\n const param = fragment.inputs[index];\n if (!param.indexed) {\n assertArgument(value == null, \"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n return;\n }\n if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n assertArgument(false, \"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n assertArgument(values.length === fragment.inputs.length, \"event arguments/values mismatch\", \"values\", values);\n fragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value));\n }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(this.#abiCoder.encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: this.#abiCoder.encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(fragment, data, topics) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n if (topics != null && !fragment.anonymous) {\n const eventTopic = fragment.topicHash;\n assertArgument(isHexString(topics[0], 32) && topics[0].toLowerCase() === eventTopic, \"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\n fragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.from({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? this.#abiCoder.decode(indexed, concat(topics)) : null;\n const resultNonIndexed = this.#abiCoder.decode(nonIndexed, data, true);\n //const result: (Array<any> & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n fragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n /**\n * Parses a transaction, finding the matching function and extracts\n * the parameter values along with other useful function details.\n *\n * If the matching function cannot be found, return null.\n */\n parseTransaction(tx) {\n const data = getBytes(tx.data, \"tx.data\");\n const value = getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, fragment.selector, args, value);\n }\n parseCallResult(data) {\n throw new Error(\"@TODO\");\n }\n /**\n * Parses a receipt log, finding the matching event and extracts\n * the parameter values along with other useful event details.\n *\n * If the matching event cannot be found, returns null.\n */\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n return null;\n }\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n return new LogDescription(fragment, fragment.topicHash, this.decodeEventLog(fragment, log.data, log.topics));\n }\n /**\n * Parses a revert data, finding the matching error and extracts\n * the parameter values along with other useful error details.\n *\n * If the matching error cannot be found, returns null.\n */\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, fragment.selector, args);\n }\n /**\n * Creates a new [[Interface]] from the ABI %%value%%.\n *\n * The %%value%% may be provided as an existing [[Interface]] object,\n * a JSON-encoded ABI or any Human-Readable ABI format.\n */\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // An Interface; possibly from another v6 instance\n if (typeof (value.formatJson) === \"function\") {\n return new Interface(value.formatJson());\n }\n // A legacy Interface; from an older version\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(\"json\"));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n//# sourceMappingURL=interface.js.map","//import { resolveAddress } from \"@ethersproject/address\";\nimport { defineProperties, getBigInt, getNumber, hexlify, isBytesLike, resolveProperties, assert, assertArgument, isError, makeError } from \"../utils/index.js\";\nimport { accessListify } from \"../transaction/index.js\";\nconst BN_0 = BigInt(0);\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? <T extends FeeData = { }> implements Required<T>\n/**\n * A **FeeData** wraps all the fee-related values associated with\n * the network.\n */\nexport class FeeData {\n /**\n * The gas price for legacy networks.\n */\n gasPrice;\n /**\n * The maximum fee to pay per gas.\n *\n * The base fee per gas is defined by the network and based on\n * congestion, increasing the cost during times of heavy load\n * and lowering when less busy.\n *\n * The actual fee per gas will be the base fee for the block\n * and the priority fee, up to the max fee per gas.\n *\n * This will be ``null`` on legacy networks (i.e. [pre-EIP-1559](link-eip-1559))\n */\n maxFeePerGas;\n /**\n * The additional amout to pay per gas to encourage a validator\n * to include the transaction.\n *\n * The purpose of this is to compensate the validator for the\n * adjusted risk for including a given transaction.\n *\n * This will be ``null`` on legacy networks (i.e. [pre-EIP-1559](link-eip-1559))\n */\n maxPriorityFeePerGas;\n /**\n * Creates a new FeeData for %%gasPrice%%, %%maxFeePerGas%% and\n * %%maxPriorityFeePerGas%%.\n */\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n /**\n * Returns a JSON-friendly value.\n */\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\n/**\n * Returns a copy of %%req%% with all properties coerced to their strict\n * types.\n */\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value\".split(/,/);\n for (const key of bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key of numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (req.authorizationList) {\n result.authorizationList = req.authorizationList.slice();\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipRead = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n if (\"blobVersionedHashes\" in req && req.blobVersionedHashes) {\n result.blobVersionedHashes = req.blobVersionedHashes.slice();\n }\n if (\"kzg\" in req) {\n result.kzg = req.kzg;\n }\n if (\"blobWrapperVersion\" in req) {\n result.blobWrapperVersion = req.blobWrapperVersion;\n }\n if (\"blobs\" in req && req.blobs) {\n result.blobs = req.blobs.map((b) => {\n if (isBytesLike(b)) {\n return hexlify(b);\n }\n return Object.assign({}, b);\n });\n }\n return result;\n}\n/**\n * A **Block** represents the data associated with a full block on\n * Ethereum.\n */\nexport class Block {\n /**\n * The provider connected to the block used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The block number, sometimes called the block height. This is a\n * sequential number that is one higher than the parent block.\n */\n number;\n /**\n * The block hash.\n *\n * This hash includes all properties, so can be safely used to identify\n * an exact set of block properties.\n */\n hash;\n /**\n * The timestamp for this block, which is the number of seconds since\n * epoch that this block was included.\n */\n timestamp;\n /**\n * The block hash of the parent block.\n */\n parentHash;\n /**\n * The hash tree root of the parent beacon block for the given\n * execution block. See [[link-eip-4788]].\n */\n parentBeaconBlockRoot;\n /**\n * The nonce.\n *\n * On legacy networks, this is the random number inserted which\n * permitted the difficulty target to be reached.\n */\n nonce;\n /**\n * The difficulty target.\n *\n * On legacy networks, this is the proof-of-work target required\n * for a block to meet the protocol rules to be included.\n *\n * On modern networks, this is a random number arrived at using\n * randao. @TODO: Find links?\n */\n difficulty;\n /**\n * The total gas limit for this block.\n */\n gasLimit;\n /**\n * The total gas used in this block.\n */\n gasUsed;\n /**\n * The root hash for the global state after applying changes\n * in this block.\n */\n stateRoot;\n /**\n * The hash of the transaction receipts trie.\n */\n receiptsRoot;\n /**\n * The total amount of blob gas consumed by the transactions\n * within the block. See [[link-eip-4844]].\n */\n blobGasUsed;\n /**\n * The running total of blob gas consumed in excess of the\n * target, prior to the block. See [[link-eip-4844]].\n */\n excessBlobGas;\n /**\n * The miner coinbase address, wihch receives any subsidies for\n * including this block.\n */\n miner;\n /**\n * The latest RANDAO mix of the post beacon state of\n * the previous block.\n */\n prevRandao;\n /**\n * Any extra data the validator wished to include.\n */\n extraData;\n /**\n * The base fee per gas that all transactions in this block were\n * charged.\n *\n * This adjusts after each block, depending on how congested the network\n * is.\n */\n baseFeePerGas;\n #transactions;\n /**\n * Create a new **Block** object.\n *\n * This should generally not be necessary as the unless implementing a\n * low-level library.\n */\n constructor(block, provider) {\n this.#transactions = block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\") {\n return new TransactionResponse(tx, provider);\n }\n return tx;\n });\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n parentBeaconBlockRoot: block.parentBeaconBlockRoot,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n blobGasUsed: block.blobGasUsed,\n excessBlobGas: block.excessBlobGas,\n miner: block.miner,\n prevRandao: getValue(block.prevRandao),\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas),\n stateRoot: block.stateRoot,\n receiptsRoot: block.receiptsRoot,\n });\n }\n /**\n * Returns the list of transaction hashes, in the order\n * they were executed within the block.\n */\n get transactions() {\n return this.#transactions.map((tx) => {\n if (typeof (tx) === \"string\") {\n return tx;\n }\n return tx.hash;\n });\n }\n /**\n * Returns the complete transactions, in the order they\n * were executed within the block.\n *\n * This is only available for blocks which prefetched\n * transactions, by passing ``true`` to %%prefetchTxs%%\n * into [[Provider-getBlock]].\n */\n get prefetchedTransactions() {\n const txs = this.#transactions.slice();\n // Doesn't matter...\n if (txs.length === 0) {\n return [];\n }\n // Make sure we prefetched the transactions\n assert(typeof (txs[0]) === \"object\", \"transactions were not prefetched with block request\", \"UNSUPPORTED_OPERATION\", {\n operation: \"transactionResponses()\"\n });\n return txs;\n }\n /**\n * Returns a JSON-friendly value.\n */\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, prevRandao, nonce, number, parentHash, parentBeaconBlockRoot, stateRoot, receiptsRoot, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n blobGasUsed: toJson(this.blobGasUsed),\n excessBlobGas: toJson(this.excessBlobGas),\n hash, miner, prevRandao, nonce, number, parentHash, timestamp,\n parentBeaconBlockRoot, stateRoot, receiptsRoot,\n transactions,\n };\n }\n [Symbol.iterator]() {\n let index = 0;\n const txs = this.transactions;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: txs[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n /**\n * The number of transactions in this block.\n */\n get length() { return this.#transactions.length; }\n /**\n * The [[link-js-date]] this block was included at.\n */\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n /**\n * Get the transaction at %%indexe%% within this block.\n */\n async getTransaction(indexOrHash) {\n // Find the internal value by its index or hash\n let tx = undefined;\n if (typeof (indexOrHash) === \"number\") {\n tx = this.#transactions[indexOrHash];\n }\n else {\n const hash = indexOrHash.toLowerCase();\n for (const v of this.#transactions) {\n if (typeof (v) === \"string\") {\n if (v !== hash) {\n continue;\n }\n tx = v;\n break;\n }\n else {\n if (v.hash !== hash) {\n continue;\n }\n tx = v;\n break;\n }\n }\n }\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n /**\n * If a **Block** was fetched with a request to include the transactions\n * this will allow synchronous access to those transactions.\n *\n * If the transactions were not prefetched, this will throw.\n */\n getPrefetchedTransaction(indexOrHash) {\n const txs = this.prefetchedTransactions;\n if (typeof (indexOrHash) === \"number\") {\n return txs[indexOrHash];\n }\n indexOrHash = indexOrHash.toLowerCase();\n for (const tx of txs) {\n if (tx.hash === indexOrHash) {\n return tx;\n }\n }\n assertArgument(false, \"no matching transaction\", \"indexOrHash\", indexOrHash);\n }\n /**\n * Returns true if this block been mined. This provides a type guard\n * for all properties on a [[MinedBlock]].\n */\n isMined() { return !!this.hash; }\n /**\n * Returns true if this block is an [[link-eip-2930]] block.\n */\n isLondon() {\n return !!this.baseFeePerGas;\n }\n /**\n * @_ignore:\n */\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\n//////////////////////\n// Log\n/**\n * A **Log** in Ethereum represents an event that has been included in a\n * transaction using the ``LOG*`` opcodes, which are most commonly used by\n * Solidity's emit for announcing events.\n */\nexport class Log {\n /**\n * The provider connected to the log used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The transaction hash of the transaction this log occurred in. Use the\n * [[Log-getTransaction]] to get the [[TransactionResponse]].\n */\n transactionHash;\n /**\n * The block hash of the block this log occurred in. Use the\n * [[Log-getBlock]] to get the [[Block]].\n */\n blockHash;\n /**\n * The block number of the block this log occurred in. It is preferred\n * to use the [[Block-hash]] when fetching the related [[Block]],\n * since in the case of an orphaned block, the block at that height may\n * have changed.\n */\n blockNumber;\n /**\n * If the **Log** represents a block that was removed due to an orphaned\n * block, this will be true.\n *\n * This can only happen within an orphan event listener.\n */\n removed;\n /**\n * The address of the contract that emitted this log.\n */\n address;\n /**\n * The data included in this log when it was emitted.\n */\n data;\n /**\n * The indexed topics included in this log when it was emitted.\n *\n * All topics are included in the bloom filters, so they can be\n * efficiently filtered using the [[Provider-getLogs]] method.\n */\n topics;\n /**\n * The index within the block this log occurred at. This is generally\n * not useful to developers, but can be used with the various roots\n * to proof inclusion within a block.\n */\n index;\n /**\n * The index within the transaction of this log.\n */\n transactionIndex;\n /**\n * @_ignore:\n */\n constructor(log, provider) {\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n /**\n * Returns a JSON-compatible object.\n */\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n /**\n * Returns the block that this log occurred in.\n */\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n assert(!!block, \"failed to find transaction\", \"UNKNOWN_ERROR\", {});\n return block;\n }\n /**\n * Returns the transaction that this log occurred in.\n */\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.transactionHash);\n assert(!!tx, \"failed to find transaction\", \"UNKNOWN_ERROR\", {});\n return tx;\n }\n /**\n * Returns the transaction receipt fot the transaction that this\n * log occurred in.\n */\n async getTransactionReceipt() {\n const receipt = await this.provider.getTransactionReceipt(this.transactionHash);\n assert(!!receipt, \"failed to find transaction receipt\", \"UNKNOWN_ERROR\", {});\n return receipt;\n }\n /**\n * @_ignore:\n */\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\n//////////////////////\n// Transaction Receipt\n/*\nexport interface LegacyTransactionReceipt {\n byzantium: false;\n status: null;\n root: string;\n}\n\nexport interface ByzantiumTransactionReceipt {\n byzantium: true;\n status: number;\n root: null;\n}\n*/\n/**\n * A **TransactionReceipt** includes additional information about a\n * transaction that is only available after it has been mined.\n */\nexport class TransactionReceipt {\n /**\n * The provider connected to the log used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The address the transaction was sent to.\n */\n to;\n /**\n * The sender of the transaction.\n */\n from;\n /**\n * The address of the contract if the transaction was directly\n * responsible for deploying one.\n *\n * This is non-null **only** if the ``to`` is empty and the ``data``\n * was successfully executed as initcode.\n */\n contractAddress;\n /**\n * The transaction hash.\n */\n hash;\n /**\n * The index of this transaction within the block transactions.\n */\n index;\n /**\n * The block hash of the [[Block]] this transaction was included in.\n */\n blockHash;\n /**\n * The block number of the [[Block]] this transaction was included in.\n */\n blockNumber;\n /**\n * The bloom filter bytes that represent all logs that occurred within\n * this transaction. This is generally not useful for most developers,\n * but can be used to validate the included logs.\n */\n logsBloom;\n /**\n * The actual amount of gas used by this transaction.\n *\n * When creating a transaction, the amount of gas that will be used can\n * only be approximated, but the sender must pay the gas fee for the\n * entire gas limit. After the transaction, the difference is refunded.\n */\n gasUsed;\n /**\n * The gas used for BLObs. See [[link-eip-4844]].\n */\n blobGasUsed;\n /**\n * The amount of gas used by all transactions within the block for this\n * and all transactions with a lower ``index``.\n *\n * This is generally not useful for developers but can be used to\n * validate certain aspects of execution.\n */\n cumulativeGasUsed;\n /**\n * The actual gas price used during execution.\n *\n * Due to the complexity of [[link-eip-1559]] this value can only\n * be caluclated after the transaction has been mined, snce the base\n * fee is protocol-enforced.\n */\n gasPrice;\n /**\n * The price paid per BLOB in gas. See [[link-eip-4844]].\n */\n blobGasPrice;\n /**\n * The [[link-eip-2718]] transaction type.\n */\n type;\n //readonly byzantium!: boolean;\n /**\n * The status of this transaction, indicating success (i.e. ``1``) or\n * a revert (i.e. ``0``).\n *\n * This is available in post-byzantium blocks, but some backends may\n * backfill this value.\n */\n status;\n /**\n * The root hash of this transaction.\n *\n * This is no present and was only included in pre-byzantium blocks, but\n * could be used to validate certain parts of the receipt.\n */\n root;\n #logs;\n /**\n * @_ignore:\n */\n constructor(tx, provider) {\n this.#logs = Object.freeze(tx.logs.map((log) => {\n return new Log(log, provider);\n }));\n let gasPrice = BN_0;\n if (tx.effectiveGasPrice != null) {\n gasPrice = tx.effectiveGasPrice;\n }\n else if (tx.gasPrice != null) {\n gasPrice = tx.gasPrice;\n }\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n blobGasUsed: tx.blobGasUsed,\n gasPrice,\n blobGasPrice: tx.blobGasPrice,\n type: tx.type,\n //byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n /**\n * The logs for this transaction.\n */\n get logs() { return this.#logs; }\n /**\n * Returns a JSON-compatible representation.\n */\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, //byzantium, \n status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber,\n //byzantium, \n contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n blobGasUsed: toJson(this.blobGasUsed),\n blobGasPrice: toJson(this.blobGasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n /**\n * @_ignore:\n */\n get length() { return this.logs.length; }\n [Symbol.iterator]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n /**\n * The total fee for this transaction, in wei.\n */\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n /**\n * Resolves to the block this transaction occurred in.\n */\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n /**\n * Resolves to the transaction this transaction occurred in.\n */\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n /**\n * Resolves to the return value of the execution of this transaction.\n *\n * Support for this feature is limited, as it requires an archive node\n * with the ``debug_`` or ``trace_`` API enabled.\n */\n async getResult() {\n return (await this.provider.getTransactionResult(this.hash));\n }\n /**\n * Resolves to the number of confirmations this transaction has.\n */\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n /**\n * @_ignore:\n */\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n /**\n * @_ignore:\n */\n reorderedEvent(other) {\n assert(!other || other.isMined(), \"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"reorderedEvent(other)\" });\n return createReorderedTransactionFilter(this, other);\n }\n}\n/**\n * A **TransactionResponse** includes all properties about a transaction\n * that was sent to the network, which may or may not be included in a\n * block.\n *\n * The [[TransactionResponse-isMined]] can be used to check if the\n * transaction has been mined as well as type guard that the otherwise\n * possibly ``null`` properties are defined.\n */\nexport class TransactionResponse {\n /**\n * The provider this is connected to, which will influence how its\n * methods will resolve its async inspection methods.\n */\n provider;\n /**\n * The block number of the block that this transaction was included in.\n *\n * This is ``null`` for pending transactions.\n */\n blockNumber;\n /**\n * The blockHash of the block that this transaction was included in.\n *\n * This is ``null`` for pending transactions.\n */\n blockHash;\n /**\n * The index within the block that this transaction resides at.\n */\n index;\n /**\n * The transaction hash.\n */\n hash;\n /**\n * The [[link-eip-2718]] transaction envelope type. This is\n * ``0`` for legacy transactions types.\n */\n type;\n /**\n * The receiver of this transaction.\n *\n * If ``null``, then the transaction is an initcode transaction.\n * This means the result of executing the [[data]] will be deployed\n * as a new contract on chain (assuming it does not revert) and the\n * address may be computed using [[getCreateAddress]].\n */\n to;\n /**\n * The sender of this transaction. It is implicitly computed\n * from the transaction pre-image hash (as the digest) and the\n * [[signature]] using ecrecover.\n */\n from;\n /**\n * The nonce, which is used to prevent replay attacks and offer\n * a method to ensure transactions from a given sender are explicitly\n * ordered.\n *\n * When sending a transaction, this must be equal to the number of\n * transactions ever sent by [[from]].\n */\n nonce;\n /**\n * The maximum units of gas this transaction can consume. If execution\n * exceeds this, the entries transaction is reverted and the sender\n * is charged for the full amount, despite not state changes being made.\n */\n gasLimit;\n /**\n * The gas price can have various values, depending on the network.\n *\n * In modern networks, for transactions that are included this is\n * the //effective gas price// (the fee per gas that was actually\n * charged), while for transactions that have not been included yet\n * is the [[maxFeePerGas]].\n *\n * For legacy transactions, or transactions on legacy networks, this\n * is the fee that will be charged per unit of gas the transaction\n * consumes.\n */\n gasPrice;\n /**\n * The maximum priority fee (per unit of gas) to allow a\n * validator to charge the sender. This is inclusive of the\n * [[maxFeeFeePerGas]].\n */\n maxPriorityFeePerGas;\n /**\n * The maximum fee (per unit of gas) to allow this transaction\n * to charge the sender.\n */\n maxFeePerGas;\n /**\n * The [[link-eip-4844]] max fee per BLOb gas.\n */\n maxFeePerBlobGas;\n /**\n * The data.\n */\n data;\n /**\n * The value, in wei. Use [[formatEther]] to format this value\n * as ether.\n */\n value;\n /**\n * The chain ID.\n */\n chainId;\n /**\n * The signature.\n */\n signature;\n /**\n * The [[link-eip-2930]] access list for transaction types that\n * support it, otherwise ``null``.\n */\n accessList;\n /**\n * The [[link-eip-4844]] BLOb versioned hashes.\n */\n blobVersionedHashes;\n /**\n * The [[link-eip-7702]] authorizations (if any).\n */\n authorizationList;\n #startBlock;\n /**\n * @_ignore:\n */\n constructor(tx, provider) {\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.maxFeePerBlobGas = (tx.maxFeePerBlobGas != null) ? tx.maxFeePerBlobGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n this.blobVersionedHashes = (tx.blobVersionedHashes != null) ? tx.blobVersionedHashes : null;\n this.authorizationList = (tx.authorizationList != null) ? tx.authorizationList : null;\n this.#startBlock = -1;\n }\n /**\n * Returns a JSON-compatible representation of this transaction.\n */\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList, blobVersionedHashes } = this;\n return {\n _type: \"TransactionResponse\",\n accessList, blockNumber, blockHash,\n blobVersionedHashes,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n maxFeePerBlobGas: toJson(this.maxFeePerBlobGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n /**\n * Resolves to the Block that this transaction was included in.\n *\n * This will return null if the transaction has not been included yet.\n */\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n /**\n * Resolves to this transaction being re-requested from the\n * provider. This can be used if you have an unmined transaction\n * and wish to get an up-to-date populated instance.\n */\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n /**\n * Resolve to the number of confirmations this transaction has.\n */\n async confirmations() {\n if (this.blockNumber == null) {\n const { tx, blockNumber } = await resolveProperties({\n tx: this.getTransaction(),\n blockNumber: this.provider.getBlockNumber()\n });\n // Not mined yet...\n if (tx == null || tx.blockNumber == null) {\n return 0;\n }\n return blockNumber - tx.blockNumber + 1;\n }\n const blockNumber = await this.provider.getBlockNumber();\n return blockNumber - this.blockNumber + 1;\n }\n /**\n * Resolves once this transaction has been mined and has\n * %%confirms%% blocks including it (default: ``1``) with an\n * optional %%timeout%%.\n *\n * This can resolve to ``null`` only if %%confirms%% is ``0``\n * and the transaction has not been mined, otherwise this will\n * wait until enough confirmations have completed.\n */\n async wait(_confirms, _timeout) {\n const confirms = (_confirms == null) ? 1 : _confirms;\n const timeout = (_timeout == null) ? 0 : _timeout;\n let startBlock = this.#startBlock;\n let nextScan = -1;\n let stopScanning = (startBlock === -1) ? true : false;\n const checkReplacement = async () => {\n // Get the current transaction count for this sender\n if (stopScanning) {\n return null;\n }\n const { blockNumber, nonce } = await resolveProperties({\n blockNumber: this.provider.getBlockNumber(),\n nonce: this.provider.getTransactionCount(this.from)\n });\n // No transaction or our nonce has not been mined yet; but we\n // can start scanning later when we do start\n if (nonce < this.nonce) {\n startBlock = blockNumber;\n return;\n }\n // We were mined; no replacement\n if (stopScanning) {\n return null;\n }\n const mined = await this.getTransaction();\n if (mined && mined.blockNumber != null) {\n return;\n }\n // We were replaced; start scanning for that transaction\n // Starting to scan; look back a few extra blocks for safety\n if (nextScan === -1) {\n nextScan = startBlock - 3;\n if (nextScan < this.#startBlock) {\n nextScan = this.#startBlock;\n }\n }\n while (nextScan <= blockNumber) {\n // Get the next block to scan\n if (stopScanning) {\n return null;\n }\n const block = await this.provider.getBlock(nextScan, true);\n // This should not happen; but we'll try again shortly\n if (block == null) {\n return;\n }\n // We were mined; no replacement\n for (const hash of block) {\n if (hash === this.hash) {\n return;\n }\n }\n // Search for the transaction that replaced us\n for (let i = 0; i < block.length; i++) {\n const tx = await block.getTransaction(i);\n if (tx.from === this.from && tx.nonce === this.nonce) {\n // Get the receipt\n if (stopScanning) {\n return null;\n }\n const receipt = await this.provider.getTransactionReceipt(tx.hash);\n // This should not happen; but we'll try again shortly\n if (receipt == null) {\n return;\n }\n // We will retry this on the next block (this case could be optimized)\n if ((blockNumber - receipt.blockNumber + 1) < confirms) {\n return;\n }\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === this.data && tx.to === this.to && tx.value === this.value) {\n reason = \"repriced\";\n }\n else if (tx.data === \"0x\" && tx.from === tx.to && tx.value === BN_0) {\n reason = \"cancelled\";\n }\n assert(false, \"transaction was replaced\", \"TRANSACTION_REPLACED\", {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: tx.replaceableTransaction(startBlock),\n hash: tx.hash,\n receipt\n });\n }\n }\n nextScan++;\n }\n return;\n };\n const checkReceipt = (receipt) => {\n if (receipt == null || receipt.status !== 0) {\n return receipt;\n }\n assert(false, \"transaction execution reverted\", \"CALL_EXCEPTION\", {\n action: \"sendTransaction\",\n data: null, reason: null, invocation: null, revert: null,\n transaction: {\n to: receipt.to,\n from: receipt.from,\n data: \"\" // @TODO: in v7, split out sendTransaction properties\n }, receipt\n });\n };\n const receipt = await this.provider.getTransactionReceipt(this.hash);\n if (confirms === 0) {\n return checkReceipt(receipt);\n }\n if (receipt) {\n if (confirms === 1 || (await receipt.confirmations()) >= confirms) {\n return checkReceipt(receipt);\n }\n }\n else {\n // Check for a replacement; throws if a replacement was found\n await checkReplacement();\n // Allow null only when the confirms is 0\n if (confirms === 0) {\n return null;\n }\n }\n const waiter = new Promise((resolve, reject) => {\n // List of things to cancel when we have a result (one way or the other)\n const cancellers = [];\n const cancel = () => { cancellers.forEach((c) => c()); };\n // On cancel, stop scanning for replacements\n cancellers.push(() => { stopScanning = true; });\n // Set up any timeout requested\n if (timeout > 0) {\n const timer = setTimeout(() => {\n cancel();\n reject(makeError(\"wait for transaction timeout\", \"TIMEOUT\"));\n }, timeout);\n cancellers.push(() => { clearTimeout(timer); });\n }\n const txListener = async (receipt) => {\n // Done; return it!\n if ((await receipt.confirmations()) >= confirms) {\n cancel();\n try {\n resolve(checkReceipt(receipt));\n }\n catch (error) {\n reject(error);\n }\n }\n };\n cancellers.push(() => { this.provider.off(this.hash, txListener); });\n this.provider.on(this.hash, txListener);\n // We support replacement detection; start checking\n if (startBlock >= 0) {\n const replaceListener = async () => {\n try {\n // Check for a replacement; this throws only if one is found\n await checkReplacement();\n }\n catch (error) {\n // We were replaced (with enough confirms); re-throw the error\n if (isError(error, \"TRANSACTION_REPLACED\")) {\n cancel();\n reject(error);\n return;\n }\n }\n // Rescheudle a check on the next block\n if (!stopScanning) {\n this.provider.once(\"block\", replaceListener);\n }\n };\n cancellers.push(() => { this.provider.off(\"block\", replaceListener); });\n this.provider.once(\"block\", replaceListener);\n }\n });\n return await waiter;\n }\n /**\n * Returns ``true`` if this transaction has been included.\n *\n * This is effective only as of the time the TransactionResponse\n * was instantiated. To get up-to-date information, use\n * [[getTransaction]].\n *\n * This provides a Type Guard that this transaction will have\n * non-null property values for properties that are null for\n * unmined transactions.\n */\n isMined() {\n return (this.blockHash != null);\n }\n /**\n * Returns true if the transaction is a legacy (i.e. ``type == 0``)\n * transaction.\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isLegacy() {\n return (this.type === 0);\n }\n /**\n * Returns true if the transaction is a Berlin (i.e. ``type == 1``)\n * transaction. See [[link-eip-2070]].\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isBerlin() {\n return (this.type === 1);\n }\n /**\n * Returns true if the transaction is a London (i.e. ``type == 2``)\n * transaction. See [[link-eip-1559]].\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isLondon() {\n return (this.type === 2);\n }\n /**\n * Returns true if hte transaction is a Cancun (i.e. ``type == 3``)\n * transaction. See [[link-eip-4844]].\n */\n isCancun() {\n return (this.type === 3);\n }\n /**\n * Returns a filter which can be used to listen for orphan events\n * that evict this transaction.\n */\n removedEvent() {\n assert(this.isMined(), \"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n return createRemovedTransactionFilter(this);\n }\n /**\n * Returns a filter which can be used to listen for orphan events\n * that re-order this event against %%other%%.\n */\n reorderedEvent(other) {\n assert(this.isMined(), \"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n assert(!other || other.isMined(), \"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n return createReorderedTransactionFilter(this, other);\n }\n /**\n * Returns a new TransactionResponse instance which has the ability to\n * detect (and throw an error) if the transaction is replaced, which\n * will begin scanning at %%startBlock%%.\n *\n * This should generally not be used by developers and is intended\n * primarily for internal use. Setting an incorrect %%startBlock%% can\n * have devastating performance consequences if used incorrectly.\n */\n replaceableTransaction(startBlock) {\n assertArgument(Number.isInteger(startBlock) && startBlock >= 0, \"invalid startBlock\", \"startBlock\", startBlock);\n const tx = new TransactionResponse(this, this.provider);\n tx.#startBlock = startBlock;\n return tx;\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\n//# sourceMappingURL=provider.js.map","// import from provider.ts instead of index.ts to prevent circular dep\n// from EtherscanProvider\nimport { Log, TransactionReceipt, TransactionResponse } from \"../providers/provider.js\";\nimport { defineProperties, EventPayload } from \"../utils/index.js\";\n/**\n * An **EventLog** contains additional properties parsed from the [[Log]].\n */\nexport class EventLog extends Log {\n /**\n * The Contract Interface.\n */\n interface;\n /**\n * The matching event.\n */\n fragment;\n /**\n * The parsed arguments passed to the event by ``emit``.\n */\n args;\n /**\n * @_ignore:\n */\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n /**\n * The name of the event.\n */\n get eventName() { return this.fragment.name; }\n /**\n * The signature of the event.\n */\n get eventSignature() { return this.fragment.format(); }\n}\n/**\n * An **EventLog** contains additional properties parsed from the [[Log]].\n */\nexport class UndecodedEventLog extends Log {\n /**\n * The error encounted when trying to decode the log.\n */\n error;\n /**\n * @_ignore:\n */\n constructor(log, error) {\n super(log, log.provider);\n defineProperties(this, { error });\n }\n}\n/**\n * A **ContractTransactionReceipt** includes the parsed logs from a\n * [[TransactionReceipt]].\n */\nexport class ContractTransactionReceipt extends TransactionReceipt {\n #iface;\n /**\n * @_ignore:\n */\n constructor(iface, provider, tx) {\n super(tx, provider);\n this.#iface = iface;\n }\n /**\n * The parsed logs for any [[Log]] which has a matching event in the\n * Contract ABI.\n */\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? this.#iface.getEvent(log.topics[0]) : null;\n if (fragment) {\n try {\n return new EventLog(log, this.#iface, fragment);\n }\n catch (error) {\n return new UndecodedEventLog(log, error);\n }\n }\n return log;\n });\n }\n}\n/**\n * A **ContractTransactionResponse** will return a\n * [[ContractTransactionReceipt]] when waited on.\n */\nexport class ContractTransactionResponse extends TransactionResponse {\n #iface;\n /**\n * @_ignore:\n */\n constructor(iface, provider, tx) {\n super(tx, provider);\n this.#iface = iface;\n }\n /**\n * Resolves once this transaction has been mined and has\n * %%confirms%% blocks including it (default: ``1``) with an\n * optional %%timeout%%.\n *\n * This can resolve to ``null`` only if %%confirms%% is ``0``\n * and the transaction has not been mined, otherwise this will\n * wait until enough confirmations have completed.\n */\n async wait(confirms, timeout) {\n const receipt = await super.wait(confirms, timeout);\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(this.#iface, this.provider, receipt);\n }\n}\n/**\n * A **ContractUnknownEventPayload** is included as the last parameter to\n * Contract Events when the event does not match any events in the ABI.\n */\nexport class ContractUnknownEventPayload extends EventPayload {\n /**\n * The log with no matching events.\n */\n log;\n /**\n * @_event:\n */\n constructor(contract, listener, filter, log) {\n super(contract, listener, filter);\n defineProperties(this, { log });\n }\n /**\n * Resolves to the block the event occured in.\n */\n async getBlock() {\n return await this.log.getBlock();\n }\n /**\n * Resolves to the transaction the event occured in.\n */\n async getTransaction() {\n return await this.log.getTransaction();\n }\n /**\n * Resolves to the transaction receipt the event occured in.\n */\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n/**\n * A **ContractEventPayload** is included as the last parameter to\n * Contract Events when the event is known.\n */\nexport class ContractEventPayload extends ContractUnknownEventPayload {\n /**\n * @_ignore:\n */\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter, new EventLog(_log, contract.interface, fragment));\n const args = contract.interface.decodeEventLog(fragment, this.log.data, this.log.topics);\n defineProperties(this, { args, fragment });\n }\n /**\n * The event name.\n */\n get eventName() {\n return this.fragment.name;\n }\n /**\n * The event signature.\n */\n get eventSignature() {\n return this.fragment.format();\n }\n}\n//# sourceMappingURL=wrappers.js.map","import { Interface, Typed } from \"../abi/index.js\";\nimport { isAddressable, resolveAddress } from \"../address/index.js\";\n// import from provider.ts instead of index.ts to prevent circular dep\n// from EtherscanProvider\nimport { copyRequest, Log } from \"../providers/provider.js\";\nimport { defineProperties, getBigInt, isCallException, isHexString, resolveProperties, isError, makeError, assert, assertArgument } from \"../utils/index.js\";\nimport { ContractEventPayload, ContractUnknownEventPayload, ContractTransactionResponse, EventLog, UndecodedEventLog } from \"./wrappers.js\";\nconst BN_0 = BigInt(0);\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction getResolver(value) {\n if (value != null) {\n if (canResolve(value)) {\n return value;\n }\n if (value.provider) {\n return value.provider;\n }\n }\n return undefined;\n}\nclass PreparedTopicFilter {\n #filter;\n fragment;\n constructor(contract, fragment, args) {\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n this.#filter = (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n const arg = args[index];\n if (arg == null) {\n return null;\n }\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n if (Array.isArray(value)) {\n return Promise.all(value.map((v) => resolveAddress(v, resolver)));\n }\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })();\n }\n getTopicFilter() {\n return this.#filter;\n }\n}\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod<A extends Array<any> = Array<any>, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\n/**\n * @_ignore:\n */\nexport async function copyOverrides(arg, allowed) {\n // Make sure the overrides passed in are a valid overrides object\n const _overrides = Typed.dereference(arg, \"overrides\");\n assertArgument(typeof (_overrides) === \"object\", \"invalid overrides parameter\", \"overrides\", arg);\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(_overrides);\n assertArgument(overrides.to == null || (allowed || []).indexOf(\"to\") >= 0, \"cannot override to\", \"overrides.to\", overrides.to);\n assertArgument(overrides.data == null || (allowed || []).indexOf(\"data\") >= 0, \"cannot override data\", \"overrides.data\", overrides.data);\n // Resolve any from\n if (overrides.from) {\n overrides.from = overrides.from;\n }\n return overrides;\n}\n/**\n * @_ignore:\n */\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n value = Typed.dereference(value, type);\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nfunction buildWrappedFallback(contract) {\n const populateTransaction = async function (overrides) {\n // If an overrides was passed in, copy it and normalize the values\n const tx = (await copyOverrides(overrides, [\"data\"]));\n tx.to = await contract.getAddress();\n if (tx.from) {\n tx.from = await resolveAddress(tx.from, getResolver(contract.runner));\n }\n const iface = contract.interface;\n const noValue = (getBigInt((tx.value || BN_0), \"overrides.value\") === BN_0);\n const noData = ((tx.data || \"0x\") === \"0x\");\n if (iface.fallback && !iface.fallback.payable && iface.receive && !noData && !noValue) {\n assertArgument(false, \"cannot send data to receive or send value to non-payable fallback\", \"overrides\", overrides);\n }\n assertArgument(iface.fallback || noData, \"cannot send data to receive-only contract\", \"overrides.data\", tx.data);\n // Only allow payable contracts to set non-zero value\n const payable = iface.receive || (iface.fallback && iface.fallback.payable);\n assertArgument(payable || noValue, \"cannot send value to non-payable fallback\", \"overrides.value\", tx.value);\n // Only allow fallback contracts to set non-empty data\n assertArgument(iface.fallback || noData, \"cannot send data to receive-only contract\", \"overrides.data\", tx.data);\n return tx;\n };\n const staticCall = async function (overrides) {\n const runner = getRunner(contract.runner, \"call\");\n assert(canCall(runner), \"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", { operation: \"call\" });\n const tx = await populateTransaction(overrides);\n try {\n return await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error) && error.data) {\n throw contract.interface.makeError(error.data, tx);\n }\n throw error;\n }\n };\n const send = async function (overrides) {\n const runner = contract.runner;\n assert(canSend(runner), \"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", { operation: \"sendTransaction\" });\n const tx = await runner.sendTransaction(await populateTransaction(overrides));\n const provider = getProvider(contract.runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n return new ContractTransactionResponse(contract.interface, provider, tx);\n };\n const estimateGas = async function (overrides) {\n const runner = getRunner(contract.runner, \"estimateGas\");\n assert(canEstimate(runner), \"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", { operation: \"estimateGas\" });\n return await runner.estimateGas(await populateTransaction(overrides));\n };\n const method = async (overrides) => {\n return await send(overrides);\n };\n defineProperties(method, {\n _contract: contract,\n estimateGas,\n populateTransaction,\n send, staticCall\n });\n return method;\n}\nfunction buildWrappedMethod(contract, key) {\n const getFragment = function (...args) {\n const fragment = contract.interface.getFunction(key, args);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key, args }\n });\n return fragment;\n };\n const populateTransaction = async function (...args) {\n const fragment = getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from, getResolver(contract.runner));\n }\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: contract.getAddress(),\n data: contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n };\n const staticCall = async function (...args) {\n const result = await staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n };\n const send = async function (...args) {\n const runner = contract.runner;\n assert(canSend(runner), \"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", { operation: \"sendTransaction\" });\n const tx = await runner.sendTransaction(await populateTransaction(...args));\n const provider = getProvider(contract.runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n return new ContractTransactionResponse(contract.interface, provider, tx);\n };\n const estimateGas = async function (...args) {\n const runner = getRunner(contract.runner, \"estimateGas\");\n assert(canEstimate(runner), \"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", { operation: \"estimateGas\" });\n return await runner.estimateGas(await populateTransaction(...args));\n };\n const staticCallResult = async function (...args) {\n const runner = getRunner(contract.runner, \"call\");\n assert(canCall(runner), \"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", { operation: \"call\" });\n const tx = await populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error) && error.data) {\n throw contract.interface.makeError(error.data, tx);\n }\n throw error;\n }\n const fragment = getFragment(...args);\n return contract.interface.decodeFunctionResult(fragment, result);\n };\n const method = async (...args) => {\n const fragment = getFragment(...args);\n if (fragment.constant) {\n return await staticCall(...args);\n }\n return await send(...args);\n };\n defineProperties(method, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key,\n getFragment,\n estimateGas,\n populateTransaction,\n send, staticCall, staticCallResult,\n });\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n Object.defineProperty(method, \"fragment\", {\n configurable: false,\n enumerable: true,\n get: () => {\n const fragment = contract.interface.getFunction(key);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key }\n });\n return fragment;\n }\n });\n return method;\n}\nfunction buildWrappedEvent(contract, key) {\n const getFragment = function (...args) {\n const fragment = contract.interface.getEvent(key, args);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key, args }\n });\n return fragment;\n };\n const method = function (...args) {\n return new PreparedTopicFilter(contract, getFragment(...args), args);\n };\n defineProperties(method, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key,\n getFragment\n });\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n Object.defineProperty(method, \"fragment\", {\n configurable: false,\n enumerable: true,\n get: () => {\n const fragment = contract.interface.getEvent(key);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key }\n });\n return fragment;\n }\n });\n return method;\n}\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubInfo(contract, event) {\n let topics;\n let fragment = null;\n // Convert named events to topicHash and get the fragment for\n // events which need deconstructing.\n if (Array.isArray(event)) {\n const topicHashify = function (name) {\n if (isHexString(name, 32)) {\n return name;\n }\n const fragment = contract.interface.getEvent(name);\n assertArgument(fragment, \"unknown fragment\", \"name\", name);\n return fragment.topicHash;\n };\n // Array of Topics and Names; e.g. `[ \"0x1234...89ab\", \"Transfer(address)\" ]`\n topics = event.map((e) => {\n if (e == null) {\n return null;\n }\n if (Array.isArray(e)) {\n return e.map(topicHashify);\n }\n return topicHashify(e);\n });\n }\n else if (event === \"*\") {\n topics = [null];\n }\n else if (typeof (event) === \"string\") {\n if (isHexString(event, 32)) {\n // Topic Hash\n topics = [event];\n }\n else {\n // Name or Signature; e.g. `\"Transfer\", `\"Transfer(address)\"`\n fragment = contract.interface.getEvent(event);\n assertArgument(fragment, \"unknown fragment\", \"event\", event);\n topics = [fragment.topicHash];\n }\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [fragment.topicHash];\n }\n else {\n assertArgument(false, \"unknown event name\", \"event\", event);\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n const items = Array.from(new Set(t.map((t) => t.toLowerCase())).values());\n if (items.length === 1) {\n return items[0];\n }\n items.sort();\n return items;\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubInfo(contract, event)).tag) || null;\n}\nasync function getSub(contract, operation, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n assert(provider, \"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", { operation });\n const { fragment, tag, topics } = await getSubInfo(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n let foundFragment = fragment;\n if (foundFragment == null) {\n try {\n foundFragment = contract.interface.getEvent(log.topics[0]);\n }\n catch (error) { }\n }\n // If fragment is null, we do not deconstruct the args to emit\n if (foundFragment) {\n const _foundFragment = foundFragment;\n const args = fragment ? contract.interface.decodeEventLog(fragment, log.data, log.topics) : [];\n emit(contract, event, args, (listener) => {\n return new ContractEventPayload(contract, listener, event, _foundFragment, log);\n });\n }\n else {\n emit(contract, event, [], (listener) => {\n return new ContractUnknownEventPayload(contract, listener, event, log);\n });\n }\n };\n let starting = [];\n const start = () => {\n if (starting.length) {\n return;\n }\n starting.push(provider.on(filter, listener));\n };\n const stop = async () => {\n if (starting.length == 0) {\n return;\n }\n let started = starting;\n starting = [];\n await Promise.all(started);\n provider.off(filter, listener);\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function _emit(contract, event, args, payloadFunc) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = Array.from(args);\n if (payloadFunc) {\n passArgs.push(payloadFunc(once ? null : listener));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n if (sub.listeners.length === 0) {\n sub.stop();\n getInternal(contract).subs.delete(sub.tag);\n }\n return (count > 0);\n}\nasync function emit(contract, event, args, payloadFunc) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payloadFunc);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n /**\n * The target to connect to.\n *\n * This can be an address, ENS name or any [[Addressable]], such as\n * another contract. To get the resolved address, use the ``getAddress``\n * method.\n */\n target;\n /**\n * The contract Interface.\n */\n interface;\n /**\n * The connected runner. This is generally a [[Provider]] or a\n * [[Signer]], which dictates what operations are supported.\n *\n * For example, a **Contract** connected to a [[Provider]] may\n * only execute read-only operations.\n */\n runner;\n /**\n * All the Events available on this contract.\n */\n filters;\n /**\n * @_ignore:\n */\n [internal];\n /**\n * The fallback or receive function if any.\n */\n fallback;\n /**\n * Creates a new contract connected to %%target%% with the %%abi%% and\n * optionally connected to a %%runner%% to perform operations on behalf\n * of.\n */\n constructor(target, abi, runner, _deployTx) {\n assertArgument(typeof (target) === \"string\" || isAddressable(target), \"invalid value for Contract target\", \"target\", target);\n if (runner == null) {\n runner = null;\n }\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw makeError(\"an ENS name used for a contract target must be correctly configured\", \"UNCONFIGURED_NAME\", {\n value: target\n });\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (typeof (prop) === \"symbol\" || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n try {\n return this.getEvent(prop);\n }\n catch (error) {\n if (!isError(error, \"INVALID_ARGUMENT\") || error.argument !== \"key\") {\n throw error;\n }\n }\n return undefined;\n },\n has: (target, prop) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(prop) >= 0) {\n return Reflect.has(target, prop);\n }\n return Reflect.has(target, prop) || this.interface.hasEvent(String(prop));\n }\n });\n defineProperties(this, { filters });\n defineProperties(this, {\n fallback: ((iface.receive || iface.fallback) ? (buildWrappedFallback(this)) : null)\n });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"symbol\" || prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Undefined properties should return undefined\n try {\n return target.getFunction(prop);\n }\n catch (error) {\n if (!isError(error, \"INVALID_ARGUMENT\") || error.argument !== \"key\") {\n throw error;\n }\n }\n return undefined;\n },\n has: (target, prop) => {\n if (typeof (prop) === \"symbol\" || prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.has(target, prop);\n }\n return target.interface.hasFunction(prop);\n }\n });\n }\n /**\n * Return a new Contract instance with the same target and ABI, but\n * a different %%runner%%.\n */\n connect(runner) {\n return new BaseContract(this.target, this.interface, runner);\n }\n /**\n * Return a new Contract instance with the same ABI and runner, but\n * a different %%target%%.\n */\n attach(target) {\n return new BaseContract(target, this.interface, this.runner);\n }\n /**\n * Return the resolved address of this Contract.\n */\n async getAddress() { return await getInternal(this).addrPromise; }\n /**\n * Return the deployed bytecode or null if no bytecode is found.\n */\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n assert(provider, \"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", { operation: \"getDeployedCode\" });\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n /**\n * Resolve to this Contract once the bytecode has been deployed, or\n * resolve immediately if already deployed.\n */\n async waitForDeployment() {\n // We have the deployment transaction; just use that (throws if deployment fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n assert(provider != null, \"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", { operation: \"waitForDeployment\" });\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n /**\n * Return the transaction used to deploy this contract.\n *\n * This is only available if this instance was returned from a\n * [[ContractFactory]].\n */\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n /**\n * Return the function for a given name. This is useful when a contract\n * method name conflicts with a JavaScript name such as ``prototype`` or\n * when using a Contract programmatically.\n */\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n const func = buildWrappedMethod(this, key);\n return func;\n }\n /**\n * Return the event for a given name. This is useful when a contract\n * event name conflicts with a JavaScript name such as ``prototype`` or\n * when using a Contract programmatically.\n */\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return buildWrappedEvent(this, key);\n }\n /**\n * @_ignore:\n */\n async queryTransaction(hash) {\n throw new Error(\"@TODO\");\n }\n /*\n // @TODO: this is a non-backwards compatible change, but will be added\n // in v7 and in a potential SmartContract class in an upcoming\n // v6 release\n async getTransactionReceipt(hash: string): Promise<null | ContractTransactionReceipt> {\n const provider = getProvider(this.runner);\n assert(provider, \"contract runner does not have a provider\",\n \"UNSUPPORTED_OPERATION\", { operation: \"queryTransaction\" });\n\n const receipt = await provider.getTransactionReceipt(hash);\n if (receipt == null) { return null; }\n\n return new ContractTransactionReceipt(this.interface, provider, receipt);\n }\n */\n /**\n * Provide historic access to event data for %%event%% in the range\n * %%fromBlock%% (default: ``0``) to %%toBlock%% (default: ``\"latest\"``)\n * inclusive.\n */\n async queryFilter(event, fromBlock, toBlock) {\n if (fromBlock == null) {\n fromBlock = 0;\n }\n if (toBlock == null) {\n toBlock = \"latest\";\n }\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubInfo(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n assert(provider, \"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"queryFilter\" });\n return (await provider.getLogs(filter)).map((log) => {\n let foundFragment = fragment;\n if (foundFragment == null) {\n try {\n foundFragment = this.interface.getEvent(log.topics[0]);\n }\n catch (error) { }\n }\n if (foundFragment) {\n try {\n return new EventLog(log, this.interface, foundFragment);\n }\n catch (error) {\n return new UndecodedEventLog(log, error);\n }\n }\n return new Log(log, provider);\n });\n }\n /**\n * Add an event %%listener%% for the %%event%%.\n */\n async on(event, listener) {\n const sub = await getSub(this, \"on\", event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n /**\n * Add an event %%listener%% for the %%event%%, but remove the listener\n * after it is fired once.\n */\n async once(event, listener) {\n const sub = await getSub(this, \"once\", event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n /**\n * Emit an %%event%% calling all listeners with %%args%%.\n *\n * Resolves to ``true`` if any listeners were called.\n */\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n /**\n * Resolves to the number of listeners of %%event%% or the total number\n * of listeners if unspecified.\n */\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n /**\n * Resolves to the listeners subscribed to %%event%% or all listeners\n * if unspecified.\n */\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n /**\n * Remove the %%listener%% from the listeners for %%event%% or remove\n * all listeners if unspecified.\n */\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n /**\n * Remove all the listeners for %%event%% or remove all listeners if\n * unspecified.\n */\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n /**\n * Alias for [on].\n */\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n /**\n * Alias for [off].\n */\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n /**\n * Create a new Class for the %%abi%%.\n */\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n /**\n * Create a new BaseContract with a specified Interface.\n */\n static from(target, abi, runner) {\n if (runner == null) {\n runner = null;\n }\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\n/**\n * A [[BaseContract]] with no type guards on its methods or events.\n */\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map",null,null,null,null,null,null,null,null,null],"names":["BN_0","BN_1","passProperties","_guard","internal","PanicReasons","nameToAddress","interfaceAbis","products","nameToAbi","interfaceToAbi","AgentInfo","AgentSettings","AssetManagerSettings","AvailableAgentInfo","CollateralReservationInfo","CollateralType","ContractRegistry","EmergencyPause","FtsoV2Interface","IAddressValidity","IAddressValidityVerification","IAgentAlwaysAllowedMinters","IAgentOwnerRegistry","IAgentPing","IAssetManager","IAssetManagerController","IAssetManagerEvents","IBalanceDecreasingTransaction","IBalanceDecreasingTransactionVerification","ICChainStake","ICChainVotePower","IClaimSetupManager","ICollateralizable","IConfirmedBlockHeightExists","IConfirmedBlockHeightExistsVerification","ICoreVaultClient","ICoreVaultClientSettings","IDelegationAccount","IDiamondLoupe","IEVMTransaction","IEVMTransactionVerification","IEntityManager","IFAsset","IFastUpdateIncentiveManager","IFastUpdater","IFastUpdatesConfiguration","IFdcHub","IFdcInflationConfigurations","IFdcRequestFeeConfigurations","IFdcVerification","IFeeCalculator","IFlareAssetRegistry","IFlareContractRegistry","IFlareDaemonize","IFlareSystemsCalculator","IFlareSystemsManager","IFtso","IFtsoFeedDecimals","IFtsoFeedIdConverter","IFtsoFeedPublisher","IFtsoGenesis","IFtsoInflationConfigurations","IFtsoManager","IFtsoManagerGenesis","IFtsoRegistry","IFtsoRegistryGenesis","IFtsoRewardManager","IFtsoRewardOffersManager","IGenericRewardManager","IGovernanceSettings","IGovernanceVotePower","IGovernor","IIAddressUpdatable","IIAddressUpdater","IIClaimSetupManager","IICleanable","IICleanupBlockNumberManager","IICustomFeed","IIERC20WithMetadata","IIEntityManager","IIFastUpdaterView","IIFlareAssetRegistry","IIFlareAssetRegistryProvider","IIFlareSystemsCalculator","IIFlareSystemsManager","IIFtso","IIFtsoFeedPublisher","IIFtsoManager","IIFtsoManagerProxy","IIFtsoManagerV1","IIFtsoRegistry","IIFtsoRewardManager","IIGovernanceVotePower","IIGovernorProposer","IIInflationAllocation","IIInflationReceiver","IIInflationReceiverV1","IIInflationV1","IINodePossessionVerifier","IIPollingFoundation","IIPollingManagementGroup","IIPreInflationCalculation","IIPriceSubmitter","IIPublicKeyVerifier","IIRNat","IIRNatAccount","IIRandomProvider","IIRelay","IIRewardEpochSwitchoverTrigger","IIRewardManager","IISubmission","IISupply","IITokenPool","IIVPContract","IIVPToken","IIVoterRegistrationTrigger","IIVoterRegistry","IIVoterWhitelister","IIncreaseManager","IInflationGenesis","IJsonApi","IJsonApiVerification","IPayment","IPaymentVerification","IPollingFtso","IPollingManagementGroup","IPriceSubmitter","IRNat","IRNatAccount","IRandomProvider","IRedemptionTimeExtension","IReferencedPaymentNonexistence","IReferencedPaymentNonexistenceVerification","IRelay","IRewardManager","ISubmission","ITypeTemplate","ITypeTemplateVerification","IUpdateValidators","IVPContractEvents","IVPToken","IValidatorRewardOffersManager","IVoterPreRegistry","IVoterRegistry","IVoterWhitelister","IWNat","IWNatDelegationFee","IWeb2Json","IWeb2JsonVerification","ProtocolsV2Interface","RandomNumberV2Interface","RedemptionRequestInfo","RedemptionTicketInfo","RewardsV2Interface","TestFtsoV2Interface","IAddressBinder","IDistributionToDelegators","IICombinedNatBalance","IIGenericRewardManager","IIIncentivePoolAllocation","IIIncentivePoolPercentageProvider","IIIncentivePoolReceiver","IIIncentivePoolSharingPercentageProvider","IIPChainStakeMirrorVerifier","IPChainStakeMirror","IPChainStakeMirrorMultiSigVoting","IPChainStakeMirrorVerifier","IPChainVotePower","IValidatorRegistry","IIFtsoRegistryV1","ethers.Contract","nameToAbiFLR","nameToAbiSGB","nameToAbiCST","nameToAbiCST2","interfaceToAbiFLR","interfaceToAbiSGB","interfaceToAbiCST","interfaceToAbiCST2"],"mappings":"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CxC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,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AAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC;AACA;AACA;AAC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AC,IAAI,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5E,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,8BAA8B,CAAC,IAAI,CAAC;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,+CAA+C,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;AAC3J,QAAQ,OAAO,gCAAgC,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,CAAC;AACjC;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS;AACb;AACA;AACA;AACA,IAAI,KAAK;AACT;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK;AACT;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA,IAAI,KAAK;AACT;AACA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]}