From c3ee7c724af368d3db83e3946bfcfc393886a4da Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 6 Jan 2025 10:39:54 +0000 Subject: [PATCH 01/53] change test file extension to .test.ts to prevent jest No tests found error --- test/{blocklock.ts => blocklock.test.ts} | 0 yarn.lock | 2737 ++++++++++++++++++++++ 2 files changed, 2737 insertions(+) rename test/{blocklock.ts => blocklock.test.ts} (100%) create mode 100644 yarn.lock diff --git a/test/blocklock.ts b/test/blocklock.test.ts similarity index 100% rename from test/blocklock.ts rename to test/blocklock.test.ts diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..2362203 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2737 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/compat-data@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" + integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.26.0", "@babel/generator@^7.26.3", "@babel/generator@^7.7.2": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== + dependencies: + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== + dependencies: + "@babel/types" "^7.26.3" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9": + version "7.26.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" + integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.3" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.3.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" + integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@esbuild/aix-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" + integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== + +"@esbuild/android-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" + integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== + +"@esbuild/android-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" + integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== + +"@esbuild/android-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" + integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== + +"@esbuild/darwin-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" + integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== + +"@esbuild/darwin-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" + integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== + +"@esbuild/freebsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" + integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== + +"@esbuild/freebsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" + integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== + +"@esbuild/linux-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" + integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== + +"@esbuild/linux-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" + integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== + +"@esbuild/linux-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" + integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== + +"@esbuild/linux-loong64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" + integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== + +"@esbuild/linux-mips64el@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" + integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== + +"@esbuild/linux-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" + integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== + +"@esbuild/linux-riscv64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" + integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== + +"@esbuild/linux-s390x@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" + integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== + +"@esbuild/linux-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" + integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== + +"@esbuild/netbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" + integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== + +"@esbuild/netbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" + integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== + +"@esbuild/openbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" + integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== + +"@esbuild/openbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" + integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== + +"@esbuild/sunos-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" + integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== + +"@esbuild/win32-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" + integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== + +"@esbuild/win32-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" + integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== + +"@esbuild/win32-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" + integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== + +"@eslint-community/eslint-utils@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@^1.6.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.0.tgz#fe035a23959e6aeadf695851b51a87465b5ba8f7" + integrity sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ== + dependencies: + "@noble/hashes" "1.7.0" + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/hashes@1.7.0", "@noble/hashes@^1.5.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.0.tgz#5d9e33af2c7d04fee35de1519b80c958b2e35e39" + integrity sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + dependencies: + "@babel/types" "^7.20.7" + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.14": + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/node@*", "@types/node@^22.7.5": + version "22.10.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.5.tgz#95af89a3fb74a2bb41ef9927f206e6472026e48b" + integrity sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ== + dependencies: + undici-types "~6.20.0" + +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + +"@types/node@^20.2.5": + version "20.17.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.11.tgz#2c05215fc37316b1596df7fbdba52151eaf83c50" + integrity sha512-Ept5glCK35R8yeyIeYlRIZtX6SLRyqMhOFTgj5SOkMpLTdw3SEHI9fHx60xaUZ+V1aJxQJODE+7/j5ocZydYTg== + dependencies: + undici-types "~6.19.2" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz#2b1e1b791e21d5fc27ddc93884db066444f597b5" + integrity sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.19.0" + "@typescript-eslint/type-utils" "8.19.0" + "@typescript-eslint/utils" "8.19.0" + "@typescript-eslint/visitor-keys" "8.19.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.19.0.tgz#f1512e6e5c491b03aabb2718b95becde22b15292" + integrity sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw== + dependencies: + "@typescript-eslint/scope-manager" "8.19.0" + "@typescript-eslint/types" "8.19.0" + "@typescript-eslint/typescript-estree" "8.19.0" + "@typescript-eslint/visitor-keys" "8.19.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz#28fa413a334f70e8b506a968531e0a7c9c3076dc" + integrity sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA== + dependencies: + "@typescript-eslint/types" "8.19.0" + "@typescript-eslint/visitor-keys" "8.19.0" + +"@typescript-eslint/type-utils@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz#41abd7d2e4cf93b6854b1fe6cbf416fab5abf89f" + integrity sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg== + dependencies: + "@typescript-eslint/typescript-estree" "8.19.0" + "@typescript-eslint/utils" "8.19.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + +"@typescript-eslint/types@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.19.0.tgz#a190a25c5484a42b81eaad06989579fdeb478cbb" + integrity sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA== + +"@typescript-eslint/typescript-estree@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz#6b4f48f98ffad6597379951b115710f4d68c9ccb" + integrity sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw== + dependencies: + "@typescript-eslint/types" "8.19.0" + "@typescript-eslint/visitor-keys" "8.19.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.19.0.tgz#33824310e1fccc17f27fbd1030fd8bbd9a674684" + integrity sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.19.0" + "@typescript-eslint/types" "8.19.0" + "@typescript-eslint/typescript-estree" "8.19.0" + +"@typescript-eslint/visitor-keys@8.19.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz#dc313f735e64c4979c9073f51ffcefb6d9be5c77" + integrity sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w== + dependencies: + "@typescript-eslint/types" "8.19.0" + eslint-visitor-keys "^4.2.0" + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + +async@^3.2.3: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.0: + version "4.24.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2" + integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== + dependencies: + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001688: + version "1.0.30001690" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" + integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== + +chalk@^4.0.0, chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +dedent@^1.0.0: + version "1.5.3" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.5.73: + version "1.5.76" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d" + integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +esbuild@^0.24.0: + version "0.24.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" + integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.24.2" + "@esbuild/android-arm" "0.24.2" + "@esbuild/android-arm64" "0.24.2" + "@esbuild/android-x64" "0.24.2" + "@esbuild/darwin-arm64" "0.24.2" + "@esbuild/darwin-x64" "0.24.2" + "@esbuild/freebsd-arm64" "0.24.2" + "@esbuild/freebsd-x64" "0.24.2" + "@esbuild/linux-arm" "0.24.2" + "@esbuild/linux-arm64" "0.24.2" + "@esbuild/linux-ia32" "0.24.2" + "@esbuild/linux-loong64" "0.24.2" + "@esbuild/linux-mips64el" "0.24.2" + "@esbuild/linux-ppc64" "0.24.2" + "@esbuild/linux-riscv64" "0.24.2" + "@esbuild/linux-s390x" "0.24.2" + "@esbuild/linux-x64" "0.24.2" + "@esbuild/netbsd-arm64" "0.24.2" + "@esbuild/netbsd-x64" "0.24.2" + "@esbuild/openbsd-arm64" "0.24.2" + "@esbuild/openbsd-x64" "0.24.2" + "@esbuild/sunos-x64" "0.24.2" + "@esbuild/win32-arm64" "0.24.2" + "@esbuild/win32-ia32" "0.24.2" + "@esbuild/win32-x64" "0.24.2" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +ethers@^6.13.4: + version "6.13.5" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.5.tgz#8c1d6ac988ac08abc3c1d8fabbd4b8b602851ac4" + integrity sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastq@^1.6.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" + integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.1.1, make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +mcl-wasm@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-1.8.0.tgz#f9292c465a50d86016aa0054cb025a538d3183dd" + integrity sha512-j6kekpd/i6XLHKgUPLPOqts3EUIw+lOFPdyQ4cqepONZ2R/dtfc3+DnYMJXKXw4JF8c6hfcBZ04gbYWOXurv+Q== + dependencies: + "@types/node" "^20.2.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== + +pvtsutils@^1.3.2: + version "1.3.6" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.6.tgz#ec46e34db7422b9e4fdc5490578c1883657d6001" + integrity sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg== + dependencies: + tslib "^2.8.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== + +resolve@^1.20.0: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-api-utils@^1.3.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== + +ts-jest@^29.2.5: + version "29.2.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" + integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.6.3" + yargs-parser "^21.1.1" + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +tslib@^2.4.0, tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript-eslint@^8.11.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.19.0.tgz#e4ff06b19f2f9807a2c26147a0199a109944d9e0" + integrity sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ== + dependencies: + "@typescript-eslint/eslint-plugin" "8.19.0" + "@typescript-eslint/parser" "8.19.0" + "@typescript-eslint/utils" "8.19.0" + +typescript@^5.6.3: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 170036cd85e16fed646b5536fd0b79ce9f3c4a94 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 6 Jan 2025 12:25:10 +0000 Subject: [PATCH 02/53] add ganache integration for local blockchain integration tests and sample ganache test --- jest.config.mjs | 1 + package.json | 1 + test/ganache.test.ts | 48 +++++++ tsconfig.json | 2 +- yarn.lock | 304 ++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 353 insertions(+), 3 deletions(-) create mode 100644 test/ganache.test.ts diff --git a/jest.config.mjs b/jest.config.mjs index 54adece..a471030 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -7,5 +7,6 @@ export default { useESM: true, }], }, + testTimeout: 10000, }; diff --git a/package.json b/package.json index a99148b..e8e4f1d 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@types/jest": "^29.5.14", "@types/node": "^22.7.5", "esbuild": "^0.24.0", + "ganache": "^7.9.2", "jest": "^29.7.0", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", diff --git a/test/ganache.test.ts b/test/ganache.test.ts new file mode 100644 index 0000000..6eef5b6 --- /dev/null +++ b/test/ganache.test.ts @@ -0,0 +1,48 @@ +import Ganache from "ganache"; +import { ZeroAddress, ethers } from "ethers"; +import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from "@jest/globals"; + +let server: any; +let provider: ethers.JsonRpcProvider; +let wallet: ethers.Signer; +let accounts: ethers.Signer[]; + +describe("Blockchain Integration Tests with Ganache", () => { + beforeAll(async () => { + // Start Ganache server with a mnemonic + server = Ganache.server({ + wallet: { + totalAccounts: 10, + mnemonic: "test test test test test test test test test test test junk", + }, + chain: { + chainId: 1337, + }, + }); + + await server.listen(8545); + + // Connect to Ganache with Ethers.js + provider = new ethers.JsonRpcProvider("http://127.0.0.1:8545"); + + // Get the list of accounts from Ganache + accounts = await provider.listAccounts(); + + // Create a wallet using the first account + wallet = accounts[0]; + }); + + afterAll(async () => { + // Ensure the Ganache server is stopped after all tests + await server.close(); + }); + + it("should get network information from ganache", async () => { + const network = await provider.getNetwork(); + expect(network.chainId).toBe(1337n); // Default Ganache chainId + }); + + it("should get valid address for signer", async () => { + expect(await wallet.getAddress()).not.toBe(ZeroAddress); // Default Ganache chainId + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 44617b4..34abe47 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,7 +23,7 @@ ] }, "include": [ - "src" + "src", ], "exclude": ["src/generated/**/*"], "compileOnSave": true diff --git a/yarn.lock b/yarn.lock index 2362203..7ea3246 100644 --- a/yarn.lock +++ b/yarn.lock @@ -734,6 +734,23 @@ dependencies: "@sinonjs/commons" "^3.0.0" +"@trufflesuite/bigint-buffer@1.1.10": + version "1.1.10" + resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" + integrity sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw== + dependencies: + node-gyp-build "4.4.0" + +"@trufflesuite/uws-js-unofficial@20.30.0-unofficial.0": + version "20.30.0-unofficial.0" + resolved "https://registry.yarnpkg.com/@trufflesuite/uws-js-unofficial/-/uws-js-unofficial-20.30.0-unofficial.0.tgz#2fbc2f8ef7e82fbeea6abaf7e8a9d42a02b479d3" + integrity sha512-r5X0aOQcuT6pLwTRLD+mPnAM/nlKtvIK4Z+My++A8tTOR0qTjNRx8UB8jzRj3D+p9PMAp5LnpCUUGmz7/TppwA== + dependencies: + ws "8.13.0" + optionalDependencies: + bufferutil "4.0.7" + utf-8-validate "6.0.3" + "@tsconfig/node10@^1.0.7": version "1.0.11" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" @@ -787,6 +804,13 @@ dependencies: "@babel/types" "^7.20.7" +"@types/bn.js@^5.1.0": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== + dependencies: + "@types/node" "*" + "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -821,6 +845,11 @@ expect "^29.0.0" pretty-format "^29.0.0" +"@types/lru-cache@5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + "@types/node@*", "@types/node@^22.7.5": version "22.10.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.5.tgz#95af89a3fb74a2bb41ef9927f206e6472026e48b" @@ -842,6 +871,11 @@ dependencies: undici-types "~6.19.2" +"@types/seedrandom@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" + integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -940,6 +974,31 @@ "@typescript-eslint/types" "8.19.0" eslint-visitor-keys "^4.2.0" +abstract-level@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +abstract-leveldown@7.2.0, abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== + dependencies: + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" + acorn-walk@^8.1.1: version "8.3.4" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" @@ -1010,6 +1069,20 @@ asn1js@^3.0.5: pvutils "^1.1.3" tslib "^2.4.0" +async-eventemitter@0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async@^2.4.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + async@^3.2.3: version "3.2.6" resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" @@ -1088,6 +1161,11 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bn.js@^4.11.9: + version "4.12.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.1.tgz#215741fe3c9dba2d7e12c001d0cfdbae43975ba7" + integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1110,6 +1188,11 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + browserslist@^4.24.0: version "4.24.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2" @@ -1147,6 +1230,20 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +bufferutil@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" + integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== + dependencies: + node-gyp-build "^4.3.0" + +bufferutil@4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1167,6 +1264,11 @@ caniuse-lite@^1.0.30001688: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== +catering@^2.0.0, catering@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + chalk@^4.0.0, chalk@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -1302,6 +1404,24 @@ electron-to-chromium@^1.5.73: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d" integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== +elliptic@^6.5.4: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" + integrity sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ== + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -1486,6 +1606,27 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +ganache@^7.9.2: + version "7.9.2" + resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.9.2.tgz#77f506ad2735dd9109696ffa1834a9dd2f806449" + integrity sha512-7gsVVDpO9AhrFyDMWWl7SpMsPpqGcnAzjxz3k32LheIPNd64p2XsY9GYRdhWmKuryb60W1iaWPZWDkFKlbRWHA== + dependencies: + "@trufflesuite/bigint-buffer" "1.1.10" + "@trufflesuite/uws-js-unofficial" "20.30.0-unofficial.0" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "5.1.1" + "@types/seedrandom" "3.0.1" + abstract-level "1.0.3" + abstract-leveldown "7.2.0" + async-eventemitter "0.2.4" + emittery "0.10.0" + keccak "3.0.2" + leveldown "6.1.0" + secp256k1 "4.0.3" + optionalDependencies: + bufferutil "4.0.5" + utf-8-validate "5.0.7" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -1545,6 +1686,14 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -1552,6 +1701,15 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -1593,7 +1751,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1603,6 +1761,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-core-module@^2.16.0: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" @@ -2096,11 +2259,54 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +keccak@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== + dependencies: + catering "^2.1.0" + +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +leveldown@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee" + integrity sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w== + dependencies: + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -2123,6 +2329,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== +lodash@^4.17.14: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -2179,6 +2390,16 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -2200,16 +2421,41 @@ minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" +module-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-gyp-build@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -2358,7 +2604,7 @@ pvutils@^1.1.3: resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== -queue-microtask@^1.2.2: +queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== @@ -2368,6 +2614,15 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -2411,6 +2666,20 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +secp256k1@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -2490,6 +2759,13 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -2643,6 +2919,25 @@ update-browserslist-db@^1.1.1: escalade "^3.2.0" picocolors "^1.1.0" +utf-8-validate@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" + integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== + dependencies: + node-gyp-build "^4.3.0" + +utf-8-validate@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" + integrity sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA== + dependencies: + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -2693,6 +2988,11 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" +ws@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + ws@8.17.1: version "8.17.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" From 0aa5e958d4a6a25f18d157fd12a919df7d28c8b4 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 6 Jan 2025 12:26:51 +0000 Subject: [PATCH 03/53] fix linting --- jest.config.mjs | 1 - package.json | 1 + test/ganache.test.ts | 2 +- yarn.lock | 382 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 375 insertions(+), 11 deletions(-) diff --git a/jest.config.mjs b/jest.config.mjs index a471030..2a05e60 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -9,4 +9,3 @@ export default { }, testTimeout: 10000, }; - diff --git a/package.json b/package.json index e8e4f1d..80a5e89 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@types/jest": "^29.5.14", "@types/node": "^22.7.5", "esbuild": "^0.24.0", + "eslint": "^9.17.0", "ganache": "^7.9.2", "jest": "^29.7.0", "ts-jest": "^29.2.5", diff --git a/test/ganache.test.ts b/test/ganache.test.ts index 6eef5b6..dd21f44 100644 --- a/test/ganache.test.ts +++ b/test/ganache.test.ts @@ -1,6 +1,6 @@ import Ganache from "ganache"; import { ZeroAddress, ethers } from "ethers"; -import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from "@jest/globals"; +import { describe, it, expect, beforeAll, afterAll } from "@jest/globals"; let server: any; let provider: ethers.JsonRpcProvider; diff --git a/yarn.lock b/yarn.lock index 7ea3246..91c9946 100644 --- a/yarn.lock +++ b/yarn.lock @@ -410,18 +410,94 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== -"@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== +"@eslint/config-array@^0.19.0": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" + integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== + dependencies: + "@eslint/object-schema" "^2.1.5" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.9.0": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" + integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@9.17.0": + version "9.17.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec" + integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w== + +"@eslint/object-schema@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" + integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== + +"@eslint/plugin-kit@^0.2.3": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" + integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== + dependencies: + levn "^0.4.1" + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -811,6 +887,11 @@ dependencies: "@types/node" "*" +"@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -845,6 +926,11 @@ expect "^29.0.0" pretty-format "^29.0.0" +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/lru-cache@5.1.1": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" @@ -999,6 +1085,11 @@ abstract-leveldown@7.2.0, abstract-leveldown@^7.2.0: level-supports "^2.0.1" queue-microtask "^1.2.3" +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + acorn-walk@^8.1.1: version "8.3.4" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" @@ -1006,7 +1097,7 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^8.11.0, acorn@^8.4.1: +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1: version "8.14.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -1016,6 +1107,16 @@ aes-js@4.0.0-beta.5: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1060,6 +1161,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + asn1js@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" @@ -1351,7 +1457,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^7.0.3: +cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -1360,7 +1466,7 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== @@ -1372,6 +1478,11 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + deepmerge@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -1480,6 +1591,19 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" @@ -1490,11 +1614,84 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== +eslint@^9.17.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c" + integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.9.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.17.0" + "@eslint/plugin-kit" "^0.2.3" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.6" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + json-stable-stringify-without-jsonify "^1.0.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== + dependencies: + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + ethers@^6.13.4: version "6.13.5" resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.5.tgz#8c1d6ac988ac08abc3c1d8fabbd4b8b602851ac4" @@ -1539,6 +1736,11 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-glob@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" @@ -1550,11 +1752,16 @@ fast-glob@^3.3.2: merge2 "^1.3.0" micromatch "^4.0.8" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + fastq@^1.6.0: version "1.18.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" @@ -1569,6 +1776,13 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -1591,6 +1805,27 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + +flatted@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1654,6 +1889,13 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -1671,6 +1913,11 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -1725,11 +1972,19 @@ ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.3.1: +ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^3.0.2: version "3.2.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" @@ -1788,7 +2043,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -2244,16 +2499,38 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -2268,6 +2545,13 @@ keccak@3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -2312,6 +2596,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -2324,11 +2616,23 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash@^4.17.14: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -2492,6 +2796,18 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -2499,7 +2815,7 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -2513,11 +2829,25 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -2570,6 +2900,11 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -2587,6 +2922,11 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + pure-rand@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" @@ -2635,6 +2975,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -2877,6 +3222,13 @@ tslib@^2.4.0, tslib@^2.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -2919,6 +3271,13 @@ update-browserslist-db@^1.1.1: escalade "^3.2.0" picocolors "^1.1.0" +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + utf-8-validate@5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" @@ -2966,6 +3325,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" From e61d5e59bc9fdb6723fe3581a03045047d7678a6 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 6 Jan 2025 12:29:38 +0000 Subject: [PATCH 04/53] rename ganache test to integration test --- test/{ganache.test.ts => integration.test.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{ganache.test.ts => integration.test.ts} (100%) diff --git a/test/ganache.test.ts b/test/integration.test.ts similarity index 100% rename from test/ganache.test.ts rename to test/integration.test.ts From 47258ba720c8e841fd21c5e96d39f104dafb920b Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 15 Jan 2025 16:38:13 +0000 Subject: [PATCH 05/53] remove unused comment --- test/integration.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration.test.ts b/test/integration.test.ts index dd21f44..ac5dc5d 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -43,6 +43,6 @@ describe("Blockchain Integration Tests with Ganache", () => { }); it("should get valid address for signer", async () => { - expect(await wallet.getAddress()).not.toBe(ZeroAddress); // Default Ganache chainId + expect(await wallet.getAddress()).not.toBe(ZeroAddress); }); }); From 82029f611424b14d6b0a62bcf9defd4d04df51da Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Thu, 16 Jan 2025 20:51:30 +0000 Subject: [PATCH 06/53] add support for data encoding --- src/index.ts | 2 + src/solidity-encoder-decoder.ts | 104 ++++++++++++++++++++++++++ test/solidity-encoder-decoder.test.ts | 104 ++++++++++++++++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 src/solidity-encoder-decoder.ts create mode 100644 test/solidity-encoder-decoder.test.ts diff --git a/src/index.ts b/src/index.ts index 1b00b88..1ff8de2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,4 @@ export {Buffer} from "buffer" export * from "./blocklock" +export * from "./ethers-utils" +export * from "./solidity-encoder-decoder" \ No newline at end of file diff --git a/src/solidity-encoder-decoder.ts b/src/solidity-encoder-decoder.ts new file mode 100644 index 0000000..c63e4c0 --- /dev/null +++ b/src/solidity-encoder-decoder.ts @@ -0,0 +1,104 @@ +import { AbiCoder } from "ethers"; + +export class SolidityEncoderDecoder { + private abiCoder: AbiCoder; + + constructor() { + this.abiCoder = AbiCoder.defaultAbiCoder(); + } + + // ------------------- ENCODERS ------------------- + + encodeUint256(value: number | string | bigint): string { + return this.abiCoder.encode(["uint256"], [value]); + } + + encodeInt256(value: number | string | bigint): string { + return this.abiCoder.encode(["int256"], [value]); + } + + encodeAddress(address: string): string { + return this.abiCoder.encode(["address"], [address]); + } + + encodeString(value: string): string { + return this.abiCoder.encode(["string"], [value]); + } + + encodeBool(value: boolean): string { + return this.abiCoder.encode(["bool"], [value]); + } + + encodeBytes32(value: string): string { + if (!/^0x[0-9a-fA-F]{64}$/.test(value)) { + throw new Error("Invalid bytes32 format. Must be a 32-byte hex string."); + } + return this.abiCoder.encode(["bytes32"], [value]); + } + + encodeBytes(value: Uint8Array | string): string { + return this.abiCoder.encode(["bytes"], [value]); + } + + encodeUint256Array(values: (number | string | bigint)[]): string { + return this.abiCoder.encode(["uint256[]"], [values]); + } + + encodeAddressArray(addresses: string[]): string { + return this.abiCoder.encode(["address[]"], [addresses]); + } + + encodeTuple(types: string[], values: any[]): string { + return this.abiCoder.encode([`tuple(${types.join(",")})`], [values]); + } + + encodeStruct(structDefinition: string[], structValues: any[]): string { + return this.encodeTuple(structDefinition, structValues); + } + + // ------------------- DECODERS ------------------- + + decodeUint256(data: string): bigint { + return this.abiCoder.decode(["uint256"], data)[0]; + } + + decodeInt256(data: string): bigint { + return this.abiCoder.decode(["int256"], data)[0]; + } + + decodeAddress(data: string): string { + return this.abiCoder.decode(["address"], data)[0]; + } + + decodeString(data: string): string { + return this.abiCoder.decode(["string"], data)[0]; + } + + decodeBool(data: string): boolean { + return this.abiCoder.decode(["bool"], data)[0]; + } + + decodeBytes32(data: string): string { + return this.abiCoder.decode(["bytes32"], data)[0]; + } + + decodeBytes(data: string): string { + return this.abiCoder.decode(["bytes"], data)[0]; + } + + decodeUint256Array(data: string): bigint[] { + return this.abiCoder.decode(["uint256[]"], data)[0]; + } + + decodeAddressArray(data: string): string[] { + return this.abiCoder.decode(["address[]"], data)[0]; + } + + decodeTuple(types: string[], data: string): any[] { + return this.abiCoder.decode([`tuple(${types.join(",")})`], data)[0]; + } + + decodeStruct(structDefinition: string[], data: string): any[] { + return this.decodeTuple(structDefinition, data); + } +} diff --git a/test/solidity-encoder-decoder.test.ts b/test/solidity-encoder-decoder.test.ts new file mode 100644 index 0000000..b3a7cad --- /dev/null +++ b/test/solidity-encoder-decoder.test.ts @@ -0,0 +1,104 @@ +import {describe, it, expect, beforeAll} from "@jest/globals" +import { ethers } from "ethers"; +import { SolidityEncoderDecoder } from "../src"; + +describe("SolidityEncoderDecoder", () => { + let encoderDecoder: SolidityEncoderDecoder; + + beforeAll(() => { + encoderDecoder = new SolidityEncoderDecoder(); + }); + + // ------------------- Uint256 ------------------- + it("should encode and decode uint256", () => { + const value = 12345; + const encoded = encoderDecoder.encodeUint256(value); + const decoded = encoderDecoder.decodeUint256(encoded); + expect(decoded).toBe(BigInt(value)); + }); + + // ------------------- Int256 ------------------- + it("should encode and decode int256", () => { + const value = -12345; + const encoded = encoderDecoder.encodeInt256(value); + const decoded = encoderDecoder.decodeInt256(encoded); + expect(decoded).toBe(BigInt(value)); + }); + + // ------------------- Address ------------------- + it("should encode and decode address", () => { + const address = "0x1234567890AbcdEF1234567890aBcdef12345678"; + const encoded = encoderDecoder.encodeAddress(address); + const decoded = encoderDecoder.decodeAddress(encoded); + expect(decoded).toBe(address); + }); + + // ------------------- String ------------------- + it("should encode and decode string", () => { + const value = "Hello, Ethereum!"; + const encoded = encoderDecoder.encodeString(value); + const decoded = encoderDecoder.decodeString(encoded); + expect(decoded).toBe(value); + }); + + // ------------------- Bool ------------------- + it("should encode and decode boolean", () => { + const value = true; + const encoded = encoderDecoder.encodeBool(value); + const decoded = encoderDecoder.decodeBool(encoded); + expect(decoded).toBe(value); + }); + + // ------------------- Bytes32 ------------------- + it("should encode and decode bytes32", () => { + const value = "0x" + "12".repeat(32); + const encoded = encoderDecoder.encodeBytes32(value); + const decoded = encoderDecoder.decodeBytes32(encoded); + expect(decoded).toBe(value); + }); + + // ------------------- Bytes ------------------- + it("should encode and decode bytes", () => { + const value = "0x12345678"; + const encoded = encoderDecoder.encodeBytes(value); + const decoded = encoderDecoder.decodeBytes(encoded); + expect(decoded).toBe(value); + }); + + // ------------------- Uint256 Array ------------------- + it("should encode and decode uint256[]", () => { + const values = [1, 2, 3, 4, 5]; + const encoded = encoderDecoder.encodeUint256Array(values); + const decoded = encoderDecoder.decodeUint256Array(encoded); + expect(decoded).toEqual(values.map(BigInt)); + }); + + // ------------------- Address Array ------------------- + it("should encode and decode address[]", () => { + const addresses = [ + "0x1234567890abcdef1234567890abcdef12345678", + "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd", + ]; + const encoded = encoderDecoder.encodeAddressArray(addresses); + const decoded = encoderDecoder.decodeAddressArray(encoded); + expect(decoded[0].toLowerCase()).toEqual(addresses[0].toLowerCase()); + expect(decoded[1].toLowerCase()).toEqual(addresses[1].toLowerCase()); + }); + + // ------------------- Struct (Tuple) ------------------- + it("should encode and decode struct (tuple)", () => { + const structDefinition = ["uint256", "address", "string"]; + const structValues = [ + 42, + "0x1234567890abcdef1234567890abcdef12345678", + "Hello Struct", + ]; + const encoded = encoderDecoder.encodeStruct(structDefinition, structValues); + const decoded = encoderDecoder.decodeStruct(structDefinition, encoded); + expect(decoded[0]).toEqual(BigInt(structValues[0])); + + const checksumAddress = ethers.getAddress("0x1234567890abcdef1234567890abcdef12345678"); + expect(decoded[1]).toEqual(checksumAddress); + expect(decoded[2]).toEqual(structValues[2]); + }); +}); From fdeaf6a1d47c8246f2be81ff9d793024129e7acf Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 17 Jan 2025 14:52:18 +0000 Subject: [PATCH 07/53] restructure contracts folder --- contracts/src/AbstractBlocklockReceiver.sol | 2 +- contracts/src/AbstractDecryptionReceiver.sol | 2 +- contracts/src/Blocklock.sol | 6 +++--- contracts/src/BlocklockSignatureScheme.sol | 4 ++-- contracts/src/{ => interfaces}/IBlocklockProvider.sol | 2 +- contracts/src/{ => interfaces}/IBlocklockReceiver.sol | 0 contracts/src/{ => interfaces}/IDecryptionProvider.sol | 2 +- contracts/src/{ => interfaces}/IDecryptionReceiver.sol | 0 contracts/src/{ => interfaces}/ISignatureScheme.sol | 0 contracts/src/{ => libraries}/BLS.sol | 0 contracts/src/{ => libraries}/ModExp.sol | 0 contracts/src/{ => libraries}/TypesLib.sol | 0 12 files changed, 9 insertions(+), 9 deletions(-) rename contracts/src/{ => interfaces}/IBlocklockProvider.sol (96%) rename contracts/src/{ => interfaces}/IBlocklockReceiver.sol (100%) rename contracts/src/{ => interfaces}/IDecryptionProvider.sol (98%) rename contracts/src/{ => interfaces}/IDecryptionReceiver.sol (100%) rename contracts/src/{ => interfaces}/ISignatureScheme.sol (100%) rename contracts/src/{ => libraries}/BLS.sol (100%) rename contracts/src/{ => libraries}/ModExp.sol (100%) rename contracts/src/{ => libraries}/TypesLib.sol (100%) diff --git a/contracts/src/AbstractBlocklockReceiver.sol b/contracts/src/AbstractBlocklockReceiver.sol index 914c40a..e9eb4a2 100644 --- a/contracts/src/AbstractBlocklockReceiver.sol +++ b/contracts/src/AbstractBlocklockReceiver.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import {IBlocklockReceiver} from "./IBlocklockReceiver.sol"; +import {IBlocklockReceiver} from "./interfaces/IBlocklockReceiver.sol"; abstract contract AbstractBlocklockReceiver is IBlocklockReceiver { address public immutable DECRYPTION_PROVIDER = 0x11045878Ed62Ec3aCC91cE36A46F4EF61d4616e1; diff --git a/contracts/src/AbstractDecryptionReceiver.sol b/contracts/src/AbstractDecryptionReceiver.sol index 4b10771..790491a 100644 --- a/contracts/src/AbstractDecryptionReceiver.sol +++ b/contracts/src/AbstractDecryptionReceiver.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import {IDecryptionReceiver} from "./IDecryptionReceiver.sol"; +import {IDecryptionReceiver} from "./interfaces/IDecryptionReceiver.sol"; abstract contract AbstractDecryptionReceiver is IDecryptionReceiver { address public immutable DECRYPTION_PROVIDER = 0xfD1Bf3fCBf2e250AbfF4a61670DFa3ce740453e5; diff --git a/contracts/src/Blocklock.sol b/contracts/src/Blocklock.sol index 00f58fa..23e9704 100644 --- a/contracts/src/Blocklock.sol +++ b/contracts/src/Blocklock.sol @@ -1,8 +1,8 @@ pragma solidity 0.8.24; -import "./IBlocklockProvider.sol"; -import "./ISignatureScheme.sol"; -import "./IDecryptionProvider.sol"; +import "./interfaces/IBlocklockProvider.sol"; +import "./interfaces/ISignatureScheme.sol"; +import "./interfaces/IDecryptionProvider.sol"; library Blocklock { function contractAddress() public pure returns (address){ diff --git a/contracts/src/BlocklockSignatureScheme.sol b/contracts/src/BlocklockSignatureScheme.sol index 71f0872..933ff6d 100644 --- a/contracts/src/BlocklockSignatureScheme.sol +++ b/contracts/src/BlocklockSignatureScheme.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import {BLS} from "./BLS.sol"; -import {ISignatureScheme} from "./ISignatureScheme.sol"; +import {BLS} from "./libraries/BLS.sol"; +import {ISignatureScheme} from "./interfaces/ISignatureScheme.sol"; contract BlocklockSignatureScheme is ISignatureScheme { using BLS for bytes; diff --git a/contracts/src/IBlocklockProvider.sol b/contracts/src/interfaces/IBlocklockProvider.sol similarity index 96% rename from contracts/src/IBlocklockProvider.sol rename to contracts/src/interfaces/IBlocklockProvider.sol index aca2234..f339365 100644 --- a/contracts/src/IBlocklockProvider.sol +++ b/contracts/src/interfaces/IBlocklockProvider.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import "./TypesLib.sol"; +import {TypesLib} from "../libraries/TypesLib.sol"; interface IBlocklockProvider { /** diff --git a/contracts/src/IBlocklockReceiver.sol b/contracts/src/interfaces/IBlocklockReceiver.sol similarity index 100% rename from contracts/src/IBlocklockReceiver.sol rename to contracts/src/interfaces/IBlocklockReceiver.sol diff --git a/contracts/src/IDecryptionProvider.sol b/contracts/src/interfaces/IDecryptionProvider.sol similarity index 98% rename from contracts/src/IDecryptionProvider.sol rename to contracts/src/interfaces/IDecryptionProvider.sol index c5924eb..6c1b728 100644 --- a/contracts/src/IDecryptionProvider.sol +++ b/contracts/src/interfaces/IDecryptionProvider.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import {TypesLib} from "./TypesLib.sol"; +import {TypesLib} from "../libraries/TypesLib.sol"; /// @notice Smart contract that stores and conditionally decrypts encrypted messages / data interface IDecryptionProvider { diff --git a/contracts/src/IDecryptionReceiver.sol b/contracts/src/interfaces/IDecryptionReceiver.sol similarity index 100% rename from contracts/src/IDecryptionReceiver.sol rename to contracts/src/interfaces/IDecryptionReceiver.sol diff --git a/contracts/src/ISignatureScheme.sol b/contracts/src/interfaces/ISignatureScheme.sol similarity index 100% rename from contracts/src/ISignatureScheme.sol rename to contracts/src/interfaces/ISignatureScheme.sol diff --git a/contracts/src/BLS.sol b/contracts/src/libraries/BLS.sol similarity index 100% rename from contracts/src/BLS.sol rename to contracts/src/libraries/BLS.sol diff --git a/contracts/src/ModExp.sol b/contracts/src/libraries/ModExp.sol similarity index 100% rename from contracts/src/ModExp.sol rename to contracts/src/libraries/ModExp.sol diff --git a/contracts/src/TypesLib.sol b/contracts/src/libraries/TypesLib.sol similarity index 100% rename from contracts/src/TypesLib.sol rename to contracts/src/libraries/TypesLib.sol From d4203152ec4b84689a2441ba289a8f41c8ee4805 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 17 Jan 2025 15:34:49 +0000 Subject: [PATCH 08/53] update solidity contracts and blocklock js constructor --- .gitmodules | 3 + contracts/lib/openzeppelin-contracts | 1 + contracts/src/AbstractBlocklockReceiver.sol | 15 +- contracts/src/AbstractDecryptionReceiver.sol | 15 -- contracts/src/Blocklock.sol | 63 ------- contracts/src/Multicall.sol | 27 +++ contracts/src/blocklock/BlocklockSender.sol | 157 ++++++++++++++++++ .../BlocklockSignatureScheme.sol | 4 +- .../DecryptionReceiverBase.sol | 56 +++++++ .../decryption-requests/DecryptionSender.sol | 155 +++++++++++++++++ contracts/src/deployer/Deployer.sol | 42 +++++ .../src/interfaces/IBlocklockReceiver.sol | 2 +- ...klockProvider.sol => IBlocklockSender.sol} | 22 +-- .../src/interfaces/IDecryptionReceiver.sol | 8 +- ...tionProvider.sol => IDecryptionSender.sol} | 8 +- contracts/src/interfaces/IMulticall.sol | 12 ++ .../src/interfaces/ISignatureReceiver.sol | 14 ++ .../ISignatureSchemeAddressProvider.sol | 30 ++++ contracts/src/interfaces/ISignatureSender.sol | 60 +++++++ contracts/src/libraries/BytesLib.sol | 56 +++++++ contracts/src/libraries/TypesLib.sol | 9 + .../SignatureReceiverBase.sol | 51 ++++++ .../signature-requests/SignatureSender.sol | 148 +++++++++++++++++ .../SignatureSchemeAddressProvider.sol | 51 ++++++ src/blocklock.ts | 3 +- 25 files changed, 906 insertions(+), 106 deletions(-) create mode 160000 contracts/lib/openzeppelin-contracts delete mode 100644 contracts/src/AbstractDecryptionReceiver.sol delete mode 100644 contracts/src/Blocklock.sol create mode 100644 contracts/src/Multicall.sol create mode 100644 contracts/src/blocklock/BlocklockSender.sol rename contracts/src/{ => blocklock}/BlocklockSignatureScheme.sol (93%) create mode 100644 contracts/src/decryption-requests/DecryptionReceiverBase.sol create mode 100644 contracts/src/decryption-requests/DecryptionSender.sol create mode 100644 contracts/src/deployer/Deployer.sol rename contracts/src/interfaces/{IBlocklockProvider.sol => IBlocklockSender.sol} (69%) rename contracts/src/interfaces/{IDecryptionProvider.sol => IDecryptionSender.sol} (96%) create mode 100644 contracts/src/interfaces/IMulticall.sol create mode 100644 contracts/src/interfaces/ISignatureReceiver.sol create mode 100644 contracts/src/interfaces/ISignatureSchemeAddressProvider.sol create mode 100644 contracts/src/interfaces/ISignatureSender.sol create mode 100644 contracts/src/libraries/BytesLib.sol create mode 100644 contracts/src/signature-requests/SignatureReceiverBase.sol create mode 100644 contracts/src/signature-requests/SignatureSender.sol create mode 100644 contracts/src/signature-schemes/SignatureSchemeAddressProvider.sol diff --git a/.gitmodules b/.gitmodules index c65a596..5c7d5d6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "contracts/lib/forge-std"] path = contracts/lib/forge-std url = https://github.com/foundry-rs/forge-std +[submodule "contracts/lib/openzeppelin-contracts"] + path = contracts/lib/openzeppelin-contracts + url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/contracts/lib/openzeppelin-contracts b/contracts/lib/openzeppelin-contracts new file mode 160000 index 0000000..acd4ff7 --- /dev/null +++ b/contracts/lib/openzeppelin-contracts @@ -0,0 +1 @@ +Subproject commit acd4ff74de833399287ed6b31b4debf6b2b35527 diff --git a/contracts/src/AbstractBlocklockReceiver.sol b/contracts/src/AbstractBlocklockReceiver.sol index e9eb4a2..03a63aa 100644 --- a/contracts/src/AbstractBlocklockReceiver.sol +++ b/contracts/src/AbstractBlocklockReceiver.sol @@ -2,14 +2,19 @@ pragma solidity 0.8.24; import {IBlocklockReceiver} from "./interfaces/IBlocklockReceiver.sol"; +import {IBlocklockSender} from "./interfaces/IBlocklockSender.sol"; abstract contract AbstractBlocklockReceiver is IBlocklockReceiver { - address public immutable DECRYPTION_PROVIDER = 0x11045878Ed62Ec3aCC91cE36A46F4EF61d4616e1; + IBlocklockSender public blocklock; - error NotAuthorizedDecryptionProvider(); - - modifier onlyDecryptionProvider(){ - if (msg.sender != DECRYPTION_PROVIDER) revert NotAuthorizedDecryptionProvider(); + modifier onlyBlocklockContract() { + require(msg.sender == address(blocklock), "Only timelock contract can call this."); _; } + + constructor(address blocklockSender) { + blocklock = IBlocklockSender(blocklockSender); + } + + function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external onlyBlocklockContract {} } diff --git a/contracts/src/AbstractDecryptionReceiver.sol b/contracts/src/AbstractDecryptionReceiver.sol deleted file mode 100644 index 790491a..0000000 --- a/contracts/src/AbstractDecryptionReceiver.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import {IDecryptionReceiver} from "./interfaces/IDecryptionReceiver.sol"; - -abstract contract AbstractDecryptionReceiver is IDecryptionReceiver { - address public immutable DECRYPTION_PROVIDER = 0xfD1Bf3fCBf2e250AbfF4a61670DFa3ce740453e5; - - error NotAuthorizedDecryptionProvider(); - - modifier onlyDecryptionProvider(){ - if (msg.sender != DECRYPTION_PROVIDER) revert NotAuthorizedDecryptionProvider(); - _; - } -} diff --git a/contracts/src/Blocklock.sol b/contracts/src/Blocklock.sol deleted file mode 100644 index 23e9704..0000000 --- a/contracts/src/Blocklock.sol +++ /dev/null @@ -1,63 +0,0 @@ -pragma solidity 0.8.24; - -import "./interfaces/IBlocklockProvider.sol"; -import "./interfaces/ISignatureScheme.sol"; -import "./interfaces/IDecryptionProvider.sol"; - -library Blocklock { - function contractAddress() public pure returns (address){ - return 0xfD1Bf3fCBf2e250AbfF4a61670DFa3ce740453e5; - } - - function signatureSchemeAddress() public pure returns (address) { - return 0x4fbFd8851935f0e3D2483c850C32b20499A9b755; - } - - function decryptionSenderAddress() public pure returns (address) { - return 0xaDE54E76eD6118F3d5b6905f63F6c49d1BFfb904; - } - - /** - * @notice Requests the generation of a blocklock decryption key at a specific blockHeight. - * @dev Initiates a blocklock decryption key request. - * The blocklock decryption key will be generated once the chain reaches the specified `blockHeight`. - * @return requestID The unique identifier assigned to this blocklock request. - */ - function requestBlocklock(uint256 blockHeight, bytes calldata ciphertext) public returns (uint256 requestID) { - TypesLib.Ciphertext memory c = abi.decode(ciphertext, (TypesLib.Ciphertext)); - IBlocklockProvider blocklock = IBlocklockProvider(contractAddress()); - return blocklock.requestBlocklock(blockHeight, c); - } - - /** - * @notice Retrieves a specific request by its ID. - * @dev This function returns the Request struct associated with the given requestId. - * @param requestId The ID of the request to retrieve. - * @return The Request struct corresponding to the given requestId. - */ - function getRequest(uint256 requestId) external view returns (TypesLib.BlocklockRequest memory) { - IBlocklockProvider blocklock = IBlocklockProvider(contractAddress()); - return blocklock.getRequest(requestId); - } - - /** - * @notice performs decryption with the blocklock scheme attached to this contract - * @param ciphertext encrypted with blocklock - * @param decryptionKey for the corresponding chain height - * @return The Request struct corresponding to the given requestId. - */ - function decrypt(bytes calldata ciphertext, bytes calldata decryptionKey) public returns (bytes memory){ - IBlocklockProvider blocklock = IBlocklockProvider(contractAddress()); - TypesLib.Ciphertext memory c = abi.decode(ciphertext, (TypesLib.Ciphertext)); - return blocklock.decrypt(c, decryptionKey); - } - - function verify(bytes calldata decryptionKey) public returns (bool) { - ISignatureScheme scheme = ISignatureScheme(signatureSchemeAddress()); - IDecryptionProvider decrypter = IDecryptionProvider(decryptionSenderAddress()); - bytes memory m = abi.encode(block.number); - bytes memory h_m = scheme.hashToBytes(abi.encode(m)); - bytes memory pk = decrypter.getPublicKeyBytes(); - return scheme.verifySignature(h_m, decryptionKey, pk); - } -} \ No newline at end of file diff --git a/contracts/src/Multicall.sol b/contracts/src/Multicall.sol new file mode 100644 index 0000000..ae40d5e --- /dev/null +++ b/contracts/src/Multicall.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import './interfaces/IMulticall.sol'; + +/// @title Multicall +/// @notice Enables calling multiple methods in a single call to the contract +abstract contract Multicall is IMulticall { + /// @inheritdoc IMulticall + function multicall(bytes[] calldata data) public payable override returns (bytes[] memory results) { + results = new bytes[](data.length); + for (uint256 i = 0; i < data.length; i++) { + (bool success, bytes memory result) = address(this).delegatecall(data[i]); + + if (!success) { + // Next 5 lines from https://ethereum.stackexchange.com/a/83577 + if (result.length < 68) revert(); + assembly { + result := add(result, 0x04) + } + revert(abi.decode(result, (string))); + } + + results[i] = result; + } + } +} \ No newline at end of file diff --git a/contracts/src/blocklock/BlocklockSender.sol b/contracts/src/blocklock/BlocklockSender.sol new file mode 100644 index 0000000..af02bc5 --- /dev/null +++ b/contracts/src/blocklock/BlocklockSender.sol @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../libraries/TypesLib.sol"; + +import {BLS} from "../libraries/BLS.sol"; +import {IBlocklockSender} from "../interfaces/IBlocklockSender.sol"; +import {IBlocklockReceiver} from "../interfaces/IBlocklockReceiver.sol"; +import {ISignatureSender} from "../interfaces/ISignatureSender.sol"; + +import {SignatureReceiverBase} from "../signature-requests/SignatureReceiverBase.sol"; + +import {DecryptionReceiverBase} from "../decryption-requests/DecryptionReceiverBase.sol"; +import {IDecryptionSender} from "../interfaces/IDecryptionSender.sol"; + +import {console} from "forge-std/console.sol"; + +contract BlocklockSender is IBlocklockSender, DecryptionReceiverBase { + string public constant SCHEME_ID = "BN254-BLS-BLOCKLOCK"; + bytes public constant DST_H1_G1 = "BLOCKLOCK_BN254G1_XMD:KECCAK-256_SVDW_RO_H1_"; + bytes public constant DST_H2 = "BLOCKLOCK_BN254_XMD:KECCAK-256_H2_"; + bytes public constant DST_H3 = "BLOCKLOCK_BN254_XMD:KECCAK-256_H3_"; + bytes public constant DST_H4 = "BLOCKLOCK_BN254_XMD:KECCAK-256_H4_"; + + // Mapping from decryption requestID to blocklock status + mapping(uint256 => TypesLib.BlocklockRequest) public blocklockRequests; + + event BlocklockRequested( + uint256 indexed requestID, + uint256 blockHeight, + TypesLib.Ciphertext ciphertext, + address indexed requester, + uint256 requestedAt + ); + event BlocklockCallbackSuccess( + uint256 indexed requestID, uint256 blockHeight, TypesLib.Ciphertext ciphertext, bytes decryptionKey + ); + + error BlocklockCallbackFailed(uint256 requestID); + + constructor(address _decryptionSender) DecryptionReceiverBase(_decryptionSender) {} + + /** + * @dev See {IBlocklockSender-requestBlocklock}. + */ + function requestBlocklock(uint256 blockHeight, TypesLib.Ciphertext calldata ciphertext) + external + returns (uint256) + { + require(blockHeight > block.number, "blockHeight must be strictly greater than current"); + + TypesLib.BlocklockRequest memory r = TypesLib.BlocklockRequest({ + decryptionRequestID: 0, + blockHeight: blockHeight, + ciphertext: ciphertext, + signature: hex"", + callback: msg.sender + }); + + // New decryption request + bytes memory conditions = abi.encode(blockHeight); + + uint256 decryptionRequestID = decryptionSender.registerCiphertext(SCHEME_ID, abi.encode(ciphertext), conditions); + r.decryptionRequestID = decryptionRequestID; + + // Store the signature requestID for this blockHeight + blocklockRequests[decryptionRequestID] = r; + + emit BlocklockRequested(decryptionRequestID, blockHeight, ciphertext, msg.sender, block.timestamp); + return decryptionRequestID; + } + + /** + * @dev See {DecryptionReceiverBase-onDecryptionDataReceived}. + */ + function onDecryptionDataReceived(uint256 decryptionRequestID, bytes memory decryptionKey, bytes memory signature) + internal + override + { + TypesLib.BlocklockRequest memory r = blocklockRequests[decryptionRequestID]; + require(r.decryptionRequestID > 0, "no matching blocklock request for that id"); + + r.signature = signature; + + (bool success,) = r.callback.call( + abi.encodeWithSelector(IBlocklockReceiver.receiveBlocklock.selector, decryptionRequestID, decryptionKey) + ); + if (!success) { + revert BlocklockCallbackFailed(decryptionRequestID); + } else { + emit BlocklockCallbackSuccess(decryptionRequestID, r.blockHeight, r.ciphertext, decryptionKey); + delete blocklockRequests[decryptionRequestID]; + } + } + + /** + * Decrypt a ciphertext into a plaintext using a decryption key. + * @param ciphertext The ciphertext to decrypt. + * @param decryptionKey The decryption key that can be used to decrypt the ciphertext. + */ + function decrypt(TypesLib.Ciphertext calldata ciphertext, bytes calldata decryptionKey) + public + view + returns (bytes memory) + { + require(decryptionKey.length != 256, "invalid decryption key length"); + require(ciphertext.w.length < 256, "message of unsupported length"); + + // \sigma' \gets V \xor decryptionKey + bytes memory sigma2 = ciphertext.v; + for (uint256 i = 0; i < decryptionKey.length; i++) { + sigma2[i] ^= decryptionKey[i]; + } + + // Decrypt the message + // 4: M' \gets W \xor H_4(\sigma') + bytes memory m2 = ciphertext.w; + bytes memory mask = BLS.expandMsg(DST_H4, sigma2, uint8(ciphertext.w.length)); + for (uint256 i = 0; i < ciphertext.w.length; i++) { + m2[i] ^= mask[i]; + } + + // Derive the ephemeral keypair with the candidate \sigma' + // 5: r \gets H_3(\sigma, M) + uint256 r = BLS.hashToFieldSingle(DST_H3, bytes.concat(sigma2, m2)); + + // Verify that \sigma' is consistent with the message and ephemeral public key + // 6: if U = [r]G_2 then return M' else return \bot + BLS.PointG1 memory rG1 = BLS.scalarMulG1Base(r); + (bool equal, bool success) = BLS.verifyEqualityG1G2(rG1, ciphertext.u); + // Assuming that the validity of the decryptionKey has been verified, + // decryption fails if the ciphertext has been wrongly registered. + require(equal == success == true, "invalid ciphertext registered"); + + return m2; + } + + /** + * @dev See {ISignatureSender-isInFlight}. + */ + function isInFlight(uint256 requestID) external view returns (bool) { + uint256 signatureRequestID = blocklockRequests[requestID].decryptionRequestID; + require(signatureRequestID > 0, "blocklock request not found"); + + return decryptionSender.isInFlight(signatureRequestID); + } + + /** + * @dev See {IBlocklockSender-getRequest}. + */ + function getRequest(uint256 requestID) external view returns (TypesLib.BlocklockRequest memory) { + TypesLib.BlocklockRequest memory r = blocklockRequests[requestID]; + require(r.decryptionRequestID > 0, "invalid requestID"); + + return r; + } +} diff --git a/contracts/src/BlocklockSignatureScheme.sol b/contracts/src/blocklock/BlocklockSignatureScheme.sol similarity index 93% rename from contracts/src/BlocklockSignatureScheme.sol rename to contracts/src/blocklock/BlocklockSignatureScheme.sol index 933ff6d..d017efb 100644 --- a/contracts/src/BlocklockSignatureScheme.sol +++ b/contracts/src/blocklock/BlocklockSignatureScheme.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import {BLS} from "./libraries/BLS.sol"; -import {ISignatureScheme} from "./interfaces/ISignatureScheme.sol"; +import {BLS} from "../libraries/BLS.sol"; +import {ISignatureScheme} from "../interfaces/ISignatureScheme.sol"; contract BlocklockSignatureScheme is ISignatureScheme { using BLS for bytes; diff --git a/contracts/src/decryption-requests/DecryptionReceiverBase.sol b/contracts/src/decryption-requests/DecryptionReceiverBase.sol new file mode 100644 index 0000000..59ffa09 --- /dev/null +++ b/contracts/src/decryption-requests/DecryptionReceiverBase.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {TypesLib} from "../libraries/TypesLib.sol"; +import {IDecryptionReceiver} from "../interfaces/IDecryptionReceiver.sol"; +import {IDecryptionSender} from "../interfaces/IDecryptionSender.sol"; + +abstract contract DecryptionReceiverBase is IDecryptionReceiver { + IDecryptionSender public immutable decryptionSender; + + modifier onlyDecrypter() { + require(msg.sender == address(decryptionSender), "Only DecryptionSender can call"); + _; + } + + constructor(address _DecryptionSender) { + require(_DecryptionSender != address(0), "Cannot set zero address as decryption key sender"); + decryptionSender = IDecryptionSender(_DecryptionSender); + } + + /** + * @dev See {IDecryptionReceiver-registerCiphertext}. + */ + function registerCiphertext(string calldata schemeID, bytes memory ciphertext, bytes memory conditions) + internal + returns (uint256 requestID) + { + return decryptionSender.registerCiphertext(schemeID, ciphertext, conditions); + } + + /** + * @dev See {IDecryptionReceiver-receiveDecryptionData}. + */ + function receiveDecryptionData(uint256 requestID, bytes calldata decryptionKey, bytes calldata signature) + external + onlyDecrypter + { + onDecryptionDataReceived(requestID, decryptionKey, signature); + } + + /** + * @dev Callback function that is triggered when a decryption key is received. + * This function is intended to be overridden in derived contracts to implement + * specific logic upon receiving a decryption key. + * + * @param requestID The unique identifier for the decryption key request. + * This is useful for correlating the received key with the original request. + * + * @param decryptionKey The unique decryption key associated to a specific ciphertext. + * + * @param signature The signature used for the derivation of the decryptionKey. + */ + function onDecryptionDataReceived(uint256 requestID, bytes memory decryptionKey, bytes memory signature) + internal + virtual; +} diff --git a/contracts/src/decryption-requests/DecryptionSender.sol b/contracts/src/decryption-requests/DecryptionSender.sol new file mode 100644 index 0000000..af3b0ab --- /dev/null +++ b/contracts/src/decryption-requests/DecryptionSender.sol @@ -0,0 +1,155 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {BLS} from "../libraries/BLS.sol"; +import {TypesLib} from "../libraries/TypesLib.sol"; +import {console} from "forge-std/console.sol"; +import {BytesLib} from "../libraries/BytesLib.sol"; + +import {Multicall} from "../Multicall.sol"; +import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; + +import {IDecryptionSender} from "../interfaces/IDecryptionSender.sol"; +import {IDecryptionReceiver} from "../interfaces/IDecryptionReceiver.sol"; + +import {ISignatureReceiver} from "../interfaces/ISignatureReceiver.sol"; +import {ISignatureSender} from "../interfaces/ISignatureSender.sol"; +import {ISignatureScheme} from "../interfaces/ISignatureScheme.sol"; +import {ISignatureSchemeAddressProvider} from "../interfaces/ISignatureSchemeAddressProvider.sol"; + +/// @notice Smart Contract for Conditional Threshold Signing of messages sent within signature requests. +/// by contract addresses implementing the SignatureReceiverBase abstract contract which implements the ISignatureReceiver interface. +/// @notice Signature requests can also be made for requests requiring immediate signing of messages as the conditions are optional. +contract DecryptionSender is IDecryptionSender, AccessControl, Multicall { + using BytesLib for bytes; + + bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE"); + + uint256 public lastRequestID = 0; + BLS.PointG2 private publicKey = BLS.PointG2({x: [uint256(0), uint256(0)], y: [uint256(0), uint256(0)]}); + mapping(uint256 => TypesLib.DecryptionRequest) public requestsInFlight; + + ISignatureSchemeAddressProvider public immutable signatureSchemeAddressProvider; + + event DecryptionRequested( + uint256 indexed requestID, + address indexed callback, + string schemeID, + bytes condition, + bytes ciphertext, + uint256 requestedAt + ); + event DecryptionReceiverCallbackSuccess(uint256 indexed requestID, bytes decryptionKey, bytes signature); + + error DecryptionReceiverCallbackFailed(uint256 requestID); + + modifier onlyOwner() { + _checkRole(ADMIN_ROLE); + _; + } + + constructor(uint256[2] memory x, uint256[2] memory y, address owner, address _signatureSchemeAddressProvider) { + publicKey = BLS.PointG2({x: x, y: y}); + require(_grantRole(ADMIN_ROLE, owner), "Grant role failed"); + require(_grantRole(DEFAULT_ADMIN_ROLE, owner), "Grant role reverts"); + require( + _signatureSchemeAddressProvider != address(0), + "Cannot set zero address as signature scheme address provider" + ); + signatureSchemeAddressProvider = ISignatureSchemeAddressProvider(_signatureSchemeAddressProvider); + } + + /** + * @dev See {IDecryptionSender-registerCiphertext}. + */ + function registerCiphertext(string calldata schemeID, bytes calldata ciphertext, bytes calldata condition) + external + returns (uint256) + { + lastRequestID += 1; + + require(signatureSchemeAddressProvider.isSupportedScheme(schemeID), "Signature scheme not supported"); + require(ciphertext.isLengthWithinBounds(1, 4096), "Message failed length bounds check"); + // condition is optional + require(condition.isLengthWithinBounds(0, 4096), "Condition failed length bounds check"); + uint256 conditionLength = condition.length; + if (conditionLength > 0) { + require(!condition.isAllZero(), "Condition bytes cannot be all zeros"); + } + + address schemeContractAddress = signatureSchemeAddressProvider.getSignatureSchemeAddress(schemeID); + require(schemeContractAddress > address(0), "invalid signature scheme"); + + requestsInFlight[lastRequestID] = TypesLib.DecryptionRequest({ + schemeID: schemeID, + ciphertext: ciphertext, + condition: condition, + decryptionKey: hex"", + signature: hex"", + callback: msg.sender + }); + + emit DecryptionRequested(lastRequestID, msg.sender, schemeID, condition, ciphertext, block.timestamp); + + return lastRequestID; + } + + /** + * @dev See {IDecryptionSender-fulfilSignatureRequest}. + */ + function fulfilDecryptionRequest(uint256 requestID, bytes calldata decryptionKey, bytes calldata signature) + external + onlyOwner + { + require(isInFlight(requestID), "No request with specified requestID"); + TypesLib.DecryptionRequest memory request = requestsInFlight[requestID]; + + string memory schemeID = request.schemeID; + address schemeContractAddress = signatureSchemeAddressProvider.getSignatureSchemeAddress(schemeID); + require(schemeContractAddress > address(0), "invalid scheme"); + + ISignatureScheme sigScheme = ISignatureScheme(schemeContractAddress); + bytes memory messageHash = sigScheme.hashToBytes(request.condition); + require(sigScheme.verifySignature(messageHash, signature, getPublicKeyBytes()), "Signature verification failed"); + (bool success,) = request.callback.call( + abi.encodeWithSelector( + IDecryptionReceiver.receiveDecryptionData.selector, requestID, decryptionKey, signature + ) + ); + + if (!success) { + revert DecryptionReceiverCallbackFailed(requestID); + } else { + emit DecryptionReceiverCallbackSuccess(requestID, decryptionKey, signature); + delete requestsInFlight[requestID]; + } + } + + /** + * @dev See {IDecryptionSender-getPublicKey}. + */ + function getPublicKey() public view returns (uint256[2] memory, uint256[2] memory) { + return (publicKey.x, publicKey.y); + } + + /** + * @dev See {IDecryptionSender-getPublicKeyBytes}. + */ + function getPublicKeyBytes() public view returns (bytes memory) { + return BLS.g2Marshal(publicKey); + } + + /** + * @dev See {IDecryptionSender-isInFlight}. + */ + function isInFlight(uint256 requestID) public view returns (bool) { + return requestsInFlight[requestID].callback != address(0); + } + + /** + * @dev See {IDecryptionSender-getRequestInFlight}. + */ + function getRequestInFlight(uint256 requestID) external view returns (TypesLib.DecryptionRequest memory) { + return requestsInFlight[requestID]; + } +} diff --git a/contracts/src/deployer/Deployer.sol b/contracts/src/deployer/Deployer.sol new file mode 100644 index 0000000..8949c23 --- /dev/null +++ b/contracts/src/deployer/Deployer.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +contract Deployer { + error Create2EmptyBytecode(); + error Create2FailedDeployment(); + + event CreatedContract(address addr, bytes32 salt); + + function deploy(bytes32 salt, bytes memory creationCode) external payable returns (address) { + if (creationCode.length == 0) { + revert Create2EmptyBytecode(); + } + + address addr; + assembly { + addr := create2(callvalue(), add(creationCode, 0x20), mload(creationCode), salt) + } + if (addr == address(0)) { + revert Create2FailedDeployment(); + } + + emit CreatedContract(addr, salt); + + return addr; + } + + function computeAddress(bytes32 salt, bytes32 creationCodeHash) external view returns (address addr) { + address contractAddress = address(this); + + assembly { + let ptr := mload(0x40) + + mstore(add(ptr, 0x40), creationCodeHash) + mstore(add(ptr, 0x20), salt) + mstore(ptr, contractAddress) + let start := add(ptr, 0x0b) + mstore8(start, 0xff) + addr := keccak256(start, 85) + } + } +} diff --git a/contracts/src/interfaces/IBlocklockReceiver.sol b/contracts/src/interfaces/IBlocklockReceiver.sol index a5d52c3..834b767 100644 --- a/contracts/src/interfaces/IBlocklockReceiver.sol +++ b/contracts/src/interfaces/IBlocklockReceiver.sol @@ -8,7 +8,7 @@ interface IBlocklockReceiver { * given request ID. * It is intended to be called by a trusted source that provides the decryption key. * @param requestID The unique identifier of the blocklock request. - * @param decryptionKey The blocklock decryption key provided as `bytes`. + * @param decryptionKey The generated random value, provided as a `bytes` type. */ function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external; } diff --git a/contracts/src/interfaces/IBlocklockProvider.sol b/contracts/src/interfaces/IBlocklockSender.sol similarity index 69% rename from contracts/src/interfaces/IBlocklockProvider.sol rename to contracts/src/interfaces/IBlocklockSender.sol index f339365..9b5f1e0 100644 --- a/contracts/src/interfaces/IBlocklockProvider.sol +++ b/contracts/src/interfaces/IBlocklockSender.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import {TypesLib} from "../libraries/TypesLib.sol"; +import "../libraries/TypesLib.sol"; -interface IBlocklockProvider { +interface IBlocklockSender { /** * @notice Requests the generation of a blocklock decryption key at a specific blockHeight. * @dev Initiates a blocklock decryption key request. @@ -11,8 +11,9 @@ interface IBlocklockProvider { * @return requestID The unique identifier assigned to this blocklock request. */ function requestBlocklock(uint256 blockHeight, TypesLib.Ciphertext calldata ciphertext) - external - returns (uint256 requestID); + external + returns (uint256 requestID); + /** * @notice Retrieves a specific request by its ID. * @dev This function returns the Request struct associated with the given requestId. @@ -22,13 +23,12 @@ interface IBlocklockProvider { function getRequest(uint256 requestId) external view returns (TypesLib.BlocklockRequest memory); /** - * @notice performs decryption with the blocklock scheme attached to this contract - * @param ciphertext encrypted with blocklock - * @param decryptionKey for the corresponding chain height - * @return The Request struct corresponding to the given requestId. + * Decrypt a ciphertext into a plaintext using a decryption key. + * @param ciphertext The ciphertext to decrypt. + * @param decryptionKey The decryption key that can be used to decrypt the ciphertext. */ function decrypt(TypesLib.Ciphertext calldata ciphertext, bytes calldata decryptionKey) - external - view - returns (bytes memory); + external + view + returns (bytes memory); } diff --git a/contracts/src/interfaces/IDecryptionReceiver.sol b/contracts/src/interfaces/IDecryptionReceiver.sol index 3c0df46..c763ce4 100644 --- a/contracts/src/interfaces/IDecryptionReceiver.sol +++ b/contracts/src/interfaces/IDecryptionReceiver.sol @@ -4,9 +4,11 @@ pragma solidity 0.8.24; interface IDecryptionReceiver { /// Setters - /// @notice Receives a decrypted version of a Ciphertext linked to a specific request id + /// @notice Receives a decryption key that can be used to decrypt the ciphertext /// @dev This function is intended to be called by an authorized decrypter contract /// @param requestID The ID of the request for which the decryption key is provided - /// @param decryptedCipherText The decrypted Ciphertext associated with the request, provided as a byte array - function receiveDecryptedCipherText(uint256 requestID, bytes calldata decryptedCipherText) external; + /// @param decryptionKey The decryption key associated with the request, provided as a byte array + /// @param signature The signature associated with the request, provided as a byte array + function receiveDecryptionData(uint256 requestID, bytes calldata decryptionKey, bytes calldata signature) + external; } diff --git a/contracts/src/interfaces/IDecryptionProvider.sol b/contracts/src/interfaces/IDecryptionSender.sol similarity index 96% rename from contracts/src/interfaces/IDecryptionProvider.sol rename to contracts/src/interfaces/IDecryptionSender.sol index 6c1b728..11c130d 100644 --- a/contracts/src/interfaces/IDecryptionProvider.sol +++ b/contracts/src/interfaces/IDecryptionSender.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.24; import {TypesLib} from "../libraries/TypesLib.sol"; /// @notice Smart contract that stores and conditionally decrypts encrypted messages / data -interface IDecryptionProvider { +interface IDecryptionSender { /// Setters /// @notice Registers a Ciphertext and associated conditions for decryption @@ -14,8 +14,8 @@ interface IDecryptionProvider { /// @param conditions The conditions that need to be met to decrypt the ciphertext /// @return requestID The unique ID assigned to the registered decryption request function registerCiphertext(string calldata schemeID, bytes calldata ciphertext, bytes calldata conditions) - external - returns (uint256 requestID); + external + returns (uint256 requestID); /** * @notice Provide the decryption key for a specific requestID alongside a signature. @@ -28,7 +28,7 @@ interface IDecryptionProvider { * @param signature The signature associated with the request, provided as a byte array */ function fulfilDecryptionRequest(uint256 requestID, bytes calldata decryptionKey, bytes calldata signature) - external; + external; // Getters diff --git a/contracts/src/interfaces/IMulticall.sol b/contracts/src/interfaces/IMulticall.sol new file mode 100644 index 0000000..8abeafd --- /dev/null +++ b/contracts/src/interfaces/IMulticall.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +/// @title Multicall interface +/// @notice Enables calling multiple methods in a single call to the contract +interface IMulticall { + /// @notice Call multiple functions in the current contract and return the data from all of them if they all succeed + /// @dev The `msg.value` should not be trusted for any method callable from multicall. + /// @param data The encoded function data for each of the calls to make to this contract + /// @return results The results from each of the calls passed in via data + function multicall(bytes[] calldata data) external payable returns (bytes[] memory results); +} \ No newline at end of file diff --git a/contracts/src/interfaces/ISignatureReceiver.sol b/contracts/src/interfaces/ISignatureReceiver.sol new file mode 100644 index 0000000..883f55f --- /dev/null +++ b/contracts/src/interfaces/ISignatureReceiver.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +interface ISignatureReceiver { + /// Setters + + /** + * @notice Receives a signature for a specified request. + * @dev This function is intended to be called to provide a signature for the given `requestID`. + * @param requestID The unique identifier of the request associated with the signature. + * @param signature The cryptographic signature of the message, provided as a byte array. + */ + function receiveSignature(uint256 requestID, bytes calldata signature) external; +} diff --git a/contracts/src/interfaces/ISignatureSchemeAddressProvider.sol b/contracts/src/interfaces/ISignatureSchemeAddressProvider.sol new file mode 100644 index 0000000..f7a5f8a --- /dev/null +++ b/contracts/src/interfaces/ISignatureSchemeAddressProvider.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +interface ISignatureSchemeAddressProvider { + /// Setters + + /// @notice Adds support for a new signature scheme to the registry. + /// @notice Only contract admin or governance can add. + /// @param schemeID The name of the signature scheme (e.g., BN254, BLS12-381, TESS) + /// @param schemeAddress The contract address implementing the signature verification scheme + function updateSignatureScheme(string calldata schemeID, address schemeAddress) external; + + /// Getters + + /** + * @notice Retrieves the contract address associated with a specific signature scheme. + * @dev Looks up the address of the signature scheme contract identified by `schemeID`. + * @param schemeID The identifier of the signature scheme to look up. + * @return The contract address associated with the specified signature scheme. + */ + function getSignatureSchemeAddress(string calldata schemeID) external view returns (address); + + /** + * @notice Checks if a specified signature scheme is supported. + * @dev Determines whether the signature scheme identified by `schemeID` is currently supported. + * @param schemeID The identifier of the signature scheme to check. + * @return True if the signature scheme is supported, otherwise false. + */ + function isSupportedScheme(string calldata schemeID) external view returns (bool); +} diff --git a/contracts/src/interfaces/ISignatureSender.sol b/contracts/src/interfaces/ISignatureSender.sol new file mode 100644 index 0000000..9def9cd --- /dev/null +++ b/contracts/src/interfaces/ISignatureSender.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../libraries/TypesLib.sol"; + +interface ISignatureSender { + /// Setters + + /** + * @notice Requests a digital signature for a given message using a specified signature scheme. + * @dev Initiates a request for signing the provided `message` under the specified `schemeID`. + * The request may include certain conditions that need to be met. + * @param schemeID The identifier of the signature scheme to be used. + * @param message The message to be signed, provided as a byte array. + * @param condition Conditions that must be satisfied for the signature request, provided as a byte array. + * @return The unique request ID assigned to this signature request. + */ + function requestSignature(string calldata schemeID, bytes calldata message, bytes calldata condition) + external + returns (uint256); + + /** + * @notice Fulfills a signature request by providing the corresponding signature. + * @dev Completes the signing process for the request identified by `requestID`. + * The signature should be valid for the originally requested message. + * @param requestID The unique identifier of the signature request being fulfilled. + * @param signature The generated signature, provided as a byte array. + */ + function fulfilSignatureRequest(uint256 requestID, bytes calldata signature) external; + + /// Getters + + /** + * @notice Checks if a signature request is still in flight. + * @dev Determines whether the specified `requestID` is still pending. + * @param requestID The unique identifier of the signature request. + * @return True if the request is still in flight, otherwise false. + */ + function isInFlight(uint256 requestID) external view returns (bool); + + /** + * @notice Returns request data if a signature request is still in flight. + * @param requestID The unique identifier of the signature request. + * @return The corresponding SignatureRequest struct if the request is still in flight, otherwise struct with zero values. + */ + function getRequestInFlight(uint256 requestID) external view returns (TypesLib.SignatureRequest memory); + + /** + * @notice Retrieves the public key associated with the signature process. + * @dev Returns the public key as two elliptic curve points. + * @return Two pairs of coordinates representing the public key points on the elliptic curve. + */ + function getPublicKey() external view returns (uint256[2] memory, uint256[2] memory); + /** + * @notice Retrieves the public key associated with the signature process. + * @dev Returns the public key as bytes. + * @return Bytes string representing the public key points on the elliptic curve. + */ + function getPublicKeyBytes() external view returns (bytes memory); +} diff --git a/contracts/src/libraries/BytesLib.sol b/contracts/src/libraries/BytesLib.sol new file mode 100644 index 0000000..8f66a58 --- /dev/null +++ b/contracts/src/libraries/BytesLib.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +library BytesLib { + /** + * @dev Checks if a bytes array is empty. + * @param data The bytes array to check. + * @return bool Returns true if the bytes array is empty, false otherwise. + */ + function isEmpty(bytes memory data) internal pure returns (bool) { + return data.length == 0; + } + + /** + * @dev Checks if all bytes in a bytes array are zero. + * @param data The bytes array to check. + * @return bool Returns true if all bytes are zero, false if at least one byte is non-zero. + */ + function isAllZero(bytes memory data) internal pure returns (bool) { + for (uint256 i = 0; i < data.length; i++) { + if (data[i] != 0x00) { + return false; // Found a non-zero byte + } + } + return true; // All bytes are zero + } + + /** + * @dev Checks if the length of a bytes array is within the given bounds. + * @param data The bytes array to check. + * @param minLength The minimum length that the bytes array must be. + * @param maxLength The maximum length that the bytes array must be. + * @return bool Returns true if the length of the bytes array is within [minLength, maxLength], false otherwise. + * @notice Reverts if minLength is greater than maxLength. + */ + function isLengthWithinBounds(bytes memory data, uint256 minLength, uint256 maxLength) + internal + pure + returns (bool) + { + require(minLength <= maxLength, "Invalid bounds: minLength cannot be greater than maxLength"); + uint256 dataLength = data.length; + return dataLength >= minLength && dataLength <= maxLength; + } + + /** + * @dev Decodes a bytes array back to a uint256. + * @param data The bytes array to decode. + * @return uint256 The decoded uint256 value. + * @notice Reverts if the length of the bytes array is less than 32 bytes. + */ + function decodeBytesToUint(bytes memory data) public pure returns (uint256) { + require(data.length >= 32, "Data must be at least 32 bytes long"); + return abi.decode(data, (uint256)); // Decode bytes back to uint + } +} diff --git a/contracts/src/libraries/TypesLib.sol b/contracts/src/libraries/TypesLib.sol index b042930..81e5470 100644 --- a/contracts/src/libraries/TypesLib.sol +++ b/contracts/src/libraries/TypesLib.sol @@ -4,6 +4,15 @@ pragma solidity 0.8.24; import "./BLS.sol"; library TypesLib { + // Signature request struct for signature request type + struct SignatureRequest { + bytes message; // plaintext message to hash and sign + bytes messageHash; // hashed message to sign + bytes condition; // optional condition, length can be zero for immediate message signing + string schemeID; // signature scheme id, e.g., "BN254", "BLS12-381", "TESS" + address callback; // the requester address to call back. Must implement ISignatureReceiver interface to support the required callback + } + // Blocklock request stores details needed to generate blocklock decryption keys struct BlocklockRequest { uint256 decryptionRequestID; diff --git a/contracts/src/signature-requests/SignatureReceiverBase.sol b/contracts/src/signature-requests/SignatureReceiverBase.sol new file mode 100644 index 0000000..413c8ce --- /dev/null +++ b/contracts/src/signature-requests/SignatureReceiverBase.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {ISignatureReceiver} from "../interfaces/ISignatureReceiver.sol"; +import {ISignatureSender} from "../interfaces/ISignatureSender.sol"; + +abstract contract SignatureReceiverBase is ISignatureReceiver { + ISignatureSender internal immutable signatureSender; + + modifier onlySignatureSender() { + require(msg.sender == address(signatureSender), "Only signatureSender can call"); + _; + } + + constructor(address _signatureSender) { + require(_signatureSender != address(0), "Cannot set zero address as signature sender"); + signatureSender = ISignatureSender(_signatureSender); + } + + /** + * @notice Initiates a signature request for a given message under a specified signature scheme. + * @dev This internal function calls the `requestSignature` function of the `signatureSender` contract. + * It passes the provided `schemeID`, `message`, and `condition` to the signature sender. + * @param schemeID The identifier of the signature scheme to be used for signing the message. + * @param message The message to be signed, provided as a byte array. + * @param condition Additional conditions that must be satisfied for the signature request, provided as a byte array. + * @return requestID The unique identifier assigned to the initiated signature request. + */ + function requestSignature(string calldata schemeID, bytes calldata message, bytes calldata condition) + internal + returns (uint256) + { + return signatureSender.requestSignature(schemeID, message, condition); + } + + /** + * @dev See {ISignatureReceiver-receiveSignature}. + */ + function receiveSignature(uint256 requestID, bytes calldata signature) external onlySignatureSender { + onSignatureReceived(requestID, signature); + } + + /** + * @notice Handles the reception of a digital signature for a specified request. + * @dev This internal function is called when a signature is received for the given `requestID`. + * It is intended to be overridden by derived contracts to implement custom behavior upon receipt of a signature. + * @param requestID The unique identifier of the signature request associated with the received signature. + * @param signature The cryptographic signature of the message, provided as a byte array. + */ + function onSignatureReceived(uint256 requestID, bytes calldata signature) internal virtual; +} diff --git a/contracts/src/signature-requests/SignatureSender.sol b/contracts/src/signature-requests/SignatureSender.sol new file mode 100644 index 0000000..261b41d --- /dev/null +++ b/contracts/src/signature-requests/SignatureSender.sol @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {BLS} from "../libraries/BLS.sol"; +import {TypesLib} from "../libraries/TypesLib.sol"; +import {BytesLib} from "../libraries/BytesLib.sol"; + +import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; +import {Multicall} from "../Multicall.sol"; + +import {ISignatureReceiver} from "../interfaces/ISignatureReceiver.sol"; +import {ISignatureSender} from "../interfaces/ISignatureSender.sol"; +import {ISignatureScheme} from "../interfaces/ISignatureScheme.sol"; +import {ISignatureSchemeAddressProvider} from "../interfaces/ISignatureSchemeAddressProvider.sol"; + +/// @notice Smart Contract for Conditional Threshold Signing of messages sent within signature requests. +/// by contract addresses implementing the SignatureReceiverBase abstract contract which implements the ISignatureReceiver interface. +/// @notice Signature requests can also be made for requests requiring immediate signing of messages as the conditions are optional. +contract SignatureSender is ISignatureSender, AccessControl, Multicall { + using BytesLib for bytes; + + bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE"); + + uint256 public lastRequestID = 0; + BLS.PointG2 private publicKey = BLS.PointG2({x: [uint256(0), uint256(0)], y: [uint256(0), uint256(0)]}); + mapping(uint256 => TypesLib.SignatureRequest) public requestsInFlight; + + ISignatureSchemeAddressProvider public immutable signatureSchemeAddressProvider; + + event SignatureRequested( + uint256 indexed requestID, + address indexed callback, + string schemeID, + bytes message, + bytes messageHashToSign, + bytes condition, + uint256 requestedAt + ); + event SignatureRequestFulfilled(uint256 indexed requestID); + + error SignatureCallbackFailed(uint256 requestID); + + modifier onlyOwner() { + _checkRole(ADMIN_ROLE); + _; + } + + constructor(uint256[2] memory x, uint256[2] memory y, address owner, address _signatureSchemeAddressProvider) { + publicKey = BLS.PointG2({x: x, y: y}); + require(_grantRole(ADMIN_ROLE, owner), "Grant role failed"); + require(_grantRole(DEFAULT_ADMIN_ROLE, owner), "Grant role reverts"); + require( + _signatureSchemeAddressProvider != address(0), + "Cannot set zero address as signature scheme address provider" + ); + signatureSchemeAddressProvider = ISignatureSchemeAddressProvider(_signatureSchemeAddressProvider); + } + + /** + * @dev See {ISignatureSender-requestSignature}. + */ + function requestSignature(string calldata schemeID, bytes calldata message, bytes calldata condition) + external + returns (uint256) + { + lastRequestID += 1; + + require(signatureSchemeAddressProvider.isSupportedScheme(schemeID), "Signature scheme not supported"); + require(message.isLengthWithinBounds(1, 4096), "Message failed length bounds check"); + // condition is optional + require(condition.isLengthWithinBounds(0, 4096), "Condition failed length bounds check"); + uint256 conditionLength = condition.length; + if (conditionLength > 0) { + require(!condition.isAllZero(), "Condition bytes cannot be all zeros"); + } + + address schemeContractAddress = signatureSchemeAddressProvider.getSignatureSchemeAddress(schemeID); + ISignatureScheme sigScheme = ISignatureScheme(schemeContractAddress); + bytes memory messageHash = sigScheme.hashToBytes(message); + + requestsInFlight[lastRequestID] = TypesLib.SignatureRequest({ + callback: msg.sender, + message: message, + messageHash: messageHash, + condition: condition, + schemeID: schemeID + }); + + emit SignatureRequested(lastRequestID, msg.sender, schemeID, message, messageHash, condition, block.timestamp); + return lastRequestID; + } + + /** + * @dev See {ISignatureSender-fulfilSignatureRequest}. + */ + function fulfilSignatureRequest(uint256 requestID, bytes calldata signature) external onlyOwner { + require(isInFlight(requestID), "No request with specified requestID"); + TypesLib.SignatureRequest memory request = requestsInFlight[requestID]; + + string memory schemeID = request.schemeID; + + address schemeContractAddress = signatureSchemeAddressProvider.getSignatureSchemeAddress(schemeID); + ISignatureScheme sigScheme = ISignatureScheme(schemeContractAddress); + + require( + sigScheme.verifySignature(request.messageHash, signature, getPublicKeyBytes()), + "Signature verification failed" + ); + + (bool success,) = request.callback.call( + abi.encodeWithSelector(ISignatureReceiver.receiveSignature.selector, requestID, signature) + ); + if (!success) { + revert SignatureCallbackFailed(requestID); + } else { + emit SignatureRequestFulfilled(requestID); + delete requestsInFlight[requestID]; + } + } + + /** + * @dev See {ISignatureSender-getPublicKey}. + */ + function getPublicKey() public view returns (uint256[2] memory, uint256[2] memory) { + return (publicKey.x, publicKey.y); + } + + /** + * @dev See {ISignatureSender-getPublicKeyBytes}. + */ + function getPublicKeyBytes() public view returns (bytes memory) { + return BLS.g2Marshal(publicKey); + } + + /** + * @dev See {ISignatureSender-isInFlight}. + */ + function isInFlight(uint256 requestID) public view returns (bool) { + return requestsInFlight[requestID].callback != address(0); + } + + /** + * @dev See {ISignatureSender-getRequestInFlight}. + */ + function getRequestInFlight(uint256 requestID) external view returns (TypesLib.SignatureRequest memory) { + return requestsInFlight[requestID]; + } +} diff --git a/contracts/src/signature-schemes/SignatureSchemeAddressProvider.sol b/contracts/src/signature-schemes/SignatureSchemeAddressProvider.sol new file mode 100644 index 0000000..7f68a41 --- /dev/null +++ b/contracts/src/signature-schemes/SignatureSchemeAddressProvider.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; +import {ISignatureSchemeAddressProvider} from "../interfaces/ISignatureSchemeAddressProvider.sol"; + +contract SignatureSchemeAddressProvider is ISignatureSchemeAddressProvider, AccessControl { + mapping(string => address) private schemes; + bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE"); + + event NewSignatureSchemeAddressAdded(string indexed schemeID, address indexed schemeAddress, uint256 addedAt); + + modifier onlyOwner() { + _checkRole(ADMIN_ROLE); + _; + } + + constructor(address owner) { + if (owner == address(0)) { + owner = msg.sender; + } + require(_grantRole(DEFAULT_ADMIN_ROLE, owner), "Grant role failed"); + require(_grantRole(ADMIN_ROLE, owner), "Grant role failed"); + } + + /** + * @dev See {ISignatureSchemeAddressProvider-updateSignatureScheme}. + */ + function updateSignatureScheme(string calldata schemeID, address schemeAddress) external onlyOwner { + require( + !(schemeAddress == address(0) && schemeAddress.code.length == 0), + "Invalid contract address for schemeAddress" + ); + schemes[schemeID] = schemeAddress; + emit NewSignatureSchemeAddressAdded(schemeID, schemes[schemeID], block.timestamp); + } + + /** + * @dev See {ISignatureSchemeAddressProvider-getSignatureSchemeAddress}. + */ + function getSignatureSchemeAddress(string calldata schemeID) external view returns (address) { + return schemes[schemeID]; + } + + /** + * @dev See {ISignatureSchemeAddressProvider-isSupportedScheme}. + */ + function isSupportedScheme(string calldata schemeID) external view returns (bool) { + return schemes[schemeID] != address(0); + } +} diff --git a/src/blocklock.ts b/src/blocklock.ts index 2d26dd0..21942ff 100644 --- a/src/blocklock.ts +++ b/src/blocklock.ts @@ -29,13 +29,12 @@ export const BLOCKLOCK_DEFAULT_PUBLIC_KEY = { }, } -const defaultContractAddress = "0xfd1bf3fcbf2e250abff4a61670dfa3ce740453e5" const iface = BlocklockSender__factory.createInterface() export class Blocklock { private blocklockSender: BlocklockSender - constructor(provider: Signer | Provider, private readonly contractAddress: string = defaultContractAddress) { + constructor(provider: Signer | Provider, private readonly contractAddress: string) { this.blocklockSender = BlocklockSender__factory.connect(contractAddress, provider) } From 1a676d826b73e879a31e7b8eba6f9921cfa66989 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 17 Jan 2025 15:46:04 +0000 Subject: [PATCH 09/53] update unit tests --- test/blocklock.test.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/blocklock.test.ts b/test/blocklock.test.ts index 6c6353a..01e45e4 100644 --- a/test/blocklock.test.ts +++ b/test/blocklock.test.ts @@ -4,8 +4,9 @@ import {Blocklock} from "../src" describe("encryption", () => { it("class can be constructed", () => { - const w = new Wallet("0x5cb3c5ba25c91d84ef5dabf4152e909795074f9958b091b010644cb9c30e3203") - const e = new Blocklock(w) - expect(e).not.toEqual(null) + const wallet = new Wallet("0x5cb3c5ba25c91d84ef5dabf4152e909795074f9958b091b010644cb9c30e3203") + const blocklockContractAddress = "0xfd1bf3fcbf2e250abff4a61670dfa3ce740453e5" + const blocklockjs = new Blocklock(wallet, blocklockContractAddress) + expect(blocklockjs).not.toEqual(null) }) }) \ No newline at end of file From a1bd3a60e24d835c205b3305433a00dd1dd7832d Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 17 Jan 2025 15:51:50 +0000 Subject: [PATCH 10/53] update tests --- test/blocklock.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/blocklock.test.ts b/test/blocklock.test.ts index 01e45e4..71ec39c 100644 --- a/test/blocklock.test.ts +++ b/test/blocklock.test.ts @@ -9,4 +9,4 @@ describe("encryption", () => { const blocklockjs = new Blocklock(wallet, blocklockContractAddress) expect(blocklockjs).not.toEqual(null) }) -}) \ No newline at end of file +}) From a26b74939f4824aaeb14d0cb07115419f4c6db53 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 20 Jan 2025 16:07:50 +0000 Subject: [PATCH 11/53] separate encoder and decoder --- src/index.ts | 3 +- src/solidity-decoder.ts | 55 +++++++++++++++++++ ...encoder-decoder.ts => solidity-encoder.ts} | 48 +--------------- ...oder.test.ts => solidity-encoding.test.ts} | 50 +++++++++-------- 4 files changed, 84 insertions(+), 72 deletions(-) create mode 100644 src/solidity-decoder.ts rename src/{solidity-encoder-decoder.ts => solidity-encoder.ts} (56%) rename test/{solidity-encoder-decoder.test.ts => solidity-encoding.test.ts} (64%) diff --git a/src/index.ts b/src/index.ts index 1ff8de2..5f30219 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,5 @@ export {Buffer} from "buffer" export * from "./blocklock" export * from "./ethers-utils" -export * from "./solidity-encoder-decoder" \ No newline at end of file +export * from "./solidity-encoder" +export * from "./solidity-decoder" \ No newline at end of file diff --git a/src/solidity-decoder.ts b/src/solidity-decoder.ts new file mode 100644 index 0000000..81ce52b --- /dev/null +++ b/src/solidity-decoder.ts @@ -0,0 +1,55 @@ +import { AbiCoder } from "ethers"; + +export class SolidityDecoder { + private abiCoder: AbiCoder; + + constructor() { + this.abiCoder = AbiCoder.defaultAbiCoder(); + } + + // ------------------- DECODERS ------------------- + + decodeUint256(data: string): bigint { + return this.abiCoder.decode(["uint256"], data)[0]; + } + + decodeInt256(data: string): bigint { + return this.abiCoder.decode(["int256"], data)[0]; + } + + decodeAddress(data: string): string { + return this.abiCoder.decode(["address"], data)[0]; + } + + decodeString(data: string): string { + return this.abiCoder.decode(["string"], data)[0]; + } + + decodeBool(data: string): boolean { + return this.abiCoder.decode(["bool"], data)[0]; + } + + decodeBytes32(data: string): string { + return this.abiCoder.decode(["bytes32"], data)[0]; + } + + decodeBytes(data: string): string { + return this.abiCoder.decode(["bytes"], data)[0]; + } + + decodeUint256Array(data: string): bigint[] { + return this.abiCoder.decode(["uint256[]"], data)[0]; + } + + decodeAddressArray(data: string): string[] { + return this.abiCoder.decode(["address[]"], data)[0]; + } + + decodeTuple(types: string[], data: string): any[] { + return this.abiCoder.decode([`tuple(${types.join(",")})`], data)[0]; + } + + decodeStruct(structDefinition: string[], data: string): any[] { + return this.decodeTuple(structDefinition, data); + } +} diff --git a/src/solidity-encoder-decoder.ts b/src/solidity-encoder.ts similarity index 56% rename from src/solidity-encoder-decoder.ts rename to src/solidity-encoder.ts index c63e4c0..f9b08c0 100644 --- a/src/solidity-encoder-decoder.ts +++ b/src/solidity-encoder.ts @@ -1,6 +1,6 @@ import { AbiCoder } from "ethers"; -export class SolidityEncoderDecoder { +export class SolidityEncoder { private abiCoder: AbiCoder; constructor() { @@ -55,50 +55,4 @@ export class SolidityEncoderDecoder { encodeStruct(structDefinition: string[], structValues: any[]): string { return this.encodeTuple(structDefinition, structValues); } - - // ------------------- DECODERS ------------------- - - decodeUint256(data: string): bigint { - return this.abiCoder.decode(["uint256"], data)[0]; - } - - decodeInt256(data: string): bigint { - return this.abiCoder.decode(["int256"], data)[0]; - } - - decodeAddress(data: string): string { - return this.abiCoder.decode(["address"], data)[0]; - } - - decodeString(data: string): string { - return this.abiCoder.decode(["string"], data)[0]; - } - - decodeBool(data: string): boolean { - return this.abiCoder.decode(["bool"], data)[0]; - } - - decodeBytes32(data: string): string { - return this.abiCoder.decode(["bytes32"], data)[0]; - } - - decodeBytes(data: string): string { - return this.abiCoder.decode(["bytes"], data)[0]; - } - - decodeUint256Array(data: string): bigint[] { - return this.abiCoder.decode(["uint256[]"], data)[0]; - } - - decodeAddressArray(data: string): string[] { - return this.abiCoder.decode(["address[]"], data)[0]; - } - - decodeTuple(types: string[], data: string): any[] { - return this.abiCoder.decode([`tuple(${types.join(",")})`], data)[0]; - } - - decodeStruct(structDefinition: string[], data: string): any[] { - return this.decodeTuple(structDefinition, data); - } } diff --git a/test/solidity-encoder-decoder.test.ts b/test/solidity-encoding.test.ts similarity index 64% rename from test/solidity-encoder-decoder.test.ts rename to test/solidity-encoding.test.ts index b3a7cad..5e9a39f 100644 --- a/test/solidity-encoder-decoder.test.ts +++ b/test/solidity-encoding.test.ts @@ -1,75 +1,77 @@ import {describe, it, expect, beforeAll} from "@jest/globals" import { ethers } from "ethers"; -import { SolidityEncoderDecoder } from "../src"; +import { SolidityEncoder, SolidityDecoder} from "../src"; -describe("SolidityEncoderDecoder", () => { - let encoderDecoder: SolidityEncoderDecoder; +describe("Solidityencoder", () => { + let encoder: SolidityEncoder; + let decoder: SolidityDecoder; beforeAll(() => { - encoderDecoder = new SolidityEncoderDecoder(); + encoder = new SolidityEncoder(); + decoder = new SolidityDecoder(); }); // ------------------- Uint256 ------------------- it("should encode and decode uint256", () => { const value = 12345; - const encoded = encoderDecoder.encodeUint256(value); - const decoded = encoderDecoder.decodeUint256(encoded); + const encoded = encoder.encodeUint256(value); + const decoded = decoder.decodeUint256(encoded); expect(decoded).toBe(BigInt(value)); }); // ------------------- Int256 ------------------- it("should encode and decode int256", () => { const value = -12345; - const encoded = encoderDecoder.encodeInt256(value); - const decoded = encoderDecoder.decodeInt256(encoded); + const encoded = encoder.encodeInt256(value); + const decoded = decoder.decodeInt256(encoded); expect(decoded).toBe(BigInt(value)); }); // ------------------- Address ------------------- it("should encode and decode address", () => { const address = "0x1234567890AbcdEF1234567890aBcdef12345678"; - const encoded = encoderDecoder.encodeAddress(address); - const decoded = encoderDecoder.decodeAddress(encoded); + const encoded = encoder.encodeAddress(address); + const decoded = decoder.decodeAddress(encoded); expect(decoded).toBe(address); }); // ------------------- String ------------------- it("should encode and decode string", () => { const value = "Hello, Ethereum!"; - const encoded = encoderDecoder.encodeString(value); - const decoded = encoderDecoder.decodeString(encoded); + const encoded = encoder.encodeString(value); + const decoded = decoder.decodeString(encoded); expect(decoded).toBe(value); }); // ------------------- Bool ------------------- it("should encode and decode boolean", () => { const value = true; - const encoded = encoderDecoder.encodeBool(value); - const decoded = encoderDecoder.decodeBool(encoded); + const encoded = encoder.encodeBool(value); + const decoded = decoder.decodeBool(encoded); expect(decoded).toBe(value); }); // ------------------- Bytes32 ------------------- it("should encode and decode bytes32", () => { const value = "0x" + "12".repeat(32); - const encoded = encoderDecoder.encodeBytes32(value); - const decoded = encoderDecoder.decodeBytes32(encoded); + const encoded = encoder.encodeBytes32(value); + const decoded = decoder.decodeBytes32(encoded); expect(decoded).toBe(value); }); // ------------------- Bytes ------------------- it("should encode and decode bytes", () => { const value = "0x12345678"; - const encoded = encoderDecoder.encodeBytes(value); - const decoded = encoderDecoder.decodeBytes(encoded); + const encoded = encoder.encodeBytes(value); + const decoded = decoder.decodeBytes(encoded); expect(decoded).toBe(value); }); // ------------------- Uint256 Array ------------------- it("should encode and decode uint256[]", () => { const values = [1, 2, 3, 4, 5]; - const encoded = encoderDecoder.encodeUint256Array(values); - const decoded = encoderDecoder.decodeUint256Array(encoded); + const encoded = encoder.encodeUint256Array(values); + const decoded = decoder.decodeUint256Array(encoded); expect(decoded).toEqual(values.map(BigInt)); }); @@ -79,8 +81,8 @@ describe("SolidityEncoderDecoder", () => { "0x1234567890abcdef1234567890abcdef12345678", "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd", ]; - const encoded = encoderDecoder.encodeAddressArray(addresses); - const decoded = encoderDecoder.decodeAddressArray(encoded); + const encoded = encoder.encodeAddressArray(addresses); + const decoded = decoder.decodeAddressArray(encoded); expect(decoded[0].toLowerCase()).toEqual(addresses[0].toLowerCase()); expect(decoded[1].toLowerCase()).toEqual(addresses[1].toLowerCase()); }); @@ -93,8 +95,8 @@ describe("SolidityEncoderDecoder", () => { "0x1234567890abcdef1234567890abcdef12345678", "Hello Struct", ]; - const encoded = encoderDecoder.encodeStruct(structDefinition, structValues); - const decoded = encoderDecoder.decodeStruct(structDefinition, encoded); + const encoded = encoder.encodeStruct(structDefinition, structValues); + const decoded = decoder.decodeStruct(structDefinition, encoded); expect(decoded[0]).toEqual(BigInt(structValues[0])); const checksumAddress = ethers.getAddress("0x1234567890abcdef1234567890abcdef12345678"); From d668b98c5040d36e637a95a649e49ea1c789c9bc Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 20 Jan 2025 16:10:44 +0000 Subject: [PATCH 12/53] switch to yarn in build.yml --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2e3ddc0..3ba5768 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,10 +17,10 @@ jobs: node-version: 22.3.0 - name: Install dependencies - run: npm ci + run: yarn install - name: Test - run: npm run test + run: yarn test - name: Build - run: npm run build \ No newline at end of file + run: yarn build From 998e9629a92493bbaba0315f1f53ae661257b072 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 20 Jan 2025 16:19:47 +0000 Subject: [PATCH 13/53] add build:generate for BlocklockSender.sol --- package.json | 5 +- src/generated/BlocklockSender.ts | 548 +++++------------- .../factories/BlocklockSender__factory.ts | 308 +--------- src/generated/factories/index.ts | 4 + src/generated/index.ts | 4 + yarn.lock | 228 +++++++- 6 files changed, 385 insertions(+), 712 deletions(-) create mode 100644 src/generated/factories/index.ts diff --git a/package.json b/package.json index 80a5e89..34a20c3 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "types": "index.d.ts", "main": "index.js", "scripts": { - "build": "npm run clean && npm run build:js && npm run build:types", + "build": "npm run clean && npm run build:js && npm run build:generate && npm run build:types", + "build:generate": "mkdir -p src/generated && npx typechain --target ethers-v6 --out-dir src/generated './contracts/out/BlocklockSender.sol/*.json'", "build:js": "esbuild src/index.ts --bundle --platform=node --target=node22 --outfile=index.js", "build:types": "tsc --emitDeclarationOnly", "clean": "rm -rf index.js index.d.ts", @@ -38,6 +39,7 @@ "mcl-wasm": "^1.7.0" }, "devDependencies": { + "@typechain/ethers-v6": "^0.5.1", "@jest/globals": "^29.7.0", "@types/jest": "^29.5.14", "@types/node": "^22.7.5", @@ -47,6 +49,7 @@ "jest": "^29.7.0", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", + "typechain": "^8.3.2", "typescript": "^5.6.3", "typescript-eslint": "^8.11.0" }, diff --git a/src/generated/BlocklockSender.ts b/src/generated/BlocklockSender.ts index c0fbe00..3c2de84 100644 --- a/src/generated/BlocklockSender.ts +++ b/src/generated/BlocklockSender.ts @@ -73,168 +73,83 @@ export declare namespace TypesLib { export interface BlocklockSenderInterface extends Interface { getFunction( - nameOrSignature: - | "DEFAULT_ADMIN_ROLE" - | "DST_H1_G1" - | "DST_H2" - | "DST_H3" - | "DST_H4" - | "SCHEME_ID" - | "blocklockRequests" - | "decrypt" - | "decryptionSender" - | "getRequest" - | "getRoleAdmin" - | "grantRole" - | "hasRole" - | "isInFlight" - | "receiveDecryptionData" - | "renounceRole" - | "requestBlocklock" - | "revokeRole" - | "supportsInterface" + nameOrSignature: + | "DST_H1_G1" + | "DST_H2" + | "DST_H3" + | "DST_H4" + | "SCHEME_ID" + | "blocklockRequests" + | "decrypt" + | "decryptionSender" + | "getRequest" + | "isInFlight" + | "receiveDecryptionData" + | "requestBlocklock" ): FunctionFragment; getEvent( - nameOrSignatureOrTopic: - | "BlocklockCallbackFailed" - | "BlocklockCallbackSuccess" - | "BlocklockRequested" - | "RoleAdminChanged" - | "RoleGranted" - | "RoleRevoked" + nameOrSignatureOrTopic: "BlocklockCallbackSuccess" | "BlocklockRequested" ): EventFragment; - encodeFunctionData( - functionFragment: "DEFAULT_ADMIN_ROLE", - values?: undefined - ): string; encodeFunctionData(functionFragment: "DST_H1_G1", values?: undefined): string; encodeFunctionData(functionFragment: "DST_H2", values?: undefined): string; encodeFunctionData(functionFragment: "DST_H3", values?: undefined): string; encodeFunctionData(functionFragment: "DST_H4", values?: undefined): string; encodeFunctionData(functionFragment: "SCHEME_ID", values?: undefined): string; encodeFunctionData( - functionFragment: "blocklockRequests", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "decrypt", - values: [TypesLib.CiphertextStruct, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "decryptionSender", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getRequest", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "getRoleAdmin", - values: [BytesLike] + functionFragment: "blocklockRequests", + values: [BigNumberish] ): string; encodeFunctionData( - functionFragment: "grantRole", - values: [BytesLike, AddressLike] + functionFragment: "decrypt", + values: [TypesLib.CiphertextStruct, BytesLike] ): string; encodeFunctionData( - functionFragment: "hasRole", - values: [BytesLike, AddressLike] + functionFragment: "decryptionSender", + values?: undefined ): string; encodeFunctionData( - functionFragment: "isInFlight", - values: [BigNumberish] + functionFragment: "getRequest", + values: [BigNumberish] ): string; encodeFunctionData( - functionFragment: "receiveDecryptionData", - values: [BigNumberish, BytesLike, BytesLike] + functionFragment: "isInFlight", + values: [BigNumberish] ): string; encodeFunctionData( - functionFragment: "renounceRole", - values: [BytesLike, AddressLike] + functionFragment: "receiveDecryptionData", + values: [BigNumberish, BytesLike, BytesLike] ): string; encodeFunctionData( - functionFragment: "requestBlocklock", - values: [BigNumberish, TypesLib.CiphertextStruct] - ): string; - encodeFunctionData( - functionFragment: "revokeRole", - values: [BytesLike, AddressLike] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] + functionFragment: "requestBlocklock", + values: [BigNumberish, TypesLib.CiphertextStruct] ): string; - decodeFunctionResult( - functionFragment: "DEFAULT_ADMIN_ROLE", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "DST_H1_G1", data: BytesLike): Result; decodeFunctionResult(functionFragment: "DST_H2", data: BytesLike): Result; decodeFunctionResult(functionFragment: "DST_H3", data: BytesLike): Result; decodeFunctionResult(functionFragment: "DST_H4", data: BytesLike): Result; decodeFunctionResult(functionFragment: "SCHEME_ID", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "blocklockRequests", - data: BytesLike + functionFragment: "blocklockRequests", + data: BytesLike ): Result; decodeFunctionResult(functionFragment: "decrypt", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "decryptionSender", - data: BytesLike + functionFragment: "decryptionSender", + data: BytesLike ): Result; decodeFunctionResult(functionFragment: "getRequest", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getRoleAdmin", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; decodeFunctionResult(functionFragment: "isInFlight", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "receiveDecryptionData", - data: BytesLike + functionFragment: "receiveDecryptionData", + data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "renounceRole", - data: BytesLike + functionFragment: "requestBlocklock", + data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "requestBlocklock", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; -} - -export namespace BlocklockCallbackFailedEvent { - export type InputTuple = [ - requestID: BigNumberish, - blockHeight: BigNumberish, - ciphertext: TypesLib.CiphertextStruct, - decryptionKey: BytesLike - ]; - export type OutputTuple = [ - requestID: bigint, - blockHeight: bigint, - ciphertext: TypesLib.CiphertextStructOutput, - decryptionKey: string - ]; - export interface OutputObject { - requestID: bigint; - blockHeight: bigint; - ciphertext: TypesLib.CiphertextStructOutput; - decryptionKey: string; - } - export type Event = TypedContractEvent; - export type Filter = TypedDeferredTopicFilter; - export type Log = TypedEventLog; - export type LogDescription = TypedLogDescription; } export namespace BlocklockCallbackSuccessEvent { @@ -290,64 +205,6 @@ export namespace BlocklockRequestedEvent { export type LogDescription = TypedLogDescription; } -export namespace RoleAdminChangedEvent { - export type InputTuple = [ - role: BytesLike, - previousAdminRole: BytesLike, - newAdminRole: BytesLike - ]; - export type OutputTuple = [ - role: string, - previousAdminRole: string, - newAdminRole: string - ]; - export interface OutputObject { - role: string; - previousAdminRole: string; - newAdminRole: string; - } - export type Event = TypedContractEvent; - export type Filter = TypedDeferredTopicFilter; - export type Log = TypedEventLog; - export type LogDescription = TypedLogDescription; -} - -export namespace RoleGrantedEvent { - export type InputTuple = [ - role: BytesLike, - account: AddressLike, - sender: AddressLike - ]; - export type OutputTuple = [role: string, account: string, sender: string]; - export interface OutputObject { - role: string; - account: string; - sender: string; - } - export type Event = TypedContractEvent; - export type Filter = TypedDeferredTopicFilter; - export type Log = TypedEventLog; - export type LogDescription = TypedLogDescription; -} - -export namespace RoleRevokedEvent { - export type InputTuple = [ - role: BytesLike, - account: AddressLike, - sender: AddressLike - ]; - export type OutputTuple = [role: string, account: string, sender: string]; - export interface OutputObject { - role: string; - account: string; - sender: string; - } - export type Event = TypedContractEvent; - export type Filter = TypedDeferredTopicFilter; - export type Log = TypedEventLog; - export type LogDescription = TypedLogDescription; -} - export interface BlocklockSender extends BaseContract { connect(runner?: ContractRunner | null): BlocklockSender; waitForDeployment(): Promise; @@ -355,44 +212,42 @@ export interface BlocklockSender extends BaseContract { interface: BlocklockSenderInterface; queryFilter( - event: TCEvent, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined ): Promise>>; queryFilter( - filter: TypedDeferredTopicFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined ): Promise>>; on( - event: TCEvent, - listener: TypedListener + event: TCEvent, + listener: TypedListener ): Promise; on( - filter: TypedDeferredTopicFilter, - listener: TypedListener + filter: TypedDeferredTopicFilter, + listener: TypedListener ): Promise; once( - event: TCEvent, - listener: TypedListener + event: TCEvent, + listener: TypedListener ): Promise; once( - filter: TypedDeferredTopicFilter, - listener: TypedListener + filter: TypedDeferredTopicFilter, + listener: TypedListener ): Promise; listeners( - event: TCEvent + event: TCEvent ): Promise>>; listeners(eventName?: string): Promise>; removeAllListeners( - event?: TCEvent + event?: TCEvent ): Promise; - DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; - DST_H1_G1: TypedContractMethod<[], [string], "view">; DST_H2: TypedContractMethod<[], [string], "view">; @@ -404,293 +259,152 @@ export interface BlocklockSender extends BaseContract { SCHEME_ID: TypedContractMethod<[], [string], "view">; blocklockRequests: TypedContractMethod< - [arg0: BigNumberish], - [ - [bigint, bigint, TypesLib.CiphertextStructOutput, string, string] & { - decryptionRequestID: bigint; - blockHeight: bigint; - ciphertext: TypesLib.CiphertextStructOutput; - signature: string; - callback: string; - } - ], - "view" + [arg0: BigNumberish], + [ + [bigint, bigint, TypesLib.CiphertextStructOutput, string, string] & { + decryptionRequestID: bigint; + blockHeight: bigint; + ciphertext: TypesLib.CiphertextStructOutput; + signature: string; + callback: string; + } + ], + "view" >; decrypt: TypedContractMethod< - [ciphertext: TypesLib.CiphertextStruct, decryptionKey: BytesLike], - [string], - "view" + [ciphertext: TypesLib.CiphertextStruct, decryptionKey: BytesLike], + [string], + "view" >; decryptionSender: TypedContractMethod<[], [string], "view">; getRequest: TypedContractMethod< - [requestID: BigNumberish], - [TypesLib.BlocklockRequestStructOutput], - "view" - >; - - getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; - - grantRole: TypedContractMethod< - [role: BytesLike, account: AddressLike], - [void], - "nonpayable" - >; - - hasRole: TypedContractMethod< - [role: BytesLike, account: AddressLike], - [boolean], - "view" + [requestID: BigNumberish], + [TypesLib.BlocklockRequestStructOutput], + "view" >; isInFlight: TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; receiveDecryptionData: TypedContractMethod< - [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], - [void], - "nonpayable" - >; - - renounceRole: TypedContractMethod< - [role: BytesLike, callerConfirmation: AddressLike], - [void], - "nonpayable" + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" >; requestBlocklock: TypedContractMethod< - [blockHeight: BigNumberish, ciphertext: TypesLib.CiphertextStruct], - [bigint], - "nonpayable" - >; - - revokeRole: TypedContractMethod< - [role: BytesLike, account: AddressLike], - [void], - "nonpayable" - >; - - supportsInterface: TypedContractMethod< - [interfaceId: BytesLike], - [boolean], - "view" + [blockHeight: BigNumberish, ciphertext: TypesLib.CiphertextStruct], + [bigint], + "nonpayable" >; getFunction( - key: string | FunctionFragment + key: string | FunctionFragment ): T; getFunction( - nameOrSignature: "DEFAULT_ADMIN_ROLE" - ): TypedContractMethod<[], [string], "view">; - getFunction( - nameOrSignature: "DST_H1_G1" + nameOrSignature: "DST_H1_G1" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "DST_H2" + nameOrSignature: "DST_H2" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "DST_H3" + nameOrSignature: "DST_H3" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "DST_H4" + nameOrSignature: "DST_H4" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "SCHEME_ID" + nameOrSignature: "SCHEME_ID" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "blocklockRequests" + nameOrSignature: "blocklockRequests" ): TypedContractMethod< - [arg0: BigNumberish], - [ - [bigint, bigint, TypesLib.CiphertextStructOutput, string, string] & { - decryptionRequestID: bigint; - blockHeight: bigint; - ciphertext: TypesLib.CiphertextStructOutput; - signature: string; - callback: string; - } - ], - "view" + [arg0: BigNumberish], + [ + [bigint, bigint, TypesLib.CiphertextStructOutput, string, string] & { + decryptionRequestID: bigint; + blockHeight: bigint; + ciphertext: TypesLib.CiphertextStructOutput; + signature: string; + callback: string; + } + ], + "view" >; getFunction( - nameOrSignature: "decrypt" + nameOrSignature: "decrypt" ): TypedContractMethod< - [ciphertext: TypesLib.CiphertextStruct, decryptionKey: BytesLike], - [string], - "view" + [ciphertext: TypesLib.CiphertextStruct, decryptionKey: BytesLike], + [string], + "view" >; getFunction( - nameOrSignature: "decryptionSender" + nameOrSignature: "decryptionSender" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "getRequest" + nameOrSignature: "getRequest" ): TypedContractMethod< - [requestID: BigNumberish], - [TypesLib.BlocklockRequestStructOutput], - "view" + [requestID: BigNumberish], + [TypesLib.BlocklockRequestStructOutput], + "view" >; getFunction( - nameOrSignature: "getRoleAdmin" - ): TypedContractMethod<[role: BytesLike], [string], "view">; - getFunction( - nameOrSignature: "grantRole" - ): TypedContractMethod< - [role: BytesLike, account: AddressLike], - [void], - "nonpayable" - >; - getFunction( - nameOrSignature: "hasRole" - ): TypedContractMethod< - [role: BytesLike, account: AddressLike], - [boolean], - "view" - >; - getFunction( - nameOrSignature: "isInFlight" + nameOrSignature: "isInFlight" ): TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; getFunction( - nameOrSignature: "receiveDecryptionData" - ): TypedContractMethod< - [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], - [void], - "nonpayable" - >; - getFunction( - nameOrSignature: "renounceRole" + nameOrSignature: "receiveDecryptionData" ): TypedContractMethod< - [role: BytesLike, callerConfirmation: AddressLike], - [void], - "nonpayable" + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" >; getFunction( - nameOrSignature: "requestBlocklock" + nameOrSignature: "requestBlocklock" ): TypedContractMethod< - [blockHeight: BigNumberish, ciphertext: TypesLib.CiphertextStruct], - [bigint], - "nonpayable" + [blockHeight: BigNumberish, ciphertext: TypesLib.CiphertextStruct], + [bigint], + "nonpayable" >; - getFunction( - nameOrSignature: "revokeRole" - ): TypedContractMethod< - [role: BytesLike, account: AddressLike], - [void], - "nonpayable" - >; - getFunction( - nameOrSignature: "supportsInterface" - ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getEvent( - key: "BlocklockCallbackFailed" - ): TypedContractEvent< - BlocklockCallbackFailedEvent.InputTuple, - BlocklockCallbackFailedEvent.OutputTuple, - BlocklockCallbackFailedEvent.OutputObject - >; - getEvent( - key: "BlocklockCallbackSuccess" - ): TypedContractEvent< - BlocklockCallbackSuccessEvent.InputTuple, - BlocklockCallbackSuccessEvent.OutputTuple, - BlocklockCallbackSuccessEvent.OutputObject - >; - getEvent( - key: "BlocklockRequested" - ): TypedContractEvent< - BlocklockRequestedEvent.InputTuple, - BlocklockRequestedEvent.OutputTuple, - BlocklockRequestedEvent.OutputObject - >; - getEvent( - key: "RoleAdminChanged" + key: "BlocklockCallbackSuccess" ): TypedContractEvent< - RoleAdminChangedEvent.InputTuple, - RoleAdminChangedEvent.OutputTuple, - RoleAdminChangedEvent.OutputObject + BlocklockCallbackSuccessEvent.InputTuple, + BlocklockCallbackSuccessEvent.OutputTuple, + BlocklockCallbackSuccessEvent.OutputObject >; getEvent( - key: "RoleGranted" + key: "BlocklockRequested" ): TypedContractEvent< - RoleGrantedEvent.InputTuple, - RoleGrantedEvent.OutputTuple, - RoleGrantedEvent.OutputObject - >; - getEvent( - key: "RoleRevoked" - ): TypedContractEvent< - RoleRevokedEvent.InputTuple, - RoleRevokedEvent.OutputTuple, - RoleRevokedEvent.OutputObject + BlocklockRequestedEvent.InputTuple, + BlocklockRequestedEvent.OutputTuple, + BlocklockRequestedEvent.OutputObject >; filters: { - "BlocklockCallbackFailed(uint256,uint256,tuple,bytes)": TypedContractEvent< - BlocklockCallbackFailedEvent.InputTuple, - BlocklockCallbackFailedEvent.OutputTuple, - BlocklockCallbackFailedEvent.OutputObject - >; - BlocklockCallbackFailed: TypedContractEvent< - BlocklockCallbackFailedEvent.InputTuple, - BlocklockCallbackFailedEvent.OutputTuple, - BlocklockCallbackFailedEvent.OutputObject - >; - "BlocklockCallbackSuccess(uint256,uint256,tuple,bytes)": TypedContractEvent< - BlocklockCallbackSuccessEvent.InputTuple, - BlocklockCallbackSuccessEvent.OutputTuple, - BlocklockCallbackSuccessEvent.OutputObject + BlocklockCallbackSuccessEvent.InputTuple, + BlocklockCallbackSuccessEvent.OutputTuple, + BlocklockCallbackSuccessEvent.OutputObject >; BlocklockCallbackSuccess: TypedContractEvent< - BlocklockCallbackSuccessEvent.InputTuple, - BlocklockCallbackSuccessEvent.OutputTuple, - BlocklockCallbackSuccessEvent.OutputObject + BlocklockCallbackSuccessEvent.InputTuple, + BlocklockCallbackSuccessEvent.OutputTuple, + BlocklockCallbackSuccessEvent.OutputObject >; "BlocklockRequested(uint256,uint256,tuple,address,uint256)": TypedContractEvent< - BlocklockRequestedEvent.InputTuple, - BlocklockRequestedEvent.OutputTuple, - BlocklockRequestedEvent.OutputObject + BlocklockRequestedEvent.InputTuple, + BlocklockRequestedEvent.OutputTuple, + BlocklockRequestedEvent.OutputObject >; BlocklockRequested: TypedContractEvent< - BlocklockRequestedEvent.InputTuple, - BlocklockRequestedEvent.OutputTuple, - BlocklockRequestedEvent.OutputObject - >; - - "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< - RoleAdminChangedEvent.InputTuple, - RoleAdminChangedEvent.OutputTuple, - RoleAdminChangedEvent.OutputObject - >; - RoleAdminChanged: TypedContractEvent< - RoleAdminChangedEvent.InputTuple, - RoleAdminChangedEvent.OutputTuple, - RoleAdminChangedEvent.OutputObject - >; - - "RoleGranted(bytes32,address,address)": TypedContractEvent< - RoleGrantedEvent.InputTuple, - RoleGrantedEvent.OutputTuple, - RoleGrantedEvent.OutputObject - >; - RoleGranted: TypedContractEvent< - RoleGrantedEvent.InputTuple, - RoleGrantedEvent.OutputTuple, - RoleGrantedEvent.OutputObject - >; - - "RoleRevoked(bytes32,address,address)": TypedContractEvent< - RoleRevokedEvent.InputTuple, - RoleRevokedEvent.OutputTuple, - RoleRevokedEvent.OutputObject - >; - RoleRevoked: TypedContractEvent< - RoleRevokedEvent.InputTuple, - RoleRevokedEvent.OutputTuple, - RoleRevokedEvent.OutputObject + BlocklockRequestedEvent.InputTuple, + BlocklockRequestedEvent.OutputTuple, + BlocklockRequestedEvent.OutputObject >; }; } diff --git a/src/generated/factories/BlocklockSender__factory.ts b/src/generated/factories/BlocklockSender__factory.ts index afa35f2..4cd2e35 100644 --- a/src/generated/factories/BlocklockSender__factory.ts +++ b/src/generated/factories/BlocklockSender__factory.ts @@ -31,19 +31,6 @@ const _abi = [ ], stateMutability: "nonpayable", }, - { - type: "function", - name: "DEFAULT_ADMIN_ROLE", - inputs: [], - outputs: [ - { - name: "", - type: "bytes32", - internalType: "bytes32", - }, - ], - stateMutability: "view", - }, { type: "function", name: "DST_H1_G1", @@ -318,67 +305,6 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "getRoleAdmin", - inputs: [ - { - name: "role", - type: "bytes32", - internalType: "bytes32", - }, - ], - outputs: [ - { - name: "", - type: "bytes32", - internalType: "bytes32", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "grantRole", - inputs: [ - { - name: "role", - type: "bytes32", - internalType: "bytes32", - }, - { - name: "account", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "hasRole", - inputs: [ - { - name: "role", - type: "bytes32", - internalType: "bytes32", - }, - { - name: "account", - type: "address", - internalType: "address", - }, - ], - outputs: [ - { - name: "", - type: "bool", - internalType: "bool", - }, - ], - stateMutability: "view", - }, { type: "function", name: "isInFlight", @@ -421,24 +347,6 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, - { - type: "function", - name: "renounceRole", - inputs: [ - { - name: "role", - type: "bytes32", - internalType: "bytes32", - }, - { - name: "callerConfirmation", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, { type: "function", name: "requestBlocklock", @@ -492,103 +400,6 @@ const _abi = [ ], stateMutability: "nonpayable", }, - { - type: "function", - name: "revokeRole", - inputs: [ - { - name: "role", - type: "bytes32", - internalType: "bytes32", - }, - { - name: "account", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "supportsInterface", - inputs: [ - { - name: "interfaceId", - type: "bytes4", - internalType: "bytes4", - }, - ], - outputs: [ - { - name: "", - type: "bool", - internalType: "bool", - }, - ], - stateMutability: "view", - }, - { - type: "event", - name: "BlocklockCallbackFailed", - inputs: [ - { - name: "requestID", - type: "uint256", - indexed: true, - internalType: "uint256", - }, - { - name: "blockHeight", - type: "uint256", - indexed: false, - internalType: "uint256", - }, - { - name: "ciphertext", - type: "tuple", - indexed: false, - internalType: "struct TypesLib.Ciphertext", - components: [ - { - name: "u", - type: "tuple", - internalType: "struct BLS.PointG2", - components: [ - { - name: "x", - type: "uint256[2]", - internalType: "uint256[2]", - }, - { - name: "y", - type: "uint256[2]", - internalType: "uint256[2]", - }, - ], - }, - { - name: "v", - type: "bytes", - internalType: "bytes", - }, - { - name: "w", - type: "bytes", - internalType: "bytes", - }, - ], - }, - { - name: "decryptionKey", - type: "bytes", - indexed: false, - internalType: "bytes", - }, - ], - anonymous: false, - }, { type: "event", name: "BlocklockCallbackSuccess", @@ -715,99 +526,14 @@ const _abi = [ ], anonymous: false, }, - { - type: "event", - name: "RoleAdminChanged", - inputs: [ - { - name: "role", - type: "bytes32", - indexed: true, - internalType: "bytes32", - }, - { - name: "previousAdminRole", - type: "bytes32", - indexed: true, - internalType: "bytes32", - }, - { - name: "newAdminRole", - type: "bytes32", - indexed: true, - internalType: "bytes32", - }, - ], - anonymous: false, - }, - { - type: "event", - name: "RoleGranted", - inputs: [ - { - name: "role", - type: "bytes32", - indexed: true, - internalType: "bytes32", - }, - { - name: "account", - type: "address", - indexed: true, - internalType: "address", - }, - { - name: "sender", - type: "address", - indexed: true, - internalType: "address", - }, - ], - anonymous: false, - }, - { - type: "event", - name: "RoleRevoked", - inputs: [ - { - name: "role", - type: "bytes32", - indexed: true, - internalType: "bytes32", - }, - { - name: "account", - type: "address", - indexed: true, - internalType: "address", - }, - { - name: "sender", - type: "address", - indexed: true, - internalType: "address", - }, - ], - anonymous: false, - }, { type: "error", - name: "AccessControlBadConfirmation", - inputs: [], - }, - { - type: "error", - name: "AccessControlUnauthorizedAccount", + name: "BlocklockCallbackFailed", inputs: [ { - name: "account", - type: "address", - internalType: "address", - }, - { - name: "neededRole", - type: "bytes32", - internalType: "bytes32", + name: "requestID", + type: "uint256", + internalType: "uint256", }, ], }, @@ -825,14 +551,14 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801562000010575f80fd5b5060405162002f1238038062002f128339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b608051612dfa620001185f395f818161017a015281816105db0152818161081701526112df0152612dfa5ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c806367b276af116100c7578063a217fddf1161007d578063c9bc18c411610063578063c9bc18c414610336578063cd802c9114610349578063d547741f1461035c575f80fd5b8063a217fddf1461030f578063c58343ef14610316575f80fd5b8063826d362b116100ad578063826d362b1461026c5780638a1f165a1461029057806391d14854146102cc575f80fd5b806367b276af1461025c5780637350f45614610264575f80fd5b80632f2ff15d1161011c57806338c27d121161010257806338c27d121461022e57806346cd2b42146102365780635d3be00114610249575f80fd5b80632f2ff15d1461020657806336568abe1461021b575f80fd5b806301ffc9a71461014d578063133c40c714610175578063235296f7146101c1578063248a9ca3146101d6575b5f80fd5b61016061015b366004612156565b61036f565b60405190151581526020015b60405180910390f35b61019c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b6101c9610407565b60405161016c9190612200565b6101f86101e4366004612212565b5f9081526020819052604090206001015490565b60405190815260200161016c565b610219610214366004612229565b610423565b005b610219610229366004612229565b61044d565b6101c96104ab565b6101f8610244366004612285565b6104c7565b610219610257366004612307565b6107ff565b6101c9610917565b6101c9610933565b61027f61027a366004612212565b61094f565b60405161016c9594939291906123f8565b6101c96040518060400160405280601381526020017f424e3235342d424c532d424c4f434b4c4f434b0000000000000000000000000081525081565b6101606102da366004612229565b5f9182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101f85f81565b610329610324366004612212565b610bb3565b60405161016c9190612451565b6101c96103443660046124e8565b610ea6565b610160610357366004612212565b61123b565b61021961036a366004612229565b611364565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061040157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040518060600160405280602c8152602001612d55602c913981565b5f8281526020819052604090206001015461043d81611388565b6104478383611395565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461049c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104a6828261148e565b505050565b604051806060016040528060228152602001612d336022913981565b5f43831161055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c792067726560448201527f61746572207468616e2063757272656e7400000000000000000000000000000060648201526084015b60405180910390fd5b5f6040518060a001604052805f81526020018581526020018461057e906126d4565b815260200160405180602001604052805f81525081526020013373ffffffffffffffffffffffffffffffffffffffff1681525090505f846040516020016105c791815260200190565b60405160208183030381529060405290505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f87f0e616040518060400160405280601381526020017f424e3235342d424c532d424c4f434b4c4f434b000000000000000000000000008152508760405160200161065c919061286e565b604051602081830303815290604052856040518463ffffffff1660e01b815260040161068a93929190612880565b6020604051808303815f875af11580156106a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ca91906128b8565b8084525f818152600160208181526040928390208751815590870151918101919091559085015180518051939450869360028085019291839161070e918391611ff5565b5060208201516107249060028084019190611ff5565b5050506020820151600482019061073b908261295e565b5060408201516005820190610750908261295e565b50505060608201516008820190610767908261295e565b5060809190910151600990910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906107ee908a908a904290612a7a565b60405180910390a395945050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c00006044820152606401610553565b6109108585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f9201919091525061154792505050565b5050505050565b604051806060016040528060228152602001612d816022913981565b604051806060016040528060228152602001612da36022913981565b600160208190525f918252604091829020805491810154835160e08101948590529293909290600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161099057505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116109c65750505050508152505081526020016004820180546109f6906128cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a22906128cf565b8015610a6d5780601f10610a4457610100808354040283529160200191610a6d565b820191905f5260205f20905b815481529060010190602001808311610a5057829003601f168201915b50505050508152602001600582018054610a86906128cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab2906128cf565b8015610afd5780601f10610ad457610100808354040283529160200191610afd565b820191905f5260205f20905b815481529060010190602001808311610ae057829003601f168201915b50505050508152505090806008018054610b16906128cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b42906128cf565b8015610b8d5780601f10610b6457610100808354040283529160200191610b8d565b820191905f5260205f20905b815481529060010190602001808311610b7057829003601f168201915b5050506009909301549192505073ffffffffffffffffffffffffffffffffffffffff1685565b610bbb612033565b5f828152600160208181526040808420815160a08082018452825482529482015493810193909352815160e08101808452939491939285019290916002808601928492606084019285928492860191849182845b815481526020019060010190808311610c0f57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610c45575050505050815250508152602001600482018054610c75906128cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca1906128cf565b8015610cec5780601f10610cc357610100808354040283529160200191610cec565b820191905f5260205f20905b815481529060010190602001808311610ccf57829003601f168201915b50505050508152602001600582018054610d05906128cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d31906128cf565b8015610d7c5780601f10610d5357610100808354040283529160200191610d7c565b820191905f5260205f20905b815481529060010190602001808311610d5f57829003601f168201915b5050505050815250508152602001600882018054610d99906128cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc5906128cf565b8015610e105780601f10610de757610100808354040283529160200191610e10565b820191905f5260205f20905b815481529060010190602001808311610df357829003601f168201915b50505091835250506009919091015473ffffffffffffffffffffffffffffffffffffffff166020909101528051909150610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c6964207265717565737449440000000000000000000000000000006044820152606401610553565b6060610100829003610f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e6774680000006044820152606401610553565b610100610f2460a0860186612aa2565b905010610f8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e6774680000006044820152606401610553565b5f610f9b6080860186612aa2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b8381101561104757848482818110610feb57610feb612b03565b9050013560f81c60f81b82828151811061100757611007612b03565b0160200180517fff00000000000000000000000000000000000000000000000000000000000000908116909218909116905f82901a905350600101610fd1565b505f61105660a0870187612aa2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506040805160608101909152602280825295965090946110c194509092509050612d816020830139846110ba60a08b018b612aa2565b9050611aa3565b90505f5b6110d260a0890189612aa2565b905081101561114a578181815181106110ed576110ed612b03565b602001015160f81c60f81b83828151811061110a5761110a612b03565b0160200180517fff00000000000000000000000000000000000000000000000000000000000000908116909218909116905f82901a9053506001016110c5565b505f61118f604051806060016040528060228152602001612da360229139858560405160200161117b929190612b30565b604051602081830303815290604052611ccc565b90505f61119b82611d51565b90505f806111b7836111b2368e90038e018e612b5e565b611dfd565b90925090506001821515821515141461122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e76616c6964206369706865727465787420726567697374657265640000006044820152606401610553565b50939998505050505050505050565b5f81815260016020526040812054806112b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e6400000000006044820152606401610553565b6040517fcd802c91000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063cd802c9190602401602060405180830381865afa158015611339573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135d9190612b78565b9392505050565b5f8281526020819052604090206001015461137e81611388565b610447838361148e565b6113928133611f6c565b50565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16611487575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114253390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610401565b505f610401565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615611487575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610401565b5f838152600160208181526040808420815160a08082018452825482529482015493810193909352815160e08101808452939491939285019290916002808601928492606084019285928492860191849182845b81548152602001906001019080831161159b57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116115d1575050505050815250508152602001600482018054611601906128cf565b80601f016020809104026020016040519081016040528092919081815260200182805461162d906128cf565b80156116785780601f1061164f57610100808354040283529160200191611678565b820191905f5260205f20905b81548152906001019060200180831161165b57829003601f168201915b50505050508152602001600582018054611691906128cf565b80601f01602080910402602001604051908101604052809291908181526020018280546116bd906128cf565b80156117085780601f106116df57610100808354040283529160200191611708565b820191905f5260205f20905b8154815290600101906020018083116116eb57829003601f168201915b5050505050815250508152602001600882018054611725906128cf565b80601f0160208091040260200160405190810160405280929190818152602001828054611751906128cf565b801561179c5780601f106117735761010080835404028352916020019161179c565b820191905f5260205f20905b81548152906001019060200180831161177f57829003601f168201915b50505091835250506009919091015473ffffffffffffffffffffffffffffffffffffffff166020909101528051909150611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f60448201527f72207468617420696400000000000000000000000000000000000000000000006064820152608401610553565b6060810182905260808101516040515f9173ffffffffffffffffffffffffffffffffffffffff16907f5d94180200000000000000000000000000000000000000000000000000000000906118b29088908890602401612b97565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161193b9190612bb7565b5f604051808303815f865af19150503d805f8114611974576040519150601f19603f3d011682016040523d82523d5f602084013e611979565b606091505b50509050806119cb57847f771e16411d4d95d03c730eb2aa1362899ee81cdba2f27a94c718d9d26d1714e783602001518460400151876040516119be93929190612bd2565b60405180910390a2611a10565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c8360200151846040015187604051611a0793929190612bd2565b60405180910390a25b5f85815260016020819052604082208281559081018290556002810182815560038201839055600482018390556005820183905590919081611a556006850182612065565b611a62600583015f612065565b50611a729050600883015f612065565b5060090180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050505050565b825160609060ff811115611ae557846040517f26e4f9ba0000000000000000000000000000000000000000000000000000000081526004016105539190612200565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b88604051602001611b249796959493929190612bfc565b60405160208183030381529060405290505f818051906020012090505f8160018a87604051602001611b599493929190612c99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160208201209091505f60ff891667ffffffffffffffff811115611bae57611bae61254c565b6040519080825280601f01601f191660200182016040528015611bd8576020820181803683370190505b5090505f6005611bec601f60ff8d16612cfa565b901c905060015b81811015611c8f57858418611c09826001612cfa565b8e8b604051602001611c1e9493929190612c99565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830181028501810195909552805194810194909420939450600101611bf3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01602090810282010191909152955050505050509392505050565b5f80611cda84846030611aa3565b6018810151603082015191925077ffffffffffffffffffffffffffffffffffffffffffffffff91821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4783817801000000000000000000000000000000000000000000000000850908979650505050505050565b604080518082019091525f8082526020820152611d6c61209c565b6001815260026020820152604081018390525f60608360808460076107d05a03fa905080611df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c6564006044820152606401610553565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611edb57611edb612b03565b60200201518152602001855f01515f60028110611efa57611efa612b03565b602002015181526020018560200151600160028110611f1b57611f1b612b03565b6020020151815260200185602001515f60028110611f3b57611f3b612b03565b602002015190529050611f4c6120ba565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611ff1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610553565b5050565b8260028101928215612023579160200282015b82811115612023578251825591602001919060010190612008565b5061202f9291506120d8565b5090565b6040518060a001604052805f81526020015f81526020016120526120ec565b8152606060208201525f60409091015290565b508054612071906128cf565b5f825580601f10612080575050565b601f0160209004905f5260205f209081019061139291906120d8565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b8082111561202f575f81556001016120d9565b60405180606001604052806120ff612113565b815260200160608152602001606081525090565b6040518060400160405280612126612138565b8152602001612133612138565b905290565b60405180604001604052806002906020820280368337509192915050565b5f60208284031215612166575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461135d575f80fd5b5f5b838110156121af578181015183820152602001612197565b50505f910152565b5f81518084526121ce816020860160208601612195565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f61135d60208301846121b7565b5f60208284031215612222575f80fd5b5035919050565b5f806040838503121561223a575f80fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114612264575f80fd5b809150509250929050565b5f60c0828403121561227f575f80fd5b50919050565b5f8060408385031215612296575f80fd5b82359150602083013567ffffffffffffffff8111156122b3575f80fd5b6122bf8582860161226f565b9150509250929050565b5f8083601f8401126122d9575f80fd5b50813567ffffffffffffffff8111156122f0575f80fd5b602083019150836020828501011115611f65575f80fd5b5f805f805f6060868803121561231b575f80fd5b85359450602086013567ffffffffffffffff80821115612339575f80fd5b61234589838a016122c9565b9096509450604088013591508082111561235d575f80fd5b5061236a888289016122c9565b969995985093965092949392505050565b805f5b600281101561044757815184526020938401939091019060010161237e565b5f81516123ab84825161237b565b602001516123bc604085018261237b565b50602082015160c060808501526123d660c08501826121b7565b9050604083015184820360a08601526123ef82826121b7565b95945050505050565b85815284602082015260a060408201525f61241660a083018661239d565b828103606084015261242881866121b7565b91505073ffffffffffffffffffffffffffffffffffffffff831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a0606084015261248060c084018261239d565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526124bb82826121b7565b91505073ffffffffffffffffffffffffffffffffffffffff60808501511660a08401528091505092915050565b5f805f604084860312156124fa575f80fd5b833567ffffffffffffffff80821115612511575f80fd5b61251d8783880161226f565b94506020860135915080821115612532575f80fd5b5061253f868287016122c9565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561259c5761259c61254c565b60405290565b5f82601f8301126125b1575f80fd5b6125b9612579565b8060408401858111156125ca575f80fd5b845b818110156125e45780358452602093840193016125cc565b509095945050505050565b5f608082840312156125ff575f80fd5b612607612579565b905061261383836125a2565b815261262283604084016125a2565b602082015292915050565b5f82601f83011261263c575f80fd5b813567ffffffffffffffff808211156126575761265761254c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561269d5761269d61254c565b816040528381528660208588010111156126b5575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c082360312156126e4575f80fd5b6040516060810167ffffffffffffffff82821081831117156127085761270861254c565b8160405261271636866125ef565b8352608085013591508082111561272b575f80fd5b6127373683870161262d565b602084015260a085013591508082111561274f575f80fd5b5061275c3682860161262d565b60408301525092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261279b575f80fd5b830160208101925035905067ffffffffffffffff8111156127ba575f80fd5b803603821315611f65575f80fd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040818337604080820160408401375f61282c6080830183612768565b60c0608086015261284160c0860182846127c8565b91505061285160a0840184612768565b85830360a08701526128648382846127c8565b9695505050505050565b602081525f61135d602083018461280f565b606081525f61289260608301866121b7565b82810360208401526128a481866121b7565b9050828103604084015261286481856121b7565b5f602082840312156128c8575f80fd5b5051919050565b600181811c908216806128e357607f821691505b60208210810361227f577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b601f8211156104a657805f5260205f20601f840160051c8101602085101561293f5750805b601f840160051c820191505b81811015610910575f815560010161294b565b815167ffffffffffffffff8111156129785761297861254c565b61298c8161298684546128cf565b8461291a565b602080601f8311600181146129de575f84156129a85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612a72565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612a2a57888601518255948401946001909101908401612a0b565b5085821015612a6657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f612a92606083018561280f565b9050826040830152949350505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612ad5575f80fd5b83018035915067ffffffffffffffff821115612aef575f80fd5b602001915036819003821315611f65575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8351612b41818460208801612195565b835190830190612b55818360208801612195565b01949350505050565b5f60808284031215612b6e575f80fd5b61135d83836125ef565b5f60208284031215612b88575f80fd5b8151801515811461135d575f80fd5b828152604060208201525f612baf60408301846121b7565b949350505050565b5f8251612bc8818460208701612195565b9190910192915050565b838152606060208201525f612bea606083018561239d565b828103604084015261286481856121b7565b5f8851612c0d818460208d01612195565b885190830190612c21818360208d01612195565b8082019150507fff00000000000000000000000000000000000000000000000000000000000000808960f81b168252808860f81b166001830152808760f81b1660028301528551612c79816003850160208a01612195565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f7fff00000000000000000000000000000000000000000000000000000000000000808660f81b1660208401528451612cdc816021860160208901612195565b60f89490941b16919092016021810191909152602201949350505050565b80820180821115610401577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa264697066735822122060f75d05befdfc07f7f15cbad632da0bfa374d72713518b7a9f5fdab02dae8a464736f6c63430008180033"; + "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa264697066735822122068a2f537146d4ae64f695ef323715dd1ef8c4eb648579b2c30aa4fc73111ddda64736f6c63430008180033"; type BlocklockSenderConstructorParams = - | [signer?: Signer] - | ConstructorParameters; + | [signer?: Signer] + | ConstructorParameters; const isSuperArgs = ( - xs: BlocklockSenderConstructorParams + xs: BlocklockSenderConstructorParams ): xs is ConstructorParameters => xs.length > 1; export class BlocklockSender__factory extends ContractFactory { @@ -845,19 +571,19 @@ export class BlocklockSender__factory extends ContractFactory { } override getDeployTransaction( - _decryptionSender: AddressLike, - overrides?: NonPayableOverrides & { from?: string } + _decryptionSender: AddressLike, + overrides?: NonPayableOverrides & { from?: string } ): Promise { return super.getDeployTransaction(_decryptionSender, overrides || {}); } override deploy( - _decryptionSender: AddressLike, - overrides?: NonPayableOverrides & { from?: string } + _decryptionSender: AddressLike, + overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy(_decryptionSender, overrides || {}) as Promise< - BlocklockSender & { - deploymentTransaction(): ContractTransactionResponse; - } + BlocklockSender & { + deploymentTransaction(): ContractTransactionResponse; + } >; } override connect(runner: ContractRunner | null): BlocklockSender__factory { @@ -870,8 +596,8 @@ export class BlocklockSender__factory extends ContractFactory { return new Interface(_abi) as BlocklockSenderInterface; } static connect( - address: string, - runner?: ContractRunner | null + address: string, + runner?: ContractRunner | null ): BlocklockSender { return new Contract(address, _abi, runner) as unknown as BlocklockSender; } diff --git a/src/generated/factories/index.ts b/src/generated/factories/index.ts new file mode 100644 index 0000000..1f8c188 --- /dev/null +++ b/src/generated/factories/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { BlocklockSender__factory } from "./BlocklockSender__factory"; diff --git a/src/generated/index.ts b/src/generated/index.ts index bc611f6..5a51d74 100644 --- a/src/generated/index.ts +++ b/src/generated/index.ts @@ -1,2 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ export type { BlocklockSender } from "./BlocklockSender"; +export * as factories from "./factories"; export { BlocklockSender__factory } from "./factories/BlocklockSender__factory"; diff --git a/yarn.lock b/yarn.lock index 91c9946..2fd26aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -847,6 +847,14 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== +"@typechain/ethers-v6@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz#42fe214a19a8b687086c93189b301e2b878797ea" + integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + "@types/babel__core@^7.1.14": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -957,6 +965,11 @@ dependencies: undici-types "~6.19.2" +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + "@types/seedrandom@3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" @@ -1129,6 +1142,13 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -1166,6 +1186,16 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + asn1js@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" @@ -1375,7 +1405,16 @@ catering@^2.0.0, catering@^2.1.0: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== -chalk@^4.0.0, chalk@^4.0.2: +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1417,6 +1456,13 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -1424,11 +1470,36 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1478,6 +1549,11 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -1586,6 +1662,11 @@ escalade@^3.1.1, escalade@^3.2.0: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" @@ -1797,6 +1878,13 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1826,6 +1914,15 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1896,6 +1993,18 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -1918,7 +2027,7 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -1928,6 +2037,11 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -2486,6 +2600,11 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2536,6 +2655,13 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + keccak@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" @@ -2623,6 +2749,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -2633,7 +2764,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.14: +lodash@^4.17.14, lodash@^4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2725,6 +2856,11 @@ minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + module-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" @@ -2905,6 +3041,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -2963,6 +3104,11 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3087,6 +3233,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -3133,6 +3284,13 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -3152,6 +3310,16 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -3178,6 +3346,21 @@ ts-api-utils@^1.3.0: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + ts-jest@^29.2.5: version "29.2.5" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" @@ -3239,6 +3422,22 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typechain@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + typescript-eslint@^8.11.0: version "8.19.0" resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.19.0.tgz#e4ff06b19f2f9807a2c26147a0199a109944d9e0" @@ -3253,6 +3452,16 @@ typescript@^5.6.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" @@ -3263,6 +3472,11 @@ undici-types@~6.20.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + update-browserslist-db@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" @@ -3330,6 +3544,14 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" From d0b90b4cc8433b74b352028b78dd85bb0eea84dc Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 20 Jan 2025 16:28:12 +0000 Subject: [PATCH 14/53] add mock blocklock receiver for end to end testing --- contracts/src/AbstractBlocklockReceiver.sol | 2 +- contracts/src/Multicall.sol | 4 +- contracts/src/interfaces/IMulticall.sol | 2 +- contracts/src/libraries/TypesLib.sol | 2 +- contracts/src/mocks/MockBlocklockReceiver.sol | 38 +++++++++++++++++++ 5 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 contracts/src/mocks/MockBlocklockReceiver.sol diff --git a/contracts/src/AbstractBlocklockReceiver.sol b/contracts/src/AbstractBlocklockReceiver.sol index 03a63aa..c0ada3f 100644 --- a/contracts/src/AbstractBlocklockReceiver.sol +++ b/contracts/src/AbstractBlocklockReceiver.sol @@ -16,5 +16,5 @@ abstract contract AbstractBlocklockReceiver is IBlocklockReceiver { blocklock = IBlocklockSender(blocklockSender); } - function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external onlyBlocklockContract {} + function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external onlyBlocklockContract {} } diff --git a/contracts/src/Multicall.sol b/contracts/src/Multicall.sol index ae40d5e..b509df9 100644 --- a/contracts/src/Multicall.sol +++ b/contracts/src/Multicall.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import './interfaces/IMulticall.sol'; +import "./interfaces/IMulticall.sol"; /// @title Multicall /// @notice Enables calling multiple methods in a single call to the contract @@ -24,4 +24,4 @@ abstract contract Multicall is IMulticall { results[i] = result; } } -} \ No newline at end of file +} diff --git a/contracts/src/interfaces/IMulticall.sol b/contracts/src/interfaces/IMulticall.sol index 8abeafd..e949c38 100644 --- a/contracts/src/interfaces/IMulticall.sol +++ b/contracts/src/interfaces/IMulticall.sol @@ -9,4 +9,4 @@ interface IMulticall { /// @param data The encoded function data for each of the calls to make to this contract /// @return results The results from each of the calls passed in via data function multicall(bytes[] calldata data) external payable returns (bytes[] memory results); -} \ No newline at end of file +} diff --git a/contracts/src/libraries/TypesLib.sol b/contracts/src/libraries/TypesLib.sol index 81e5470..bf751d1 100644 --- a/contracts/src/libraries/TypesLib.sol +++ b/contracts/src/libraries/TypesLib.sol @@ -12,7 +12,7 @@ library TypesLib { string schemeID; // signature scheme id, e.g., "BN254", "BLS12-381", "TESS" address callback; // the requester address to call back. Must implement ISignatureReceiver interface to support the required callback } - + // Blocklock request stores details needed to generate blocklock decryption keys struct BlocklockRequest { uint256 decryptionRequestID; diff --git a/contracts/src/mocks/MockBlocklockReceiver.sol b/contracts/src/mocks/MockBlocklockReceiver.sol new file mode 100644 index 0000000..206bc1f --- /dev/null +++ b/contracts/src/mocks/MockBlocklockReceiver.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {TypesLib} from "../libraries/TypesLib.sol"; +import {IBlocklockSender} from "../interfaces/IBlocklockSender.sol"; +import {IBlocklockReceiver} from "../interfaces/IBlocklockReceiver.sol"; + +contract MockBlocklockReceiver is IBlocklockReceiver { + uint256 public requestId; + TypesLib.Ciphertext public Ciphertext; + uint256 public plainText; + + // ** State Variables ** + IBlocklockSender public timelock; // The timelock contract which we will be used to decrypt data at specific block + + // ** Modifiers ** + modifier onlyTimelockContract() { + require(msg.sender == address(timelock), "Only timelock contract can call this."); + _; + } + + constructor(address timelockContract) { + timelock = IBlocklockSender(timelockContract); + } + + function generateTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) external returns (uint256) { + requestId = timelock.requestBlocklock(decryptionBlockNumber, encryptedData); + return requestId; + } + + function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) + external + onlyTimelockContract + { + require(requestID == requestId, "Invalid request id"); + plainText = abi.decode(timelock.decrypt(Ciphertext, decryptionKey), (uint256)); + } +} From 2dec667c36e90328040ce5baac405b136f601e68 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Mon, 20 Jan 2025 16:28:40 +0000 Subject: [PATCH 15/53] update function name --- contracts/src/mocks/MockBlocklockReceiver.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/mocks/MockBlocklockReceiver.sol b/contracts/src/mocks/MockBlocklockReceiver.sol index 206bc1f..6da5e8e 100644 --- a/contracts/src/mocks/MockBlocklockReceiver.sol +++ b/contracts/src/mocks/MockBlocklockReceiver.sol @@ -23,7 +23,7 @@ contract MockBlocklockReceiver is IBlocklockReceiver { timelock = IBlocklockSender(timelockContract); } - function generateTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) external returns (uint256) { + function createTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) external returns (uint256) { requestId = timelock.requestBlocklock(decryptionBlockNumber, encryptedData); return requestId; } From 46835734653d7542802440218dcaeaf60b1e85a2 Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 11:33:59 +0000 Subject: [PATCH 16/53] update test case descriptions --- test/blocklock.test.ts | 2 +- test/solidity-encoding.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/blocklock.test.ts b/test/blocklock.test.ts index 71ec39c..7a9675c 100644 --- a/test/blocklock.test.ts +++ b/test/blocklock.test.ts @@ -2,7 +2,7 @@ import {describe, it, expect} from "@jest/globals" import {Wallet} from "ethers" import {Blocklock} from "../src" -describe("encryption", () => { +describe("Blocklock", () => { it("class can be constructed", () => { const wallet = new Wallet("0x5cb3c5ba25c91d84ef5dabf4152e909795074f9958b091b010644cb9c30e3203") const blocklockContractAddress = "0xfd1bf3fcbf2e250abff4a61670dfa3ce740453e5" diff --git a/test/solidity-encoding.test.ts b/test/solidity-encoding.test.ts index 5e9a39f..4fa2cfe 100644 --- a/test/solidity-encoding.test.ts +++ b/test/solidity-encoding.test.ts @@ -2,7 +2,7 @@ import {describe, it, expect, beforeAll} from "@jest/globals" import { ethers } from "ethers"; import { SolidityEncoder, SolidityDecoder} from "../src"; -describe("Solidityencoder", () => { +describe("Solidity Encoding", () => { let encoder: SolidityEncoder; let decoder: SolidityDecoder; From 7b0939ccaad4af28bda0e9243ab1609227a97d70 Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 11:43:25 +0000 Subject: [PATCH 17/53] encode to uint8Array and decode --- test/solidity-encoding.test.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/test/solidity-encoding.test.ts b/test/solidity-encoding.test.ts index 4fa2cfe..7ca989d 100644 --- a/test/solidity-encoding.test.ts +++ b/test/solidity-encoding.test.ts @@ -1,7 +1,14 @@ import {describe, it, expect, beforeAll} from "@jest/globals" -import { ethers } from "ethers"; +import { ethers, getBytes } from "ethers"; import { SolidityEncoder, SolidityDecoder} from "../src"; +function uint8ArrayToHex(uint8Array: Uint8Array) { + const hexString = Array.from(uint8Array) + .map(byte => byte.toString(16).padStart(2, '0')) + .join(''); + return '0x' + hexString; +} + describe("Solidity Encoding", () => { let encoder: SolidityEncoder; let decoder: SolidityDecoder; @@ -15,10 +22,21 @@ describe("Solidity Encoding", () => { it("should encode and decode uint256", () => { const value = 12345; const encoded = encoder.encodeUint256(value); + console.log(encoded); + console.log(getBytes(encoded)); + console.log(uint8ArrayToHex(getBytes(encoded))); const decoded = decoder.decodeUint256(encoded); expect(decoded).toBe(BigInt(value)); }); + it("should encode, convert to uint8Array and decode uint256", () => { + const value = 12345; + const encoded = encoder.encodeUint256(value); + const encodedUint8Array = uint8ArrayToHex(getBytes(encoded)); + const decoded = decoder.decodeUint256(encodedUint8Array); + expect(decoded).toBe(BigInt(value)); + }); + // ------------------- Int256 ------------------- it("should encode and decode int256", () => { const value = -12345; From d864b6d5efe44b38366f58c3a427ea6783a44cde Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 11:45:11 +0000 Subject: [PATCH 18/53] remove console log --- test/integration.test.ts | 2 ++ test/solidity-encoding.test.ts | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/test/integration.test.ts b/test/integration.test.ts index ac5dc5d..e592650 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -30,6 +30,8 @@ describe("Blockchain Integration Tests with Ganache", () => { // Create a wallet using the first account wallet = accounts[0]; + + console.log(wallet) }); afterAll(async () => { diff --git a/test/solidity-encoding.test.ts b/test/solidity-encoding.test.ts index 7ca989d..388051d 100644 --- a/test/solidity-encoding.test.ts +++ b/test/solidity-encoding.test.ts @@ -22,9 +22,6 @@ describe("Solidity Encoding", () => { it("should encode and decode uint256", () => { const value = 12345; const encoded = encoder.encodeUint256(value); - console.log(encoded); - console.log(getBytes(encoded)); - console.log(uint8ArrayToHex(getBytes(encoded))); const decoded = decoder.decodeUint256(encoded); expect(decoded).toBe(BigInt(value)); }); From fff510619dd6691956b9af53fc2ed1db39d43216 Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 11:46:26 +0000 Subject: [PATCH 19/53] explicitly name contract address required in blocklock constructor --- src/blocklock.ts | 6 +++--- test/integration.test.ts | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/blocklock.ts b/src/blocklock.ts index 21942ff..719383e 100644 --- a/src/blocklock.ts +++ b/src/blocklock.ts @@ -34,8 +34,8 @@ const iface = BlocklockSender__factory.createInterface() export class Blocklock { private blocklockSender: BlocklockSender - constructor(provider: Signer | Provider, private readonly contractAddress: string) { - this.blocklockSender = BlocklockSender__factory.connect(contractAddress, provider) + constructor(provider: Signer | Provider, private readonly blocklockSenderContractAddress: string) { + this.blocklockSender = BlocklockSender__factory.connect(blocklockSenderContractAddress, provider) } /** @@ -52,7 +52,7 @@ export class Blocklock { throw new Error("transaction has not been mined") } - const [requestID] = extractSingleLog(iface, receipt, this.contractAddress, iface.getEvent("BlocklockRequested")) + const [requestID] = extractSingleLog(iface, receipt, this.blocklockSenderContractAddress, iface.getEvent("BlocklockRequested")) return requestID } diff --git a/test/integration.test.ts b/test/integration.test.ts index e592650..ac5dc5d 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -30,8 +30,6 @@ describe("Blockchain Integration Tests with Ganache", () => { // Create a wallet using the first account wallet = accounts[0]; - - console.log(wallet) }); afterAll(async () => { From b966f252b3cdc28421b62b0662664ffcba2061b8 Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 12:24:21 +0000 Subject: [PATCH 20/53] increase jest timeout for blockchain integration tests --- jest.config.mjs | 2 +- package.json | 2 +- src/ethers-utils.ts | 2 +- src/generated/AbstractBlocklockReceiver.ts | 108 +++ src/generated/AccessControl.ts | 324 +++++++++ src/generated/BLS.ts | 69 ++ src/generated/BlocklockSignatureScheme.ts | 149 ++++ src/generated/BytesLib.ts | 90 +++ src/generated/DecryptionReceiverBase.ts | 114 +++ src/generated/DecryptionSender.ts | 645 +++++++++++++++++ src/generated/Deployer.ts | 153 ++++ src/generated/ERC165.ts | 94 +++ src/generated/IAccessControl.ts | 292 ++++++++ src/generated/IBlocklockReceiver.ts | 99 +++ src/generated/IBlocklockSender.ts | 186 +++++ src/generated/IDecryptionReceiver.ts | 99 +++ src/generated/IDecryptionSender.ts | 217 ++++++ src/generated/IERC165.ts | 94 +++ src/generated/IMulticall.ts | 87 +++ src/generated/ISignatureReceiver.ts | 99 +++ src/generated/ISignatureScheme.ts | 141 ++++ .../ISignatureSchemeAddressProvider.ts | 134 ++++ src/generated/ISignatureSender.ts | 214 ++++++ src/generated/MockBlocklockReceiver.ts | 211 ++++++ src/generated/Multicall.ts | 87 +++ src/generated/SignatureReceiverBase.ts | 99 +++ .../SignatureSchemeAddressProvider.ts | 434 +++++++++++ src/generated/SignatureSender.ts | 633 ++++++++++++++++ .../AbstractBlocklockReceiver__factory.ts | 60 ++ .../factories/AccessControl__factory.ts | 247 +++++++ src/generated/factories/BLS__factory.ts | 126 ++++ .../factories/BlocklockSender__factory.ts | 2 +- .../BlocklockSignatureScheme__factory.ts | 236 ++++++ src/generated/factories/BytesLib__factory.ts | 80 +++ .../DecryptionReceiverBase__factory.ts | 65 ++ .../factories/DecryptionSender__factory.ts | 680 ++++++++++++++++++ src/generated/factories/Deployer__factory.ts | 138 ++++ src/generated/factories/ERC165__factory.ts | 38 + .../factories/IAccessControl__factory.ts | 218 ++++++ .../factories/IBlocklockReceiver__factory.ts | 43 ++ .../factories/IBlocklockSender__factory.ts | 206 ++++++ .../factories/IDecryptionReceiver__factory.ts | 52 ++ .../factories/IDecryptionSender__factory.ts | 178 +++++ src/generated/factories/IERC165__factory.ts | 38 + .../factories/IMulticall__factory.ts | 38 + .../factories/ISignatureReceiver__factory.ts | 43 ++ ...SignatureSchemeAddressProvider__factory.ts | 85 +++ .../factories/ISignatureScheme__factory.ts | 110 +++ .../factories/ISignatureSender__factory.ts | 168 +++++ .../MockBlocklockReceiver__factory.ts | 238 ++++++ src/generated/factories/Multicall__factory.ts | 38 + .../SignatureReceiverBase__factory.ts | 47 ++ ...SignatureSchemeAddressProvider__factory.ts | 412 +++++++++++ .../factories/SignatureSender__factory.ts | 659 +++++++++++++++++ src/generated/factories/index.ts | 25 + src/generated/index.ts | 50 ++ test/blocklock.test.ts | 11 + test/integration.test.ts | 98 +++ 58 files changed, 9303 insertions(+), 4 deletions(-) create mode 100644 src/generated/AbstractBlocklockReceiver.ts create mode 100644 src/generated/AccessControl.ts create mode 100644 src/generated/BLS.ts create mode 100644 src/generated/BlocklockSignatureScheme.ts create mode 100644 src/generated/BytesLib.ts create mode 100644 src/generated/DecryptionReceiverBase.ts create mode 100644 src/generated/DecryptionSender.ts create mode 100644 src/generated/Deployer.ts create mode 100644 src/generated/ERC165.ts create mode 100644 src/generated/IAccessControl.ts create mode 100644 src/generated/IBlocklockReceiver.ts create mode 100644 src/generated/IBlocklockSender.ts create mode 100644 src/generated/IDecryptionReceiver.ts create mode 100644 src/generated/IDecryptionSender.ts create mode 100644 src/generated/IERC165.ts create mode 100644 src/generated/IMulticall.ts create mode 100644 src/generated/ISignatureReceiver.ts create mode 100644 src/generated/ISignatureScheme.ts create mode 100644 src/generated/ISignatureSchemeAddressProvider.ts create mode 100644 src/generated/ISignatureSender.ts create mode 100644 src/generated/MockBlocklockReceiver.ts create mode 100644 src/generated/Multicall.ts create mode 100644 src/generated/SignatureReceiverBase.ts create mode 100644 src/generated/SignatureSchemeAddressProvider.ts create mode 100644 src/generated/SignatureSender.ts create mode 100644 src/generated/factories/AbstractBlocklockReceiver__factory.ts create mode 100644 src/generated/factories/AccessControl__factory.ts create mode 100644 src/generated/factories/BLS__factory.ts create mode 100644 src/generated/factories/BlocklockSignatureScheme__factory.ts create mode 100644 src/generated/factories/BytesLib__factory.ts create mode 100644 src/generated/factories/DecryptionReceiverBase__factory.ts create mode 100644 src/generated/factories/DecryptionSender__factory.ts create mode 100644 src/generated/factories/Deployer__factory.ts create mode 100644 src/generated/factories/ERC165__factory.ts create mode 100644 src/generated/factories/IAccessControl__factory.ts create mode 100644 src/generated/factories/IBlocklockReceiver__factory.ts create mode 100644 src/generated/factories/IBlocklockSender__factory.ts create mode 100644 src/generated/factories/IDecryptionReceiver__factory.ts create mode 100644 src/generated/factories/IDecryptionSender__factory.ts create mode 100644 src/generated/factories/IERC165__factory.ts create mode 100644 src/generated/factories/IMulticall__factory.ts create mode 100644 src/generated/factories/ISignatureReceiver__factory.ts create mode 100644 src/generated/factories/ISignatureSchemeAddressProvider__factory.ts create mode 100644 src/generated/factories/ISignatureScheme__factory.ts create mode 100644 src/generated/factories/ISignatureSender__factory.ts create mode 100644 src/generated/factories/MockBlocklockReceiver__factory.ts create mode 100644 src/generated/factories/Multicall__factory.ts create mode 100644 src/generated/factories/SignatureReceiverBase__factory.ts create mode 100644 src/generated/factories/SignatureSchemeAddressProvider__factory.ts create mode 100644 src/generated/factories/SignatureSender__factory.ts diff --git a/jest.config.mjs b/jest.config.mjs index 2a05e60..b78a0e7 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -7,5 +7,5 @@ export default { useESM: true, }], }, - testTimeout: 10000, + testTimeout: 30000, }; diff --git a/package.json b/package.json index 34a20c3..d02cfc7 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "main": "index.js", "scripts": { "build": "npm run clean && npm run build:js && npm run build:generate && npm run build:types", - "build:generate": "mkdir -p src/generated && npx typechain --target ethers-v6 --out-dir src/generated './contracts/out/BlocklockSender.sol/*.json'", + "build:generate": "mkdir -p src/generated && npx typechain --target ethers-v6 --out-dir src/generated './contracts/out/*.sol/*.json'", "build:js": "esbuild src/index.ts --bundle --platform=node --target=node22 --outfile=index.js", "build:types": "tsc --emitDeclarationOnly", "clean": "rm -rf index.js index.d.ts", diff --git a/src/ethers-utils.ts b/src/ethers-utils.ts index c2e1688..8e231c8 100644 --- a/src/ethers-utils.ts +++ b/src/ethers-utils.ts @@ -14,4 +14,4 @@ export function extractSingleLog(i throw Error(`contract at ${contractAddress} didn't emit the ${event.name} event`) } return events[0] -} \ No newline at end of file +} diff --git a/src/generated/AbstractBlocklockReceiver.ts b/src/generated/AbstractBlocklockReceiver.ts new file mode 100644 index 0000000..d78d446 --- /dev/null +++ b/src/generated/AbstractBlocklockReceiver.ts @@ -0,0 +1,108 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface AbstractBlocklockReceiverInterface extends Interface { + getFunction( + nameOrSignature: "blocklock" | "receiveBlocklock" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "blocklock", values?: undefined): string; + encodeFunctionData( + functionFragment: "receiveBlocklock", + values: [BigNumberish, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "blocklock", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "receiveBlocklock", + data: BytesLike + ): Result; +} + +export interface AbstractBlocklockReceiver extends BaseContract { + connect(runner?: ContractRunner | null): AbstractBlocklockReceiver; + waitForDeployment(): Promise; + + interface: AbstractBlocklockReceiverInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + blocklock: TypedContractMethod<[], [string], "view">; + + receiveBlocklock: TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "blocklock" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "receiveBlocklock" + ): TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/AccessControl.ts b/src/generated/AccessControl.ts new file mode 100644 index 0000000..9506ad3 --- /dev/null +++ b/src/generated/AccessControl.ts @@ -0,0 +1,324 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface AccessControlInterface extends Interface { + getFunction( + nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + | "supportsInterface" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface AccessControl extends BaseContract { + connect(runner?: ContractRunner | null): AccessControl; + waitForDeployment(): Promise; + + interface: AccessControlInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/src/generated/BLS.ts b/src/generated/BLS.ts new file mode 100644 index 0000000..36c5ee4 --- /dev/null +++ b/src/generated/BLS.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface BLSInterface extends Interface {} + +export interface BLS extends BaseContract { + connect(runner?: ContractRunner | null): BLS; + waitForDeployment(): Promise; + + interface: BLSInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/src/generated/BlocklockSignatureScheme.ts b/src/generated/BlocklockSignatureScheme.ts new file mode 100644 index 0000000..39107fa --- /dev/null +++ b/src/generated/BlocklockSignatureScheme.ts @@ -0,0 +1,149 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface BlocklockSignatureSchemeInterface extends Interface { + getFunction( + nameOrSignature: + | "DST" + | "SCHEME_ID" + | "hashToBytes" + | "hashToPoint" + | "verifySignature" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "DST", values?: undefined): string; + encodeFunctionData(functionFragment: "SCHEME_ID", values?: undefined): string; + encodeFunctionData( + functionFragment: "hashToBytes", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "hashToPoint", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "verifySignature", + values: [BytesLike, BytesLike, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "DST", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "SCHEME_ID", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashToBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hashToPoint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "verifySignature", + data: BytesLike + ): Result; +} + +export interface BlocklockSignatureScheme extends BaseContract { + connect(runner?: ContractRunner | null): BlocklockSignatureScheme; + waitForDeployment(): Promise; + + interface: BlocklockSignatureSchemeInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + DST: TypedContractMethod<[], [string], "view">; + + SCHEME_ID: TypedContractMethod<[], [string], "view">; + + hashToBytes: TypedContractMethod<[message: BytesLike], [string], "view">; + + hashToPoint: TypedContractMethod< + [message: BytesLike], + [[bigint, bigint]], + "view" + >; + + verifySignature: TypedContractMethod< + [message: BytesLike, signature: BytesLike, publicKey: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "DST" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "SCHEME_ID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "hashToBytes" + ): TypedContractMethod<[message: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "hashToPoint" + ): TypedContractMethod<[message: BytesLike], [[bigint, bigint]], "view">; + getFunction( + nameOrSignature: "verifySignature" + ): TypedContractMethod< + [message: BytesLike, signature: BytesLike, publicKey: BytesLike], + [boolean], + "view" + >; + + filters: {}; +} diff --git a/src/generated/BytesLib.ts b/src/generated/BytesLib.ts new file mode 100644 index 0000000..6b53506 --- /dev/null +++ b/src/generated/BytesLib.ts @@ -0,0 +1,90 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface BytesLibInterface extends Interface { + getFunction(nameOrSignature: "decodeBytesToUint"): FunctionFragment; + + encodeFunctionData( + functionFragment: "decodeBytesToUint", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "decodeBytesToUint", + data: BytesLike + ): Result; +} + +export interface BytesLib extends BaseContract { + connect(runner?: ContractRunner | null): BytesLib; + waitForDeployment(): Promise; + + interface: BytesLibInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + decodeBytesToUint: TypedContractMethod<[data: BytesLike], [bigint], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "decodeBytesToUint" + ): TypedContractMethod<[data: BytesLike], [bigint], "view">; + + filters: {}; +} diff --git a/src/generated/DecryptionReceiverBase.ts b/src/generated/DecryptionReceiverBase.ts new file mode 100644 index 0000000..0609f33 --- /dev/null +++ b/src/generated/DecryptionReceiverBase.ts @@ -0,0 +1,114 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface DecryptionReceiverBaseInterface extends Interface { + getFunction( + nameOrSignature: "decryptionSender" | "receiveDecryptionData" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "decryptionSender", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "receiveDecryptionData", + values: [BigNumberish, BytesLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "decryptionSender", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "receiveDecryptionData", + data: BytesLike + ): Result; +} + +export interface DecryptionReceiverBase extends BaseContract { + connect(runner?: ContractRunner | null): DecryptionReceiverBase; + waitForDeployment(): Promise; + + interface: DecryptionReceiverBaseInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + decryptionSender: TypedContractMethod<[], [string], "view">; + + receiveDecryptionData: TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "decryptionSender" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "receiveDecryptionData" + ): TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/DecryptionSender.ts b/src/generated/DecryptionSender.ts new file mode 100644 index 0000000..6d58155 --- /dev/null +++ b/src/generated/DecryptionSender.ts @@ -0,0 +1,645 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace TypesLib { + export type DecryptionRequestStruct = { + schemeID: string; + ciphertext: BytesLike; + condition: BytesLike; + decryptionKey: BytesLike; + signature: BytesLike; + callback: AddressLike; + }; + + export type DecryptionRequestStructOutput = [ + schemeID: string, + ciphertext: string, + condition: string, + decryptionKey: string, + signature: string, + callback: string + ] & { + schemeID: string; + ciphertext: string; + condition: string; + decryptionKey: string; + signature: string; + callback: string; + }; +} + +export interface DecryptionSenderInterface extends Interface { + getFunction( + nameOrSignature: + | "ADMIN_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "fulfilDecryptionRequest" + | "getPublicKey" + | "getPublicKeyBytes" + | "getRequestInFlight" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "isInFlight" + | "lastRequestID" + | "multicall" + | "registerCiphertext" + | "renounceRole" + | "requestsInFlight" + | "revokeRole" + | "signatureSchemeAddressProvider" + | "supportsInterface" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "DecryptionReceiverCallbackSuccess" + | "DecryptionRequested" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "fulfilDecryptionRequest", + values: [BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getPublicKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getPublicKeyBytes", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRequestInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "isInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "lastRequestID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "multicall", + values: [BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "registerCiphertext", + values: [string, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "requestsInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "signatureSchemeAddressProvider", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "fulfilDecryptionRequest", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKeyBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRequestInFlight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isInFlight", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lastRequestID", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "registerCiphertext", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "requestsInFlight", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "signatureSchemeAddressProvider", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export namespace DecryptionReceiverCallbackSuccessEvent { + export type InputTuple = [ + requestID: BigNumberish, + decryptionKey: BytesLike, + signature: BytesLike + ]; + export type OutputTuple = [ + requestID: bigint, + decryptionKey: string, + signature: string + ]; + export interface OutputObject { + requestID: bigint; + decryptionKey: string; + signature: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DecryptionRequestedEvent { + export type InputTuple = [ + requestID: BigNumberish, + callback: AddressLike, + schemeID: string, + condition: BytesLike, + ciphertext: BytesLike, + requestedAt: BigNumberish + ]; + export type OutputTuple = [ + requestID: bigint, + callback: string, + schemeID: string, + condition: string, + ciphertext: string, + requestedAt: bigint + ]; + export interface OutputObject { + requestID: bigint; + callback: string; + schemeID: string; + condition: string; + ciphertext: string; + requestedAt: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface DecryptionSender extends BaseContract { + connect(runner?: ContractRunner | null): DecryptionSender; + waitForDeployment(): Promise; + + interface: DecryptionSenderInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + fulfilDecryptionRequest: TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + + getPublicKey: TypedContractMethod< + [], + [[[bigint, bigint], [bigint, bigint]]], + "view" + >; + + getPublicKeyBytes: TypedContractMethod<[], [string], "view">; + + getRequestInFlight: TypedContractMethod< + [requestID: BigNumberish], + [TypesLib.DecryptionRequestStructOutput], + "view" + >; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + isInFlight: TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + + lastRequestID: TypedContractMethod<[], [bigint], "view">; + + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + + registerCiphertext: TypedContractMethod< + [schemeID: string, ciphertext: BytesLike, condition: BytesLike], + [bigint], + "nonpayable" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + requestsInFlight: TypedContractMethod< + [arg0: BigNumberish], + [ + [string, string, string, string, string, string] & { + schemeID: string; + ciphertext: string; + condition: string; + decryptionKey: string; + signature: string; + callback: string; + } + ], + "view" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + signatureSchemeAddressProvider: TypedContractMethod<[], [string], "view">; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "fulfilDecryptionRequest" + ): TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "getPublicKey" + ): TypedContractMethod<[], [[[bigint, bigint], [bigint, bigint]]], "view">; + getFunction( + nameOrSignature: "getPublicKeyBytes" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRequestInFlight" + ): TypedContractMethod< + [requestID: BigNumberish], + [TypesLib.DecryptionRequestStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "isInFlight" + ): TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + getFunction( + nameOrSignature: "lastRequestID" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "multicall" + ): TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + getFunction( + nameOrSignature: "registerCiphertext" + ): TypedContractMethod< + [schemeID: string, ciphertext: BytesLike, condition: BytesLike], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "requestsInFlight" + ): TypedContractMethod< + [arg0: BigNumberish], + [ + [string, string, string, string, string, string] & { + schemeID: string; + ciphertext: string; + condition: string; + decryptionKey: string; + signature: string; + callback: string; + } + ], + "view" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "signatureSchemeAddressProvider" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + getEvent( + key: "DecryptionReceiverCallbackSuccess" + ): TypedContractEvent< + DecryptionReceiverCallbackSuccessEvent.InputTuple, + DecryptionReceiverCallbackSuccessEvent.OutputTuple, + DecryptionReceiverCallbackSuccessEvent.OutputObject + >; + getEvent( + key: "DecryptionRequested" + ): TypedContractEvent< + DecryptionRequestedEvent.InputTuple, + DecryptionRequestedEvent.OutputTuple, + DecryptionRequestedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "DecryptionReceiverCallbackSuccess(uint256,bytes,bytes)": TypedContractEvent< + DecryptionReceiverCallbackSuccessEvent.InputTuple, + DecryptionReceiverCallbackSuccessEvent.OutputTuple, + DecryptionReceiverCallbackSuccessEvent.OutputObject + >; + DecryptionReceiverCallbackSuccess: TypedContractEvent< + DecryptionReceiverCallbackSuccessEvent.InputTuple, + DecryptionReceiverCallbackSuccessEvent.OutputTuple, + DecryptionReceiverCallbackSuccessEvent.OutputObject + >; + + "DecryptionRequested(uint256,address,string,bytes,bytes,uint256)": TypedContractEvent< + DecryptionRequestedEvent.InputTuple, + DecryptionRequestedEvent.OutputTuple, + DecryptionRequestedEvent.OutputObject + >; + DecryptionRequested: TypedContractEvent< + DecryptionRequestedEvent.InputTuple, + DecryptionRequestedEvent.OutputTuple, + DecryptionRequestedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/src/generated/Deployer.ts b/src/generated/Deployer.ts new file mode 100644 index 0000000..459c7a3 --- /dev/null +++ b/src/generated/Deployer.ts @@ -0,0 +1,153 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface DeployerInterface extends Interface { + getFunction(nameOrSignature: "computeAddress" | "deploy"): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "CreatedContract"): EventFragment; + + encodeFunctionData( + functionFragment: "computeAddress", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "deploy", + values: [BytesLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "computeAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deploy", data: BytesLike): Result; +} + +export namespace CreatedContractEvent { + export type InputTuple = [addr: AddressLike, salt: BytesLike]; + export type OutputTuple = [addr: string, salt: string]; + export interface OutputObject { + addr: string; + salt: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface Deployer extends BaseContract { + connect(runner?: ContractRunner | null): Deployer; + waitForDeployment(): Promise; + + interface: DeployerInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + computeAddress: TypedContractMethod< + [salt: BytesLike, creationCodeHash: BytesLike], + [string], + "view" + >; + + deploy: TypedContractMethod< + [salt: BytesLike, creationCode: BytesLike], + [string], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "computeAddress" + ): TypedContractMethod< + [salt: BytesLike, creationCodeHash: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "deploy" + ): TypedContractMethod< + [salt: BytesLike, creationCode: BytesLike], + [string], + "payable" + >; + + getEvent( + key: "CreatedContract" + ): TypedContractEvent< + CreatedContractEvent.InputTuple, + CreatedContractEvent.OutputTuple, + CreatedContractEvent.OutputObject + >; + + filters: { + "CreatedContract(address,bytes32)": TypedContractEvent< + CreatedContractEvent.InputTuple, + CreatedContractEvent.OutputTuple, + CreatedContractEvent.OutputObject + >; + CreatedContract: TypedContractEvent< + CreatedContractEvent.InputTuple, + CreatedContractEvent.OutputTuple, + CreatedContractEvent.OutputObject + >; + }; +} diff --git a/src/generated/ERC165.ts b/src/generated/ERC165.ts new file mode 100644 index 0000000..09a46c6 --- /dev/null +++ b/src/generated/ERC165.ts @@ -0,0 +1,94 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ERC165Interface extends Interface { + getFunction(nameOrSignature: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export interface ERC165 extends BaseContract { + connect(runner?: ContractRunner | null): ERC165; + waitForDeployment(): Promise; + + interface: ERC165Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + filters: {}; +} diff --git a/src/generated/IAccessControl.ts b/src/generated/IAccessControl.ts new file mode 100644 index 0000000..bb6fd58 --- /dev/null +++ b/src/generated/IAccessControl.ts @@ -0,0 +1,292 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IAccessControlInterface extends Interface { + getFunction( + nameOrSignature: + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IAccessControl extends BaseContract { + connect(runner?: ContractRunner | null): IAccessControl; + waitForDeployment(): Promise; + + interface: IAccessControlInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/src/generated/IBlocklockReceiver.ts b/src/generated/IBlocklockReceiver.ts new file mode 100644 index 0000000..5489e36 --- /dev/null +++ b/src/generated/IBlocklockReceiver.ts @@ -0,0 +1,99 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IBlocklockReceiverInterface extends Interface { + getFunction(nameOrSignature: "receiveBlocklock"): FunctionFragment; + + encodeFunctionData( + functionFragment: "receiveBlocklock", + values: [BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "receiveBlocklock", + data: BytesLike + ): Result; +} + +export interface IBlocklockReceiver extends BaseContract { + connect(runner?: ContractRunner | null): IBlocklockReceiver; + waitForDeployment(): Promise; + + interface: IBlocklockReceiverInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + receiveBlocklock: TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "receiveBlocklock" + ): TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/IBlocklockSender.ts b/src/generated/IBlocklockSender.ts new file mode 100644 index 0000000..95d9373 --- /dev/null +++ b/src/generated/IBlocklockSender.ts @@ -0,0 +1,186 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace BLS { + export type PointG2Struct = { + x: [BigNumberish, BigNumberish]; + y: [BigNumberish, BigNumberish]; + }; + + export type PointG2StructOutput = [ + x: [bigint, bigint], + y: [bigint, bigint] + ] & { x: [bigint, bigint]; y: [bigint, bigint] }; +} + +export declare namespace TypesLib { + export type CiphertextStruct = { + u: BLS.PointG2Struct; + v: BytesLike; + w: BytesLike; + }; + + export type CiphertextStructOutput = [ + u: BLS.PointG2StructOutput, + v: string, + w: string + ] & { u: BLS.PointG2StructOutput; v: string; w: string }; + + export type BlocklockRequestStruct = { + decryptionRequestID: BigNumberish; + blockHeight: BigNumberish; + ciphertext: TypesLib.CiphertextStruct; + signature: BytesLike; + callback: AddressLike; + }; + + export type BlocklockRequestStructOutput = [ + decryptionRequestID: bigint, + blockHeight: bigint, + ciphertext: TypesLib.CiphertextStructOutput, + signature: string, + callback: string + ] & { + decryptionRequestID: bigint; + blockHeight: bigint; + ciphertext: TypesLib.CiphertextStructOutput; + signature: string; + callback: string; + }; +} + +export interface IBlocklockSenderInterface extends Interface { + getFunction( + nameOrSignature: "decrypt" | "getRequest" | "requestBlocklock" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "decrypt", + values: [TypesLib.CiphertextStruct, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getRequest", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "requestBlocklock", + values: [BigNumberish, TypesLib.CiphertextStruct] + ): string; + + decodeFunctionResult(functionFragment: "decrypt", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getRequest", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "requestBlocklock", + data: BytesLike + ): Result; +} + +export interface IBlocklockSender extends BaseContract { + connect(runner?: ContractRunner | null): IBlocklockSender; + waitForDeployment(): Promise; + + interface: IBlocklockSenderInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + decrypt: TypedContractMethod< + [ciphertext: TypesLib.CiphertextStruct, decryptionKey: BytesLike], + [string], + "view" + >; + + getRequest: TypedContractMethod< + [requestId: BigNumberish], + [TypesLib.BlocklockRequestStructOutput], + "view" + >; + + requestBlocklock: TypedContractMethod< + [blockHeight: BigNumberish, ciphertext: TypesLib.CiphertextStruct], + [bigint], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "decrypt" + ): TypedContractMethod< + [ciphertext: TypesLib.CiphertextStruct, decryptionKey: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "getRequest" + ): TypedContractMethod< + [requestId: BigNumberish], + [TypesLib.BlocklockRequestStructOutput], + "view" + >; + getFunction( + nameOrSignature: "requestBlocklock" + ): TypedContractMethod< + [blockHeight: BigNumberish, ciphertext: TypesLib.CiphertextStruct], + [bigint], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/IDecryptionReceiver.ts b/src/generated/IDecryptionReceiver.ts new file mode 100644 index 0000000..ba1ed20 --- /dev/null +++ b/src/generated/IDecryptionReceiver.ts @@ -0,0 +1,99 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IDecryptionReceiverInterface extends Interface { + getFunction(nameOrSignature: "receiveDecryptionData"): FunctionFragment; + + encodeFunctionData( + functionFragment: "receiveDecryptionData", + values: [BigNumberish, BytesLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "receiveDecryptionData", + data: BytesLike + ): Result; +} + +export interface IDecryptionReceiver extends BaseContract { + connect(runner?: ContractRunner | null): IDecryptionReceiver; + waitForDeployment(): Promise; + + interface: IDecryptionReceiverInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + receiveDecryptionData: TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "receiveDecryptionData" + ): TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/IDecryptionSender.ts b/src/generated/IDecryptionSender.ts new file mode 100644 index 0000000..8b97a2b --- /dev/null +++ b/src/generated/IDecryptionSender.ts @@ -0,0 +1,217 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace TypesLib { + export type DecryptionRequestStruct = { + schemeID: string; + ciphertext: BytesLike; + condition: BytesLike; + decryptionKey: BytesLike; + signature: BytesLike; + callback: AddressLike; + }; + + export type DecryptionRequestStructOutput = [ + schemeID: string, + ciphertext: string, + condition: string, + decryptionKey: string, + signature: string, + callback: string + ] & { + schemeID: string; + ciphertext: string; + condition: string; + decryptionKey: string; + signature: string; + callback: string; + }; +} + +export interface IDecryptionSenderInterface extends Interface { + getFunction( + nameOrSignature: + | "fulfilDecryptionRequest" + | "getPublicKey" + | "getPublicKeyBytes" + | "getRequestInFlight" + | "isInFlight" + | "registerCiphertext" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "fulfilDecryptionRequest", + values: [BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getPublicKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getPublicKeyBytes", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRequestInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "registerCiphertext", + values: [string, BytesLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "fulfilDecryptionRequest", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKeyBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRequestInFlight", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isInFlight", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "registerCiphertext", + data: BytesLike + ): Result; +} + +export interface IDecryptionSender extends BaseContract { + connect(runner?: ContractRunner | null): IDecryptionSender; + waitForDeployment(): Promise; + + interface: IDecryptionSenderInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + fulfilDecryptionRequest: TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + + getPublicKey: TypedContractMethod< + [], + [[[bigint, bigint], [bigint, bigint]]], + "view" + >; + + getPublicKeyBytes: TypedContractMethod<[], [string], "view">; + + getRequestInFlight: TypedContractMethod< + [requestId: BigNumberish], + [TypesLib.DecryptionRequestStructOutput], + "view" + >; + + isInFlight: TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + + registerCiphertext: TypedContractMethod< + [schemeID: string, ciphertext: BytesLike, conditions: BytesLike], + [bigint], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "fulfilDecryptionRequest" + ): TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike, signature: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "getPublicKey" + ): TypedContractMethod<[], [[[bigint, bigint], [bigint, bigint]]], "view">; + getFunction( + nameOrSignature: "getPublicKeyBytes" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRequestInFlight" + ): TypedContractMethod< + [requestId: BigNumberish], + [TypesLib.DecryptionRequestStructOutput], + "view" + >; + getFunction( + nameOrSignature: "isInFlight" + ): TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + getFunction( + nameOrSignature: "registerCiphertext" + ): TypedContractMethod< + [schemeID: string, ciphertext: BytesLike, conditions: BytesLike], + [bigint], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/IERC165.ts b/src/generated/IERC165.ts new file mode 100644 index 0000000..6097e55 --- /dev/null +++ b/src/generated/IERC165.ts @@ -0,0 +1,94 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IERC165Interface extends Interface { + getFunction(nameOrSignature: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export interface IERC165 extends BaseContract { + connect(runner?: ContractRunner | null): IERC165; + waitForDeployment(): Promise; + + interface: IERC165Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + filters: {}; +} diff --git a/src/generated/IMulticall.ts b/src/generated/IMulticall.ts new file mode 100644 index 0000000..d8154a6 --- /dev/null +++ b/src/generated/IMulticall.ts @@ -0,0 +1,87 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IMulticallInterface extends Interface { + getFunction(nameOrSignature: "multicall"): FunctionFragment; + + encodeFunctionData( + functionFragment: "multicall", + values: [BytesLike[]] + ): string; + + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; +} + +export interface IMulticall extends BaseContract { + connect(runner?: ContractRunner | null): IMulticall; + waitForDeployment(): Promise; + + interface: IMulticallInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "multicall" + ): TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + + filters: {}; +} diff --git a/src/generated/ISignatureReceiver.ts b/src/generated/ISignatureReceiver.ts new file mode 100644 index 0000000..ada06fd --- /dev/null +++ b/src/generated/ISignatureReceiver.ts @@ -0,0 +1,99 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ISignatureReceiverInterface extends Interface { + getFunction(nameOrSignature: "receiveSignature"): FunctionFragment; + + encodeFunctionData( + functionFragment: "receiveSignature", + values: [BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "receiveSignature", + data: BytesLike + ): Result; +} + +export interface ISignatureReceiver extends BaseContract { + connect(runner?: ContractRunner | null): ISignatureReceiver; + waitForDeployment(): Promise; + + interface: ISignatureReceiverInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + receiveSignature: TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "receiveSignature" + ): TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/ISignatureScheme.ts b/src/generated/ISignatureScheme.ts new file mode 100644 index 0000000..23c2f90 --- /dev/null +++ b/src/generated/ISignatureScheme.ts @@ -0,0 +1,141 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ISignatureSchemeInterface extends Interface { + getFunction( + nameOrSignature: + | "SCHEME_ID" + | "hashToBytes" + | "hashToPoint" + | "verifySignature" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "SCHEME_ID", values?: undefined): string; + encodeFunctionData( + functionFragment: "hashToBytes", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "hashToPoint", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "verifySignature", + values: [BytesLike, BytesLike, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "SCHEME_ID", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashToBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hashToPoint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "verifySignature", + data: BytesLike + ): Result; +} + +export interface ISignatureScheme extends BaseContract { + connect(runner?: ContractRunner | null): ISignatureScheme; + waitForDeployment(): Promise; + + interface: ISignatureSchemeInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + SCHEME_ID: TypedContractMethod<[], [string], "nonpayable">; + + hashToBytes: TypedContractMethod<[message: BytesLike], [string], "view">; + + hashToPoint: TypedContractMethod< + [message: BytesLike], + [[bigint, bigint]], + "view" + >; + + verifySignature: TypedContractMethod< + [message: BytesLike, signature: BytesLike, publicKey: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "SCHEME_ID" + ): TypedContractMethod<[], [string], "nonpayable">; + getFunction( + nameOrSignature: "hashToBytes" + ): TypedContractMethod<[message: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "hashToPoint" + ): TypedContractMethod<[message: BytesLike], [[bigint, bigint]], "view">; + getFunction( + nameOrSignature: "verifySignature" + ): TypedContractMethod< + [message: BytesLike, signature: BytesLike, publicKey: BytesLike], + [boolean], + "view" + >; + + filters: {}; +} diff --git a/src/generated/ISignatureSchemeAddressProvider.ts b/src/generated/ISignatureSchemeAddressProvider.ts new file mode 100644 index 0000000..81ae085 --- /dev/null +++ b/src/generated/ISignatureSchemeAddressProvider.ts @@ -0,0 +1,134 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ISignatureSchemeAddressProviderInterface extends Interface { + getFunction( + nameOrSignature: + | "getSignatureSchemeAddress" + | "isSupportedScheme" + | "updateSignatureScheme" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getSignatureSchemeAddress", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "isSupportedScheme", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "updateSignatureScheme", + values: [string, AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "getSignatureSchemeAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSupportedScheme", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateSignatureScheme", + data: BytesLike + ): Result; +} + +export interface ISignatureSchemeAddressProvider extends BaseContract { + connect(runner?: ContractRunner | null): ISignatureSchemeAddressProvider; + waitForDeployment(): Promise; + + interface: ISignatureSchemeAddressProviderInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getSignatureSchemeAddress: TypedContractMethod< + [schemeID: string], + [string], + "view" + >; + + isSupportedScheme: TypedContractMethod<[schemeID: string], [boolean], "view">; + + updateSignatureScheme: TypedContractMethod< + [schemeID: string, schemeAddress: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "getSignatureSchemeAddress" + ): TypedContractMethod<[schemeID: string], [string], "view">; + getFunction( + nameOrSignature: "isSupportedScheme" + ): TypedContractMethod<[schemeID: string], [boolean], "view">; + getFunction( + nameOrSignature: "updateSignatureScheme" + ): TypedContractMethod< + [schemeID: string, schemeAddress: AddressLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/ISignatureSender.ts b/src/generated/ISignatureSender.ts new file mode 100644 index 0000000..85688e1 --- /dev/null +++ b/src/generated/ISignatureSender.ts @@ -0,0 +1,214 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace TypesLib { + export type SignatureRequestStruct = { + message: BytesLike; + messageHash: BytesLike; + condition: BytesLike; + schemeID: string; + callback: AddressLike; + }; + + export type SignatureRequestStructOutput = [ + message: string, + messageHash: string, + condition: string, + schemeID: string, + callback: string + ] & { + message: string; + messageHash: string; + condition: string; + schemeID: string; + callback: string; + }; +} + +export interface ISignatureSenderInterface extends Interface { + getFunction( + nameOrSignature: + | "fulfilSignatureRequest" + | "getPublicKey" + | "getPublicKeyBytes" + | "getRequestInFlight" + | "isInFlight" + | "requestSignature" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "fulfilSignatureRequest", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getPublicKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getPublicKeyBytes", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRequestInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "requestSignature", + values: [string, BytesLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "fulfilSignatureRequest", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKeyBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRequestInFlight", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isInFlight", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "requestSignature", + data: BytesLike + ): Result; +} + +export interface ISignatureSender extends BaseContract { + connect(runner?: ContractRunner | null): ISignatureSender; + waitForDeployment(): Promise; + + interface: ISignatureSenderInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + fulfilSignatureRequest: TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + + getPublicKey: TypedContractMethod< + [], + [[[bigint, bigint], [bigint, bigint]]], + "view" + >; + + getPublicKeyBytes: TypedContractMethod<[], [string], "view">; + + getRequestInFlight: TypedContractMethod< + [requestID: BigNumberish], + [TypesLib.SignatureRequestStructOutput], + "view" + >; + + isInFlight: TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + + requestSignature: TypedContractMethod< + [schemeID: string, message: BytesLike, condition: BytesLike], + [bigint], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "fulfilSignatureRequest" + ): TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "getPublicKey" + ): TypedContractMethod<[], [[[bigint, bigint], [bigint, bigint]]], "view">; + getFunction( + nameOrSignature: "getPublicKeyBytes" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRequestInFlight" + ): TypedContractMethod< + [requestID: BigNumberish], + [TypesLib.SignatureRequestStructOutput], + "view" + >; + getFunction( + nameOrSignature: "isInFlight" + ): TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + getFunction( + nameOrSignature: "requestSignature" + ): TypedContractMethod< + [schemeID: string, message: BytesLike, condition: BytesLike], + [bigint], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/MockBlocklockReceiver.ts b/src/generated/MockBlocklockReceiver.ts new file mode 100644 index 0000000..d68e0d3 --- /dev/null +++ b/src/generated/MockBlocklockReceiver.ts @@ -0,0 +1,211 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace BLS { + export type PointG2Struct = { + x: [BigNumberish, BigNumberish]; + y: [BigNumberish, BigNumberish]; + }; + + export type PointG2StructOutput = [ + x: [bigint, bigint], + y: [bigint, bigint] + ] & { x: [bigint, bigint]; y: [bigint, bigint] }; +} + +export declare namespace TypesLib { + export type CiphertextStruct = { + u: BLS.PointG2Struct; + v: BytesLike; + w: BytesLike; + }; + + export type CiphertextStructOutput = [ + u: BLS.PointG2StructOutput, + v: string, + w: string + ] & { u: BLS.PointG2StructOutput; v: string; w: string }; +} + +export interface MockBlocklockReceiverInterface extends Interface { + getFunction( + nameOrSignature: + | "Ciphertext" + | "createTimelockRequest" + | "plainText" + | "receiveBlocklock" + | "requestId" + | "timelock" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "Ciphertext", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "createTimelockRequest", + values: [BigNumberish, TypesLib.CiphertextStruct] + ): string; + encodeFunctionData(functionFragment: "plainText", values?: undefined): string; + encodeFunctionData( + functionFragment: "receiveBlocklock", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData(functionFragment: "requestId", values?: undefined): string; + encodeFunctionData(functionFragment: "timelock", values?: undefined): string; + + decodeFunctionResult(functionFragment: "Ciphertext", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "createTimelockRequest", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "plainText", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "receiveBlocklock", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "requestId", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "timelock", data: BytesLike): Result; +} + +export interface MockBlocklockReceiver extends BaseContract { + connect(runner?: ContractRunner | null): MockBlocklockReceiver; + waitForDeployment(): Promise; + + interface: MockBlocklockReceiverInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + Ciphertext: TypedContractMethod< + [], + [ + [BLS.PointG2StructOutput, string, string] & { + u: BLS.PointG2StructOutput; + v: string; + w: string; + } + ], + "view" + >; + + createTimelockRequest: TypedContractMethod< + [ + decryptionBlockNumber: BigNumberish, + encryptedData: TypesLib.CiphertextStruct + ], + [bigint], + "nonpayable" + >; + + plainText: TypedContractMethod<[], [bigint], "view">; + + receiveBlocklock: TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike], + [void], + "nonpayable" + >; + + requestId: TypedContractMethod<[], [bigint], "view">; + + timelock: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "Ciphertext" + ): TypedContractMethod< + [], + [ + [BLS.PointG2StructOutput, string, string] & { + u: BLS.PointG2StructOutput; + v: string; + w: string; + } + ], + "view" + >; + getFunction( + nameOrSignature: "createTimelockRequest" + ): TypedContractMethod< + [ + decryptionBlockNumber: BigNumberish, + encryptedData: TypesLib.CiphertextStruct + ], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "plainText" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "receiveBlocklock" + ): TypedContractMethod< + [requestID: BigNumberish, decryptionKey: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "requestId" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "timelock" + ): TypedContractMethod<[], [string], "view">; + + filters: {}; +} diff --git a/src/generated/Multicall.ts b/src/generated/Multicall.ts new file mode 100644 index 0000000..dfc0826 --- /dev/null +++ b/src/generated/Multicall.ts @@ -0,0 +1,87 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface MulticallInterface extends Interface { + getFunction(nameOrSignature: "multicall"): FunctionFragment; + + encodeFunctionData( + functionFragment: "multicall", + values: [BytesLike[]] + ): string; + + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; +} + +export interface Multicall extends BaseContract { + connect(runner?: ContractRunner | null): Multicall; + waitForDeployment(): Promise; + + interface: MulticallInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "multicall" + ): TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + + filters: {}; +} diff --git a/src/generated/SignatureReceiverBase.ts b/src/generated/SignatureReceiverBase.ts new file mode 100644 index 0000000..d055e65 --- /dev/null +++ b/src/generated/SignatureReceiverBase.ts @@ -0,0 +1,99 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface SignatureReceiverBaseInterface extends Interface { + getFunction(nameOrSignature: "receiveSignature"): FunctionFragment; + + encodeFunctionData( + functionFragment: "receiveSignature", + values: [BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "receiveSignature", + data: BytesLike + ): Result; +} + +export interface SignatureReceiverBase extends BaseContract { + connect(runner?: ContractRunner | null): SignatureReceiverBase; + waitForDeployment(): Promise; + + interface: SignatureReceiverBaseInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + receiveSignature: TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "receiveSignature" + ): TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/generated/SignatureSchemeAddressProvider.ts b/src/generated/SignatureSchemeAddressProvider.ts new file mode 100644 index 0000000..9505b03 --- /dev/null +++ b/src/generated/SignatureSchemeAddressProvider.ts @@ -0,0 +1,434 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface SignatureSchemeAddressProviderInterface extends Interface { + getFunction( + nameOrSignature: + | "ADMIN_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "getRoleAdmin" + | "getSignatureSchemeAddress" + | "grantRole" + | "hasRole" + | "isSupportedScheme" + | "renounceRole" + | "revokeRole" + | "supportsInterface" + | "updateSignatureScheme" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "NewSignatureSchemeAddressAdded" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getSignatureSchemeAddress", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "isSupportedScheme", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "updateSignatureScheme", + values: [string, AddressLike] + ): string; + + decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSignatureSchemeAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isSupportedScheme", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateSignatureScheme", + data: BytesLike + ): Result; +} + +export namespace NewSignatureSchemeAddressAddedEvent { + export type InputTuple = [ + schemeID: string, + schemeAddress: AddressLike, + addedAt: BigNumberish + ]; + export type OutputTuple = [ + schemeID: string, + schemeAddress: string, + addedAt: bigint + ]; + export interface OutputObject { + schemeID: string; + schemeAddress: string; + addedAt: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface SignatureSchemeAddressProvider extends BaseContract { + connect(runner?: ContractRunner | null): SignatureSchemeAddressProvider; + waitForDeployment(): Promise; + + interface: SignatureSchemeAddressProviderInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + getSignatureSchemeAddress: TypedContractMethod< + [schemeID: string], + [string], + "view" + >; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + isSupportedScheme: TypedContractMethod<[schemeID: string], [boolean], "view">; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + updateSignatureScheme: TypedContractMethod< + [schemeID: string, schemeAddress: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "getSignatureSchemeAddress" + ): TypedContractMethod<[schemeID: string], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "isSupportedScheme" + ): TypedContractMethod<[schemeID: string], [boolean], "view">; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "updateSignatureScheme" + ): TypedContractMethod< + [schemeID: string, schemeAddress: AddressLike], + [void], + "nonpayable" + >; + + getEvent( + key: "NewSignatureSchemeAddressAdded" + ): TypedContractEvent< + NewSignatureSchemeAddressAddedEvent.InputTuple, + NewSignatureSchemeAddressAddedEvent.OutputTuple, + NewSignatureSchemeAddressAddedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "NewSignatureSchemeAddressAdded(string,address,uint256)": TypedContractEvent< + NewSignatureSchemeAddressAddedEvent.InputTuple, + NewSignatureSchemeAddressAddedEvent.OutputTuple, + NewSignatureSchemeAddressAddedEvent.OutputObject + >; + NewSignatureSchemeAddressAdded: TypedContractEvent< + NewSignatureSchemeAddressAddedEvent.InputTuple, + NewSignatureSchemeAddressAddedEvent.OutputTuple, + NewSignatureSchemeAddressAddedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/src/generated/SignatureSender.ts b/src/generated/SignatureSender.ts new file mode 100644 index 0000000..bf3291b --- /dev/null +++ b/src/generated/SignatureSender.ts @@ -0,0 +1,633 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace TypesLib { + export type SignatureRequestStruct = { + message: BytesLike; + messageHash: BytesLike; + condition: BytesLike; + schemeID: string; + callback: AddressLike; + }; + + export type SignatureRequestStructOutput = [ + message: string, + messageHash: string, + condition: string, + schemeID: string, + callback: string + ] & { + message: string; + messageHash: string; + condition: string; + schemeID: string; + callback: string; + }; +} + +export interface SignatureSenderInterface extends Interface { + getFunction( + nameOrSignature: + | "ADMIN_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "fulfilSignatureRequest" + | "getPublicKey" + | "getPublicKeyBytes" + | "getRequestInFlight" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "isInFlight" + | "lastRequestID" + | "multicall" + | "renounceRole" + | "requestSignature" + | "requestsInFlight" + | "revokeRole" + | "signatureSchemeAddressProvider" + | "supportsInterface" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "SignatureRequestFulfilled" + | "SignatureRequested" + ): EventFragment; + + encodeFunctionData( + functionFragment: "ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "fulfilSignatureRequest", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getPublicKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getPublicKeyBytes", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRequestInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "isInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "lastRequestID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "multicall", + values: [BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "requestSignature", + values: [string, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "requestsInFlight", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "signatureSchemeAddressProvider", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "fulfilSignatureRequest", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getPublicKeyBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRequestInFlight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isInFlight", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lastRequestID", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "requestSignature", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "requestsInFlight", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "signatureSchemeAddressProvider", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SignatureRequestFulfilledEvent { + export type InputTuple = [requestID: BigNumberish]; + export type OutputTuple = [requestID: bigint]; + export interface OutputObject { + requestID: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SignatureRequestedEvent { + export type InputTuple = [ + requestID: BigNumberish, + callback: AddressLike, + schemeID: string, + message: BytesLike, + messageHashToSign: BytesLike, + condition: BytesLike, + requestedAt: BigNumberish + ]; + export type OutputTuple = [ + requestID: bigint, + callback: string, + schemeID: string, + message: string, + messageHashToSign: string, + condition: string, + requestedAt: bigint + ]; + export interface OutputObject { + requestID: bigint; + callback: string; + schemeID: string; + message: string; + messageHashToSign: string; + condition: string; + requestedAt: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface SignatureSender extends BaseContract { + connect(runner?: ContractRunner | null): SignatureSender; + waitForDeployment(): Promise; + + interface: SignatureSenderInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + fulfilSignatureRequest: TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + + getPublicKey: TypedContractMethod< + [], + [[[bigint, bigint], [bigint, bigint]]], + "view" + >; + + getPublicKeyBytes: TypedContractMethod<[], [string], "view">; + + getRequestInFlight: TypedContractMethod< + [requestID: BigNumberish], + [TypesLib.SignatureRequestStructOutput], + "view" + >; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + isInFlight: TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + + lastRequestID: TypedContractMethod<[], [bigint], "view">; + + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + requestSignature: TypedContractMethod< + [schemeID: string, message: BytesLike, condition: BytesLike], + [bigint], + "nonpayable" + >; + + requestsInFlight: TypedContractMethod< + [arg0: BigNumberish], + [ + [string, string, string, string, string] & { + message: string; + messageHash: string; + condition: string; + schemeID: string; + callback: string; + } + ], + "view" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + signatureSchemeAddressProvider: TypedContractMethod<[], [string], "view">; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "fulfilSignatureRequest" + ): TypedContractMethod< + [requestID: BigNumberish, signature: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "getPublicKey" + ): TypedContractMethod<[], [[[bigint, bigint], [bigint, bigint]]], "view">; + getFunction( + nameOrSignature: "getPublicKeyBytes" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRequestInFlight" + ): TypedContractMethod< + [requestID: BigNumberish], + [TypesLib.SignatureRequestStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "isInFlight" + ): TypedContractMethod<[requestID: BigNumberish], [boolean], "view">; + getFunction( + nameOrSignature: "lastRequestID" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "multicall" + ): TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "requestSignature" + ): TypedContractMethod< + [schemeID: string, message: BytesLike, condition: BytesLike], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "requestsInFlight" + ): TypedContractMethod< + [arg0: BigNumberish], + [ + [string, string, string, string, string] & { + message: string; + messageHash: string; + condition: string; + schemeID: string; + callback: string; + } + ], + "view" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "signatureSchemeAddressProvider" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "SignatureRequestFulfilled" + ): TypedContractEvent< + SignatureRequestFulfilledEvent.InputTuple, + SignatureRequestFulfilledEvent.OutputTuple, + SignatureRequestFulfilledEvent.OutputObject + >; + getEvent( + key: "SignatureRequested" + ): TypedContractEvent< + SignatureRequestedEvent.InputTuple, + SignatureRequestedEvent.OutputTuple, + SignatureRequestedEvent.OutputObject + >; + + filters: { + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "SignatureRequestFulfilled(uint256)": TypedContractEvent< + SignatureRequestFulfilledEvent.InputTuple, + SignatureRequestFulfilledEvent.OutputTuple, + SignatureRequestFulfilledEvent.OutputObject + >; + SignatureRequestFulfilled: TypedContractEvent< + SignatureRequestFulfilledEvent.InputTuple, + SignatureRequestFulfilledEvent.OutputTuple, + SignatureRequestFulfilledEvent.OutputObject + >; + + "SignatureRequested(uint256,address,string,bytes,bytes,bytes,uint256)": TypedContractEvent< + SignatureRequestedEvent.InputTuple, + SignatureRequestedEvent.OutputTuple, + SignatureRequestedEvent.OutputObject + >; + SignatureRequested: TypedContractEvent< + SignatureRequestedEvent.InputTuple, + SignatureRequestedEvent.OutputTuple, + SignatureRequestedEvent.OutputObject + >; + }; +} diff --git a/src/generated/factories/AbstractBlocklockReceiver__factory.ts b/src/generated/factories/AbstractBlocklockReceiver__factory.ts new file mode 100644 index 0000000..93cf6f0 --- /dev/null +++ b/src/generated/factories/AbstractBlocklockReceiver__factory.ts @@ -0,0 +1,60 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + AbstractBlocklockReceiver, + AbstractBlocklockReceiverInterface, +} from "../AbstractBlocklockReceiver"; + +const _abi = [ + { + type: "function", + name: "blocklock", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IBlocklockSender", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "receiveBlocklock", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class AbstractBlocklockReceiver__factory { + static readonly abi = _abi; + static createInterface(): AbstractBlocklockReceiverInterface { + return new Interface(_abi) as AbstractBlocklockReceiverInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): AbstractBlocklockReceiver { + return new Contract( + address, + _abi, + runner + ) as unknown as AbstractBlocklockReceiver; + } +} diff --git a/src/generated/factories/AccessControl__factory.ts b/src/generated/factories/AccessControl__factory.ts new file mode 100644 index 0000000..d30a4ac --- /dev/null +++ b/src/generated/factories/AccessControl__factory.ts @@ -0,0 +1,247 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { AccessControl, AccessControlInterface } from "../AccessControl"; + +const _abi = [ + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, +] as const; + +export class AccessControl__factory { + static readonly abi = _abi; + static createInterface(): AccessControlInterface { + return new Interface(_abi) as AccessControlInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): AccessControl { + return new Contract(address, _abi, runner) as unknown as AccessControl; + } +} diff --git a/src/generated/factories/BLS__factory.ts b/src/generated/factories/BLS__factory.ts new file mode 100644 index 0000000..1589e5b --- /dev/null +++ b/src/generated/factories/BLS__factory.ts @@ -0,0 +1,126 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { BLS, BLSInterface } from "../BLS"; + +const _abi = [ + { + type: "error", + name: "BNAddFailed", + inputs: [ + { + name: "input", + type: "uint256[4]", + internalType: "uint256[4]", + }, + ], + }, + { + type: "error", + name: "InvalidDSTLength", + inputs: [ + { + name: "dst", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + type: "error", + name: "InvalidFieldElement", + inputs: [ + { + name: "x", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "MapToPointFailed", + inputs: [ + { + name: "noSqrt", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ModExpFailed", + inputs: [ + { + name: "base", + type: "uint256", + internalType: "uint256", + }, + { + name: "exponent", + type: "uint256", + internalType: "uint256", + }, + { + name: "modulus", + type: "uint256", + internalType: "uint256", + }, + ], + }, +] as const; + +const _bytecode = + "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204cd4b18a89eb831367a637922142482ad4d3ea31aafcf841374c063ad53c613664736f6c63430008180033"; + +type BLSConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: BLSConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class BLS__factory extends ContractFactory { + constructor(...args: BLSConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + BLS & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): BLS__factory { + return super.connect(runner) as BLS__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BLSInterface { + return new Interface(_abi) as BLSInterface; + } + static connect(address: string, runner?: ContractRunner | null): BLS { + return new Contract(address, _abi, runner) as unknown as BLS; + } +} diff --git a/src/generated/factories/BlocklockSender__factory.ts b/src/generated/factories/BlocklockSender__factory.ts index 4cd2e35..14568d8 100644 --- a/src/generated/factories/BlocklockSender__factory.ts +++ b/src/generated/factories/BlocklockSender__factory.ts @@ -551,7 +551,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa264697066735822122068a2f537146d4ae64f695ef323715dd1ef8c4eb648579b2c30aa4fc73111ddda64736f6c63430008180033"; + "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa26469706673582212201b0de7f796b213cd1f3baef0353fbe64041a6936e0faf1b145f823915ca7106464736f6c63430008180033"; type BlocklockSenderConstructorParams = | [signer?: Signer] diff --git a/src/generated/factories/BlocklockSignatureScheme__factory.ts b/src/generated/factories/BlocklockSignatureScheme__factory.ts new file mode 100644 index 0000000..06bac32 --- /dev/null +++ b/src/generated/factories/BlocklockSignatureScheme__factory.ts @@ -0,0 +1,236 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + BlocklockSignatureScheme, + BlocklockSignatureSchemeInterface, +} from "../BlocklockSignatureScheme"; + +const _abi = [ + { + type: "function", + name: "DST", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "SCHEME_ID", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "hashToBytes", + inputs: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "hashToPoint", + inputs: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "verifySignature", + inputs: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + { + name: "publicKey", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "isValid", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "error", + name: "BNAddFailed", + inputs: [ + { + name: "input", + type: "uint256[4]", + internalType: "uint256[4]", + }, + ], + }, + { + type: "error", + name: "InvalidDSTLength", + inputs: [ + { + name: "dst", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + type: "error", + name: "InvalidFieldElement", + inputs: [ + { + name: "x", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "MapToPointFailed", + inputs: [ + { + name: "noSqrt", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ModExpFailed", + inputs: [ + { + name: "base", + type: "uint256", + internalType: "uint256", + }, + { + name: "exponent", + type: "uint256", + internalType: "uint256", + }, + { + name: "modulus", + type: "uint256", + internalType: "uint256", + }, + ], + }, +] as const; + +const _bytecode = + "0x608060405234801561000f575f80fd5b50611f598061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80633033cc51146100595780635f7c7522146100865780638a1f165a1461009b578063eae1e15b146100cd578063f6e548e9146100e0575b5f80fd5b61006c610067366004611c19565b610103565b604080519283526020830191909152015b60405180910390f35b61008e610173565b60405161007d9190611ca5565b61008e60405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b61008e6100db366004611c19565b61018f565b6100f36100ee366004611cbe565b6101c9565b604051901515815260200161007d565b5f805f61015d6040518060600160405280602c8152602001611ed8602c913986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506102b892505050565b80516020909101519093509150505b9250929050565b6040518060600160405280602c8152602001611ed8602c913981565b60605f8061019d8585610103565b915091506101be604051806040016040528084815260200183815250610384565b925050505b92915050565b5f8061020988888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506103bd92505050565b90505f61024a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506103bd92505050565b90505f61028b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061044092505050565b90505f8061029a8484876104e1565b915091508180156102a85750805b9c9b505050505050505050505050565b604080518082019091525f80825260208201525f6102d68484610654565b90505f6102e982825b6020020151610709565b90505f6102f78360016102df565b9050610301611b5c565b825181526020808401518282015282516040808401919091529083015160608301525f908460808460066107d05a03fa90508061035c5781604051630251c7e160e31b81526004016103539190611d65565b60405180910390fd5b6040805180820190915284518152602081018560016020020151905298975050505050505050565b6040805181815260608181018352915f919060208201818036833750508451602095860151958301525060408101939093525090919050565b604080518082019091525f808252602082015281516040146104215760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204731206279746573206c656e6774680000000000000000006044820152606401610353565b5060208181015160409283015183518085019094529083529082015290565b610448611b7a565b81516080146104995760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204732206279746573206c656e6774680000000000000000006044820152606401610353565b50602081810151604080840151606080860151608096870151845197880185528785019586529187019290925292855281518083019092528152808301919091529082015290565b5f805f604051806101800160405280875f01518152602001876020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d8152602001855f0151815260200185602001518152602001865f01516001600281106105c4576105c4611d51565b60200201518152602001865f01515f600281106105e3576105e3611d51565b60200201518152602001866020015160016002811061060457610604611d51565b6020020151815260200186602001515f6002811061062457610624611d51565b602002015190529050610635611b9f565b6020816101808460086107d05a03fa9051151597909650945050505050565b61065c611bbd565b5f61066784846109ea565b90505f805f80601885016001600160c01b0381511693506030860190506001600160c01b0381511694505f80516020611eb8833981519152855f80516020611eb8833981519152600160c01b870908604887015160608801516001600160c01b03908116975016945092505f80516020611eb883398151915290508481600160c01b860908604080518082019091529283526020830152509695505050505050565b610711611bbd565b5f80516020611eb883398151915282106107415760405163d53e941560e01b815260048101839052602401610353565b5f5f80516020611eb883398151915260045f80516020611eb88339815191528586090990505f5f80516020611eb88339815191528260010890505f80516020611eb88339815191526107a0835f80516020611eb8833981519152611da9565b60010891505f6107bf5f80516020611eb8833981519152838509610b41565b90505f5f80516020611eb883398151915278016789af3a83522eb353c98fc6b36d713d5d8d1cc5dffffffa5f80516020611eb8833981519152845f80516020611eb8833981519152888b09090990505f5f80516020611eb8833981519152610834835f80516020611eb8833981519152611da9565b5f80516020611f048339815191520890505f5f80516020611eb8833981519152835f80516020611f048339815191520890505f5f80516020611eb883398151915286870990505f5f80516020611eb883398151915286830990505f5f80516020611eb8833981519152805f80516020611eb88339815191528485097f10216f7ba065e00de81ac1e7808072c9dd2b2385cd7b438469602eb24829a9bd0960010890505f806108e96108e488610b4b565b610b84565b5f0b60010361093957868c526108fe87610b4b565b905061090981610be9565b60208e01919091529150816109345760405163396ec77160e01b815260048101829052602401610353565b61099c565b6109456108e487610b4b565b5f0b60010361095a57858c526108fe86610b4b565b828c5261096683610b4b565b905061097181610be9565b60208e019190915291508161099c5760405163396ec77160e01b815260048101829052602401610353565b60208c01516109aa90610c10565b6109b38e610c10565b146109da5760208c01516109d4905f80516020611eb8833981519152611da9565b60208d01525b5050505050505050505050919050565b815160609060ff811115610a1357836040516313727cdd60e11b81526004016103539190611ca5565b60408051608880825260c082019092525f916020820181803683370190505090505f81855f60605f8a88604051602001610a539796959493929190611dbc565b60405160208183030381529060405290505f818051906020012090505f8160018987604051602001610a889493929190611e40565b60408051808303601f1901815282825280516020820120606080855260808501909352909350915f91602082018180368337019050509050600360015b81811015610b2457858418610adb826001611e85565b8d8b604051602001610af09493929190611e40565b60408051808303601f1901815291905260205f19830181028501810195909552805194810194909420939450600101610ac5565b505f19016020908102820101919091529550505050505092915050565b5f6101c382610c1c565b5f5f80516020611eb883398151915260035f80516020611eb8833981519152845f80516020611eb8833981519152868709090892915050565b5f80610b8f83611361565b9050610ba960015f80516020611eb8833981519152611da9565b8103610bb857505f1992915050565b8015801590610bc8575080600114155b156101c35760405163396ec77160e01b815260048101849052602401610353565b5f80610bf483611429565b9150825f80516020611eb8833981519152838409149050915091565b5f6101c3600283611e98565b5f5f80516020611eb88339815191528083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996505050838586099450838586099450838586099450838586099450838186099450508284850993508284850993508284850993508281850993508284850993508284850993508285850993508284850993508284850993508284850993508284850993508284850993508284850993508281850995945050505050565b6040805160c080825260e082019092525f918291906020820181803683370190505060208082018181526040830182905260608301829052608083018690525f80516020611f0483398151915260a08401525f80516020611eb883398151915260c0808501919091529293505f92839160055afa90505f519250806114225760405163c6daf7ab60e01b8152600481018590525f80516020611f0483398151915260248201525f80516020611eb88339815191526044820152606401610353565b5050919050565b5f5f80516020611eb88339815191528083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508584880996508587880996508587880996508587880996508587880996508587880996508581880996505050505050808283099392505050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611b8d611bbd565b8152602001611b9a611bbd565b905290565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b5f8083601f840112611beb575f80fd5b50813567ffffffffffffffff811115611c02575f80fd5b60208301915083602082850101111561016c575f80fd5b5f8060208385031215611c2a575f80fd5b823567ffffffffffffffff811115611c40575f80fd5b611c4c85828601611bdb565b90969095509350505050565b5f5b83811015611c72578181015183820152602001611c5a565b50505f910152565b5f8151808452611c91816020860160208601611c58565b601f01601f19169290920160200192915050565b602081525f611cb76020830184611c7a565b9392505050565b5f805f805f8060608789031215611cd3575f80fd5b863567ffffffffffffffff80821115611cea575f80fd5b611cf68a838b01611bdb565b90985096506020890135915080821115611d0e575f80fd5b611d1a8a838b01611bdb565b90965094506040890135915080821115611d32575f80fd5b50611d3f89828a01611bdb565b979a9699509497509295939492505050565b634e487b7160e01b5f52603260045260245ffd5b6080810181835f5b6004811015611d8c578151835260209283019290910190600101611d6d565b50505092915050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156101c3576101c3611d95565b5f8851611dcd818460208d01611c58565b885190830190611de1818360208d01611c58565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551611e20816003850160208a01611c58565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b1660208401528451611e67816021860160208901611c58565b60f89490941b16919092016021810191909152602201949350505050565b808201808211156101c3576101c3611d95565b5f82611eb257634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea3a26469706673582212204b27ab8148a4da9e67eccb564707f89ac046ef48967eabf20d45394ebb30813e64736f6c63430008180033"; + +type BlocklockSignatureSchemeConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: BlocklockSignatureSchemeConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class BlocklockSignatureScheme__factory extends ContractFactory { + constructor(...args: BlocklockSignatureSchemeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + BlocklockSignatureScheme & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): BlocklockSignatureScheme__factory { + return super.connect(runner) as BlocklockSignatureScheme__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BlocklockSignatureSchemeInterface { + return new Interface(_abi) as BlocklockSignatureSchemeInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): BlocklockSignatureScheme { + return new Contract( + address, + _abi, + runner + ) as unknown as BlocklockSignatureScheme; + } +} diff --git a/src/generated/factories/BytesLib__factory.ts b/src/generated/factories/BytesLib__factory.ts new file mode 100644 index 0000000..8222866 --- /dev/null +++ b/src/generated/factories/BytesLib__factory.ts @@ -0,0 +1,80 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { BytesLib, BytesLibInterface } from "../BytesLib"; + +const _abi = [ + { + type: "function", + name: "decodeBytesToUint", + inputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, +] as const; + +const _bytecode = + "0x6101e6610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c8063f7ba47a314610038575b5f80fd5b61004b6100463660046100ee565b61005d565b60405190815260200160405180910390f35b5f6020825110156100c05760405162461bcd60e51b815260206004820152602360248201527f44617461206d757374206265206174206c65617374203332206279746573206c6044820152626f6e6760e81b606482015260840160405180910390fd5b818060200190518101906100d49190610199565b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156100fe575f80fd5b813567ffffffffffffffff80821115610115575f80fd5b818401915084601f830112610128575f80fd5b81358181111561013a5761013a6100da565b604051601f8201601f19908116603f01168101908382118183101715610162576101626100da565b8160405282815287602084870101111561017a575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f602082840312156101a9575f80fd5b505191905056fea2646970667358221220e578af0180915c168727edabb6f98e40053fbd75fd5409f6cad8acdbaa69e80e64736f6c63430008180033"; + +type BytesLibConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: BytesLibConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class BytesLib__factory extends ContractFactory { + constructor(...args: BytesLibConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + BytesLib & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): BytesLib__factory { + return super.connect(runner) as BytesLib__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BytesLibInterface { + return new Interface(_abi) as BytesLibInterface; + } + static connect(address: string, runner?: ContractRunner | null): BytesLib { + return new Contract(address, _abi, runner) as unknown as BytesLib; + } +} diff --git a/src/generated/factories/DecryptionReceiverBase__factory.ts b/src/generated/factories/DecryptionReceiverBase__factory.ts new file mode 100644 index 0000000..34324d5 --- /dev/null +++ b/src/generated/factories/DecryptionReceiverBase__factory.ts @@ -0,0 +1,65 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + DecryptionReceiverBase, + DecryptionReceiverBaseInterface, +} from "../DecryptionReceiverBase"; + +const _abi = [ + { + type: "function", + name: "decryptionSender", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IDecryptionSender", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "receiveDecryptionData", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class DecryptionReceiverBase__factory { + static readonly abi = _abi; + static createInterface(): DecryptionReceiverBaseInterface { + return new Interface(_abi) as DecryptionReceiverBaseInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): DecryptionReceiverBase { + return new Contract( + address, + _abi, + runner + ) as unknown as DecryptionReceiverBase; + } +} diff --git a/src/generated/factories/DecryptionSender__factory.ts b/src/generated/factories/DecryptionSender__factory.ts new file mode 100644 index 0000000..7e6cd2c --- /dev/null +++ b/src/generated/factories/DecryptionSender__factory.ts @@ -0,0 +1,680 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + DecryptionSender, + DecryptionSenderInterface, +} from "../DecryptionSender"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "_signatureSchemeAddressProvider", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "fulfilDecryptionRequest", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getPublicKey", + inputs: [], + outputs: [ + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getPublicKeyBytes", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRequestInFlight", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct TypesLib.DecryptionRequest", + components: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "ciphertext", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + { + name: "callback", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isInFlight", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "lastRequestID", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "multicall", + inputs: [ + { + name: "data", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "results", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "registerCiphertext", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "ciphertext", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "requestsInFlight", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "ciphertext", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + { + name: "callback", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "signatureSchemeAddressProvider", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract ISignatureSchemeAddressProvider", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "DecryptionReceiverCallbackSuccess", + inputs: [ + { + name: "requestID", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "DecryptionRequested", + inputs: [ + { + name: "requestID", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + { + name: "callback", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "schemeID", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "condition", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "ciphertext", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "requestedAt", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "DecryptionReceiverCallbackFailed", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + }, +] as const; + +const _bytecode = + "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b50604051620029ad380380620029ad8339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b608051612567620004465f395f818161037b01528181610dd201528181611470015261172501526125675ff3fe608060405260043610610105575f3560e01c8063a217fddf11610092578063cd802c9111610062578063cd802c91146102e1578063d547741f1461031a578063d5c2d4f514610339578063e6b3ca711461036a578063f87f0e61146103b5575f80fd5b8063a217fddf1461026e578063ac9650d814610281578063acae9fee146102a1578063bd132697146102c2575f80fd5b806336568abe116100d857806336568abe146101bc57806344880e1e146101db57806347c031861461020757806375b238fc1461021c57806391d148541461024f575f80fd5b806301ffc9a714610109578063248a9ca31461013d5780632e334452146101795780632f2ff15d1461019b575b5f80fd5b348015610114575f80fd5b50610128610123366004611cac565b6103d4565b60405190151581526020015b60405180910390f35b348015610148575f80fd5b5061016b610157366004611cd3565b5f9081526020819052604090206001015490565b604051908152602001610134565b348015610184575f80fd5b5061018d61040a565b604051610134929190611d0c565b3480156101a6575f80fd5b506101ba6101b5366004611d3b565b610484565b005b3480156101c7575f80fd5b506101ba6101d6366004611d3b565b6104ae565b3480156101e6575f80fd5b506101fa6101f5366004611cd3565b6104e6565b6040516101349190611db6565b348015610212575f80fd5b5061016b60015481565b348015610227575f80fd5b5061016b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561025a575f80fd5b50610128610269366004611d3b565b610829565b348015610279575f80fd5b5061016b5f81565b61029461028f366004611e69565b610851565b6040516101349190611ed8565b3480156102ac575f80fd5b506102b56109a1565b6040516101349190611f3a565b3480156102cd575f80fd5b506101ba6102dc366004611f91565b610a20565b3480156102ec575f80fd5b506101286102fb366004611cd3565b5f908152600660205260409020600501546001600160a01b0316151590565b348015610325575f80fd5b506101ba610334366004611d3b565b611144565b348015610344575f80fd5b50610358610353366004611cd3565b611168565b60405161013496959493929190612005565b348015610375575f80fd5b5061039d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b3480156103c0575f80fd5b5061016b6103cf366004612081565b611442565b5f6001600160e01b03198216637965db0b60e01b148061040457506301ffc9a760e01b6001600160e01b03198316145b92915050565b610412611c44565b61041a611c44565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610433575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116104625750505050509050915091509091565b5f8281526020819052604090206001015461049e816119c7565b6104a883836119d4565b50505050565b6001600160a01b03811633146104d75760405163334bd91960e11b815260040160405180910390fd5b6104e18282611a63565b505050565b6105276040518060c0016040528060608152602001606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160c0810190925280548290829061054e90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461057a90612114565b80156105c55780601f1061059c576101008083540402835291602001916105c5565b820191905f5260205f20905b8154815290600101906020018083116105a857829003601f168201915b505050505081526020016001820180546105de90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461060a90612114565b80156106555780601f1061062c57610100808354040283529160200191610655565b820191905f5260205f20905b81548152906001019060200180831161063857829003601f168201915b5050505050815260200160028201805461066e90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461069a90612114565b80156106e55780601f106106bc576101008083540402835291602001916106e5565b820191905f5260205f20905b8154815290600101906020018083116106c857829003601f168201915b505050505081526020016003820180546106fe90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461072a90612114565b80156107755780601f1061074c57610100808354040283529160200191610775565b820191905f5260205f20905b81548152906001019060200180831161075857829003601f168201915b5050505050815260200160048201805461078e90612114565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba90612114565b80156108055780601f106107dc57610100808354040283529160200191610805565b820191905f5260205f20905b8154815290600101906020018083116107e857829003601f168201915b5050509183525050600591909101546001600160a01b031660209091015292915050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60608167ffffffffffffffff81111561086c5761086c61214c565b60405190808252806020026020018201604052801561089f57816020015b606081526020019060019003908161088a5790505b5090505f5b8281101561099a575f80308686858181106108c1576108c1612160565b90506020028101906108d39190612174565b6040516108e19291906121b7565b5f60405180830381855af49150503d805f8114610919576040519150601f19603f3d011682016040523d82523d5f602084013e61091e565b606091505b50915091508161097257604481511015610936575f80fd5b600481019050808060200190518101906109509190612238565b60405162461bcd60e51b81526004016109699190611f3a565b60405180910390fd5b8084848151811061098557610985612160565b602090810291909101015250506001016108a4565b5092915050565b6040805160808101808352606092610a1b92916002918391908201908390819081845b8154815260200190600101908083116109c457505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116109fa57505050505081525050611acc565b905090565b610a497fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119c7565b5f858152600660205260409020600501546001600160a01b0316610abb5760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b6064820152608401610969565b5f85815260066020526040808220815160c08101909252805482908290610ae190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0d90612114565b8015610b585780601f10610b2f57610100808354040283529160200191610b58565b820191905f5260205f20905b815481529060010190602001808311610b3b57829003601f168201915b50505050508152602001600182018054610b7190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9d90612114565b8015610be85780601f10610bbf57610100808354040283529160200191610be8565b820191905f5260205f20905b815481529060010190602001808311610bcb57829003601f168201915b50505050508152602001600282018054610c0190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2d90612114565b8015610c785780601f10610c4f57610100808354040283529160200191610c78565b820191905f5260205f20905b815481529060010190602001808311610c5b57829003601f168201915b50505050508152602001600382018054610c9190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbd90612114565b8015610d085780601f10610cdf57610100808354040283529160200191610d08565b820191905f5260205f20905b815481529060010190602001808311610ceb57829003601f168201915b50505050508152602001600482018054610d2190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4d90612114565b8015610d985780601f10610d6f57610100808354040283529160200191610d98565b820191905f5260205f20905b815481529060010190602001808311610d7b57829003601f168201915b5050509183525050600591909101546001600160a01b039081166020909201919091528151604051630b76139f60e31b8152929350915f917f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890610e07908590600401611f3a565b602060405180830381865afa158015610e22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e469190612285565b90506001600160a01b038116610e8f5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420736368656d6560901b6044820152606401610969565b604080840151905163eae1e15b60e01b815282915f916001600160a01b0384169163eae1e15b91610ec39190600401611f3a565b5f60405180830381865afa158015610edd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f049190810190612238565b9050816001600160a01b031663f6e548e9828989610f206109a1565b6040518563ffffffff1660e01b8152600401610f3f94939291906122c8565b602060405180830381865afa158015610f5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7e919061230c565b610fca5760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610969565b5f8560a001516001600160a01b0316635d3be00160e01b8c8c8c8c8c604051602401610ffa95949392919061232b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516110389190612363565b5f604051808303815f865af19150503d805f8114611071576040519150601f19603f3d011682016040523d82523d5f602084013e611076565b606091505b505090508061109b57604051633fed05c560e01b8152600481018c9052602401610969565b8a7f0a1f5b3782d8f604353407c980dbfe6b55499c5b92cb8c39f089c73f348407e68b8b8b8b6040516110d1949392919061237e565b60405180910390a25f8b8152600660205260408120906110f18282611c62565b6110fe600183015f611c62565b61110b600283015f611c62565b611118600383015f611c62565b611125600483015f611c62565b5060050180546001600160a01b03191690555050505050505050505050565b5f8281526020819052604090206001015461115e816119c7565b6104a88383611a63565b60066020525f908152604090208054819061118290612114565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90612114565b80156111f95780601f106111d0576101008083540402835291602001916111f9565b820191905f5260205f20905b8154815290600101906020018083116111dc57829003601f168201915b50505050509080600101805461120e90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461123a90612114565b80156112855780601f1061125c57610100808354040283529160200191611285565b820191905f5260205f20905b81548152906001019060200180831161126857829003601f168201915b50505050509080600201805461129a90612114565b80601f01602080910402602001604051908101604052809291908181526020018280546112c690612114565b80156113115780601f106112e857610100808354040283529160200191611311565b820191905f5260205f20905b8154815290600101906020018083116112f457829003601f168201915b50505050509080600301805461132690612114565b80601f016020809104026020016040519081016040528092919081815260200182805461135290612114565b801561139d5780601f106113745761010080835404028352916020019161139d565b820191905f5260205f20905b81548152906001019060200180831161138057829003601f168201915b5050505050908060040180546113b290612114565b80601f01602080910402602001604051908101604052809291908181526020018280546113de90612114565b80156114295780601f1061140057610100808354040283529160200191611429565b820191905f5260205f20905b81548152906001019060200180831161140c57829003601f168201915b505050600590930154919250506001600160a01b031686565b5f6001805f82825461145491906123a4565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa33906114a7908a908a906004016123c3565b602060405180830381865afa1580156114c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e6919061230c565b6115325760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f7274656400006044820152606401610969565b611579600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611b289050565b6115d05760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b6064820152608401610969565b6116165f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611b289050565b61166e5760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b6064820152608401610969565b81801561170c576116b384848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bbc92505050565b1561170c5760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b6064820152608401610969565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf89061175c908c908c906004016123c3565b602060405180830381865afa158015611777573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179b9190612285565b90506001600160a01b0381166117f35760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e617475726520736368656d6500000000000000006044820152606401610969565b6040518060c001604052808a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284375f9201829052509385525050604080516020818101835284825280860191909152815180820183528481528286015233606090950194909452600154835260069093525020815181906118ef9082612421565b50602082015160018201906119049082612421565b50604082015160028201906119199082612421565b506060820151600382019061192e9082612421565b50608082015160048201906119439082612421565b5060a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790556001546040513391907f133b1acfa49920f88bc8c23faeb2ba43b75b3d6c453290a824f3c85e7733df13906119af908d908d908b908b908f908f9042906124e1565b60405180910390a35050600154979650505050505050565b6119d18133611c07565b50565b5f6119df8383610829565b611a5c575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611a143390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610404565b505f610404565b5f611a6e8383610829565b15611a5c575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610404565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b5f81831115611b9f5760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e6774680000000000006064820152608401610969565b8351838110801590611bb15750828111155b9150505b9392505050565b5f805b8251811015611bfe57828181518110611bda57611bda612160565b01602001516001600160f81b03191615611bf657505f92915050565b600101611bbf565b50600192915050565b611c118282610829565b611c405760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610969565b5050565b60405180604001604052806002906020820280368337509192915050565b508054611c6e90612114565b5f825580601f10611c7d575050565b601f0160209004905f5260205f20908101906119d191905b80821115611ca8575f8155600101611c95565b5090565b5f60208284031215611cbc575f80fd5b81356001600160e01b031981168114611bb5575f80fd5b5f60208284031215611ce3575f80fd5b5035919050565b805f5b60028110156104a8578151845260209384019390910190600101611ced565b60808101611d1a8285611cea565b611bb56040830184611cea565b6001600160a01b03811681146119d1575f80fd5b5f8060408385031215611d4c575f80fd5b823591506020830135611d5e81611d27565b809150509250929050565b5f5b83811015611d83578181015183820152602001611d6b565b50505f910152565b5f8151808452611da2816020860160208601611d69565b601f01601f19169290920160200192915050565b602081525f825160c06020840152611dd160e0840182611d8b565b90506020840151601f1980858403016040860152611def8383611d8b565b92506040860151915080858403016060860152611e0c8383611d8b565b92506060860151915080858403016080860152611e298383611d8b565b925060808601519150808584030160a086015250611e478282611d8b565b60a095909501516001600160a01b031660c09490940193909352509192915050565b5f8060208385031215611e7a575f80fd5b823567ffffffffffffffff80821115611e91575f80fd5b818501915085601f830112611ea4575f80fd5b813581811115611eb2575f80fd5b8660208260051b8501011115611ec6575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611f2d57603f19888603018452611f1b858351611d8b565b94509285019290850190600101611eff565b5092979650505050505050565b602081525f611bb56020830184611d8b565b5f8083601f840112611f5c575f80fd5b50813567ffffffffffffffff811115611f73575f80fd5b602083019150836020828501011115611f8a575f80fd5b9250929050565b5f805f805f60608688031215611fa5575f80fd5b85359450602086013567ffffffffffffffff80821115611fc3575f80fd5b611fcf89838a01611f4c565b90965094506040880135915080821115611fe7575f80fd5b50611ff488828901611f4c565b969995985093965092949392505050565b60c081525f61201760c0830189611d8b565b82810360208401526120298189611d8b565b9050828103604084015261203d8188611d8b565b905082810360608401526120518187611d8b565b905082810360808401526120658186611d8b565b91505060018060a01b03831660a0830152979650505050505050565b5f805f805f8060608789031215612096575f80fd5b863567ffffffffffffffff808211156120ad575f80fd5b6120b98a838b01611f4c565b909850965060208901359150808211156120d1575f80fd5b6120dd8a838b01611f4c565b909650945060408901359150808211156120f5575f80fd5b5061210289828a01611f4c565b979a9699509497509295939492505050565b600181811c9082168061212857607f821691505b60208210810361214657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e19843603018112612189575f80fd5b83018035915067ffffffffffffffff8211156121a3575f80fd5b602001915036819003821315611f8a575f80fd5b818382375f9101908152919050565b5f67ffffffffffffffff808411156121e0576121e061214c565b604051601f8501601f19908116603f011681019082821181831017156122085761220861214c565b81604052809350858152868686011115612220575f80fd5b61222e866020830187611d69565b5050509392505050565b5f60208284031215612248575f80fd5b815167ffffffffffffffff81111561225e575f80fd5b8201601f8101841361226e575f80fd5b61227d848251602084016121c6565b949350505050565b5f60208284031215612295575f80fd5b8151611bb581611d27565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f6122da6060830187611d8b565b82810360208401526122ed8186886122a0565b905082810360408401526123018185611d8b565b979650505050505050565b5f6020828403121561231c575f80fd5b81518015158114611bb5575f80fd5b858152606060208201525f6123446060830186886122a0565b82810360408401526123578185876122a0565b98975050505050505050565b5f8251612374818460208701611d69565b9190910192915050565b604081525f6123916040830186886122a0565b82810360208401526123018185876122a0565b8082018082111561040457634e487b7160e01b5f52601160045260245ffd5b602081525f61227d6020830184866122a0565b601f8211156104e157805f5260205f20601f840160051c810160208510156123fb5750805b601f840160051c820191505b8181101561241a575f8155600101612407565b5050505050565b815167ffffffffffffffff81111561243b5761243b61214c565b61244f816124498454612114565b846123d6565b602080601f831160018114612482575f841561246b5750858301515b5f19600386901b1c1916600185901b1785556124d9565b5f85815260208120601f198616915b828110156124b057888601518255948401946001909101908401612491565b50858210156124cd57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b608081525f6124f460808301898b6122a0565b828103602084015261250781888a6122a0565b9050828103604084015261251c8186886122a0565b9150508260608301529897505050505050505056fea2646970667358221220da83133e2c4d77e2a78232dcb1ec910ff646a053185ce4d4638c4f39c688866d64736f6c63430008180033"; + +type DecryptionSenderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: DecryptionSenderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class DecryptionSender__factory extends ContractFactory { + constructor(...args: DecryptionSenderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + x: [BigNumberish, BigNumberish], + y: [BigNumberish, BigNumberish], + owner: AddressLike, + _signatureSchemeAddressProvider: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + x, + y, + owner, + _signatureSchemeAddressProvider, + overrides || {} + ); + } + override deploy( + x: [BigNumberish, BigNumberish], + y: [BigNumberish, BigNumberish], + owner: AddressLike, + _signatureSchemeAddressProvider: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + x, + y, + owner, + _signatureSchemeAddressProvider, + overrides || {} + ) as Promise< + DecryptionSender & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): DecryptionSender__factory { + return super.connect(runner) as DecryptionSender__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): DecryptionSenderInterface { + return new Interface(_abi) as DecryptionSenderInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): DecryptionSender { + return new Contract(address, _abi, runner) as unknown as DecryptionSender; + } +} diff --git a/src/generated/factories/Deployer__factory.ts b/src/generated/factories/Deployer__factory.ts new file mode 100644 index 0000000..93150b7 --- /dev/null +++ b/src/generated/factories/Deployer__factory.ts @@ -0,0 +1,138 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { Deployer, DeployerInterface } from "../Deployer"; + +const _abi = [ + { + type: "function", + name: "computeAddress", + inputs: [ + { + name: "salt", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "creationCodeHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deploy", + inputs: [ + { + name: "salt", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "creationCode", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "payable", + }, + { + type: "event", + name: "CreatedContract", + inputs: [ + { + name: "addr", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "salt", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "Create2EmptyBytecode", + inputs: [], + }, + { + type: "error", + name: "Create2FailedDeployment", + inputs: [], + }, +] as const; + +const _bytecode = + "0x608060405234801561000f575f80fd5b506102618061001d5f395ff3fe608060405260043610610028575f3560e01c8063481286e61461002c578063cdcb760a14610067575b5f80fd5b348015610037575f80fd5b5061004b610046366004610142565b61007a565b6040516001600160a01b03909116815260200160405180910390f35b61004b610075366004610176565b6100a4565b6040805190810182905260208101839052308082525f91600b0160ff815360559020949350505050565b5f81515f036100c657604051631328927760e21b815260040160405180910390fd5b5f8383516020850134f590506001600160a01b0381166100f957604051633a0ba96160e11b815260040160405180910390fd5b604080516001600160a01b0383168152602081018690527f4108529e399e9cd5343c48ae06aa62a23c8c1b7c93f59d4691a0ea1e6f5b4603910160405180910390a19392505050565b5f8060408385031215610153575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610187575f80fd5b82359150602083013567ffffffffffffffff808211156101a5575f80fd5b818501915085601f8301126101b8575f80fd5b8135818111156101ca576101ca610162565b604051601f8201601f19908116603f011681019083821181831017156101f2576101f2610162565b8160405282815288602084870101111561020a575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea26469706673582212205d30a1576505ed8e8e10595980c2262bb732a255f6697e3842744c100deb54b164736f6c63430008180033"; + +type DeployerConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: DeployerConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Deployer__factory extends ContractFactory { + constructor(...args: DeployerConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + Deployer & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): Deployer__factory { + return super.connect(runner) as Deployer__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): DeployerInterface { + return new Interface(_abi) as DeployerInterface; + } + static connect(address: string, runner?: ContractRunner | null): Deployer { + return new Contract(address, _abi, runner) as unknown as Deployer; + } +} diff --git a/src/generated/factories/ERC165__factory.ts b/src/generated/factories/ERC165__factory.ts new file mode 100644 index 0000000..ca65595 --- /dev/null +++ b/src/generated/factories/ERC165__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { ERC165, ERC165Interface } from "../ERC165"; + +const _abi = [ + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, +] as const; + +export class ERC165__factory { + static readonly abi = _abi; + static createInterface(): ERC165Interface { + return new Interface(_abi) as ERC165Interface; + } + static connect(address: string, runner?: ContractRunner | null): ERC165 { + return new Contract(address, _abi, runner) as unknown as ERC165; + } +} diff --git a/src/generated/factories/IAccessControl__factory.ts b/src/generated/factories/IAccessControl__factory.ts new file mode 100644 index 0000000..89a5cdb --- /dev/null +++ b/src/generated/factories/IAccessControl__factory.ts @@ -0,0 +1,218 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IAccessControl, + IAccessControlInterface, +} from "../IAccessControl"; + +const _abi = [ + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, +] as const; + +export class IAccessControl__factory { + static readonly abi = _abi; + static createInterface(): IAccessControlInterface { + return new Interface(_abi) as IAccessControlInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IAccessControl { + return new Contract(address, _abi, runner) as unknown as IAccessControl; + } +} diff --git a/src/generated/factories/IBlocklockReceiver__factory.ts b/src/generated/factories/IBlocklockReceiver__factory.ts new file mode 100644 index 0000000..9620921 --- /dev/null +++ b/src/generated/factories/IBlocklockReceiver__factory.ts @@ -0,0 +1,43 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IBlocklockReceiver, + IBlocklockReceiverInterface, +} from "../IBlocklockReceiver"; + +const _abi = [ + { + type: "function", + name: "receiveBlocklock", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IBlocklockReceiver__factory { + static readonly abi = _abi; + static createInterface(): IBlocklockReceiverInterface { + return new Interface(_abi) as IBlocklockReceiverInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IBlocklockReceiver { + return new Contract(address, _abi, runner) as unknown as IBlocklockReceiver; + } +} diff --git a/src/generated/factories/IBlocklockSender__factory.ts b/src/generated/factories/IBlocklockSender__factory.ts new file mode 100644 index 0000000..2dfd238 --- /dev/null +++ b/src/generated/factories/IBlocklockSender__factory.ts @@ -0,0 +1,206 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IBlocklockSender, + IBlocklockSenderInterface, +} from "../IBlocklockSender"; + +const _abi = [ + { + type: "function", + name: "decrypt", + inputs: [ + { + name: "ciphertext", + type: "tuple", + internalType: "struct TypesLib.Ciphertext", + components: [ + { + name: "u", + type: "tuple", + internalType: "struct BLS.PointG2", + components: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + }, + { + name: "v", + type: "bytes", + internalType: "bytes", + }, + { + name: "w", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRequest", + inputs: [ + { + name: "requestId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct TypesLib.BlocklockRequest", + components: [ + { + name: "decryptionRequestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "blockHeight", + type: "uint256", + internalType: "uint256", + }, + { + name: "ciphertext", + type: "tuple", + internalType: "struct TypesLib.Ciphertext", + components: [ + { + name: "u", + type: "tuple", + internalType: "struct BLS.PointG2", + components: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + }, + { + name: "v", + type: "bytes", + internalType: "bytes", + }, + { + name: "w", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + { + name: "callback", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "requestBlocklock", + inputs: [ + { + name: "blockHeight", + type: "uint256", + internalType: "uint256", + }, + { + name: "ciphertext", + type: "tuple", + internalType: "struct TypesLib.Ciphertext", + components: [ + { + name: "u", + type: "tuple", + internalType: "struct BLS.PointG2", + components: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + }, + { + name: "v", + type: "bytes", + internalType: "bytes", + }, + { + name: "w", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, +] as const; + +export class IBlocklockSender__factory { + static readonly abi = _abi; + static createInterface(): IBlocklockSenderInterface { + return new Interface(_abi) as IBlocklockSenderInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IBlocklockSender { + return new Contract(address, _abi, runner) as unknown as IBlocklockSender; + } +} diff --git a/src/generated/factories/IDecryptionReceiver__factory.ts b/src/generated/factories/IDecryptionReceiver__factory.ts new file mode 100644 index 0000000..7abae68 --- /dev/null +++ b/src/generated/factories/IDecryptionReceiver__factory.ts @@ -0,0 +1,52 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IDecryptionReceiver, + IDecryptionReceiverInterface, +} from "../IDecryptionReceiver"; + +const _abi = [ + { + type: "function", + name: "receiveDecryptionData", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IDecryptionReceiver__factory { + static readonly abi = _abi; + static createInterface(): IDecryptionReceiverInterface { + return new Interface(_abi) as IDecryptionReceiverInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IDecryptionReceiver { + return new Contract( + address, + _abi, + runner + ) as unknown as IDecryptionReceiver; + } +} diff --git a/src/generated/factories/IDecryptionSender__factory.ts b/src/generated/factories/IDecryptionSender__factory.ts new file mode 100644 index 0000000..98e9acf --- /dev/null +++ b/src/generated/factories/IDecryptionSender__factory.ts @@ -0,0 +1,178 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IDecryptionSender, + IDecryptionSenderInterface, +} from "../IDecryptionSender"; + +const _abi = [ + { + type: "function", + name: "fulfilDecryptionRequest", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getPublicKey", + inputs: [], + outputs: [ + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getPublicKeyBytes", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRequestInFlight", + inputs: [ + { + name: "requestId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct TypesLib.DecryptionRequest", + components: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "ciphertext", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + { + name: "callback", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isInFlight", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "registerCiphertext", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "ciphertext", + type: "bytes", + internalType: "bytes", + }, + { + name: "conditions", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, +] as const; + +export class IDecryptionSender__factory { + static readonly abi = _abi; + static createInterface(): IDecryptionSenderInterface { + return new Interface(_abi) as IDecryptionSenderInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IDecryptionSender { + return new Contract(address, _abi, runner) as unknown as IDecryptionSender; + } +} diff --git a/src/generated/factories/IERC165__factory.ts b/src/generated/factories/IERC165__factory.ts new file mode 100644 index 0000000..b56d894 --- /dev/null +++ b/src/generated/factories/IERC165__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC165, IERC165Interface } from "../IERC165"; + +const _abi = [ + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, +] as const; + +export class IERC165__factory { + static readonly abi = _abi; + static createInterface(): IERC165Interface { + return new Interface(_abi) as IERC165Interface; + } + static connect(address: string, runner?: ContractRunner | null): IERC165 { + return new Contract(address, _abi, runner) as unknown as IERC165; + } +} diff --git a/src/generated/factories/IMulticall__factory.ts b/src/generated/factories/IMulticall__factory.ts new file mode 100644 index 0000000..de8cec1 --- /dev/null +++ b/src/generated/factories/IMulticall__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IMulticall, IMulticallInterface } from "../IMulticall"; + +const _abi = [ + { + type: "function", + name: "multicall", + inputs: [ + { + name: "data", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "results", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "payable", + }, +] as const; + +export class IMulticall__factory { + static readonly abi = _abi; + static createInterface(): IMulticallInterface { + return new Interface(_abi) as IMulticallInterface; + } + static connect(address: string, runner?: ContractRunner | null): IMulticall { + return new Contract(address, _abi, runner) as unknown as IMulticall; + } +} diff --git a/src/generated/factories/ISignatureReceiver__factory.ts b/src/generated/factories/ISignatureReceiver__factory.ts new file mode 100644 index 0000000..e059923 --- /dev/null +++ b/src/generated/factories/ISignatureReceiver__factory.ts @@ -0,0 +1,43 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ISignatureReceiver, + ISignatureReceiverInterface, +} from "../ISignatureReceiver"; + +const _abi = [ + { + type: "function", + name: "receiveSignature", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class ISignatureReceiver__factory { + static readonly abi = _abi; + static createInterface(): ISignatureReceiverInterface { + return new Interface(_abi) as ISignatureReceiverInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ISignatureReceiver { + return new Contract(address, _abi, runner) as unknown as ISignatureReceiver; + } +} diff --git a/src/generated/factories/ISignatureSchemeAddressProvider__factory.ts b/src/generated/factories/ISignatureSchemeAddressProvider__factory.ts new file mode 100644 index 0000000..695353c --- /dev/null +++ b/src/generated/factories/ISignatureSchemeAddressProvider__factory.ts @@ -0,0 +1,85 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ISignatureSchemeAddressProvider, + ISignatureSchemeAddressProviderInterface, +} from "../ISignatureSchemeAddressProvider"; + +const _abi = [ + { + type: "function", + name: "getSignatureSchemeAddress", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isSupportedScheme", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "updateSignatureScheme", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "schemeAddress", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class ISignatureSchemeAddressProvider__factory { + static readonly abi = _abi; + static createInterface(): ISignatureSchemeAddressProviderInterface { + return new Interface(_abi) as ISignatureSchemeAddressProviderInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ISignatureSchemeAddressProvider { + return new Contract( + address, + _abi, + runner + ) as unknown as ISignatureSchemeAddressProvider; + } +} diff --git a/src/generated/factories/ISignatureScheme__factory.ts b/src/generated/factories/ISignatureScheme__factory.ts new file mode 100644 index 0000000..04697a9 --- /dev/null +++ b/src/generated/factories/ISignatureScheme__factory.ts @@ -0,0 +1,110 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ISignatureScheme, + ISignatureSchemeInterface, +} from "../ISignatureScheme"; + +const _abi = [ + { + type: "function", + name: "SCHEME_ID", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hashToBytes", + inputs: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "hashToPoint", + inputs: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "verifySignature", + inputs: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + { + name: "publicKey", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "isValid", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, +] as const; + +export class ISignatureScheme__factory { + static readonly abi = _abi; + static createInterface(): ISignatureSchemeInterface { + return new Interface(_abi) as ISignatureSchemeInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ISignatureScheme { + return new Contract(address, _abi, runner) as unknown as ISignatureScheme; + } +} diff --git a/src/generated/factories/ISignatureSender__factory.ts b/src/generated/factories/ISignatureSender__factory.ts new file mode 100644 index 0000000..92bb38e --- /dev/null +++ b/src/generated/factories/ISignatureSender__factory.ts @@ -0,0 +1,168 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ISignatureSender, + ISignatureSenderInterface, +} from "../ISignatureSender"; + +const _abi = [ + { + type: "function", + name: "fulfilSignatureRequest", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getPublicKey", + inputs: [], + outputs: [ + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getPublicKeyBytes", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRequestInFlight", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct TypesLib.SignatureRequest", + components: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + { + name: "messageHash", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "callback", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isInFlight", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "requestSignature", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, +] as const; + +export class ISignatureSender__factory { + static readonly abi = _abi; + static createInterface(): ISignatureSenderInterface { + return new Interface(_abi) as ISignatureSenderInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ISignatureSender { + return new Contract(address, _abi, runner) as unknown as ISignatureSender; + } +} diff --git a/src/generated/factories/MockBlocklockReceiver__factory.ts b/src/generated/factories/MockBlocklockReceiver__factory.ts new file mode 100644 index 0000000..21f5884 --- /dev/null +++ b/src/generated/factories/MockBlocklockReceiver__factory.ts @@ -0,0 +1,238 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + MockBlocklockReceiver, + MockBlocklockReceiverInterface, +} from "../MockBlocklockReceiver"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "timelockContract", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "Ciphertext", + inputs: [], + outputs: [ + { + name: "u", + type: "tuple", + internalType: "struct BLS.PointG2", + components: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + }, + { + name: "v", + type: "bytes", + internalType: "bytes", + }, + { + name: "w", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "createTimelockRequest", + inputs: [ + { + name: "decryptionBlockNumber", + type: "uint256", + internalType: "uint256", + }, + { + name: "encryptedData", + type: "tuple", + internalType: "struct TypesLib.Ciphertext", + components: [ + { + name: "u", + type: "tuple", + internalType: "struct BLS.PointG2", + components: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + }, + { + name: "v", + type: "bytes", + internalType: "bytes", + }, + { + name: "w", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "plainText", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "receiveBlocklock", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "decryptionKey", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "requestId", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "timelock", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IBlocklockSender", + }, + ], + stateMutability: "view", + }, +] as const; + +const _bytecode = + "0x608060405234801561000f575f80fd5b5060405161098d38038061098d83398101604081905261002e91610053565b600880546001600160a01b0319166001600160a01b0392909216919091179055610080565b5f60208284031215610063575f80fd5b81516001600160a01b0381168114610079575f80fd5b9392505050565b6109008061008d5f395ff3fe608060405234801561000f575f80fd5b506004361061005f575f3560e01c80626d6cae146100635780635d9418021461007e5780638879765a1461009357806398e5a5e7146100aa578063d33219b4146100bd578063d8da5046146100e8575b5f80fd5b61006b5f5481565b6040519081526020015b60405180910390f35b61009161008c36600461043d565b6100f1565b005b61009b610234565b60405161007593929190610527565b61006b6100b8366004610576565b6103c0565b6008546100d0906001600160a01b031681565b6040516001600160a01b039091168152602001610075565b61006b60075481565b6008546001600160a01b0316331461015e5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c792074696d656c6f636b20636f6e74726163742063616e2063616c6c206044820152643a3434b99760d91b60648201526084015b60405180910390fd5b5f5483146101a35760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd081a5960721b6044820152606401610155565b60085460405163326f063160e21b81526001600160a01b039091169063c9bc18c4906101d890600190869086906004016106e1565b5f60405180830381865afa1580156101f2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610219919081019061075c565b80602001905181019061022c9190610804565b600755505050565b604080516080810180835260019283918391820190839060029082845b81548152602001906001019080831161025157505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161028757505050505081525050908060040180546102b3906105e2565b80601f01602080910402602001604051908101604052809291908181526020018280546102df906105e2565b801561032a5780601f106103015761010080835404028352916020019161032a565b820191905f5260205f20905b81548152906001019060200180831161030d57829003601f168201915b50505050509080600501805461033f906105e2565b80601f016020809104026020016040519081016040528092919081815260200182805461036b906105e2565b80156103b65780601f1061038d576101008083540402835291602001916103b6565b820191905f5260205f20905b81548152906001019060200180831161039957829003601f168201915b5050505050905083565b60085460405163236695a160e11b81525f916001600160a01b0316906346cd2b42906103f29086908690600401610864565b6020604051808303815f875af115801561040e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104329190610804565b5f8190559392505050565b5f805f6040848603121561044f575f80fd5b83359250602084013567ffffffffffffffff8082111561046d575f80fd5b818601915086601f830112610480575f80fd5b81358181111561048e575f80fd5b87602082850101111561049f575f80fd5b6020830194508093505050509250925092565b805f5b60028110156104d45781518452602093840193909101906001016104b5565b50505050565b5f5b838110156104f45781810151838201526020016104dc565b50505f910152565b5f81518084526105138160208601602086016104da565b601f01601f19169290920160200192915050565b6105328185516104b2565b5f602085015161054560408401826104b2565b5060c0608083015261055a60c08301856104fc565b82810360a084015261056c81856104fc565b9695505050505050565b5f8060408385031215610587575f80fd5b82359150602083013567ffffffffffffffff8111156105a4575f80fd5b830160c081860312156105b5575f80fd5b809150509250929050565b805f5b60028110156104d45781548452602090930192600191820191016105c3565b600181811c908216806105f657607f821691505b60208210810361061457634e487b7160e01b5f52602260045260245ffd5b50919050565b80545f90600181811c908083168061063357607f831692505b6020808410820361065257634e487b7160e01b5f52602260045260245ffd5b8388526020880182801561066d5760018114610683576106ac565b60ff198716825285151560051b820197506106ac565b5f898152602090205f5b878110156106a65781548482015290860190840161068d565b83019850505b5050505050505092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081526106f260408201856105c0565b61070260808201600286016105c0565b60c0808201525f61071a61010083016004870161061a565b828103603f190160e0840152610733816005880161061a565b9050828103602084015261056c8185876106b9565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561076c575f80fd5b815167ffffffffffffffff80821115610783575f80fd5b818401915084601f830112610796575f80fd5b8151818111156107a8576107a8610748565b604051601f8201601f19908116603f011681019083821181831017156107d0576107d0610748565b816040528281528760208487010111156107e8575f80fd5b6107f98360208301602088016104da565b979650505050505050565b5f60208284031215610814575f80fd5b5051919050565b5f808335601e19843603018112610830575f80fd5b830160208101925035905067ffffffffffffffff81111561084f575f80fd5b80360382131561085d575f80fd5b9250929050565b828152604060208201526040826040830137604080830160808301375f61088e608084018461081b565b60c0808501526108a3610100850182846106b9565b9150506108b360a085018561081b565b848303603f190160e08601526107f98382846106b956fea2646970667358221220cfbb9e4f772d42fc1e1c202d552c1db10c082854e16c2b10864ccc2db6fc98ff64736f6c63430008180033"; + +type MockBlocklockReceiverConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MockBlocklockReceiverConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class MockBlocklockReceiver__factory extends ContractFactory { + constructor(...args: MockBlocklockReceiverConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + timelockContract: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(timelockContract, overrides || {}); + } + override deploy( + timelockContract: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy(timelockContract, overrides || {}) as Promise< + MockBlocklockReceiver & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): MockBlocklockReceiver__factory { + return super.connect(runner) as MockBlocklockReceiver__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MockBlocklockReceiverInterface { + return new Interface(_abi) as MockBlocklockReceiverInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): MockBlocklockReceiver { + return new Contract( + address, + _abi, + runner + ) as unknown as MockBlocklockReceiver; + } +} diff --git a/src/generated/factories/Multicall__factory.ts b/src/generated/factories/Multicall__factory.ts new file mode 100644 index 0000000..5aed470 --- /dev/null +++ b/src/generated/factories/Multicall__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Multicall, MulticallInterface } from "../Multicall"; + +const _abi = [ + { + type: "function", + name: "multicall", + inputs: [ + { + name: "data", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "results", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "payable", + }, +] as const; + +export class Multicall__factory { + static readonly abi = _abi; + static createInterface(): MulticallInterface { + return new Interface(_abi) as MulticallInterface; + } + static connect(address: string, runner?: ContractRunner | null): Multicall { + return new Contract(address, _abi, runner) as unknown as Multicall; + } +} diff --git a/src/generated/factories/SignatureReceiverBase__factory.ts b/src/generated/factories/SignatureReceiverBase__factory.ts new file mode 100644 index 0000000..f162916 --- /dev/null +++ b/src/generated/factories/SignatureReceiverBase__factory.ts @@ -0,0 +1,47 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + SignatureReceiverBase, + SignatureReceiverBaseInterface, +} from "../SignatureReceiverBase"; + +const _abi = [ + { + type: "function", + name: "receiveSignature", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class SignatureReceiverBase__factory { + static readonly abi = _abi; + static createInterface(): SignatureReceiverBaseInterface { + return new Interface(_abi) as SignatureReceiverBaseInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): SignatureReceiverBase { + return new Contract( + address, + _abi, + runner + ) as unknown as SignatureReceiverBase; + } +} diff --git a/src/generated/factories/SignatureSchemeAddressProvider__factory.ts b/src/generated/factories/SignatureSchemeAddressProvider__factory.ts new file mode 100644 index 0000000..9f5095d --- /dev/null +++ b/src/generated/factories/SignatureSchemeAddressProvider__factory.ts @@ -0,0 +1,412 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + SignatureSchemeAddressProvider, + SignatureSchemeAddressProviderInterface, +} from "../SignatureSchemeAddressProvider"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getSignatureSchemeAddress", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isSupportedScheme", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "updateSignatureScheme", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "schemeAddress", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "NewSignatureSchemeAddressAdded", + inputs: [ + { + name: "schemeID", + type: "string", + indexed: true, + internalType: "string", + }, + { + name: "schemeAddress", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "addedAt", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, +] as const; + +const _bytecode = + "0x608060405234801561000f575f80fd5b5060405161095338038061095383398101604081905261002e916101a7565b6001600160a01b03811661003f5750335b6100495f826100fe565b61008e5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b6100b87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775826100fe565b6100f85760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b6044820152606401610085565b506101d4565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661019e575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101563390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101a1565b505f5b92915050565b5f602082840312156101b7575f80fd5b81516001600160a01b03811681146101cd575f80fd5b9392505050565b610772806101e15f395ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c80635bb09cf81161006e5780635bb09cf81461013d57806375b238fc1461016857806391d148541461018f578063a217fddf146101a2578063bab867da146101a9578063d547741f146101bc575f80fd5b806301ffc9a7146100aa578063248a9ca3146100d25780632f2ff15d146101025780632fc9fa331461011757806336568abe1461012a575b5f80fd5b6100bd6100b83660046105cf565b6101cf565b60405190151581526020015b60405180910390f35b6100f46100e03660046105fd565b5f9081526020819052604090206001015490565b6040519081526020016100c9565b61011561011036600461062f565b610205565b005b6100bd61012536600461069e565b61022f565b61011561013836600461062f565b61026f565b61015061014b36600461069e565b6102a7565b6040516001600160a01b0390911681526020016100c9565b6100f47fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6100bd61019d36600461062f565b6102db565b6100f45f81565b6101156101b73660046106dd565b610303565b6101156101ca36600461062f565b610469565b5f6001600160e01b03198216637965db0b60e01b14806101ff57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f8281526020819052604090206001015461021f8161048d565b610229838361049a565b50505050565b5f806001600160a01b03166001848460405161024c92919061072d565b908152604051908190036020019020546001600160a01b03161415905092915050565b6001600160a01b03811633146102985760405163334bd91960e11b815260040160405180910390fd5b6102a28282610529565b505050565b5f600183836040516102ba92919061072d565b908152604051908190036020019020546001600160a01b0316905092915050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61032c7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561048d565b6001600160a01b03811615801561034b57506001600160a01b0381163b155b156103b05760405162461bcd60e51b815260206004820152602a60248201527f496e76616c696420636f6e7472616374206164647265737320666f7220736368604482015269656d654164647265737360b01b60648201526084015b60405180910390fd5b80600184846040516103c392919061072d565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b031990931692909217909155600190610403908590859061072d565b908152604051908190036020018120546001600160a01b03169061042a908590859061072d565b604051908190038120428252907f0a1cd6a1e0a7b200d28ead555f3cee96e0d2def049535fbcfdc2926bc4cec5049060200160405180910390a3505050565b5f828152602081905260409020600101546104838161048d565b6102298383610529565b6104978133610592565b50565b5f6104a583836102db565b610522575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556104da3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101ff565b505f6101ff565b5f61053483836102db565b15610522575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016101ff565b61059c82826102db565b6105cb5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016103a7565b5050565b5f602082840312156105df575f80fd5b81356001600160e01b0319811681146105f6575f80fd5b9392505050565b5f6020828403121561060d575f80fd5b5035919050565b80356001600160a01b038116811461062a575f80fd5b919050565b5f8060408385031215610640575f80fd5b8235915061065060208401610614565b90509250929050565b5f8083601f840112610669575f80fd5b50813567ffffffffffffffff811115610680575f80fd5b602083019150836020828501011115610697575f80fd5b9250929050565b5f80602083850312156106af575f80fd5b823567ffffffffffffffff8111156106c5575f80fd5b6106d185828601610659565b90969095509350505050565b5f805f604084860312156106ef575f80fd5b833567ffffffffffffffff811115610705575f80fd5b61071186828701610659565b9094509250610724905060208501610614565b90509250925092565b818382375f910190815291905056fea2646970667358221220c693132971df4dc121815033fb3a33c77ea71400f4762170357cb3d0c1096b6d64736f6c63430008180033"; + +type SignatureSchemeAddressProviderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SignatureSchemeAddressProviderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SignatureSchemeAddressProvider__factory extends ContractFactory { + constructor(...args: SignatureSchemeAddressProviderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + owner: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(owner, overrides || {}); + } + override deploy( + owner: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy(owner, overrides || {}) as Promise< + SignatureSchemeAddressProvider & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): SignatureSchemeAddressProvider__factory { + return super.connect(runner) as SignatureSchemeAddressProvider__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SignatureSchemeAddressProviderInterface { + return new Interface(_abi) as SignatureSchemeAddressProviderInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): SignatureSchemeAddressProvider { + return new Contract( + address, + _abi, + runner + ) as unknown as SignatureSchemeAddressProvider; + } +} diff --git a/src/generated/factories/SignatureSender__factory.ts b/src/generated/factories/SignatureSender__factory.ts new file mode 100644 index 0000000..4b049f7 --- /dev/null +++ b/src/generated/factories/SignatureSender__factory.ts @@ -0,0 +1,659 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + SignatureSender, + SignatureSenderInterface, +} from "../SignatureSender"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "_signatureSchemeAddressProvider", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "fulfilSignatureRequest", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + { + name: "signature", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getPublicKey", + inputs: [], + outputs: [ + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getPublicKeyBytes", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRequestInFlight", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct TypesLib.SignatureRequest", + components: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + { + name: "messageHash", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "callback", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isInFlight", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "lastRequestID", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "multicall", + inputs: [ + { + name: "data", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "results", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "requestSignature", + inputs: [ + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "requestsInFlight", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + { + name: "messageHash", + type: "bytes", + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + internalType: "bytes", + }, + { + name: "schemeID", + type: "string", + internalType: "string", + }, + { + name: "callback", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "signatureSchemeAddressProvider", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract ISignatureSchemeAddressProvider", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SignatureRequestFulfilled", + inputs: [ + { + name: "requestID", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SignatureRequested", + inputs: [ + { + name: "requestID", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + { + name: "callback", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "schemeID", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "message", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "messageHashToSign", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "condition", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "requestedAt", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "SignatureCallbackFailed", + inputs: [ + { + name: "requestID", + type: "uint256", + internalType: "uint256", + }, + ], + }, +] as const; + +const _bytecode = + "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b506040516200268b3803806200268b8339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b608051612245620004465f395f818161039901528181610aba01528181610da4015261105901526122455ff3fe608060405260043610610105575f3560e01c806391d1485411610092578063acae9fee11610062578063acae9fee146102df578063cd802c9114610300578063d547741f14610339578063d5c2d4f514610358578063e6b3ca7114610388575f80fd5b806391d148541461026e57806395b8d0731461028d578063a217fddf146102ac578063ac9650d8146102bf575f80fd5b806336568abe116100d857806336568abe146101bc57806344880e1e146101db57806347c03186146102075780635eab2b201461021c57806375b238fc1461023b575f80fd5b806301ffc9a714610109578063248a9ca31461013d5780632e334452146101795780632f2ff15d1461019b575b5f80fd5b348015610114575f80fd5b50610128610123366004611a0f565b6103d3565b60405190151581526020015b60405180910390f35b348015610148575f80fd5b5061016b610157366004611a36565b5f9081526020819052604090206001015490565b604051908152602001610134565b348015610184575f80fd5b5061018d610409565b604051610134929190611a6f565b3480156101a6575f80fd5b506101ba6101b5366004611a9e565b610483565b005b3480156101c7575f80fd5b506101ba6101d6366004611a9e565b6104ad565b3480156101e6575f80fd5b506101fa6101f5366004611a36565b6104e5565b6040516101349190611b19565b348015610212575f80fd5b5061016b60015481565b348015610227575f80fd5b506101ba610236366004611bf4565b610791565b348015610246575f80fd5b5061016b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b348015610279575f80fd5b50610128610288366004611a9e565b610d4e565b348015610298575f80fd5b5061016b6102a7366004611c3c565b610d76565b3480156102b7575f80fd5b5061016b5f81565b6102d26102cd366004611ccf565b6112f2565b6040516101349190611d3e565b3480156102ea575f80fd5b506102f3611439565b6040516101349190611da0565b34801561030b575f80fd5b5061012861031a366004611a36565b5f908152600660205260409020600401546001600160a01b0316151590565b348015610344575f80fd5b506101ba610353366004611a9e565b6114b8565b348015610363575f80fd5b50610377610372366004611a36565b6114dc565b604051610134959493929190611db2565b348015610393575f80fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b5f6001600160e01b03198216637965db0b60e01b148061040357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6104116119a7565b6104196119a7565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610432575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116104615750505050509050915091509091565b5f8281526020819052604090206001015461049d8161172a565b6104a78383611737565b50505050565b6001600160a01b03811633146104d65760405163334bd91960e11b815260040160405180910390fd5b6104e082826117c6565b505050565b61051f6040518060a00160405280606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160a0810190925280548290829061054690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461057290611e19565b80156105bd5780601f10610594576101008083540402835291602001916105bd565b820191905f5260205f20905b8154815290600101906020018083116105a057829003601f168201915b505050505081526020016001820180546105d690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461060290611e19565b801561064d5780601f106106245761010080835404028352916020019161064d565b820191905f5260205f20905b81548152906001019060200180831161063057829003601f168201915b5050505050815260200160028201805461066690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461069290611e19565b80156106dd5780601f106106b4576101008083540402835291602001916106dd565b820191905f5260205f20905b8154815290600101906020018083116106c057829003601f168201915b505050505081526020016003820180546106f690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461072290611e19565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b5050509183525050600491909101546001600160a01b031660209091015292915050565b6107ba7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561172a565b5f838152600660205260409020600401546001600160a01b03166108315760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b60648201526084015b60405180910390fd5b5f83815260066020526040808220815160a0810190925280548290829061085790611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461088390611e19565b80156108ce5780601f106108a5576101008083540402835291602001916108ce565b820191905f5260205f20905b8154815290600101906020018083116108b157829003601f168201915b505050505081526020016001820180546108e790611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461091390611e19565b801561095e5780601f106109355761010080835404028352916020019161095e565b820191905f5260205f20905b81548152906001019060200180831161094157829003601f168201915b5050505050815260200160028201805461097790611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546109a390611e19565b80156109ee5780601f106109c5576101008083540402835291602001916109ee565b820191905f5260205f20905b8154815290600101906020018083116109d157829003601f168201915b50505050508152602001600382018054610a0790611e19565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3390611e19565b8015610a7e5780601f10610a5557610100808354040283529160200191610a7e565b820191905f5260205f20905b815481529060010190602001808311610a6157829003601f168201915b50505091835250506004918201546001600160a01b039081166020909201919091526060830151604051630b76139f60e31b8152939450925f927f000000000000000000000000000000000000000000000000000000000000000090921691635bb09cf891610aef91869101611da0565b602060405180830381865afa158015610b0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190611e51565b90505f819050806001600160a01b031663f6e548e985602001518888610b52611439565b6040518563ffffffff1660e01b8152600401610b719493929190611e94565b602060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190611ed8565b610bfc5760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610828565b5f84608001516001600160a01b031663c8db658260e01b898989604051602401610c2893929190611ef7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610c669190611f19565b5f604051808303815f865af19150503d805f8114610c9f576040519150601f19603f3d011682016040523d82523d5f602084013e610ca4565b606091505b5050905080610cc957604051632d11d1d160e21b815260048101899052602401610828565b60405188907fd4ea4684d3a92e95520ada379d1fd257a1e354567964ffd985b5f28c5940e7ab905f90a25f88815260066020526040812090610d0b82826119c5565b610d18600183015f6119c5565b610d25600283015f6119c5565b610d32600383015f6119c5565b5060040180546001600160a01b03191690555050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f6001805f828254610d889190611f34565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa3390610ddb908a908a90600401611f53565b602060405180830381865afa158015610df6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1a9190611ed8565b610e665760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f7274656400006044820152606401610828565b610ead600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092949392505061182f9050565b610f045760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b6064820152608401610828565b610f4a5f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092949392505061182f9050565b610fa25760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b6064820152608401610828565b81801561104057610fe784848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506118c392505050565b156110405760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b6064820152608401610828565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890611090908c908c90600401611f53565b602060405180830381865afa1580156110ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cf9190611e51565b60405163eae1e15b60e01b815290915081905f906001600160a01b0383169063eae1e15b90611104908c908c90600401611f53565b5f60405180830381865afa15801561111e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111459190810190611ff4565b6040805160c06020601f8d01819004028201810190925260a081018b81529293509182918c908c90819085018382808284375f92019190915250505090825250602080820184905260408051601f8b0183900483028101830182528a8152920191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8f018190048102820181019092528d815291810191908e908e90819084018382808284375f9201829052509385525050336020938401525060015481526006909152604090208151819061121f9082612084565b50602082015160018201906112349082612084565b50604082015160028201906112499082612084565b506060820151600382019061125e9082612084565b506080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050336001600160a01b03166001547ff0a5ef4bc87d6534674b1469f4b31d03c6510d0f7ab353f3e53f9d1d87ead02b8d8d8d8d878e8e426040516112d8989796959493929190612144565b60405180910390a350506001549998505050505050505050565b60608167ffffffffffffffff81111561130d5761130d611f6e565b60405190808252806020026020018201604052801561134057816020015b606081526020019060019003908161132b5790505b5090505f5b82811015611432575f8030868685818110611362576113626121a9565b905060200281019061137491906121bd565b604051611382929190612200565b5f60405180830381855af49150503d805f81146113ba576040519150601f19603f3d011682016040523d82523d5f602084013e6113bf565b606091505b50915091508161140a576044815110156113d7575f80fd5b600481019050808060200190518101906113f19190611ff4565b60405162461bcd60e51b81526004016108289190611da0565b8084848151811061141d5761141d6121a9565b60209081029190910101525050600101611345565b5092915050565b60408051608081018083526060926114b392916002918391908201908390819081845b81548152602001906001019080831161145c57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116114925750505050508152505061190e565b905090565b5f828152602081905260409020600101546114d28161172a565b6104a783836117c6565b60066020525f90815260409020805481906114f690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461152290611e19565b801561156d5780601f106115445761010080835404028352916020019161156d565b820191905f5260205f20905b81548152906001019060200180831161155057829003601f168201915b50505050509080600101805461158290611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546115ae90611e19565b80156115f95780601f106115d0576101008083540402835291602001916115f9565b820191905f5260205f20905b8154815290600101906020018083116115dc57829003601f168201915b50505050509080600201805461160e90611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461163a90611e19565b80156116855780601f1061165c57610100808354040283529160200191611685565b820191905f5260205f20905b81548152906001019060200180831161166857829003601f168201915b50505050509080600301805461169a90611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546116c690611e19565b80156117115780601f106116e857610100808354040283529160200191611711565b820191905f5260205f20905b8154815290600101906020018083116116f457829003601f168201915b505050600490930154919250506001600160a01b031685565b611734813361196a565b50565b5f6117428383610d4e565b6117bf575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556117773390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610403565b505f610403565b5f6117d18383610d4e565b156117bf575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610403565b5f818311156118a65760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e6774680000000000006064820152608401610828565b83518381108015906118b85750828111155b9150505b9392505050565b5f805b8251811015611905578281815181106118e1576118e16121a9565b01602001516001600160f81b031916156118fd57505f92915050565b6001016118c6565b50600192915050565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b6119748282610d4e565b6119a35760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610828565b5050565b60405180604001604052806002906020820280368337509192915050565b5080546119d190611e19565b5f825580601f106119e0575050565b601f0160209004905f5260205f209081019061173491905b80821115611a0b575f81556001016119f8565b5090565b5f60208284031215611a1f575f80fd5b81356001600160e01b0319811681146118bc575f80fd5b5f60208284031215611a46575f80fd5b5035919050565b805f5b60028110156104a7578151845260209384019390910190600101611a50565b60808101611a7d8285611a4d565b6118bc6040830184611a4d565b6001600160a01b0381168114611734575f80fd5b5f8060408385031215611aaf575f80fd5b823591506020830135611ac181611a8a565b809150509250929050565b5f5b83811015611ae6578181015183820152602001611ace565b50505f910152565b5f8151808452611b05816020860160208601611acc565b601f01601f19169290920160200192915050565b602081525f825160a06020840152611b3460c0840182611aee565b90506020840151601f1980858403016040860152611b528383611aee565b92506040860151915080858403016060860152611b6f8383611aee565b9250606086015191508085840301608086015250611b8d8282611aee565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f8083601f840112611bbf575f80fd5b50813567ffffffffffffffff811115611bd6575f80fd5b602083019150836020828501011115611bed575f80fd5b9250929050565b5f805f60408486031215611c06575f80fd5b83359250602084013567ffffffffffffffff811115611c23575f80fd5b611c2f86828701611baf565b9497909650939450505050565b5f805f805f8060608789031215611c51575f80fd5b863567ffffffffffffffff80821115611c68575f80fd5b611c748a838b01611baf565b90985096506020890135915080821115611c8c575f80fd5b611c988a838b01611baf565b90965094506040890135915080821115611cb0575f80fd5b50611cbd89828a01611baf565b979a9699509497509295939492505050565b5f8060208385031215611ce0575f80fd5b823567ffffffffffffffff80821115611cf7575f80fd5b818501915085601f830112611d0a575f80fd5b813581811115611d18575f80fd5b8660208260051b8501011115611d2c575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611d9357603f19888603018452611d81858351611aee565b94509285019290850190600101611d65565b5092979650505050505050565b602081525f6118bc6020830184611aee565b60a081525f611dc460a0830188611aee565b8281036020840152611dd68188611aee565b90508281036040840152611dea8187611aee565b90508281036060840152611dfe8186611aee565b91505060018060a01b03831660808301529695505050505050565b600181811c90821680611e2d57607f821691505b602082108103611e4b57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611e61575f80fd5b81516118bc81611a8a565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f611ea66060830187611aee565b8281036020840152611eb9818688611e6c565b90508281036040840152611ecd8185611aee565b979650505050505050565b5f60208284031215611ee8575f80fd5b815180151581146118bc575f80fd5b838152604060208201525f611f10604083018486611e6c565b95945050505050565b5f8251611f2a818460208701611acc565b9190910192915050565b8082018082111561040357634e487b7160e01b5f52601160045260245ffd5b602081525f611f66602083018486611e6c565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611f9c57611f9c611f6e565b604051601f8501601f19908116603f01168101908282118183101715611fc457611fc4611f6e565b81604052809350858152868686011115611fdc575f80fd5b611fea866020830187611acc565b5050509392505050565b5f60208284031215612004575f80fd5b815167ffffffffffffffff81111561201a575f80fd5b8201601f8101841361202a575f80fd5b611f6684825160208401611f82565b601f8211156104e057805f5260205f20601f840160051c8101602085101561205e5750805b601f840160051c820191505b8181101561207d575f815560010161206a565b5050505050565b815167ffffffffffffffff81111561209e5761209e611f6e565b6120b2816120ac8454611e19565b84612039565b602080601f8311600181146120e5575f84156120ce5750858301515b5f19600386901b1c1916600185901b17855561213c565b5f85815260208120601f198616915b82811015612113578886015182559484019460019091019084016120f4565b508582101561213057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60a081525f61215760a083018a8c611e6c565b828103602084015261216a81898b611e6c565b9050828103604084015261217e8188611aee565b90508281036060840152612193818688611e6c565b9150508260808301529998505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e198436030181126121d2575f80fd5b83018035915067ffffffffffffffff8211156121ec575f80fd5b602001915036819003821315611bed575f80fd5b818382375f910190815291905056fea2646970667358221220b2a1d1ef228386d90aa71c642e507ad785ec67dbd706ec3ead27a10688cdd69b64736f6c63430008180033"; + +type SignatureSenderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SignatureSenderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SignatureSender__factory extends ContractFactory { + constructor(...args: SignatureSenderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + x: [BigNumberish, BigNumberish], + y: [BigNumberish, BigNumberish], + owner: AddressLike, + _signatureSchemeAddressProvider: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + x, + y, + owner, + _signatureSchemeAddressProvider, + overrides || {} + ); + } + override deploy( + x: [BigNumberish, BigNumberish], + y: [BigNumberish, BigNumberish], + owner: AddressLike, + _signatureSchemeAddressProvider: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + x, + y, + owner, + _signatureSchemeAddressProvider, + overrides || {} + ) as Promise< + SignatureSender & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): SignatureSender__factory { + return super.connect(runner) as SignatureSender__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SignatureSenderInterface { + return new Interface(_abi) as SignatureSenderInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): SignatureSender { + return new Contract(address, _abi, runner) as unknown as SignatureSender; + } +} diff --git a/src/generated/factories/index.ts b/src/generated/factories/index.ts index 1f8c188..a55d9cb 100644 --- a/src/generated/factories/index.ts +++ b/src/generated/factories/index.ts @@ -1,4 +1,29 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export { AbstractBlocklockReceiver__factory } from "./AbstractBlocklockReceiver__factory"; +export { AccessControl__factory } from "./AccessControl__factory"; +export { BLS__factory } from "./BLS__factory"; export { BlocklockSender__factory } from "./BlocklockSender__factory"; +export { BlocklockSignatureScheme__factory } from "./BlocklockSignatureScheme__factory"; +export { BytesLib__factory } from "./BytesLib__factory"; +export { DecryptionReceiverBase__factory } from "./DecryptionReceiverBase__factory"; +export { DecryptionSender__factory } from "./DecryptionSender__factory"; +export { Deployer__factory } from "./Deployer__factory"; +export { ERC165__factory } from "./ERC165__factory"; +export { IAccessControl__factory } from "./IAccessControl__factory"; +export { IBlocklockReceiver__factory } from "./IBlocklockReceiver__factory"; +export { IBlocklockSender__factory } from "./IBlocklockSender__factory"; +export { IDecryptionReceiver__factory } from "./IDecryptionReceiver__factory"; +export { IDecryptionSender__factory } from "./IDecryptionSender__factory"; +export { IERC165__factory } from "./IERC165__factory"; +export { IMulticall__factory } from "./IMulticall__factory"; +export { ISignatureReceiver__factory } from "./ISignatureReceiver__factory"; +export { ISignatureScheme__factory } from "./ISignatureScheme__factory"; +export { ISignatureSchemeAddressProvider__factory } from "./ISignatureSchemeAddressProvider__factory"; +export { ISignatureSender__factory } from "./ISignatureSender__factory"; +export { MockBlocklockReceiver__factory } from "./MockBlocklockReceiver__factory"; +export { Multicall__factory } from "./Multicall__factory"; +export { SignatureReceiverBase__factory } from "./SignatureReceiverBase__factory"; +export { SignatureSchemeAddressProvider__factory } from "./SignatureSchemeAddressProvider__factory"; +export { SignatureSender__factory } from "./SignatureSender__factory"; diff --git a/src/generated/index.ts b/src/generated/index.ts index 5a51d74..7587743 100644 --- a/src/generated/index.ts +++ b/src/generated/index.ts @@ -1,6 +1,56 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export type { AbstractBlocklockReceiver } from "./AbstractBlocklockReceiver"; +export type { AccessControl } from "./AccessControl"; +export type { BLS } from "./BLS"; export type { BlocklockSender } from "./BlocklockSender"; +export type { BlocklockSignatureScheme } from "./BlocklockSignatureScheme"; +export type { BytesLib } from "./BytesLib"; +export type { DecryptionReceiverBase } from "./DecryptionReceiverBase"; +export type { DecryptionSender } from "./DecryptionSender"; +export type { Deployer } from "./Deployer"; +export type { ERC165 } from "./ERC165"; +export type { IAccessControl } from "./IAccessControl"; +export type { IBlocklockReceiver } from "./IBlocklockReceiver"; +export type { IBlocklockSender } from "./IBlocklockSender"; +export type { IDecryptionReceiver } from "./IDecryptionReceiver"; +export type { IDecryptionSender } from "./IDecryptionSender"; +export type { IERC165 } from "./IERC165"; +export type { IMulticall } from "./IMulticall"; +export type { ISignatureReceiver } from "./ISignatureReceiver"; +export type { ISignatureScheme } from "./ISignatureScheme"; +export type { ISignatureSchemeAddressProvider } from "./ISignatureSchemeAddressProvider"; +export type { ISignatureSender } from "./ISignatureSender"; +export type { MockBlocklockReceiver } from "./MockBlocklockReceiver"; +export type { Multicall } from "./Multicall"; +export type { SignatureReceiverBase } from "./SignatureReceiverBase"; +export type { SignatureSchemeAddressProvider } from "./SignatureSchemeAddressProvider"; +export type { SignatureSender } from "./SignatureSender"; export * as factories from "./factories"; +export { AbstractBlocklockReceiver__factory } from "./factories/AbstractBlocklockReceiver__factory"; +export { AccessControl__factory } from "./factories/AccessControl__factory"; export { BlocklockSender__factory } from "./factories/BlocklockSender__factory"; +export { BlocklockSignatureScheme__factory } from "./factories/BlocklockSignatureScheme__factory"; +export { BLS__factory } from "./factories/BLS__factory"; +export { BytesLib__factory } from "./factories/BytesLib__factory"; +export { DecryptionReceiverBase__factory } from "./factories/DecryptionReceiverBase__factory"; +export { DecryptionSender__factory } from "./factories/DecryptionSender__factory"; +export { Deployer__factory } from "./factories/Deployer__factory"; +export { ERC165__factory } from "./factories/ERC165__factory"; +export { IAccessControl__factory } from "./factories/IAccessControl__factory"; +export { IBlocklockReceiver__factory } from "./factories/IBlocklockReceiver__factory"; +export { IBlocklockSender__factory } from "./factories/IBlocklockSender__factory"; +export { IDecryptionReceiver__factory } from "./factories/IDecryptionReceiver__factory"; +export { IDecryptionSender__factory } from "./factories/IDecryptionSender__factory"; +export { IERC165__factory } from "./factories/IERC165__factory"; +export { IMulticall__factory } from "./factories/IMulticall__factory"; +export { ISignatureReceiver__factory } from "./factories/ISignatureReceiver__factory"; +export { ISignatureScheme__factory } from "./factories/ISignatureScheme__factory"; +export { ISignatureSchemeAddressProvider__factory } from "./factories/ISignatureSchemeAddressProvider__factory"; +export { ISignatureSender__factory } from "./factories/ISignatureSender__factory"; +export { MockBlocklockReceiver__factory } from "./factories/MockBlocklockReceiver__factory"; +export { Multicall__factory } from "./factories/Multicall__factory"; +export { SignatureReceiverBase__factory } from "./factories/SignatureReceiverBase__factory"; +export { SignatureSchemeAddressProvider__factory } from "./factories/SignatureSchemeAddressProvider__factory"; +export { SignatureSender__factory } from "./factories/SignatureSender__factory"; diff --git a/test/blocklock.test.ts b/test/blocklock.test.ts index 7a9675c..f87f57c 100644 --- a/test/blocklock.test.ts +++ b/test/blocklock.test.ts @@ -2,6 +2,17 @@ import {describe, it, expect} from "@jest/globals" import {Wallet} from "ethers" import {Blocklock} from "../src" +const blocklock_default_pk = { + x: { + c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), + c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), + }, + y: { + c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), + c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), + }, + }; + describe("Blocklock", () => { it("class can be constructed", () => { const wallet = new Wallet("0x5cb3c5ba25c91d84ef5dabf4152e909795074f9958b091b010644cb9c30e3203") diff --git a/test/integration.test.ts b/test/integration.test.ts index ac5dc5d..6a91c4e 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -2,6 +2,8 @@ import Ganache from "ganache"; import { ZeroAddress, ethers } from "ethers"; import { describe, it, expect, beforeAll, afterAll } from "@jest/globals"; +import {MockBlocklockReceiver__factory, BlocklockSender__factory, BlocklockSignatureScheme__factory, DecryptionSender__factory, SignatureSchemeAddressProvider__factory, SignatureSender__factory} from "../src/generated" + let server: any; let provider: ethers.JsonRpcProvider; let wallet: ethers.Signer; @@ -45,4 +47,100 @@ describe("Blockchain Integration Tests with Ganache", () => { it("should get valid address for signer", async () => { expect(await wallet.getAddress()).not.toBe(ZeroAddress); }); + + it.only("can request blocklock decryption for user contract", async () => { + /** FIELD VARIABLES */ + + const blocklock_default_pk = { + x: { + c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), + c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), + }, + y: { + c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), + c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), + }, + }; + + const SCHEME_ID = "BN254-BLS-BLOCKLOCK"; + + /** DEPLOY CONTRACTS */ + + // deploy signature scheme address provider + const SignatureSchemeAddressProvider = new ethers.ContractFactory( + SignatureSchemeAddressProvider__factory.abi, + SignatureSchemeAddressProvider__factory.bytecode, + wallet, + ) + const signatureSchemeAddressProvider = await SignatureSchemeAddressProvider.deploy( + await wallet.getAddress() + ) + await signatureSchemeAddressProvider.waitForDeployment() + const schemeProviderAddr = await signatureSchemeAddressProvider.getAddress() + + // deploy blocklock scheme + const BlocklockScheme = new ethers.ContractFactory( + BlocklockSignatureScheme__factory.abi, + BlocklockSignatureScheme__factory.bytecode, + wallet, + ) + const blocklockScheme = await BlocklockScheme.deploy() + await blocklockScheme.waitForDeployment() + + const schemeProviderContract = SignatureSchemeAddressProvider__factory.connect(schemeProviderAddr, wallet) + await schemeProviderContract.updateSignatureScheme(SCHEME_ID, await blocklockScheme.getAddress()); + + // deploy signature sender + const SignatureSender = new ethers.ContractFactory( + SignatureSender__factory.abi, + SignatureSender__factory.bytecode, + wallet, + ) + const signatureSender = await SignatureSender.deploy( + [blocklock_default_pk.x.c0, blocklock_default_pk.x.c1], + [blocklock_default_pk.y.c0, blocklock_default_pk.y.c1], + await wallet.getAddress(), + schemeProviderAddr, + ) + await signatureSender.waitForDeployment() + + // deploy decryption sender + const DecryptionSender = new ethers.ContractFactory( + DecryptionSender__factory.abi, + DecryptionSender__factory.bytecode, + wallet, + ) + const decryptionSender = await DecryptionSender.deploy( + [blocklock_default_pk.x.c0, blocklock_default_pk.x.c1], + [blocklock_default_pk.y.c0, blocklock_default_pk.y.c1], + await wallet.getAddress(), + schemeProviderAddr, + ) + await decryptionSender.waitForDeployment() + + // deploy blocklock sender + const BlocklockSender = new ethers.ContractFactory( + BlocklockSender__factory.abi, + BlocklockSender__factory.bytecode, + wallet, + ) + const blocklockSender = await BlocklockSender.deploy( + await decryptionSender.getAddress() + ) + await blocklockSender.waitForDeployment() + + // deploy user mock decryption receiver contract + const MockBlocklockReceiver = new ethers.ContractFactory( + MockBlocklockReceiver__factory.abi, + MockBlocklockReceiver__factory.bytecode, + wallet + ) + const mockBlocklockReceiver = await MockBlocklockReceiver.deploy() + await mockBlocklockReceiver.waitForDeployment() + + // const blockHeight = await provider.getBlockNumber(); + // console.log("current block number", blockHeight) + + /** */ + }); }); From 216d05463c4a87a8ab8b2404d848f1ed37e35b35 Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 16:53:42 +0000 Subject: [PATCH 21/53] fix integration test and bug in user blocklock receiver contract --- contracts/src/Multicall.sol | 27 ---- contracts/src/blocklock/BlocklockSender.sol | 1 + .../decryption-requests/DecryptionSender.sol | 4 +- contracts/src/mocks/MockBlocklockReceiver.sol | 10 +- .../signature-requests/SignatureSender.sol | 2 +- jest.config.mjs | 2 +- src/blocklock.ts | 48 +++++-- src/crypto/bls-bn254.ts | 45 ------ src/generated/Address.ts | 69 +++++++++ src/generated/DecryptionSender.ts | 4 +- src/generated/Errors.ts | 69 +++++++++ src/generated/MockBlocklockReceiver.ts | 71 +++++---- src/generated/Multicall.ts | 4 +- src/generated/SignatureSender.ts | 4 +- src/generated/factories/Address__factory.ts | 72 ++++++++++ .../factories/BlocklockSender__factory.ts | 2 +- .../factories/DecryptionSender__factory.ts | 20 ++- src/generated/factories/Errors__factory.ts | 98 +++++++++++++ .../MockBlocklockReceiver__factory.ts | 74 +++++----- src/generated/factories/Multicall__factory.ts | 18 ++- .../factories/SignatureSender__factory.ts | 20 ++- src/generated/factories/index.ts | 2 + src/generated/index.ts | 4 + src/index.ts | 2 - test/blocklock.test.ts | 11 -- test/integration.test.ts | 135 +++++++++++++++--- test/solidity-encoding.test.ts | 5 +- 27 files changed, 612 insertions(+), 211 deletions(-) delete mode 100644 contracts/src/Multicall.sol create mode 100644 src/generated/Address.ts create mode 100644 src/generated/Errors.ts create mode 100644 src/generated/factories/Address__factory.ts create mode 100644 src/generated/factories/Errors__factory.ts diff --git a/contracts/src/Multicall.sol b/contracts/src/Multicall.sol deleted file mode 100644 index b509df9..0000000 --- a/contracts/src/Multicall.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import "./interfaces/IMulticall.sol"; - -/// @title Multicall -/// @notice Enables calling multiple methods in a single call to the contract -abstract contract Multicall is IMulticall { - /// @inheritdoc IMulticall - function multicall(bytes[] calldata data) public payable override returns (bytes[] memory results) { - results = new bytes[](data.length); - for (uint256 i = 0; i < data.length; i++) { - (bool success, bytes memory result) = address(this).delegatecall(data[i]); - - if (!success) { - // Next 5 lines from https://ethereum.stackexchange.com/a/83577 - if (result.length < 68) revert(); - assembly { - result := add(result, 0x04) - } - revert(abi.decode(result, (string))); - } - - results[i] = result; - } - } -} diff --git a/contracts/src/blocklock/BlocklockSender.sol b/contracts/src/blocklock/BlocklockSender.sol index af02bc5..a392e8c 100644 --- a/contracts/src/blocklock/BlocklockSender.sol +++ b/contracts/src/blocklock/BlocklockSender.sol @@ -85,6 +85,7 @@ contract BlocklockSender is IBlocklockSender, DecryptionReceiverBase { (bool success,) = r.callback.call( abi.encodeWithSelector(IBlocklockReceiver.receiveBlocklock.selector, decryptionRequestID, decryptionKey) ); + if (!success) { revert BlocklockCallbackFailed(decryptionRequestID); } else { diff --git a/contracts/src/decryption-requests/DecryptionSender.sol b/contracts/src/decryption-requests/DecryptionSender.sol index af3b0ab..9139630 100644 --- a/contracts/src/decryption-requests/DecryptionSender.sol +++ b/contracts/src/decryption-requests/DecryptionSender.sol @@ -6,7 +6,7 @@ import {TypesLib} from "../libraries/TypesLib.sol"; import {console} from "forge-std/console.sol"; import {BytesLib} from "../libraries/BytesLib.sol"; -import {Multicall} from "../Multicall.sol"; +import {Multicall} from "@openzeppelin/contracts/utils/Multicall.sol"; import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; import {IDecryptionSender} from "../interfaces/IDecryptionSender.sol"; @@ -110,7 +110,9 @@ contract DecryptionSender is IDecryptionSender, AccessControl, Multicall { ISignatureScheme sigScheme = ISignatureScheme(schemeContractAddress); bytes memory messageHash = sigScheme.hashToBytes(request.condition); + require(sigScheme.verifySignature(messageHash, signature, getPublicKeyBytes()), "Signature verification failed"); + (bool success,) = request.callback.call( abi.encodeWithSelector( IDecryptionReceiver.receiveDecryptionData.selector, requestID, decryptionKey, signature diff --git a/contracts/src/mocks/MockBlocklockReceiver.sol b/contracts/src/mocks/MockBlocklockReceiver.sol index 6da5e8e..aeb2978 100644 --- a/contracts/src/mocks/MockBlocklockReceiver.sol +++ b/contracts/src/mocks/MockBlocklockReceiver.sol @@ -7,8 +7,8 @@ import {IBlocklockReceiver} from "../interfaces/IBlocklockReceiver.sol"; contract MockBlocklockReceiver is IBlocklockReceiver { uint256 public requestId; - TypesLib.Ciphertext public Ciphertext; - uint256 public plainText; + TypesLib.Ciphertext public encrytpedValue; + uint256 public plainTextValue; // ** State Variables ** IBlocklockSender public timelock; // The timelock contract which we will be used to decrypt data at specific block @@ -24,7 +24,10 @@ contract MockBlocklockReceiver is IBlocklockReceiver { } function createTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) external returns (uint256) { + // create timelock request requestId = timelock.requestBlocklock(decryptionBlockNumber, encryptedData); + // store Ciphertext + encrytpedValue = encryptedData; return requestId; } @@ -33,6 +36,7 @@ contract MockBlocklockReceiver is IBlocklockReceiver { onlyTimelockContract { require(requestID == requestId, "Invalid request id"); - plainText = abi.decode(timelock.decrypt(Ciphertext, decryptionKey), (uint256)); + // decrypt stored Ciphertext with decryption key + plainTextValue = abi.decode(timelock.decrypt(encrytpedValue, decryptionKey), (uint256)); } } diff --git a/contracts/src/signature-requests/SignatureSender.sol b/contracts/src/signature-requests/SignatureSender.sol index 261b41d..300aef0 100644 --- a/contracts/src/signature-requests/SignatureSender.sol +++ b/contracts/src/signature-requests/SignatureSender.sol @@ -6,7 +6,7 @@ import {TypesLib} from "../libraries/TypesLib.sol"; import {BytesLib} from "../libraries/BytesLib.sol"; import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; -import {Multicall} from "../Multicall.sol"; +import {Multicall} from "@openzeppelin/contracts/utils/Multicall.sol"; import {ISignatureReceiver} from "../interfaces/ISignatureReceiver.sol"; import {ISignatureSender} from "../interfaces/ISignatureSender.sol"; diff --git a/jest.config.mjs b/jest.config.mjs index b78a0e7..d2d9c6d 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -7,5 +7,5 @@ export default { useESM: true, }], }, - testTimeout: 30000, + testTimeout: 50000, }; diff --git a/src/blocklock.ts b/src/blocklock.ts index 719383e..e049845 100644 --- a/src/blocklock.ts +++ b/src/blocklock.ts @@ -1,4 +1,4 @@ -import {getBytes, Provider, Signer} from "ethers" +import {getBytes, Provider, Signer, AbiCoder} from "ethers" import {keccak_256} from "@noble/hashes/sha3" import {BlocklockSender, BlocklockSender__factory} from "./generated" import {TypesLib as BlocklockTypes} from "./generated/BlocklockSender" @@ -6,28 +6,28 @@ import {extractSingleLog} from "./ethers-utils" import {Ciphertext, decrypt_g1_with_preprocess, encrypt_towards_identity_g1, G2, IbeOpts} from "./crypto/ibe-bn254" -export const BLOCKLOCK_IBE_OPTS: IbeOpts = { +const BLOCKLOCK_IBE_OPTS: IbeOpts = { hash: keccak_256, k: 128, expand_fn: "xmd", dsts: { - H1_G1: Buffer.from("BLOCKLOCK_BN254G1_XMD:KECCAK-256_SVDW_RO_H1_"), - H2: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H2_"), - H3: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H3_"), - H4: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H4_"), - } -} + H1_G1: Buffer.from("BLOCKLOCK_BN254G1_XMD:KECCAK-256_SVDW_RO_H1_"), + H2: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H2_"), + H3: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H3_"), + H4: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H4_"), + }, + }; export const BLOCKLOCK_DEFAULT_PUBLIC_KEY = { x: { - c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), - c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), + c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), + c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), }, y: { - c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), - c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), + c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), + c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), }, -} + }; const iface = BlocklockSender__factory.createInterface() @@ -207,7 +207,7 @@ export type BlocklockStatus = BlocklockRequest & { decryptionKey?: string, } -function parseSolidityCiphertext(ciphertext: BlocklockTypes.CiphertextStructOutput): Ciphertext { +export function parseSolidityCiphertext(ciphertext: BlocklockTypes.CiphertextStructOutput): Ciphertext { const uX0 = ciphertext.u.x[0] const uX1 = ciphertext.u.x[1] const uY0 = ciphertext.u.y[0] @@ -219,7 +219,25 @@ function parseSolidityCiphertext(ciphertext: BlocklockTypes.CiphertextStructOutp } } -function encodeCiphertextToSolidity(ciphertext: Ciphertext): BlocklockTypes.CiphertextStruct { +export function parseSolidityCiphertextString(ciphertext: string): Ciphertext { + const ctBytes = getBytes(ciphertext); + const ct: BlocklockTypes.CiphertextStructOutput = AbiCoder.defaultAbiCoder().decode( + ["tuple(tuple(uint256[2] x, uint256[2] y) u, bytes v, bytes w)"], + ctBytes, + )[0]; + + const uX0 = ct.u.x[0]; + const uX1 = ct.u.x[1]; + const uY0 = ct.u.y[0]; + const uY1 = ct.u.y[1]; + return { + U: { x: { c0: uX0, c1: uX1 }, y: { c0: uY0, c1: uY1 } }, + V: getBytes(ct.v), + W: getBytes(ct.w), + }; + } + +export function encodeCiphertextToSolidity(ciphertext: Ciphertext): BlocklockTypes.CiphertextStruct { const u: { x: [bigint, bigint], y: [bigint, bigint] } = { x: [ciphertext.U.x.c0, ciphertext.U.x.c1], y: [ciphertext.U.y.c0, ciphertext.U.y.c1] diff --git a/src/crypto/bls-bn254.ts b/src/crypto/bls-bn254.ts index 4af3875..94cc339 100644 --- a/src/crypto/bls-bn254.ts +++ b/src/crypto/bls-bn254.ts @@ -135,15 +135,6 @@ class BlsBn254 { return p } - public concatenateUint8Arrays(domain: Uint8Array, msg: Uint8Array): Uint8Array { - const concatenatedArray = new Uint8Array(domain.length + msg.length); - - concatenatedArray.set(domain, 0); // Set the first part - concatenatedArray.set(msg, domain.length); // Set the second part - - return concatenatedArray; - } - public serialiseFp(p: Fp | Fp2): `0x${string}` { // NB: big-endian return ("0x" + @@ -171,18 +162,6 @@ class BlsBn254 { ] } - public deserialiseG2Point([x1, x2, y1, y2]: [bigint, bigint, bigint, bigint]): G2 { - const x = this.deserialiseFp2([x1, x2]) - const y = this.deserialiseFp2([y1, y2]) - const z = this.deserialiseFp2([0n, 1n]) - const out = this.G2.clone() - - out.setX(x) - out.setY(y) - out.setZ(z) - return out - } - public deserialiseFp2([x, y]: [bigint, bigint]): Fp2 { const xx = new mcl.Fp() const yy = new mcl.Fp() @@ -447,15 +426,6 @@ export function kyberMarshalG2(p: G2) { ].join("") } -export function mclMarshalG2(p: G2) { - return [ - byteSwap(p.getX().get_a().serializeToHexStr(), 32), - byteSwap(p.getX().get_b().serializeToHexStr(), 32), - byteSwap(p.getY().get_a().serializeToHexStr(), 32), - byteSwap(p.getY().get_b().serializeToHexStr(), 32), - ].join("") -} - export function kyberMarshalG1(p: G1) { return [ byteSwap(p.getX().serializeToHexStr(), 32), @@ -463,21 +433,6 @@ export function kyberMarshalG1(p: G1) { ].join("") } -export function kyberG1ToEvm(g1: Uint8Array): [bigint, bigint] { - const p = [g1.slice(0, 32), g1.slice(32, 64)].map((sigBuf) => BigInt(hexlify(sigBuf))) as [ - bigint, - bigint, - ] - return p -} - -export function kyberG2ToEvm(g2: Uint8Array): [bigint, bigint, bigint, bigint] { - const p = [g2.slice(32, 64), g2.slice(0, 32), g2.slice(96, 128), g2.slice(64, 96)].map((pBuf) => - BigInt(hexlify(pBuf)), - ) as [bigint, bigint, bigint, bigint] - return p -} - function mod(a: bigint, b: bigint) { return ((a % b) + b) % b } diff --git a/src/generated/Address.ts b/src/generated/Address.ts new file mode 100644 index 0000000..7e78a49 --- /dev/null +++ b/src/generated/Address.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface AddressInterface extends Interface {} + +export interface Address extends BaseContract { + connect(runner?: ContractRunner | null): Address; + waitForDeployment(): Promise; + + interface: AddressInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/src/generated/DecryptionSender.ts b/src/generated/DecryptionSender.ts index 6d58155..701b7ff 100644 --- a/src/generated/DecryptionSender.ts +++ b/src/generated/DecryptionSender.ts @@ -407,7 +407,7 @@ export interface DecryptionSender extends BaseContract { lastRequestID: TypedContractMethod<[], [bigint], "view">; - multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; registerCiphertext: TypedContractMethod< [schemeID: string, ciphertext: BytesLike, condition: BytesLike], @@ -505,7 +505,7 @@ export interface DecryptionSender extends BaseContract { ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "multicall" - ): TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + ): TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; getFunction( nameOrSignature: "registerCiphertext" ): TypedContractMethod< diff --git a/src/generated/Errors.ts b/src/generated/Errors.ts new file mode 100644 index 0000000..b45a546 --- /dev/null +++ b/src/generated/Errors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface ErrorsInterface extends Interface {} + +export interface Errors extends BaseContract { + connect(runner?: ContractRunner | null): Errors; + waitForDeployment(): Promise; + + interface: ErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/src/generated/MockBlocklockReceiver.ts b/src/generated/MockBlocklockReceiver.ts index d68e0d3..60e1295 100644 --- a/src/generated/MockBlocklockReceiver.ts +++ b/src/generated/MockBlocklockReceiver.ts @@ -49,23 +49,26 @@ export declare namespace TypesLib { export interface MockBlocklockReceiverInterface extends Interface { getFunction( nameOrSignature: - | "Ciphertext" | "createTimelockRequest" - | "plainText" + | "encrytpedValue" + | "plainTextValue" | "receiveBlocklock" | "requestId" | "timelock" ): FunctionFragment; encodeFunctionData( - functionFragment: "Ciphertext", + functionFragment: "createTimelockRequest", + values: [BigNumberish, TypesLib.CiphertextStruct] + ): string; + encodeFunctionData( + functionFragment: "encrytpedValue", values?: undefined ): string; encodeFunctionData( - functionFragment: "createTimelockRequest", - values: [BigNumberish, TypesLib.CiphertextStruct] + functionFragment: "plainTextValue", + values?: undefined ): string; - encodeFunctionData(functionFragment: "plainText", values?: undefined): string; encodeFunctionData( functionFragment: "receiveBlocklock", values: [BigNumberish, BytesLike] @@ -73,12 +76,18 @@ export interface MockBlocklockReceiverInterface extends Interface { encodeFunctionData(functionFragment: "requestId", values?: undefined): string; encodeFunctionData(functionFragment: "timelock", values?: undefined): string; - decodeFunctionResult(functionFragment: "Ciphertext", data: BytesLike): Result; decodeFunctionResult( functionFragment: "createTimelockRequest", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "plainText", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "encrytpedValue", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "plainTextValue", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "receiveBlocklock", data: BytesLike @@ -130,7 +139,16 @@ export interface MockBlocklockReceiver extends BaseContract { event?: TCEvent ): Promise; - Ciphertext: TypedContractMethod< + createTimelockRequest: TypedContractMethod< + [ + decryptionBlockNumber: BigNumberish, + encryptedData: TypesLib.CiphertextStruct + ], + [bigint], + "nonpayable" + >; + + encrytpedValue: TypedContractMethod< [], [ [BLS.PointG2StructOutput, string, string] & { @@ -142,16 +160,7 @@ export interface MockBlocklockReceiver extends BaseContract { "view" >; - createTimelockRequest: TypedContractMethod< - [ - decryptionBlockNumber: BigNumberish, - encryptedData: TypesLib.CiphertextStruct - ], - [bigint], - "nonpayable" - >; - - plainText: TypedContractMethod<[], [bigint], "view">; + plainTextValue: TypedContractMethod<[], [bigint], "view">; receiveBlocklock: TypedContractMethod< [requestID: BigNumberish, decryptionKey: BytesLike], @@ -168,7 +177,17 @@ export interface MockBlocklockReceiver extends BaseContract { ): T; getFunction( - nameOrSignature: "Ciphertext" + nameOrSignature: "createTimelockRequest" + ): TypedContractMethod< + [ + decryptionBlockNumber: BigNumberish, + encryptedData: TypesLib.CiphertextStruct + ], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "encrytpedValue" ): TypedContractMethod< [], [ @@ -181,17 +200,7 @@ export interface MockBlocklockReceiver extends BaseContract { "view" >; getFunction( - nameOrSignature: "createTimelockRequest" - ): TypedContractMethod< - [ - decryptionBlockNumber: BigNumberish, - encryptedData: TypesLib.CiphertextStruct - ], - [bigint], - "nonpayable" - >; - getFunction( - nameOrSignature: "plainText" + nameOrSignature: "plainTextValue" ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "receiveBlocklock" diff --git a/src/generated/Multicall.ts b/src/generated/Multicall.ts index dfc0826..ed1233c 100644 --- a/src/generated/Multicall.ts +++ b/src/generated/Multicall.ts @@ -73,7 +73,7 @@ export interface Multicall extends BaseContract { event?: TCEvent ): Promise; - multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; getFunction( key: string | FunctionFragment @@ -81,7 +81,7 @@ export interface Multicall extends BaseContract { getFunction( nameOrSignature: "multicall" - ): TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + ): TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; filters: {}; } diff --git a/src/generated/SignatureSender.ts b/src/generated/SignatureSender.ts index bf3291b..9cb0df0 100644 --- a/src/generated/SignatureSender.ts +++ b/src/generated/SignatureSender.ts @@ -397,7 +397,7 @@ export interface SignatureSender extends BaseContract { lastRequestID: TypedContractMethod<[], [bigint], "view">; - multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; renounceRole: TypedContractMethod< [role: BytesLike, callerConfirmation: AddressLike], @@ -494,7 +494,7 @@ export interface SignatureSender extends BaseContract { ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "multicall" - ): TypedContractMethod<[data: BytesLike[]], [string[]], "payable">; + ): TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; getFunction( nameOrSignature: "renounceRole" ): TypedContractMethod< diff --git a/src/generated/factories/Address__factory.ts b/src/generated/factories/Address__factory.ts new file mode 100644 index 0000000..fc5825b --- /dev/null +++ b/src/generated/factories/Address__factory.ts @@ -0,0 +1,72 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { Address, AddressInterface } from "../Address"; + +const _abi = [ + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +const _bytecode = + "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212201dd310e3ea931b2a53a954cc6bd8ae07e7e265dccce3575aa8a2fd2d11ae8eaa64736f6c63430008180033"; + +type AddressConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AddressConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Address__factory extends ContractFactory { + constructor(...args: AddressConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + Address & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): Address__factory { + return super.connect(runner) as Address__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AddressInterface { + return new Interface(_abi) as AddressInterface; + } + static connect(address: string, runner?: ContractRunner | null): Address { + return new Contract(address, _abi, runner) as unknown as Address; + } +} diff --git a/src/generated/factories/BlocklockSender__factory.ts b/src/generated/factories/BlocklockSender__factory.ts index 14568d8..6d14fb0 100644 --- a/src/generated/factories/BlocklockSender__factory.ts +++ b/src/generated/factories/BlocklockSender__factory.ts @@ -551,7 +551,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa26469706673582212201b0de7f796b213cd1f3baef0353fbe64041a6936e0faf1b145f823915ca7106464736f6c63430008180033"; + "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa26469706673582212203490cab1ae5cf436599f1c4443cbc68c431da25b95050274deee421efe9ec55d64736f6c63430008180033"; type BlocklockSenderConstructorParams = | [signer?: Signer] diff --git a/src/generated/factories/DecryptionSender__factory.ts b/src/generated/factories/DecryptionSender__factory.ts index 7e6cd2c..3a1ae3c 100644 --- a/src/generated/factories/DecryptionSender__factory.ts +++ b/src/generated/factories/DecryptionSender__factory.ts @@ -288,7 +288,7 @@ const _abi = [ internalType: "bytes[]", }, ], - stateMutability: "payable", + stateMutability: "nonpayable", }, { type: "function", @@ -595,6 +595,17 @@ const _abi = [ }, ], }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, { type: "error", name: "DecryptionReceiverCallbackFailed", @@ -606,10 +617,15 @@ const _abi = [ }, ], }, + { + type: "error", + name: "FailedCall", + inputs: [], + }, ] as const; const _bytecode = - "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b50604051620029ad380380620029ad8339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b608051612567620004465f395f818161037b01528181610dd201528181611470015261172501526125675ff3fe608060405260043610610105575f3560e01c8063a217fddf11610092578063cd802c9111610062578063cd802c91146102e1578063d547741f1461031a578063d5c2d4f514610339578063e6b3ca711461036a578063f87f0e61146103b5575f80fd5b8063a217fddf1461026e578063ac9650d814610281578063acae9fee146102a1578063bd132697146102c2575f80fd5b806336568abe116100d857806336568abe146101bc57806344880e1e146101db57806347c031861461020757806375b238fc1461021c57806391d148541461024f575f80fd5b806301ffc9a714610109578063248a9ca31461013d5780632e334452146101795780632f2ff15d1461019b575b5f80fd5b348015610114575f80fd5b50610128610123366004611cac565b6103d4565b60405190151581526020015b60405180910390f35b348015610148575f80fd5b5061016b610157366004611cd3565b5f9081526020819052604090206001015490565b604051908152602001610134565b348015610184575f80fd5b5061018d61040a565b604051610134929190611d0c565b3480156101a6575f80fd5b506101ba6101b5366004611d3b565b610484565b005b3480156101c7575f80fd5b506101ba6101d6366004611d3b565b6104ae565b3480156101e6575f80fd5b506101fa6101f5366004611cd3565b6104e6565b6040516101349190611db6565b348015610212575f80fd5b5061016b60015481565b348015610227575f80fd5b5061016b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561025a575f80fd5b50610128610269366004611d3b565b610829565b348015610279575f80fd5b5061016b5f81565b61029461028f366004611e69565b610851565b6040516101349190611ed8565b3480156102ac575f80fd5b506102b56109a1565b6040516101349190611f3a565b3480156102cd575f80fd5b506101ba6102dc366004611f91565b610a20565b3480156102ec575f80fd5b506101286102fb366004611cd3565b5f908152600660205260409020600501546001600160a01b0316151590565b348015610325575f80fd5b506101ba610334366004611d3b565b611144565b348015610344575f80fd5b50610358610353366004611cd3565b611168565b60405161013496959493929190612005565b348015610375575f80fd5b5061039d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b3480156103c0575f80fd5b5061016b6103cf366004612081565b611442565b5f6001600160e01b03198216637965db0b60e01b148061040457506301ffc9a760e01b6001600160e01b03198316145b92915050565b610412611c44565b61041a611c44565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610433575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116104625750505050509050915091509091565b5f8281526020819052604090206001015461049e816119c7565b6104a883836119d4565b50505050565b6001600160a01b03811633146104d75760405163334bd91960e11b815260040160405180910390fd5b6104e18282611a63565b505050565b6105276040518060c0016040528060608152602001606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160c0810190925280548290829061054e90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461057a90612114565b80156105c55780601f1061059c576101008083540402835291602001916105c5565b820191905f5260205f20905b8154815290600101906020018083116105a857829003601f168201915b505050505081526020016001820180546105de90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461060a90612114565b80156106555780601f1061062c57610100808354040283529160200191610655565b820191905f5260205f20905b81548152906001019060200180831161063857829003601f168201915b5050505050815260200160028201805461066e90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461069a90612114565b80156106e55780601f106106bc576101008083540402835291602001916106e5565b820191905f5260205f20905b8154815290600101906020018083116106c857829003601f168201915b505050505081526020016003820180546106fe90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461072a90612114565b80156107755780601f1061074c57610100808354040283529160200191610775565b820191905f5260205f20905b81548152906001019060200180831161075857829003601f168201915b5050505050815260200160048201805461078e90612114565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba90612114565b80156108055780601f106107dc57610100808354040283529160200191610805565b820191905f5260205f20905b8154815290600101906020018083116107e857829003601f168201915b5050509183525050600591909101546001600160a01b031660209091015292915050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60608167ffffffffffffffff81111561086c5761086c61214c565b60405190808252806020026020018201604052801561089f57816020015b606081526020019060019003908161088a5790505b5090505f5b8281101561099a575f80308686858181106108c1576108c1612160565b90506020028101906108d39190612174565b6040516108e19291906121b7565b5f60405180830381855af49150503d805f8114610919576040519150601f19603f3d011682016040523d82523d5f602084013e61091e565b606091505b50915091508161097257604481511015610936575f80fd5b600481019050808060200190518101906109509190612238565b60405162461bcd60e51b81526004016109699190611f3a565b60405180910390fd5b8084848151811061098557610985612160565b602090810291909101015250506001016108a4565b5092915050565b6040805160808101808352606092610a1b92916002918391908201908390819081845b8154815260200190600101908083116109c457505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116109fa57505050505081525050611acc565b905090565b610a497fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119c7565b5f858152600660205260409020600501546001600160a01b0316610abb5760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b6064820152608401610969565b5f85815260066020526040808220815160c08101909252805482908290610ae190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0d90612114565b8015610b585780601f10610b2f57610100808354040283529160200191610b58565b820191905f5260205f20905b815481529060010190602001808311610b3b57829003601f168201915b50505050508152602001600182018054610b7190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9d90612114565b8015610be85780601f10610bbf57610100808354040283529160200191610be8565b820191905f5260205f20905b815481529060010190602001808311610bcb57829003601f168201915b50505050508152602001600282018054610c0190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2d90612114565b8015610c785780601f10610c4f57610100808354040283529160200191610c78565b820191905f5260205f20905b815481529060010190602001808311610c5b57829003601f168201915b50505050508152602001600382018054610c9190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbd90612114565b8015610d085780601f10610cdf57610100808354040283529160200191610d08565b820191905f5260205f20905b815481529060010190602001808311610ceb57829003601f168201915b50505050508152602001600482018054610d2190612114565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4d90612114565b8015610d985780601f10610d6f57610100808354040283529160200191610d98565b820191905f5260205f20905b815481529060010190602001808311610d7b57829003601f168201915b5050509183525050600591909101546001600160a01b039081166020909201919091528151604051630b76139f60e31b8152929350915f917f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890610e07908590600401611f3a565b602060405180830381865afa158015610e22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e469190612285565b90506001600160a01b038116610e8f5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420736368656d6560901b6044820152606401610969565b604080840151905163eae1e15b60e01b815282915f916001600160a01b0384169163eae1e15b91610ec39190600401611f3a565b5f60405180830381865afa158015610edd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f049190810190612238565b9050816001600160a01b031663f6e548e9828989610f206109a1565b6040518563ffffffff1660e01b8152600401610f3f94939291906122c8565b602060405180830381865afa158015610f5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7e919061230c565b610fca5760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610969565b5f8560a001516001600160a01b0316635d3be00160e01b8c8c8c8c8c604051602401610ffa95949392919061232b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516110389190612363565b5f604051808303815f865af19150503d805f8114611071576040519150601f19603f3d011682016040523d82523d5f602084013e611076565b606091505b505090508061109b57604051633fed05c560e01b8152600481018c9052602401610969565b8a7f0a1f5b3782d8f604353407c980dbfe6b55499c5b92cb8c39f089c73f348407e68b8b8b8b6040516110d1949392919061237e565b60405180910390a25f8b8152600660205260408120906110f18282611c62565b6110fe600183015f611c62565b61110b600283015f611c62565b611118600383015f611c62565b611125600483015f611c62565b5060050180546001600160a01b03191690555050505050505050505050565b5f8281526020819052604090206001015461115e816119c7565b6104a88383611a63565b60066020525f908152604090208054819061118290612114565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90612114565b80156111f95780601f106111d0576101008083540402835291602001916111f9565b820191905f5260205f20905b8154815290600101906020018083116111dc57829003601f168201915b50505050509080600101805461120e90612114565b80601f016020809104026020016040519081016040528092919081815260200182805461123a90612114565b80156112855780601f1061125c57610100808354040283529160200191611285565b820191905f5260205f20905b81548152906001019060200180831161126857829003601f168201915b50505050509080600201805461129a90612114565b80601f01602080910402602001604051908101604052809291908181526020018280546112c690612114565b80156113115780601f106112e857610100808354040283529160200191611311565b820191905f5260205f20905b8154815290600101906020018083116112f457829003601f168201915b50505050509080600301805461132690612114565b80601f016020809104026020016040519081016040528092919081815260200182805461135290612114565b801561139d5780601f106113745761010080835404028352916020019161139d565b820191905f5260205f20905b81548152906001019060200180831161138057829003601f168201915b5050505050908060040180546113b290612114565b80601f01602080910402602001604051908101604052809291908181526020018280546113de90612114565b80156114295780601f1061140057610100808354040283529160200191611429565b820191905f5260205f20905b81548152906001019060200180831161140c57829003601f168201915b505050600590930154919250506001600160a01b031686565b5f6001805f82825461145491906123a4565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa33906114a7908a908a906004016123c3565b602060405180830381865afa1580156114c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e6919061230c565b6115325760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f7274656400006044820152606401610969565b611579600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611b289050565b6115d05760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b6064820152608401610969565b6116165f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611b289050565b61166e5760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b6064820152608401610969565b81801561170c576116b384848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bbc92505050565b1561170c5760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b6064820152608401610969565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf89061175c908c908c906004016123c3565b602060405180830381865afa158015611777573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179b9190612285565b90506001600160a01b0381166117f35760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e617475726520736368656d6500000000000000006044820152606401610969565b6040518060c001604052808a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284375f9201829052509385525050604080516020818101835284825280860191909152815180820183528481528286015233606090950194909452600154835260069093525020815181906118ef9082612421565b50602082015160018201906119049082612421565b50604082015160028201906119199082612421565b506060820151600382019061192e9082612421565b50608082015160048201906119439082612421565b5060a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790556001546040513391907f133b1acfa49920f88bc8c23faeb2ba43b75b3d6c453290a824f3c85e7733df13906119af908d908d908b908b908f908f9042906124e1565b60405180910390a35050600154979650505050505050565b6119d18133611c07565b50565b5f6119df8383610829565b611a5c575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611a143390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610404565b505f610404565b5f611a6e8383610829565b15611a5c575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610404565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b5f81831115611b9f5760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e6774680000000000006064820152608401610969565b8351838110801590611bb15750828111155b9150505b9392505050565b5f805b8251811015611bfe57828181518110611bda57611bda612160565b01602001516001600160f81b03191615611bf657505f92915050565b600101611bbf565b50600192915050565b611c118282610829565b611c405760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610969565b5050565b60405180604001604052806002906020820280368337509192915050565b508054611c6e90612114565b5f825580601f10611c7d575050565b601f0160209004905f5260205f20908101906119d191905b80821115611ca8575f8155600101611c95565b5090565b5f60208284031215611cbc575f80fd5b81356001600160e01b031981168114611bb5575f80fd5b5f60208284031215611ce3575f80fd5b5035919050565b805f5b60028110156104a8578151845260209384019390910190600101611ced565b60808101611d1a8285611cea565b611bb56040830184611cea565b6001600160a01b03811681146119d1575f80fd5b5f8060408385031215611d4c575f80fd5b823591506020830135611d5e81611d27565b809150509250929050565b5f5b83811015611d83578181015183820152602001611d6b565b50505f910152565b5f8151808452611da2816020860160208601611d69565b601f01601f19169290920160200192915050565b602081525f825160c06020840152611dd160e0840182611d8b565b90506020840151601f1980858403016040860152611def8383611d8b565b92506040860151915080858403016060860152611e0c8383611d8b565b92506060860151915080858403016080860152611e298383611d8b565b925060808601519150808584030160a086015250611e478282611d8b565b60a095909501516001600160a01b031660c09490940193909352509192915050565b5f8060208385031215611e7a575f80fd5b823567ffffffffffffffff80821115611e91575f80fd5b818501915085601f830112611ea4575f80fd5b813581811115611eb2575f80fd5b8660208260051b8501011115611ec6575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611f2d57603f19888603018452611f1b858351611d8b565b94509285019290850190600101611eff565b5092979650505050505050565b602081525f611bb56020830184611d8b565b5f8083601f840112611f5c575f80fd5b50813567ffffffffffffffff811115611f73575f80fd5b602083019150836020828501011115611f8a575f80fd5b9250929050565b5f805f805f60608688031215611fa5575f80fd5b85359450602086013567ffffffffffffffff80821115611fc3575f80fd5b611fcf89838a01611f4c565b90965094506040880135915080821115611fe7575f80fd5b50611ff488828901611f4c565b969995985093965092949392505050565b60c081525f61201760c0830189611d8b565b82810360208401526120298189611d8b565b9050828103604084015261203d8188611d8b565b905082810360608401526120518187611d8b565b905082810360808401526120658186611d8b565b91505060018060a01b03831660a0830152979650505050505050565b5f805f805f8060608789031215612096575f80fd5b863567ffffffffffffffff808211156120ad575f80fd5b6120b98a838b01611f4c565b909850965060208901359150808211156120d1575f80fd5b6120dd8a838b01611f4c565b909650945060408901359150808211156120f5575f80fd5b5061210289828a01611f4c565b979a9699509497509295939492505050565b600181811c9082168061212857607f821691505b60208210810361214657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e19843603018112612189575f80fd5b83018035915067ffffffffffffffff8211156121a3575f80fd5b602001915036819003821315611f8a575f80fd5b818382375f9101908152919050565b5f67ffffffffffffffff808411156121e0576121e061214c565b604051601f8501601f19908116603f011681019082821181831017156122085761220861214c565b81604052809350858152868686011115612220575f80fd5b61222e866020830187611d69565b5050509392505050565b5f60208284031215612248575f80fd5b815167ffffffffffffffff81111561225e575f80fd5b8201601f8101841361226e575f80fd5b61227d848251602084016121c6565b949350505050565b5f60208284031215612295575f80fd5b8151611bb581611d27565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f6122da6060830187611d8b565b82810360208401526122ed8186886122a0565b905082810360408401526123018185611d8b565b979650505050505050565b5f6020828403121561231c575f80fd5b81518015158114611bb5575f80fd5b858152606060208201525f6123446060830186886122a0565b82810360408401526123578185876122a0565b98975050505050505050565b5f8251612374818460208701611d69565b9190910192915050565b604081525f6123916040830186886122a0565b82810360208401526123018185876122a0565b8082018082111561040457634e487b7160e01b5f52601160045260245ffd5b602081525f61227d6020830184866122a0565b601f8211156104e157805f5260205f20601f840160051c810160208510156123fb5750805b601f840160051c820191505b8181101561241a575f8155600101612407565b5050505050565b815167ffffffffffffffff81111561243b5761243b61214c565b61244f816124498454612114565b846123d6565b602080601f831160018114612482575f841561246b5750858301515b5f19600386901b1c1916600185901b1785556124d9565b5f85815260208120601f198616915b828110156124b057888601518255948401946001909101908401612491565b50858210156124cd57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b608081525f6124f460808301898b6122a0565b828103602084015261250781888a6122a0565b9050828103604084015261251c8186886122a0565b9150508260608301529897505050505050505056fea2646970667358221220da83133e2c4d77e2a78232dcb1ec910ff646a053185ce4d4638c4f39c688866d64736f6c63430008180033"; + "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b5060405162002983380380620029838339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b60805161253d620004465f395f81816102c701528181610cad0152818161134b0152611600015261253d5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063a217fddf1161009e578063cd802c911161006e578063cd802c911461025d578063d547741f1461028a578063d5c2d4f51461029d578063e6b3ca71146102c2578063f87f0e6114610301575f80fd5b8063a217fddf1461020e578063ac9650d814610215578063acae9fee14610235578063bd1326971461024a575f80fd5b806336568abe116100e457806336568abe1461019857806344880e1e146101ab57806347c03186146101cb57806375b238fc146101d457806391d14854146101fb575f80fd5b806301ffc9a714610115578063248a9ca31461013d5780632e3344521461016d5780632f2ff15d14610183575b5f80fd5b610128610123366004611c7e565b610314565b60405190151581526020015b60405180910390f35b61015f61014b366004611ca5565b5f9081526020819052604090206001015490565b604051908152602001610134565b61017561034a565b604051610134929190611cde565b610196610191366004611d0d565b6103c4565b005b6101966101a6366004611d0d565b6103ee565b6101be6101b9366004611ca5565b610426565b6040516101349190611d88565b61015f60015481565b61015f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610128610209366004611d0d565b610769565b61015f5f81565b610228610223366004611e3b565b610791565b6040516101349190611eaa565b61023d610877565b6040516101349190611f0c565b610196610258366004611f63565b6108f6565b61012861026b366004611ca5565b5f908152600660205260409020600501546001600160a01b0316151590565b610196610298366004611d0d565b61101f565b6102b06102ab366004611ca5565b611043565b60405161013496959493929190611fd7565b6102e97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b61015f61030f366004612053565b61131d565b5f6001600160e01b03198216637965db0b60e01b148061034457506301ffc9a760e01b6001600160e01b03198316145b92915050565b610352611c16565b61035a611c16565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610373575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116103a25750505050509050915091509091565b5f828152602081905260409020600101546103de816118a2565b6103e883836118af565b50505050565b6001600160a01b03811633146104175760405163334bd91960e11b815260040160405180910390fd5b610421828261193e565b505050565b6104676040518060c0016040528060608152602001606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160c0810190925280548290829061048e906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ba906120e6565b80156105055780601f106104dc57610100808354040283529160200191610505565b820191905f5260205f20905b8154815290600101906020018083116104e857829003601f168201915b5050505050815260200160018201805461051e906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461054a906120e6565b80156105955780601f1061056c57610100808354040283529160200191610595565b820191905f5260205f20905b81548152906001019060200180831161057857829003601f168201915b505050505081526020016002820180546105ae906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546105da906120e6565b80156106255780601f106105fc57610100808354040283529160200191610625565b820191905f5260205f20905b81548152906001019060200180831161060857829003601f168201915b5050505050815260200160038201805461063e906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461066a906120e6565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b505050505081526020016004820180546106ce906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa906120e6565b80156107455780601f1061071c57610100808354040283529160200191610745565b820191905f5260205f20905b81548152906001019060200180831161072857829003601f168201915b5050509183525050600591909101546001600160a01b031660209091015292915050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b604080515f8152602081019091526060908267ffffffffffffffff8111156107bb576107bb612132565b6040519080825280602002602001820160405280156107ee57816020015b60608152602001906001900390816107d95790505b5091505f5b8381101561086f5761084a3086868481811061081157610811612146565b9050602002810190610823919061215a565b856040516020016108369392919061219d565b6040516020818303038152906040526119a7565b83828151811061085c5761085c612146565b60209081029190910101526001016107f3565b505092915050565b60408051608081018083526060926108f192916002918391908201908390819081845b81548152602001906001019080831161089a57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116108d057505050505081525050611a19565b905090565b61091f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756118a2565b5f858152600660205260409020600501546001600160a01b03166109965760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b60648201526084015b60405180910390fd5b5f85815260066020526040808220815160c081019092528054829082906109bc906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546109e8906120e6565b8015610a335780601f10610a0a57610100808354040283529160200191610a33565b820191905f5260205f20905b815481529060010190602001808311610a1657829003601f168201915b50505050508152602001600182018054610a4c906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a78906120e6565b8015610ac35780601f10610a9a57610100808354040283529160200191610ac3565b820191905f5260205f20905b815481529060010190602001808311610aa657829003601f168201915b50505050508152602001600282018054610adc906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b08906120e6565b8015610b535780601f10610b2a57610100808354040283529160200191610b53565b820191905f5260205f20905b815481529060010190602001808311610b3657829003601f168201915b50505050508152602001600382018054610b6c906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b98906120e6565b8015610be35780601f10610bba57610100808354040283529160200191610be3565b820191905f5260205f20905b815481529060010190602001808311610bc657829003601f168201915b50505050508152602001600482018054610bfc906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c28906120e6565b8015610c735780601f10610c4a57610100808354040283529160200191610c73565b820191905f5260205f20905b815481529060010190602001808311610c5657829003601f168201915b5050509183525050600591909101546001600160a01b039081166020909201919091528151604051630b76139f60e31b8152929350915f917f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890610ce2908590600401611f0c565b602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2191906121c2565b90506001600160a01b038116610d6a5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420736368656d6560901b604482015260640161098d565b604080840151905163eae1e15b60e01b815282915f916001600160a01b0384169163eae1e15b91610d9e9190600401611f0c565b5f60405180830381865afa158015610db8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ddf91908101906121dd565b9050816001600160a01b031663f6e548e9828989610dfb610877565b6040518563ffffffff1660e01b8152600401610e1a94939291906122ad565b602060405180830381865afa158015610e35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5991906122e6565b610ea55760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c6564000000604482015260640161098d565b5f8560a001516001600160a01b0316635d3be00160e01b8c8c8c8c8c604051602401610ed5959493929190612305565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f13919061233d565b5f604051808303815f865af19150503d805f8114610f4c576040519150601f19603f3d011682016040523d82523d5f602084013e610f51565b606091505b5050905080610f7657604051633fed05c560e01b8152600481018c905260240161098d565b8a7f0a1f5b3782d8f604353407c980dbfe6b55499c5b92cb8c39f089c73f348407e68b8b8b8b604051610fac9493929190612358565b60405180910390a25f8b815260066020526040812090610fcc8282611c34565b610fd9600183015f611c34565b610fe6600283015f611c34565b610ff3600383015f611c34565b611000600483015f611c34565b5060050180546001600160a01b03191690555050505050505050505050565b5f82815260208190526040902060010154611039816118a2565b6103e8838361193e565b60066020525f908152604090208054819061105d906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054611089906120e6565b80156110d45780601f106110ab576101008083540402835291602001916110d4565b820191905f5260205f20905b8154815290600101906020018083116110b757829003601f168201915b5050505050908060010180546110e9906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054611115906120e6565b80156111605780601f1061113757610100808354040283529160200191611160565b820191905f5260205f20905b81548152906001019060200180831161114357829003601f168201915b505050505090806002018054611175906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546111a1906120e6565b80156111ec5780601f106111c3576101008083540402835291602001916111ec565b820191905f5260205f20905b8154815290600101906020018083116111cf57829003601f168201915b505050505090806003018054611201906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461122d906120e6565b80156112785780601f1061124f57610100808354040283529160200191611278565b820191905f5260205f20905b81548152906001019060200180831161125b57829003601f168201915b50505050509080600401805461128d906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546112b9906120e6565b80156113045780601f106112db57610100808354040283529160200191611304565b820191905f5260205f20905b8154815290600101906020018083116112e757829003601f168201915b505050600590930154919250506001600160a01b031686565b5f6001805f82825461132f919061237e565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa3390611382908a908a90600401612391565b602060405180830381865afa15801561139d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c191906122e6565b61140d5760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f727465640000604482015260640161098d565b611454600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611a759050565b6114ab5760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b606482015260840161098d565b6114f15f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611a759050565b6115495760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b606482015260840161098d565b8180156115e75761158e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b0992505050565b156115e75760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b606482015260840161098d565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890611637908c908c90600401612391565b602060405180830381865afa158015611652573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167691906121c2565b90506001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e617475726520736368656d650000000000000000604482015260640161098d565b6040518060c001604052808a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284375f9201829052509385525050604080516020818101835284825280860191909152815180820183528481528286015233606090950194909452600154835260069093525020815181906117ca90826123f7565b50602082015160018201906117df90826123f7565b50604082015160028201906117f490826123f7565b506060820151600382019061180990826123f7565b506080820151600482019061181e90826123f7565b5060a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790556001546040513391907f133b1acfa49920f88bc8c23faeb2ba43b75b3d6c453290a824f3c85e7733df139061188a908d908d908b908b908f908f9042906124b7565b60405180910390a35050600154979650505050505050565b6118ac8133611b54565b50565b5f6118ba8383610769565b611937575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556118ef3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610344565b505f610344565b5f6119498383610769565b15611937575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610344565b60605f80846001600160a01b0316846040516119c3919061233d565b5f60405180830381855af49150503d805f81146119fb576040519150601f19603f3d011682016040523d82523d5f602084013e611a00565b606091505b5091509150611a10858383611b91565b95945050505050565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b5f81831115611aec5760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e677468000000000000606482015260840161098d565b8351838110801590611afe5750828111155b9150505b9392505050565b5f805b8251811015611b4b57828181518110611b2757611b27612146565b01602001516001600160f81b03191615611b4357505f92915050565b600101611b0c565b50600192915050565b611b5e8282610769565b611b8d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161098d565b5050565b606082611ba657611ba182611bed565b611b02565b8151158015611bbd57506001600160a01b0384163b155b15611be657604051639996b31560e01b81526001600160a01b038516600482015260240161098d565b5080611b02565b805115611bfd5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052806002906020820280368337509192915050565b508054611c40906120e6565b5f825580601f10611c4f575050565b601f0160209004905f5260205f20908101906118ac91905b80821115611c7a575f8155600101611c67565b5090565b5f60208284031215611c8e575f80fd5b81356001600160e01b031981168114611b02575f80fd5b5f60208284031215611cb5575f80fd5b5035919050565b805f5b60028110156103e8578151845260209384019390910190600101611cbf565b60808101611cec8285611cbc565b611b026040830184611cbc565b6001600160a01b03811681146118ac575f80fd5b5f8060408385031215611d1e575f80fd5b823591506020830135611d3081611cf9565b809150509250929050565b5f5b83811015611d55578181015183820152602001611d3d565b50505f910152565b5f8151808452611d74816020860160208601611d3b565b601f01601f19169290920160200192915050565b602081525f825160c06020840152611da360e0840182611d5d565b90506020840151601f1980858403016040860152611dc18383611d5d565b92506040860151915080858403016060860152611dde8383611d5d565b92506060860151915080858403016080860152611dfb8383611d5d565b925060808601519150808584030160a086015250611e198282611d5d565b60a095909501516001600160a01b031660c09490940193909352509192915050565b5f8060208385031215611e4c575f80fd5b823567ffffffffffffffff80821115611e63575f80fd5b818501915085601f830112611e76575f80fd5b813581811115611e84575f80fd5b8660208260051b8501011115611e98575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611eff57603f19888603018452611eed858351611d5d565b94509285019290850190600101611ed1565b5092979650505050505050565b602081525f611b026020830184611d5d565b5f8083601f840112611f2e575f80fd5b50813567ffffffffffffffff811115611f45575f80fd5b602083019150836020828501011115611f5c575f80fd5b9250929050565b5f805f805f60608688031215611f77575f80fd5b85359450602086013567ffffffffffffffff80821115611f95575f80fd5b611fa189838a01611f1e565b90965094506040880135915080821115611fb9575f80fd5b50611fc688828901611f1e565b969995985093965092949392505050565b60c081525f611fe960c0830189611d5d565b8281036020840152611ffb8189611d5d565b9050828103604084015261200f8188611d5d565b905082810360608401526120238187611d5d565b905082810360808401526120378186611d5d565b91505060018060a01b03831660a0830152979650505050505050565b5f805f805f8060608789031215612068575f80fd5b863567ffffffffffffffff8082111561207f575f80fd5b61208b8a838b01611f1e565b909850965060208901359150808211156120a3575f80fd5b6120af8a838b01611f1e565b909650945060408901359150808211156120c7575f80fd5b506120d489828a01611f1e565b979a9699509497509295939492505050565b600181811c908216806120fa57607f821691505b60208210810361211857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e1984360301811261216f575f80fd5b83018035915067ffffffffffffffff821115612189575f80fd5b602001915036819003821315611f5c575f80fd5b828482375f8382015f815283516121b8818360208801611d3b565b0195945050505050565b5f602082840312156121d2575f80fd5b8151611b0281611cf9565b5f602082840312156121ed575f80fd5b815167ffffffffffffffff80821115612204575f80fd5b818401915084601f830112612217575f80fd5b81518181111561222957612229612132565b604051601f8201601f19908116603f0116810190838211818310171561225157612251612132565b81604052828152876020848701011115612269575f80fd5b61227a836020830160208801611d3b565b979650505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f6122bf6060830187611d5d565b82810360208401526122d2818688612285565b9050828103604084015261227a8185611d5d565b5f602082840312156122f6575f80fd5b81518015158114611b02575f80fd5b858152606060208201525f61231e606083018688612285565b8281036040840152612331818587612285565b98975050505050505050565b5f825161234e818460208701611d3b565b9190910192915050565b604081525f61236b604083018688612285565b828103602084015261227a818587612285565b808201808211156103445761034461211e565b602081525f6123a4602083018486612285565b949350505050565b601f82111561042157805f5260205f20601f840160051c810160208510156123d15750805b601f840160051c820191505b818110156123f0575f81556001016123dd565b5050505050565b815167ffffffffffffffff81111561241157612411612132565b6124258161241f84546120e6565b846123ac565b602080601f831160018114612458575f84156124415750858301515b5f19600386901b1c1916600185901b1785556124af565b5f85815260208120601f198616915b8281101561248657888601518255948401946001909101908401612467565b50858210156124a357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b608081525f6124ca60808301898b612285565b82810360208401526124dd81888a612285565b905082810360408401526124f2818688612285565b9150508260608301529897505050505050505056fea2646970667358221220b13f4a6a8027f0f3f8248d2446015e46ed4ec0d15c5e3303f2f05b051d7d00ea64736f6c63430008180033"; type DecryptionSenderConstructorParams = | [signer?: Signer] diff --git a/src/generated/factories/Errors__factory.ts b/src/generated/factories/Errors__factory.ts new file mode 100644 index 0000000..7e233fa --- /dev/null +++ b/src/generated/factories/Errors__factory.ts @@ -0,0 +1,98 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { Errors, ErrorsInterface } from "../Errors"; + +const _abi = [ + { + type: "error", + name: "FailedCall", + inputs: [], + }, + { + type: "error", + name: "FailedDeployment", + inputs: [], + }, + { + type: "error", + name: "InsufficientBalance", + inputs: [ + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "MissingPrecompile", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +const _bytecode = + "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122038ddc0ffdd8d2b20d4aefb8dfba4a0175aec74e29f5a2545d95df8afd50ca20064736f6c63430008180033"; + +type ErrorsConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ErrorsConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Errors__factory extends ContractFactory { + constructor(...args: ErrorsConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + Errors & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): Errors__factory { + return super.connect(runner) as Errors__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ErrorsInterface { + return new Interface(_abi) as ErrorsInterface; + } + static connect(address: string, runner?: ContractRunner | null): Errors { + return new Contract(address, _abi, runner) as unknown as Errors; + } +} diff --git a/src/generated/factories/MockBlocklockReceiver__factory.ts b/src/generated/factories/MockBlocklockReceiver__factory.ts index 21f5884..934666e 100644 --- a/src/generated/factories/MockBlocklockReceiver__factory.ts +++ b/src/generated/factories/MockBlocklockReceiver__factory.ts @@ -31,41 +31,6 @@ const _abi = [ ], stateMutability: "nonpayable", }, - { - type: "function", - name: "Ciphertext", - inputs: [], - outputs: [ - { - name: "u", - type: "tuple", - internalType: "struct BLS.PointG2", - components: [ - { - name: "x", - type: "uint256[2]", - internalType: "uint256[2]", - }, - { - name: "y", - type: "uint256[2]", - internalType: "uint256[2]", - }, - ], - }, - { - name: "v", - type: "bytes", - internalType: "bytes", - }, - { - name: "w", - type: "bytes", - internalType: "bytes", - }, - ], - stateMutability: "view", - }, { type: "function", name: "createTimelockRequest", @@ -121,7 +86,42 @@ const _abi = [ }, { type: "function", - name: "plainText", + name: "encrytpedValue", + inputs: [], + outputs: [ + { + name: "u", + type: "tuple", + internalType: "struct BLS.PointG2", + components: [ + { + name: "x", + type: "uint256[2]", + internalType: "uint256[2]", + }, + { + name: "y", + type: "uint256[2]", + internalType: "uint256[2]", + }, + ], + }, + { + name: "v", + type: "bytes", + internalType: "bytes", + }, + { + name: "w", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "plainTextValue", inputs: [], outputs: [ { @@ -179,7 +179,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561000f575f80fd5b5060405161098d38038061098d83398101604081905261002e91610053565b600880546001600160a01b0319166001600160a01b0392909216919091179055610080565b5f60208284031215610063575f80fd5b81516001600160a01b0381168114610079575f80fd5b9392505050565b6109008061008d5f395ff3fe608060405234801561000f575f80fd5b506004361061005f575f3560e01c80626d6cae146100635780635d9418021461007e5780638879765a1461009357806398e5a5e7146100aa578063d33219b4146100bd578063d8da5046146100e8575b5f80fd5b61006b5f5481565b6040519081526020015b60405180910390f35b61009161008c36600461043d565b6100f1565b005b61009b610234565b60405161007593929190610527565b61006b6100b8366004610576565b6103c0565b6008546100d0906001600160a01b031681565b6040516001600160a01b039091168152602001610075565b61006b60075481565b6008546001600160a01b0316331461015e5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c792074696d656c6f636b20636f6e74726163742063616e2063616c6c206044820152643a3434b99760d91b60648201526084015b60405180910390fd5b5f5483146101a35760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd081a5960721b6044820152606401610155565b60085460405163326f063160e21b81526001600160a01b039091169063c9bc18c4906101d890600190869086906004016106e1565b5f60405180830381865afa1580156101f2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610219919081019061075c565b80602001905181019061022c9190610804565b600755505050565b604080516080810180835260019283918391820190839060029082845b81548152602001906001019080831161025157505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161028757505050505081525050908060040180546102b3906105e2565b80601f01602080910402602001604051908101604052809291908181526020018280546102df906105e2565b801561032a5780601f106103015761010080835404028352916020019161032a565b820191905f5260205f20905b81548152906001019060200180831161030d57829003601f168201915b50505050509080600501805461033f906105e2565b80601f016020809104026020016040519081016040528092919081815260200182805461036b906105e2565b80156103b65780601f1061038d576101008083540402835291602001916103b6565b820191905f5260205f20905b81548152906001019060200180831161039957829003601f168201915b5050505050905083565b60085460405163236695a160e11b81525f916001600160a01b0316906346cd2b42906103f29086908690600401610864565b6020604051808303815f875af115801561040e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104329190610804565b5f8190559392505050565b5f805f6040848603121561044f575f80fd5b83359250602084013567ffffffffffffffff8082111561046d575f80fd5b818601915086601f830112610480575f80fd5b81358181111561048e575f80fd5b87602082850101111561049f575f80fd5b6020830194508093505050509250925092565b805f5b60028110156104d45781518452602093840193909101906001016104b5565b50505050565b5f5b838110156104f45781810151838201526020016104dc565b50505f910152565b5f81518084526105138160208601602086016104da565b601f01601f19169290920160200192915050565b6105328185516104b2565b5f602085015161054560408401826104b2565b5060c0608083015261055a60c08301856104fc565b82810360a084015261056c81856104fc565b9695505050505050565b5f8060408385031215610587575f80fd5b82359150602083013567ffffffffffffffff8111156105a4575f80fd5b830160c081860312156105b5575f80fd5b809150509250929050565b805f5b60028110156104d45781548452602090930192600191820191016105c3565b600181811c908216806105f657607f821691505b60208210810361061457634e487b7160e01b5f52602260045260245ffd5b50919050565b80545f90600181811c908083168061063357607f831692505b6020808410820361065257634e487b7160e01b5f52602260045260245ffd5b8388526020880182801561066d5760018114610683576106ac565b60ff198716825285151560051b820197506106ac565b5f898152602090205f5b878110156106a65781548482015290860190840161068d565b83019850505b5050505050505092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081526106f260408201856105c0565b61070260808201600286016105c0565b60c0808201525f61071a61010083016004870161061a565b828103603f190160e0840152610733816005880161061a565b9050828103602084015261056c8185876106b9565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561076c575f80fd5b815167ffffffffffffffff80821115610783575f80fd5b818401915084601f830112610796575f80fd5b8151818111156107a8576107a8610748565b604051601f8201601f19908116603f011681019083821181831017156107d0576107d0610748565b816040528281528760208487010111156107e8575f80fd5b6107f98360208301602088016104da565b979650505050505050565b5f60208284031215610814575f80fd5b5051919050565b5f808335601e19843603018112610830575f80fd5b830160208101925035905067ffffffffffffffff81111561084f575f80fd5b80360382131561085d575f80fd5b9250929050565b828152604060208201526040826040830137604080830160808301375f61088e608084018461081b565b60c0808501526108a3610100850182846106b9565b9150506108b360a085018561081b565b848303603f190160e08601526107f98382846106b956fea2646970667358221220cfbb9e4f772d42fc1e1c202d552c1db10c082854e16c2b10864ccc2db6fc98ff64736f6c63430008180033"; + "0x608060405234801561000f575f80fd5b50604051610b47380380610b4783398101604081905261002e91610053565b600880546001600160a01b0319166001600160a01b0392909216919091179055610080565b5f60208284031215610063575f80fd5b81516001600160a01b0381168114610079575f80fd5b9392505050565b610aba8061008d5f395ff3fe608060405234801561000f575f80fd5b506004361061005f575f3560e01c80626d6cae14610063578063492eea421461007e5780635d9418021461009557806397a9c285146100aa57806398e5a5e7146100b3578063d33219b4146100c6575b5f80fd5b61006b5f5481565b6040519081526020015b60405180910390f35b6100866100f1565b604051610075939291906104c1565b6100a86100a3366004610510565b61027d565b005b61006b60075481565b61006b6100c1366004610585565b6103c0565b6008546100d9906001600160a01b031681565b6040516001600160a01b039091168152602001610075565b604080516080810180835260019283918391820190839060029082845b81548152602001906001019080831161010e57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116101445750505050508152505090806004018054610170906105cf565b80601f016020809104026020016040519081016040528092919081815260200182805461019c906105cf565b80156101e75780601f106101be576101008083540402835291602001916101e7565b820191905f5260205f20905b8154815290600101906020018083116101ca57829003601f168201915b5050505050908060050180546101fc906105cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610228906105cf565b80156102735780601f1061024a57610100808354040283529160200191610273565b820191905f5260205f20905b81548152906001019060200180831161025657829003601f168201915b5050505050905083565b6008546001600160a01b031633146102ea5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c792074696d656c6f636b20636f6e74726163742063616e2063616c6c206044820152643a3434b99760d91b60648201526084015b60405180910390fd5b5f54831461032f5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd081a5960721b60448201526064016102e1565b60085460405163326f063160e21b81526001600160a01b039091169063c9bc18c49061036490600190869086906004016106ca565b5f60405180830381865afa15801561037e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a59190810190610745565b8060200190518101906103b891906107ed565b600755505050565b60085460405163236695a160e11b81525f916001600160a01b0316906346cd2b42906103f2908690869060040161084d565b6020604051808303815f875af115801561040e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043291906107ed565b5f5581600161044182826109fc565b50505f549392505050565b805f5b600281101561046e57815184526020938401939091019060010161044f565b50505050565b5f5b8381101561048e578181015183820152602001610476565b50505f910152565b5f81518084526104ad816020860160208601610474565b601f01601f19169290920160200192915050565b6104cc81855161044c565b5f60208501516104df604084018261044c565b5060c060808301526104f460c0830185610496565b82810360a08401526105068185610496565b9695505050505050565b5f805f60408486031215610522575f80fd5b83359250602084013567ffffffffffffffff80821115610540575f80fd5b818601915086601f830112610553575f80fd5b813581811115610561575f80fd5b876020828501011115610572575f80fd5b6020830194508093505050509250925092565b5f8060408385031215610596575f80fd5b82359150602083013567ffffffffffffffff8111156105b3575f80fd5b830160c081860312156105c4575f80fd5b809150509250929050565b600181811c908216806105e357607f821691505b60208210810361060157634e487b7160e01b5f52602260045260245ffd5b50919050565b805f5b600281101561046e57815484526020909301926001918201910161060a565b5f8154610635816105cf565b808552602060018381168015610652576001811461066c57610697565b60ff1985168884015283151560051b880183019550610697565b865f52825f205f5b8581101561068f5781548a8201860152908301908401610674565b890184019650505b505050505092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081526106db6040820185610607565b6106eb6080820160028601610607565b60c0808201525f610703610100830160048701610629565b828103603f190160e084015261071c8160058801610629565b905082810360208401526105068185876106a2565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610755575f80fd5b815167ffffffffffffffff8082111561076c575f80fd5b818401915084601f83011261077f575f80fd5b81518181111561079157610791610731565b604051601f8201601f19908116603f011681019083821181831017156107b9576107b9610731565b816040528281528760208487010111156107d1575f80fd5b6107e2836020830160208801610474565b979650505050505050565b5f602082840312156107fd575f80fd5b5051919050565b5f808335601e19843603018112610819575f80fd5b830160208101925035905067ffffffffffffffff811115610838575f80fd5b803603821315610846575f80fd5b9250929050565b828152604060208201526040826040830137604080830160808301375f6108776080840184610804565b60c08085015261088c610100850182846106a2565b91505061089c60a0850185610804565b848303603f190160e08601526107e28382846106a2565b5f808335601e198436030181126108c8575f80fd5b83018035915067ffffffffffffffff8211156108e2575f80fd5b602001915036819003821315610846575f80fd5b601f82111561093d57805f5260205f20601f840160051c8101602085101561091b5750805b601f840160051c820191505b8181101561093a575f8155600101610927565b50505b505050565b67ffffffffffffffff83111561095a5761095a610731565b61096e8361096883546105cf565b836108f6565b5f601f84116001811461099f575f85156109885750838201355b5f19600387901b1c1916600186901b17835561093a565b5f83815260208120601f198716915b828110156109ce57868501358255602094850194600190920191016109ae565b50868210156109ea575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b815f5b6002811015610a1c578135838201556020909101906001016109ff565b5050604082015f5b6002808210610a335750610a4a565b823584830190910155602090910190600101610a24565b5050610a5960808301836108b3565b610a67818360048601610942565b5050610a7660a08301836108b3565b61046e81836005860161094256fea26469706673582212203aca39bd897c2c31540e5213b8e6abb810d18e5857b6e138663be577615e659964736f6c63430008180033"; type MockBlocklockReceiverConstructorParams = | [signer?: Signer] diff --git a/src/generated/factories/Multicall__factory.ts b/src/generated/factories/Multicall__factory.ts index 5aed470..f7c8ba5 100644 --- a/src/generated/factories/Multicall__factory.ts +++ b/src/generated/factories/Multicall__factory.ts @@ -23,7 +23,23 @@ const _abi = [ internalType: "bytes[]", }, ], - stateMutability: "payable", + stateMutability: "nonpayable", + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "FailedCall", + inputs: [], }, ] as const; diff --git a/src/generated/factories/SignatureSender__factory.ts b/src/generated/factories/SignatureSender__factory.ts index 4b049f7..6244023 100644 --- a/src/generated/factories/SignatureSender__factory.ts +++ b/src/generated/factories/SignatureSender__factory.ts @@ -278,7 +278,7 @@ const _abi = [ internalType: "bytes[]", }, ], - stateMutability: "payable", + stateMutability: "nonpayable", }, { type: "function", @@ -574,6 +574,22 @@ const _abi = [ }, ], }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "FailedCall", + inputs: [], + }, { type: "error", name: "SignatureCallbackFailed", @@ -588,7 +604,7 @@ const _abi = [ ] as const; const _bytecode = - "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b506040516200268b3803806200268b8339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b608051612245620004465f395f818161039901528181610aba01528181610da4015261105901526122455ff3fe608060405260043610610105575f3560e01c806391d1485411610092578063acae9fee11610062578063acae9fee146102df578063cd802c9114610300578063d547741f14610339578063d5c2d4f514610358578063e6b3ca7114610388575f80fd5b806391d148541461026e57806395b8d0731461028d578063a217fddf146102ac578063ac9650d8146102bf575f80fd5b806336568abe116100d857806336568abe146101bc57806344880e1e146101db57806347c03186146102075780635eab2b201461021c57806375b238fc1461023b575f80fd5b806301ffc9a714610109578063248a9ca31461013d5780632e334452146101795780632f2ff15d1461019b575b5f80fd5b348015610114575f80fd5b50610128610123366004611a0f565b6103d3565b60405190151581526020015b60405180910390f35b348015610148575f80fd5b5061016b610157366004611a36565b5f9081526020819052604090206001015490565b604051908152602001610134565b348015610184575f80fd5b5061018d610409565b604051610134929190611a6f565b3480156101a6575f80fd5b506101ba6101b5366004611a9e565b610483565b005b3480156101c7575f80fd5b506101ba6101d6366004611a9e565b6104ad565b3480156101e6575f80fd5b506101fa6101f5366004611a36565b6104e5565b6040516101349190611b19565b348015610212575f80fd5b5061016b60015481565b348015610227575f80fd5b506101ba610236366004611bf4565b610791565b348015610246575f80fd5b5061016b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b348015610279575f80fd5b50610128610288366004611a9e565b610d4e565b348015610298575f80fd5b5061016b6102a7366004611c3c565b610d76565b3480156102b7575f80fd5b5061016b5f81565b6102d26102cd366004611ccf565b6112f2565b6040516101349190611d3e565b3480156102ea575f80fd5b506102f3611439565b6040516101349190611da0565b34801561030b575f80fd5b5061012861031a366004611a36565b5f908152600660205260409020600401546001600160a01b0316151590565b348015610344575f80fd5b506101ba610353366004611a9e565b6114b8565b348015610363575f80fd5b50610377610372366004611a36565b6114dc565b604051610134959493929190611db2565b348015610393575f80fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b5f6001600160e01b03198216637965db0b60e01b148061040357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6104116119a7565b6104196119a7565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610432575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116104615750505050509050915091509091565b5f8281526020819052604090206001015461049d8161172a565b6104a78383611737565b50505050565b6001600160a01b03811633146104d65760405163334bd91960e11b815260040160405180910390fd5b6104e082826117c6565b505050565b61051f6040518060a00160405280606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160a0810190925280548290829061054690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461057290611e19565b80156105bd5780601f10610594576101008083540402835291602001916105bd565b820191905f5260205f20905b8154815290600101906020018083116105a057829003601f168201915b505050505081526020016001820180546105d690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461060290611e19565b801561064d5780601f106106245761010080835404028352916020019161064d565b820191905f5260205f20905b81548152906001019060200180831161063057829003601f168201915b5050505050815260200160028201805461066690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461069290611e19565b80156106dd5780601f106106b4576101008083540402835291602001916106dd565b820191905f5260205f20905b8154815290600101906020018083116106c057829003601f168201915b505050505081526020016003820180546106f690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461072290611e19565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b5050509183525050600491909101546001600160a01b031660209091015292915050565b6107ba7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561172a565b5f838152600660205260409020600401546001600160a01b03166108315760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b60648201526084015b60405180910390fd5b5f83815260066020526040808220815160a0810190925280548290829061085790611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461088390611e19565b80156108ce5780601f106108a5576101008083540402835291602001916108ce565b820191905f5260205f20905b8154815290600101906020018083116108b157829003601f168201915b505050505081526020016001820180546108e790611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461091390611e19565b801561095e5780601f106109355761010080835404028352916020019161095e565b820191905f5260205f20905b81548152906001019060200180831161094157829003601f168201915b5050505050815260200160028201805461097790611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546109a390611e19565b80156109ee5780601f106109c5576101008083540402835291602001916109ee565b820191905f5260205f20905b8154815290600101906020018083116109d157829003601f168201915b50505050508152602001600382018054610a0790611e19565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3390611e19565b8015610a7e5780601f10610a5557610100808354040283529160200191610a7e565b820191905f5260205f20905b815481529060010190602001808311610a6157829003601f168201915b50505091835250506004918201546001600160a01b039081166020909201919091526060830151604051630b76139f60e31b8152939450925f927f000000000000000000000000000000000000000000000000000000000000000090921691635bb09cf891610aef91869101611da0565b602060405180830381865afa158015610b0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190611e51565b90505f819050806001600160a01b031663f6e548e985602001518888610b52611439565b6040518563ffffffff1660e01b8152600401610b719493929190611e94565b602060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190611ed8565b610bfc5760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610828565b5f84608001516001600160a01b031663c8db658260e01b898989604051602401610c2893929190611ef7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610c669190611f19565b5f604051808303815f865af19150503d805f8114610c9f576040519150601f19603f3d011682016040523d82523d5f602084013e610ca4565b606091505b5050905080610cc957604051632d11d1d160e21b815260048101899052602401610828565b60405188907fd4ea4684d3a92e95520ada379d1fd257a1e354567964ffd985b5f28c5940e7ab905f90a25f88815260066020526040812090610d0b82826119c5565b610d18600183015f6119c5565b610d25600283015f6119c5565b610d32600383015f6119c5565b5060040180546001600160a01b03191690555050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f6001805f828254610d889190611f34565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa3390610ddb908a908a90600401611f53565b602060405180830381865afa158015610df6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1a9190611ed8565b610e665760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f7274656400006044820152606401610828565b610ead600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092949392505061182f9050565b610f045760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b6064820152608401610828565b610f4a5f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092949392505061182f9050565b610fa25760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b6064820152608401610828565b81801561104057610fe784848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506118c392505050565b156110405760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b6064820152608401610828565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890611090908c908c90600401611f53565b602060405180830381865afa1580156110ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cf9190611e51565b60405163eae1e15b60e01b815290915081905f906001600160a01b0383169063eae1e15b90611104908c908c90600401611f53565b5f60405180830381865afa15801561111e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111459190810190611ff4565b6040805160c06020601f8d01819004028201810190925260a081018b81529293509182918c908c90819085018382808284375f92019190915250505090825250602080820184905260408051601f8b0183900483028101830182528a8152920191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8f018190048102820181019092528d815291810191908e908e90819084018382808284375f9201829052509385525050336020938401525060015481526006909152604090208151819061121f9082612084565b50602082015160018201906112349082612084565b50604082015160028201906112499082612084565b506060820151600382019061125e9082612084565b506080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050336001600160a01b03166001547ff0a5ef4bc87d6534674b1469f4b31d03c6510d0f7ab353f3e53f9d1d87ead02b8d8d8d8d878e8e426040516112d8989796959493929190612144565b60405180910390a350506001549998505050505050505050565b60608167ffffffffffffffff81111561130d5761130d611f6e565b60405190808252806020026020018201604052801561134057816020015b606081526020019060019003908161132b5790505b5090505f5b82811015611432575f8030868685818110611362576113626121a9565b905060200281019061137491906121bd565b604051611382929190612200565b5f60405180830381855af49150503d805f81146113ba576040519150601f19603f3d011682016040523d82523d5f602084013e6113bf565b606091505b50915091508161140a576044815110156113d7575f80fd5b600481019050808060200190518101906113f19190611ff4565b60405162461bcd60e51b81526004016108289190611da0565b8084848151811061141d5761141d6121a9565b60209081029190910101525050600101611345565b5092915050565b60408051608081018083526060926114b392916002918391908201908390819081845b81548152602001906001019080831161145c57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116114925750505050508152505061190e565b905090565b5f828152602081905260409020600101546114d28161172a565b6104a783836117c6565b60066020525f90815260409020805481906114f690611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461152290611e19565b801561156d5780601f106115445761010080835404028352916020019161156d565b820191905f5260205f20905b81548152906001019060200180831161155057829003601f168201915b50505050509080600101805461158290611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546115ae90611e19565b80156115f95780601f106115d0576101008083540402835291602001916115f9565b820191905f5260205f20905b8154815290600101906020018083116115dc57829003601f168201915b50505050509080600201805461160e90611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461163a90611e19565b80156116855780601f1061165c57610100808354040283529160200191611685565b820191905f5260205f20905b81548152906001019060200180831161166857829003601f168201915b50505050509080600301805461169a90611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546116c690611e19565b80156117115780601f106116e857610100808354040283529160200191611711565b820191905f5260205f20905b8154815290600101906020018083116116f457829003601f168201915b505050600490930154919250506001600160a01b031685565b611734813361196a565b50565b5f6117428383610d4e565b6117bf575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556117773390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610403565b505f610403565b5f6117d18383610d4e565b156117bf575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610403565b5f818311156118a65760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e6774680000000000006064820152608401610828565b83518381108015906118b85750828111155b9150505b9392505050565b5f805b8251811015611905578281815181106118e1576118e16121a9565b01602001516001600160f81b031916156118fd57505f92915050565b6001016118c6565b50600192915050565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b6119748282610d4e565b6119a35760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610828565b5050565b60405180604001604052806002906020820280368337509192915050565b5080546119d190611e19565b5f825580601f106119e0575050565b601f0160209004905f5260205f209081019061173491905b80821115611a0b575f81556001016119f8565b5090565b5f60208284031215611a1f575f80fd5b81356001600160e01b0319811681146118bc575f80fd5b5f60208284031215611a46575f80fd5b5035919050565b805f5b60028110156104a7578151845260209384019390910190600101611a50565b60808101611a7d8285611a4d565b6118bc6040830184611a4d565b6001600160a01b0381168114611734575f80fd5b5f8060408385031215611aaf575f80fd5b823591506020830135611ac181611a8a565b809150509250929050565b5f5b83811015611ae6578181015183820152602001611ace565b50505f910152565b5f8151808452611b05816020860160208601611acc565b601f01601f19169290920160200192915050565b602081525f825160a06020840152611b3460c0840182611aee565b90506020840151601f1980858403016040860152611b528383611aee565b92506040860151915080858403016060860152611b6f8383611aee565b9250606086015191508085840301608086015250611b8d8282611aee565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f8083601f840112611bbf575f80fd5b50813567ffffffffffffffff811115611bd6575f80fd5b602083019150836020828501011115611bed575f80fd5b9250929050565b5f805f60408486031215611c06575f80fd5b83359250602084013567ffffffffffffffff811115611c23575f80fd5b611c2f86828701611baf565b9497909650939450505050565b5f805f805f8060608789031215611c51575f80fd5b863567ffffffffffffffff80821115611c68575f80fd5b611c748a838b01611baf565b90985096506020890135915080821115611c8c575f80fd5b611c988a838b01611baf565b90965094506040890135915080821115611cb0575f80fd5b50611cbd89828a01611baf565b979a9699509497509295939492505050565b5f8060208385031215611ce0575f80fd5b823567ffffffffffffffff80821115611cf7575f80fd5b818501915085601f830112611d0a575f80fd5b813581811115611d18575f80fd5b8660208260051b8501011115611d2c575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611d9357603f19888603018452611d81858351611aee565b94509285019290850190600101611d65565b5092979650505050505050565b602081525f6118bc6020830184611aee565b60a081525f611dc460a0830188611aee565b8281036020840152611dd68188611aee565b90508281036040840152611dea8187611aee565b90508281036060840152611dfe8186611aee565b91505060018060a01b03831660808301529695505050505050565b600181811c90821680611e2d57607f821691505b602082108103611e4b57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611e61575f80fd5b81516118bc81611a8a565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f611ea66060830187611aee565b8281036020840152611eb9818688611e6c565b90508281036040840152611ecd8185611aee565b979650505050505050565b5f60208284031215611ee8575f80fd5b815180151581146118bc575f80fd5b838152604060208201525f611f10604083018486611e6c565b95945050505050565b5f8251611f2a818460208701611acc565b9190910192915050565b8082018082111561040357634e487b7160e01b5f52601160045260245ffd5b602081525f611f66602083018486611e6c565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611f9c57611f9c611f6e565b604051601f8501601f19908116603f01168101908282118183101715611fc457611fc4611f6e565b81604052809350858152868686011115611fdc575f80fd5b611fea866020830187611acc565b5050509392505050565b5f60208284031215612004575f80fd5b815167ffffffffffffffff81111561201a575f80fd5b8201601f8101841361202a575f80fd5b611f6684825160208401611f82565b601f8211156104e057805f5260205f20601f840160051c8101602085101561205e5750805b601f840160051c820191505b8181101561207d575f815560010161206a565b5050505050565b815167ffffffffffffffff81111561209e5761209e611f6e565b6120b2816120ac8454611e19565b84612039565b602080601f8311600181146120e5575f84156120ce5750858301515b5f19600386901b1c1916600185901b17855561213c565b5f85815260208120601f198616915b82811015612113578886015182559484019460019091019084016120f4565b508582101561213057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60a081525f61215760a083018a8c611e6c565b828103602084015261216a81898b611e6c565b9050828103604084015261217e8188611aee565b90508281036060840152612193818688611e6c565b9150508260808301529998505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e198436030181126121d2575f80fd5b83018035915067ffffffffffffffff8211156121ec575f80fd5b602001915036819003821315611bed575f80fd5b818382375f910190815291905056fea2646970667358221220b2a1d1ef228386d90aa71c642e507ad785ec67dbd706ec3ead27a10688cdd69b64736f6c63430008180033"; + "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b506040516200265c3803806200265c8339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b608051612216620004465f395f81816102d9015281816109fa01528181610ce40152610f9901526122165ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c806391d148541161009e578063acae9fee1161006e578063acae9fee1461025b578063cd802c9114610270578063d547741f1461029d578063d5c2d4f5146102b0578063e6b3ca71146102d4575f80fd5b806391d148541461020e57806395b8d07314610221578063a217fddf14610234578063ac9650d81461023b575f80fd5b806336568abe116100e457806336568abe1461019857806344880e1e146101ab57806347c03186146101cb5780635eab2b20146101d457806375b238fc146101e7575f80fd5b806301ffc9a714610115578063248a9ca31461013d5780632e3344521461016d5780632f2ff15d14610183575b5f80fd5b6101286101233660046119e5565b610313565b60405190151581526020015b60405180910390f35b61015f61014b366004611a0c565b5f9081526020819052604090206001015490565b604051908152602001610134565b610175610349565b604051610134929190611a45565b610196610191366004611a74565b6103c3565b005b6101966101a6366004611a74565b6103ed565b6101be6101b9366004611a0c565b610425565b6040516101349190611aef565b61015f60015481565b6101966101e2366004611bca565b6106d1565b61015f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b61012861021c366004611a74565b610c8e565b61015f61022f366004611c12565b610cb6565b61015f5f81565b61024e610249366004611ca5565b611232565b6040516101349190611d14565b610263611318565b6040516101349190611d76565b61012861027e366004611a0c565b5f908152600660205260409020600401546001600160a01b0316151590565b6101966102ab366004611a74565b611397565b6102c36102be366004611a0c565b6113bb565b604051610134959493929190611d88565b6102fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b5f6001600160e01b03198216637965db0b60e01b148061034357506301ffc9a760e01b6001600160e01b03198316145b92915050565b61035161197d565b61035961197d565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610372575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116103a15750505050509050915091509091565b5f828152602081905260409020600101546103dd81611609565b6103e78383611616565b50505050565b6001600160a01b03811633146104165760405163334bd91960e11b815260040160405180910390fd5b61042082826116a5565b505050565b61045f6040518060a00160405280606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160a0810190925280548290829061048690611def565b80601f01602080910402602001604051908101604052809291908181526020018280546104b290611def565b80156104fd5780601f106104d4576101008083540402835291602001916104fd565b820191905f5260205f20905b8154815290600101906020018083116104e057829003601f168201915b5050505050815260200160018201805461051690611def565b80601f016020809104026020016040519081016040528092919081815260200182805461054290611def565b801561058d5780601f106105645761010080835404028352916020019161058d565b820191905f5260205f20905b81548152906001019060200180831161057057829003601f168201915b505050505081526020016002820180546105a690611def565b80601f01602080910402602001604051908101604052809291908181526020018280546105d290611def565b801561061d5780601f106105f45761010080835404028352916020019161061d565b820191905f5260205f20905b81548152906001019060200180831161060057829003601f168201915b5050505050815260200160038201805461063690611def565b80601f016020809104026020016040519081016040528092919081815260200182805461066290611def565b80156106ad5780601f10610684576101008083540402835291602001916106ad565b820191905f5260205f20905b81548152906001019060200180831161069057829003601f168201915b5050509183525050600491909101546001600160a01b031660209091015292915050565b6106fa7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611609565b5f838152600660205260409020600401546001600160a01b03166107715760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b60648201526084015b60405180910390fd5b5f83815260066020526040808220815160a0810190925280548290829061079790611def565b80601f01602080910402602001604051908101604052809291908181526020018280546107c390611def565b801561080e5780601f106107e55761010080835404028352916020019161080e565b820191905f5260205f20905b8154815290600101906020018083116107f157829003601f168201915b5050505050815260200160018201805461082790611def565b80601f016020809104026020016040519081016040528092919081815260200182805461085390611def565b801561089e5780601f106108755761010080835404028352916020019161089e565b820191905f5260205f20905b81548152906001019060200180831161088157829003601f168201915b505050505081526020016002820180546108b790611def565b80601f01602080910402602001604051908101604052809291908181526020018280546108e390611def565b801561092e5780601f106109055761010080835404028352916020019161092e565b820191905f5260205f20905b81548152906001019060200180831161091157829003601f168201915b5050505050815260200160038201805461094790611def565b80601f016020809104026020016040519081016040528092919081815260200182805461097390611def565b80156109be5780601f10610995576101008083540402835291602001916109be565b820191905f5260205f20905b8154815290600101906020018083116109a157829003601f168201915b50505091835250506004918201546001600160a01b039081166020909201919091526060830151604051630b76139f60e31b8152939450925f927f000000000000000000000000000000000000000000000000000000000000000090921691635bb09cf891610a2f91869101611d76565b602060405180830381865afa158015610a4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6e9190611e27565b90505f819050806001600160a01b031663f6e548e985602001518888610a92611318565b6040518563ffffffff1660e01b8152600401610ab19493929190611e6a565b602060405180830381865afa158015610acc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af09190611eae565b610b3c5760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610768565b5f84608001516001600160a01b031663c8db658260e01b898989604051602401610b6893929190611ecd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610ba69190611ee6565b5f604051808303815f865af19150503d805f8114610bdf576040519150601f19603f3d011682016040523d82523d5f602084013e610be4565b606091505b5050905080610c0957604051632d11d1d160e21b815260048101899052602401610768565b60405188907fd4ea4684d3a92e95520ada379d1fd257a1e354567964ffd985b5f28c5940e7ab905f90a25f88815260066020526040812090610c4b828261199b565b610c58600183015f61199b565b610c65600283015f61199b565b610c72600383015f61199b565b5060040180546001600160a01b03191690555050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f6001805f828254610cc89190611f15565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa3390610d1b908a908a90600401611f28565b602060405180830381865afa158015610d36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5a9190611eae565b610da65760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f7274656400006044820152606401610768565b610ded600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092949392505061170e9050565b610e445760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b6064820152608401610768565b610e8a5f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092949392505061170e9050565b610ee25760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b6064820152608401610768565b818015610f8057610f2784848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506117a292505050565b15610f805760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b6064820152608401610768565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890610fd0908c908c90600401611f28565b602060405180830381865afa158015610feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100f9190611e27565b60405163eae1e15b60e01b815290915081905f906001600160a01b0383169063eae1e15b90611044908c908c90600401611f28565b5f60405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110859190810190611f57565b6040805160c06020601f8d01819004028201810190925260a081018b81529293509182918c908c90819085018382808284375f92019190915250505090825250602080820184905260408051601f8b0183900483028101830182528a8152920191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8f018190048102820181019092528d815291810191908e908e90819084018382808284375f9201829052509385525050336020938401525060015481526006909152604090208151819061115f908261203f565b5060208201516001820190611174908261203f565b5060408201516002820190611189908261203f565b506060820151600382019061119e908261203f565b506080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050336001600160a01b03166001547ff0a5ef4bc87d6534674b1469f4b31d03c6510d0f7ab353f3e53f9d1d87ead02b8d8d8d8d878e8e426040516112189897969594939291906120ff565b60405180910390a350506001549998505050505050505050565b604080515f8152602081019091526060908267ffffffffffffffff81111561125c5761125c611f43565b60405190808252806020026020018201604052801561128f57816020015b606081526020019060019003908161127a5790505b5091505f5b83811015611310576112eb308686848181106112b2576112b2612164565b90506020028101906112c49190612178565b856040516020016112d7939291906121bb565b6040516020818303038152906040526117ed565b8382815181106112fd576112fd612164565b6020908102919091010152600101611294565b505092915050565b604080516080810180835260609261139292916002918391908201908390819081845b81548152602001906001019080831161133b57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116113715750505050508152505061185f565b905090565b5f828152602081905260409020600101546113b181611609565b6103e783836116a5565b60066020525f90815260409020805481906113d590611def565b80601f016020809104026020016040519081016040528092919081815260200182805461140190611def565b801561144c5780601f106114235761010080835404028352916020019161144c565b820191905f5260205f20905b81548152906001019060200180831161142f57829003601f168201915b50505050509080600101805461146190611def565b80601f016020809104026020016040519081016040528092919081815260200182805461148d90611def565b80156114d85780601f106114af576101008083540402835291602001916114d8565b820191905f5260205f20905b8154815290600101906020018083116114bb57829003601f168201915b5050505050908060020180546114ed90611def565b80601f016020809104026020016040519081016040528092919081815260200182805461151990611def565b80156115645780601f1061153b57610100808354040283529160200191611564565b820191905f5260205f20905b81548152906001019060200180831161154757829003601f168201915b50505050509080600301805461157990611def565b80601f01602080910402602001604051908101604052809291908181526020018280546115a590611def565b80156115f05780601f106115c7576101008083540402835291602001916115f0565b820191905f5260205f20905b8154815290600101906020018083116115d357829003601f168201915b505050600490930154919250506001600160a01b031685565b61161381336118bb565b50565b5f6116218383610c8e565b61169e575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556116563390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610343565b505f610343565b5f6116b08383610c8e565b1561169e575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610343565b5f818311156117855760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e6774680000000000006064820152608401610768565b83518381108015906117975750828111155b9150505b9392505050565b5f805b82518110156117e4578281815181106117c0576117c0612164565b01602001516001600160f81b031916156117dc57505f92915050565b6001016117a5565b50600192915050565b60605f80846001600160a01b0316846040516118099190611ee6565b5f60405180830381855af49150503d805f8114611841576040519150601f19603f3d011682016040523d82523d5f602084013e611846565b606091505b50915091506118568583836118f8565b95945050505050565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b6118c58282610c8e565b6118f45760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610768565b5050565b60608261190d5761190882611954565b61179b565b815115801561192457506001600160a01b0384163b155b1561194d57604051639996b31560e01b81526001600160a01b0385166004820152602401610768565b508061179b565b8051156119645780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052806002906020820280368337509192915050565b5080546119a790611def565b5f825580601f106119b6575050565b601f0160209004905f5260205f209081019061161391905b808211156119e1575f81556001016119ce565b5090565b5f602082840312156119f5575f80fd5b81356001600160e01b03198116811461179b575f80fd5b5f60208284031215611a1c575f80fd5b5035919050565b805f5b60028110156103e7578151845260209384019390910190600101611a26565b60808101611a538285611a23565b61179b6040830184611a23565b6001600160a01b0381168114611613575f80fd5b5f8060408385031215611a85575f80fd5b823591506020830135611a9781611a60565b809150509250929050565b5f5b83811015611abc578181015183820152602001611aa4565b50505f910152565b5f8151808452611adb816020860160208601611aa2565b601f01601f19169290920160200192915050565b602081525f825160a06020840152611b0a60c0840182611ac4565b90506020840151601f1980858403016040860152611b288383611ac4565b92506040860151915080858403016060860152611b458383611ac4565b9250606086015191508085840301608086015250611b638282611ac4565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f8083601f840112611b95575f80fd5b50813567ffffffffffffffff811115611bac575f80fd5b602083019150836020828501011115611bc3575f80fd5b9250929050565b5f805f60408486031215611bdc575f80fd5b83359250602084013567ffffffffffffffff811115611bf9575f80fd5b611c0586828701611b85565b9497909650939450505050565b5f805f805f8060608789031215611c27575f80fd5b863567ffffffffffffffff80821115611c3e575f80fd5b611c4a8a838b01611b85565b90985096506020890135915080821115611c62575f80fd5b611c6e8a838b01611b85565b90965094506040890135915080821115611c86575f80fd5b50611c9389828a01611b85565b979a9699509497509295939492505050565b5f8060208385031215611cb6575f80fd5b823567ffffffffffffffff80821115611ccd575f80fd5b818501915085601f830112611ce0575f80fd5b813581811115611cee575f80fd5b8660208260051b8501011115611d02575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611d6957603f19888603018452611d57858351611ac4565b94509285019290850190600101611d3b565b5092979650505050505050565b602081525f61179b6020830184611ac4565b60a081525f611d9a60a0830188611ac4565b8281036020840152611dac8188611ac4565b90508281036040840152611dc08187611ac4565b90508281036060840152611dd48186611ac4565b91505060018060a01b03831660808301529695505050505050565b600181811c90821680611e0357607f821691505b602082108103611e2157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611e37575f80fd5b815161179b81611a60565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f611e7c6060830187611ac4565b8281036020840152611e8f818688611e42565b90508281036040840152611ea38185611ac4565b979650505050505050565b5f60208284031215611ebe575f80fd5b8151801515811461179b575f80fd5b838152604060208201525f611856604083018486611e42565b5f8251611ef7818460208701611aa2565b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561034357610343611f01565b602081525f611f3b602083018486611e42565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611f67575f80fd5b815167ffffffffffffffff80821115611f7e575f80fd5b818401915084601f830112611f91575f80fd5b815181811115611fa357611fa3611f43565b604051601f8201601f19908116603f01168101908382118183101715611fcb57611fcb611f43565b81604052828152876020848701011115611fe3575f80fd5b611ea3836020830160208801611aa2565b601f82111561042057805f5260205f20601f840160051c810160208510156120195750805b601f840160051c820191505b81811015612038575f8155600101612025565b5050505050565b815167ffffffffffffffff81111561205957612059611f43565b61206d816120678454611def565b84611ff4565b602080601f8311600181146120a0575f84156120895750858301515b5f19600386901b1c1916600185901b1785556120f7565b5f85815260208120601f198616915b828110156120ce578886015182559484019460019091019084016120af565b50858210156120eb57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60a081525f61211260a083018a8c611e42565b828103602084015261212581898b611e42565b905082810360408401526121398188611ac4565b9050828103606084015261214e818688611e42565b9150508260808301529998505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e1984360301811261218d575f80fd5b83018035915067ffffffffffffffff8211156121a7575f80fd5b602001915036819003821315611bc3575f80fd5b828482375f8382015f815283516121d6818360208801611aa2565b019594505050505056fea2646970667358221220dc6942d97dc2517a11247b8f0b07ca1eede0947f5e7190e6970df4aee1ba334264736f6c63430008180033"; type SignatureSenderConstructorParams = | [signer?: Signer] diff --git a/src/generated/factories/index.ts b/src/generated/factories/index.ts index a55d9cb..1fb333f 100644 --- a/src/generated/factories/index.ts +++ b/src/generated/factories/index.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export { AbstractBlocklockReceiver__factory } from "./AbstractBlocklockReceiver__factory"; export { AccessControl__factory } from "./AccessControl__factory"; +export { Address__factory } from "./Address__factory"; export { BLS__factory } from "./BLS__factory"; export { BlocklockSender__factory } from "./BlocklockSender__factory"; export { BlocklockSignatureScheme__factory } from "./BlocklockSignatureScheme__factory"; @@ -11,6 +12,7 @@ export { DecryptionReceiverBase__factory } from "./DecryptionReceiverBase__facto export { DecryptionSender__factory } from "./DecryptionSender__factory"; export { Deployer__factory } from "./Deployer__factory"; export { ERC165__factory } from "./ERC165__factory"; +export { Errors__factory } from "./Errors__factory"; export { IAccessControl__factory } from "./IAccessControl__factory"; export { IBlocklockReceiver__factory } from "./IBlocklockReceiver__factory"; export { IBlocklockSender__factory } from "./IBlocklockSender__factory"; diff --git a/src/generated/index.ts b/src/generated/index.ts index 7587743..3469320 100644 --- a/src/generated/index.ts +++ b/src/generated/index.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export type { AbstractBlocklockReceiver } from "./AbstractBlocklockReceiver"; export type { AccessControl } from "./AccessControl"; +export type { Address } from "./Address"; export type { BLS } from "./BLS"; export type { BlocklockSender } from "./BlocklockSender"; export type { BlocklockSignatureScheme } from "./BlocklockSignatureScheme"; @@ -11,6 +12,7 @@ export type { DecryptionReceiverBase } from "./DecryptionReceiverBase"; export type { DecryptionSender } from "./DecryptionSender"; export type { Deployer } from "./Deployer"; export type { ERC165 } from "./ERC165"; +export type { Errors } from "./Errors"; export type { IAccessControl } from "./IAccessControl"; export type { IBlocklockReceiver } from "./IBlocklockReceiver"; export type { IBlocklockSender } from "./IBlocklockSender"; @@ -30,6 +32,7 @@ export type { SignatureSender } from "./SignatureSender"; export * as factories from "./factories"; export { AbstractBlocklockReceiver__factory } from "./factories/AbstractBlocklockReceiver__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; +export { Address__factory } from "./factories/Address__factory"; export { BlocklockSender__factory } from "./factories/BlocklockSender__factory"; export { BlocklockSignatureScheme__factory } from "./factories/BlocklockSignatureScheme__factory"; export { BLS__factory } from "./factories/BLS__factory"; @@ -38,6 +41,7 @@ export { DecryptionReceiverBase__factory } from "./factories/DecryptionReceiverB export { DecryptionSender__factory } from "./factories/DecryptionSender__factory"; export { Deployer__factory } from "./factories/Deployer__factory"; export { ERC165__factory } from "./factories/ERC165__factory"; +export { Errors__factory } from "./factories/Errors__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { IBlocklockReceiver__factory } from "./factories/IBlocklockReceiver__factory"; export { IBlocklockSender__factory } from "./factories/IBlocklockSender__factory"; diff --git a/src/index.ts b/src/index.ts index 5f30219..118db93 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,3 @@ export {Buffer} from "buffer" export * from "./blocklock" export * from "./ethers-utils" -export * from "./solidity-encoder" -export * from "./solidity-decoder" \ No newline at end of file diff --git a/test/blocklock.test.ts b/test/blocklock.test.ts index f87f57c..7a9675c 100644 --- a/test/blocklock.test.ts +++ b/test/blocklock.test.ts @@ -2,17 +2,6 @@ import {describe, it, expect} from "@jest/globals" import {Wallet} from "ethers" import {Blocklock} from "../src" -const blocklock_default_pk = { - x: { - c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), - c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), - }, - y: { - c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), - c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), - }, - }; - describe("Blocklock", () => { it("class can be constructed", () => { const wallet = new Wallet("0x5cb3c5ba25c91d84ef5dabf4152e909795074f9958b091b010644cb9c30e3203") diff --git a/test/integration.test.ts b/test/integration.test.ts index 6a91c4e..b4f710d 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -1,15 +1,47 @@ import Ganache from "ganache"; -import { ZeroAddress, ethers } from "ethers"; +import { ZeroAddress, ethers, getBytes, isHexString, toUtf8Bytes, AbiCoder } from "ethers"; import { describe, it, expect, beforeAll, afterAll } from "@jest/globals"; - import {MockBlocklockReceiver__factory, BlocklockSender__factory, BlocklockSignatureScheme__factory, DecryptionSender__factory, SignatureSchemeAddressProvider__factory, SignatureSender__factory} from "../src/generated" +import {Blocklock, encodeCiphertextToSolidity, parseSolidityCiphertextString} from "../src" +import { SolidityEncoder } from "../src/solidity-encoder"; +import {BlsBn254} from "../src/crypto/bls-bn254"; +import {extractSingleLog} from "../src" +import { keccak_256 } from "@noble/hashes/sha3"; +import { IbeOpts, preprocess_decryption_key_g1 } from "../src/crypto/ibe-bn254"; +import { TypesLib as BlocklockTypes } from "../src/generated/BlocklockSender"; + +const blocklock_default_pk = { + x: { + c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), + c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), + }, + y: { + c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), + c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), + }, +}; + +const BLOCKLOCK_IBE_OPTS: IbeOpts = { + hash: keccak_256, + k: 128, + expand_fn: "xmd", + dsts: { + H1_G1: Buffer.from("BLOCKLOCK_BN254G1_XMD:KECCAK-256_SVDW_RO_H1_"), + H2: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H2_"), + H3: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H3_"), + H4: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H4_"), + }, +}; + +const blsKey = "0x58aabbe98959c4dcb96c44c53be7e3bb980791fc7a9e03445c4af612a45ac906"; +const SCHEME_ID = "BN254-BLS-BLOCKLOCK"; let server: any; let provider: ethers.JsonRpcProvider; let wallet: ethers.Signer; let accounts: ethers.Signer[]; -describe("Blockchain Integration Tests with Ganache", () => { +describe("Blocklock blockchain integration tests with Ganache", () => { beforeAll(async () => { // Start Ganache server with a mnemonic server = Ganache.server({ @@ -48,22 +80,7 @@ describe("Blockchain Integration Tests with Ganache", () => { expect(await wallet.getAddress()).not.toBe(ZeroAddress); }); - it.only("can request blocklock decryption for user contract", async () => { - /** FIELD VARIABLES */ - - const blocklock_default_pk = { - x: { - c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), - c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), - }, - y: { - c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), - c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), - }, - }; - - const SCHEME_ID = "BN254-BLS-BLOCKLOCK"; - + it("can request blocklock decryption from user contract with on-chain decryption", async () => { /** DEPLOY CONTRACTS */ // deploy signature scheme address provider @@ -117,6 +134,7 @@ describe("Blockchain Integration Tests with Ganache", () => { schemeProviderAddr, ) await decryptionSender.waitForDeployment() + const decryptionSenderInstance = DecryptionSender__factory.connect(await decryptionSender.getAddress(), wallet) // deploy blocklock sender const BlocklockSender = new ethers.ContractFactory( @@ -135,12 +153,83 @@ describe("Blockchain Integration Tests with Ganache", () => { MockBlocklockReceiver__factory.bytecode, wallet ) - const mockBlocklockReceiver = await MockBlocklockReceiver.deploy() + const mockBlocklockReceiver = await MockBlocklockReceiver.deploy( + await blocklockSender.getAddress() + ) await mockBlocklockReceiver.waitForDeployment() - // const blockHeight = await provider.getBlockNumber(); - // console.log("current block number", blockHeight) - /** */ + /** Blocklock js Integration */ + + const blocklockjs = new Blocklock(wallet, await blocklockSender.getAddress()) + const mockBlocklockReceiverInstance = MockBlocklockReceiver__factory.connect(await mockBlocklockReceiver.getAddress(), wallet); + + expect(await mockBlocklockReceiverInstance.plainTextValue()).toBe(BigInt(0)); + + const blockHeight = BigInt(await provider.getBlockNumber() + 2); + const msg = ethers.parseEther("4"); + const encoder = new SolidityEncoder() + const msgBytes = encoder.encodeUint256(msg); + const encodedMessage = getBytes(msgBytes); + + const ct = blocklockjs.encrypt(encodedMessage, blockHeight, blocklock_default_pk); + + let tx = await mockBlocklockReceiverInstance.connect(wallet).createTimelockRequest(blockHeight, encodeCiphertextToSolidity(ct)) + const receipt = await tx.wait(1); + if (!receipt) { + throw new Error("transaction has not been mined"); + } + + const blockRequest = await blocklockjs.fetchBlocklockRequest("1"); + expect(blockRequest!.blockHeight).toBe(BigInt(blockHeight)); + + let blocklockRequestStatus = await blocklockjs.fetchBlocklockStatus("1") + expect(blocklockRequestStatus!.blockHeight).toBe(BigInt(blockHeight)); + expect(blocklockRequestStatus?.decryptionKey).toBe(undefined); + + const decryptionSenderIface = DecryptionSender__factory.createInterface(); + const [requestID, callback, schemeID, condition, ciphertext] = extractSingleLog( + decryptionSenderIface, + receipt, + await decryptionSender.getAddress(), + decryptionSenderIface.getEvent("DecryptionRequested"), + ); + console.log(`received decryption request id ${requestID}`); + console.log(`blocklock request id ${blockRequest?.id}`); + console.log(`callback address ${callback}, scheme id ${schemeID}`); + + const bls = await BlsBn254.create(); + const { pubKey, secretKey } = bls.createKeyPair(blsKey); + + const conditionBytes = isHexString(condition) ? getBytes(condition) : toUtf8Bytes(condition); + const m = bls.hashToPoint(BLOCKLOCK_IBE_OPTS.dsts.H1_G1, conditionBytes); + + const parsedCiphertext = parseSolidityCiphertextString(ciphertext); + const signature = bls.sign(m, secretKey).signature; + const sig = bls.serialiseG1Point(signature); + const sigBytes = AbiCoder.defaultAbiCoder().encode(["uint256", "uint256"], [sig[0], sig[1]]); + + const decryption_key = preprocess_decryption_key_g1(parsedCiphertext, { x: sig[0], y: sig[1] }, BLOCKLOCK_IBE_OPTS); + + tx = await decryptionSenderInstance.connect(wallet).fulfilDecryptionRequest(requestID, decryption_key, sigBytes); + + const txreceipt = await tx.wait(1); + if (!txreceipt) { + throw new Error("transaction has not been mined"); + } + + const iface = BlocklockSender__factory.createInterface(); + const [, , , ] = extractSingleLog( + iface, + txreceipt, + await blocklockSender.getAddress(), + iface.getEvent("BlocklockCallbackSuccess"), + ); + + blocklockRequestStatus = await blocklockjs.fetchBlocklockStatus("1") + expect(blocklockRequestStatus!.blockHeight).toBe(blockHeight); + expect(blocklockRequestStatus?.decryptionKey).not.toBe(undefined); + + expect(await mockBlocklockReceiverInstance.plainTextValue()).toBe(BigInt(msg)); }); }); diff --git a/test/solidity-encoding.test.ts b/test/solidity-encoding.test.ts index 388051d..ab3f8e0 100644 --- a/test/solidity-encoding.test.ts +++ b/test/solidity-encoding.test.ts @@ -1,6 +1,7 @@ import {describe, it, expect, beforeAll} from "@jest/globals" import { ethers, getBytes } from "ethers"; -import { SolidityEncoder, SolidityDecoder} from "../src"; +import { SolidityEncoder } from "../src/solidity-encoder"; +import { SolidityDecoder } from "../src/solidity-decoder"; function uint8ArrayToHex(uint8Array: Uint8Array) { const hexString = Array.from(uint8Array) @@ -9,7 +10,7 @@ function uint8ArrayToHex(uint8Array: Uint8Array) { return '0x' + hexString; } -describe("Solidity Encoding", () => { +describe("Solidity encoding and decoding", () => { let encoder: SolidityEncoder; let decoder: SolidityDecoder; From 29ce32323517d1a6c6b02398cd9cfa4bf5d9bc7a Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 17:00:55 +0000 Subject: [PATCH 22/53] remove solidity build folder from gitignore --- contracts/.gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/.gitignore b/contracts/.gitignore index 85198aa..ea12d23 100644 --- a/contracts/.gitignore +++ b/contracts/.gitignore @@ -1,6 +1,5 @@ # Compiler files cache/ -out/ # Ignores development broadcast logs !/broadcast From bb7a5135379b41fd59627acc18a27e597b0823ab Mon Sep 17 00:00:00 2001 From: najienka Date: Tue, 21 Jan 2025 17:05:32 +0000 Subject: [PATCH 23/53] update yarn build --- contracts/.gitignore | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/contracts/.gitignore b/contracts/.gitignore index ea12d23..85198aa 100644 --- a/contracts/.gitignore +++ b/contracts/.gitignore @@ -1,5 +1,6 @@ # Compiler files cache/ +out/ # Ignores development broadcast logs !/broadcast diff --git a/package.json b/package.json index d02cfc7..5dc0c84 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "types": "index.d.ts", "main": "index.js", "scripts": { - "build": "npm run clean && npm run build:js && npm run build:generate && npm run build:types", + "build": "npm run clean && npm run build:js && npm run build:types", "build:generate": "mkdir -p src/generated && npx typechain --target ethers-v6 --out-dir src/generated './contracts/out/*.sol/*.json'", "build:js": "esbuild src/index.ts --bundle --platform=node --target=node22 --outfile=index.js", "build:types": "tsc --emitDeclarationOnly", From bd073ed50eee69749afffbb4b2c1a0e292c364a5 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 10:33:43 +0000 Subject: [PATCH 24/53] add the option of blocklock public key in constructor with blocklock public key data type --- src/blocklock.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/blocklock.ts b/src/blocklock.ts index e049845..d2ca723 100644 --- a/src/blocklock.ts +++ b/src/blocklock.ts @@ -5,7 +5,17 @@ import {TypesLib as BlocklockTypes} from "./generated/BlocklockSender" import {extractSingleLog} from "./ethers-utils" import {Ciphertext, decrypt_g1_with_preprocess, encrypt_towards_identity_g1, G2, IbeOpts} from "./crypto/ibe-bn254" +export type BigIntPair = { + c0: bigint; + c1: bigint; + }; + + export type BlockLockPublicKey = { + x: BigIntPair; + y: BigIntPair; + }; + const BLOCKLOCK_IBE_OPTS: IbeOpts = { hash: keccak_256, k: 128, @@ -18,7 +28,7 @@ const BLOCKLOCK_IBE_OPTS: IbeOpts = { }, }; -export const BLOCKLOCK_DEFAULT_PUBLIC_KEY = { +export const BLOCKLOCK_DEFAULT_PUBLIC_KEY: BlockLockPublicKey = { x: { c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), @@ -33,9 +43,11 @@ const iface = BlocklockSender__factory.createInterface() export class Blocklock { private blocklockSender: BlocklockSender + private blocklockPublicKey: any - constructor(provider: Signer | Provider, private readonly blocklockSenderContractAddress: string) { + constructor(provider: Signer | Provider, private readonly blocklockSenderContractAddress: string, blocklockPublicKey: BlockLockPublicKey = BLOCKLOCK_DEFAULT_PUBLIC_KEY) { this.blocklockSender = BlocklockSender__factory.connect(blocklockSenderContractAddress, provider) + this.blocklockPublicKey = blocklockPublicKey } /** @@ -138,7 +150,7 @@ export class Blocklock { * @param pk public key of the scheme * @returns encrypted message */ - encrypt(message: Uint8Array, blockHeight: bigint, pk: G2 = BLOCKLOCK_DEFAULT_PUBLIC_KEY): Ciphertext { + encrypt(message: Uint8Array, blockHeight: bigint, pk: G2 = this.blocklockPublicKey): Ciphertext { const identity = blockHeightToBEBytes(blockHeight) return encrypt_towards_identity_g1(message, identity, pk, BLOCKLOCK_IBE_OPTS) } @@ -160,7 +172,7 @@ export class Blocklock { * @param pk public key of the scheme * @returns the identifier of the blocklock request, and the ciphertext */ - async encryptAndRegister(message: Uint8Array, blockHeight: bigint, pk: G2 = BLOCKLOCK_DEFAULT_PUBLIC_KEY): Promise<{ + async encryptAndRegister(message: Uint8Array, blockHeight: bigint, pk: G2 = this.blocklockPublicKey): Promise<{ id: string, ct: Ciphertext }> { From 1c1648be6c4980286e00d76edb71151144072bc0 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 10:34:31 +0000 Subject: [PATCH 25/53] fix linting --- src/blocklock.ts | 58 ++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/blocklock.ts b/src/blocklock.ts index d2ca723..91e4cdc 100644 --- a/src/blocklock.ts +++ b/src/blocklock.ts @@ -1,43 +1,43 @@ -import {getBytes, Provider, Signer, AbiCoder} from "ethers" -import {keccak_256} from "@noble/hashes/sha3" -import {BlocklockSender, BlocklockSender__factory} from "./generated" -import {TypesLib as BlocklockTypes} from "./generated/BlocklockSender" -import {extractSingleLog} from "./ethers-utils" -import {Ciphertext, decrypt_g1_with_preprocess, encrypt_towards_identity_g1, G2, IbeOpts} from "./crypto/ibe-bn254" +import { getBytes, Provider, Signer, AbiCoder } from "ethers" +import { keccak_256 } from "@noble/hashes/sha3" +import { BlocklockSender, BlocklockSender__factory } from "./generated" +import { TypesLib as BlocklockTypes } from "./generated/BlocklockSender" +import { extractSingleLog } from "./ethers-utils" +import { Ciphertext, decrypt_g1_with_preprocess, encrypt_towards_identity_g1, G2, IbeOpts } from "./crypto/ibe-bn254" export type BigIntPair = { c0: bigint; c1: bigint; - }; - - export type BlockLockPublicKey = { +}; + +export type BlockLockPublicKey = { x: BigIntPair; y: BigIntPair; - }; +}; + - const BLOCKLOCK_IBE_OPTS: IbeOpts = { hash: keccak_256, k: 128, expand_fn: "xmd", dsts: { - H1_G1: Buffer.from("BLOCKLOCK_BN254G1_XMD:KECCAK-256_SVDW_RO_H1_"), - H2: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H2_"), - H3: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H3_"), - H4: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H4_"), + H1_G1: Buffer.from("BLOCKLOCK_BN254G1_XMD:KECCAK-256_SVDW_RO_H1_"), + H2: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H2_"), + H3: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H3_"), + H4: Buffer.from("BLOCKLOCK_BN254_XMD:KECCAK-256_H4_"), }, - }; +}; export const BLOCKLOCK_DEFAULT_PUBLIC_KEY: BlockLockPublicKey = { x: { - c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), - c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), + c0: BigInt("0x2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca"), + c1: BigInt("0x2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf"), }, y: { - c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), - c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), + c0: BigInt("0x193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c"), + c1: BigInt("0x11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba"), }, - }; +}; const iface = BlocklockSender__factory.createInterface() @@ -225,7 +225,7 @@ export function parseSolidityCiphertext(ciphertext: BlocklockTypes.CiphertextStr const uY0 = ciphertext.u.y[0] const uY1 = ciphertext.u.y[1] return { - U: {x: {c0: uX0, c1: uX1}, y: {c0: uY0, c1: uY1}}, + U: { x: { c0: uX0, c1: uX1 }, y: { c0: uY0, c1: uY1 } }, V: getBytes(ciphertext.v), W: getBytes(ciphertext.w), } @@ -234,20 +234,20 @@ export function parseSolidityCiphertext(ciphertext: BlocklockTypes.CiphertextStr export function parseSolidityCiphertextString(ciphertext: string): Ciphertext { const ctBytes = getBytes(ciphertext); const ct: BlocklockTypes.CiphertextStructOutput = AbiCoder.defaultAbiCoder().decode( - ["tuple(tuple(uint256[2] x, uint256[2] y) u, bytes v, bytes w)"], - ctBytes, + ["tuple(tuple(uint256[2] x, uint256[2] y) u, bytes v, bytes w)"], + ctBytes, )[0]; - + const uX0 = ct.u.x[0]; const uX1 = ct.u.x[1]; const uY0 = ct.u.y[0]; const uY1 = ct.u.y[1]; return { - U: { x: { c0: uX0, c1: uX1 }, y: { c0: uY0, c1: uY1 } }, - V: getBytes(ct.v), - W: getBytes(ct.w), + U: { x: { c0: uX0, c1: uX1 }, y: { c0: uY0, c1: uY1 } }, + V: getBytes(ct.v), + W: getBytes(ct.w), }; - } +} export function encodeCiphertextToSolidity(ciphertext: Ciphertext): BlocklockTypes.CiphertextStruct { const u: { x: [bigint, bigint], y: [bigint, bigint] } = { From 2ca04e4ae7825ec70d16626306d9487cb7296af5 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 10:38:07 +0000 Subject: [PATCH 26/53] remove signature sender smart contract deployment from tests --- test/integration.test.ts | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/test/integration.test.ts b/test/integration.test.ts index b4f710d..5056986 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -81,7 +81,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { }); it("can request blocklock decryption from user contract with on-chain decryption", async () => { - /** DEPLOY CONTRACTS */ + /** Smart Contract Deployments */ // deploy signature scheme address provider const SignatureSchemeAddressProvider = new ethers.ContractFactory( @@ -107,20 +107,6 @@ describe("Blocklock blockchain integration tests with Ganache", () => { const schemeProviderContract = SignatureSchemeAddressProvider__factory.connect(schemeProviderAddr, wallet) await schemeProviderContract.updateSignatureScheme(SCHEME_ID, await blocklockScheme.getAddress()); - // deploy signature sender - const SignatureSender = new ethers.ContractFactory( - SignatureSender__factory.abi, - SignatureSender__factory.bytecode, - wallet, - ) - const signatureSender = await SignatureSender.deploy( - [blocklock_default_pk.x.c0, blocklock_default_pk.x.c1], - [blocklock_default_pk.y.c0, blocklock_default_pk.y.c1], - await wallet.getAddress(), - schemeProviderAddr, - ) - await signatureSender.waitForDeployment() - // deploy decryption sender const DecryptionSender = new ethers.ContractFactory( DecryptionSender__factory.abi, From a277d53de805ab39051139412fd14c687bf1f1a4 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 11:04:15 +0000 Subject: [PATCH 27/53] update user smart contract --- contracts/src/AbstractBlocklockReceiver.sol | 2 +- contracts/src/blocklock/BlocklockSender.sol | 2 +- .../decryption-requests/DecryptionSender.sol | 4 +- contracts/src/mocks/MockBlocklockReceiver.sol | 34 ++++++----------- src/generated/MockBlocklockReceiver.ts | 16 ++++---- .../factories/BlocklockSender__factory.ts | 2 +- .../factories/DecryptionSender__factory.ts | 2 +- .../MockBlocklockReceiver__factory.ts | 38 +++++++++---------- 8 files changed, 44 insertions(+), 56 deletions(-) diff --git a/contracts/src/AbstractBlocklockReceiver.sol b/contracts/src/AbstractBlocklockReceiver.sol index c0ada3f..626c176 100644 --- a/contracts/src/AbstractBlocklockReceiver.sol +++ b/contracts/src/AbstractBlocklockReceiver.sol @@ -16,5 +16,5 @@ abstract contract AbstractBlocklockReceiver is IBlocklockReceiver { blocklock = IBlocklockSender(blocklockSender); } - function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external onlyBlocklockContract {} + function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external virtual onlyBlocklockContract {} } diff --git a/contracts/src/blocklock/BlocklockSender.sol b/contracts/src/blocklock/BlocklockSender.sol index a392e8c..f32e3d1 100644 --- a/contracts/src/blocklock/BlocklockSender.sol +++ b/contracts/src/blocklock/BlocklockSender.sol @@ -85,7 +85,7 @@ contract BlocklockSender is IBlocklockSender, DecryptionReceiverBase { (bool success,) = r.callback.call( abi.encodeWithSelector(IBlocklockReceiver.receiveBlocklock.selector, decryptionRequestID, decryptionKey) ); - + if (!success) { revert BlocklockCallbackFailed(decryptionRequestID); } else { diff --git a/contracts/src/decryption-requests/DecryptionSender.sol b/contracts/src/decryption-requests/DecryptionSender.sol index 9139630..634e0d6 100644 --- a/contracts/src/decryption-requests/DecryptionSender.sol +++ b/contracts/src/decryption-requests/DecryptionSender.sol @@ -110,9 +110,9 @@ contract DecryptionSender is IDecryptionSender, AccessControl, Multicall { ISignatureScheme sigScheme = ISignatureScheme(schemeContractAddress); bytes memory messageHash = sigScheme.hashToBytes(request.condition); - + require(sigScheme.verifySignature(messageHash, signature, getPublicKeyBytes()), "Signature verification failed"); - + (bool success,) = request.callback.call( abi.encodeWithSelector( IDecryptionReceiver.receiveDecryptionData.selector, requestID, decryptionKey, signature diff --git a/contracts/src/mocks/MockBlocklockReceiver.sol b/contracts/src/mocks/MockBlocklockReceiver.sol index aeb2978..d9f669e 100644 --- a/contracts/src/mocks/MockBlocklockReceiver.sol +++ b/contracts/src/mocks/MockBlocklockReceiver.sol @@ -2,41 +2,29 @@ pragma solidity 0.8.24; import {TypesLib} from "../libraries/TypesLib.sol"; -import {IBlocklockSender} from "../interfaces/IBlocklockSender.sol"; -import {IBlocklockReceiver} from "../interfaces/IBlocklockReceiver.sol"; +import {AbstractBlocklockReceiver} from "../AbstractBlocklockReceiver.sol"; -contract MockBlocklockReceiver is IBlocklockReceiver { +contract MockBlocklockReceiver is AbstractBlocklockReceiver { uint256 public requestId; TypesLib.Ciphertext public encrytpedValue; uint256 public plainTextValue; - // ** State Variables ** - IBlocklockSender public timelock; // The timelock contract which we will be used to decrypt data at specific block + constructor(address blocklockContract) AbstractBlocklockReceiver(blocklockContract) {} - // ** Modifiers ** - modifier onlyTimelockContract() { - require(msg.sender == address(timelock), "Only timelock contract can call this."); - _; - } - - constructor(address timelockContract) { - timelock = IBlocklockSender(timelockContract); - } - - function createTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) external returns (uint256) { + function createTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) + external + returns (uint256) + { // create timelock request - requestId = timelock.requestBlocklock(decryptionBlockNumber, encryptedData); + requestId = blocklock.requestBlocklock(decryptionBlockNumber, encryptedData); // store Ciphertext encrytpedValue = encryptedData; return requestId; } - - function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) - external - onlyTimelockContract - { + + function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external override onlyBlocklockContract { require(requestID == requestId, "Invalid request id"); // decrypt stored Ciphertext with decryption key - plainTextValue = abi.decode(timelock.decrypt(encrytpedValue, decryptionKey), (uint256)); + plainTextValue = abi.decode(blocklock.decrypt(encrytpedValue, decryptionKey), (uint256)); } } diff --git a/src/generated/MockBlocklockReceiver.ts b/src/generated/MockBlocklockReceiver.ts index 60e1295..df2b7d6 100644 --- a/src/generated/MockBlocklockReceiver.ts +++ b/src/generated/MockBlocklockReceiver.ts @@ -49,14 +49,15 @@ export declare namespace TypesLib { export interface MockBlocklockReceiverInterface extends Interface { getFunction( nameOrSignature: + | "blocklock" | "createTimelockRequest" | "encrytpedValue" | "plainTextValue" | "receiveBlocklock" | "requestId" - | "timelock" ): FunctionFragment; + encodeFunctionData(functionFragment: "blocklock", values?: undefined): string; encodeFunctionData( functionFragment: "createTimelockRequest", values: [BigNumberish, TypesLib.CiphertextStruct] @@ -74,8 +75,8 @@ export interface MockBlocklockReceiverInterface extends Interface { values: [BigNumberish, BytesLike] ): string; encodeFunctionData(functionFragment: "requestId", values?: undefined): string; - encodeFunctionData(functionFragment: "timelock", values?: undefined): string; + decodeFunctionResult(functionFragment: "blocklock", data: BytesLike): Result; decodeFunctionResult( functionFragment: "createTimelockRequest", data: BytesLike @@ -93,7 +94,6 @@ export interface MockBlocklockReceiverInterface extends Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "requestId", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "timelock", data: BytesLike): Result; } export interface MockBlocklockReceiver extends BaseContract { @@ -139,6 +139,8 @@ export interface MockBlocklockReceiver extends BaseContract { event?: TCEvent ): Promise; + blocklock: TypedContractMethod<[], [string], "view">; + createTimelockRequest: TypedContractMethod< [ decryptionBlockNumber: BigNumberish, @@ -170,12 +172,13 @@ export interface MockBlocklockReceiver extends BaseContract { requestId: TypedContractMethod<[], [bigint], "view">; - timelock: TypedContractMethod<[], [string], "view">; - getFunction( key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "blocklock" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "createTimelockRequest" ): TypedContractMethod< @@ -212,9 +215,6 @@ export interface MockBlocklockReceiver extends BaseContract { getFunction( nameOrSignature: "requestId" ): TypedContractMethod<[], [bigint], "view">; - getFunction( - nameOrSignature: "timelock" - ): TypedContractMethod<[], [string], "view">; filters: {}; } diff --git a/src/generated/factories/BlocklockSender__factory.ts b/src/generated/factories/BlocklockSender__factory.ts index 6d14fb0..f6c0568 100644 --- a/src/generated/factories/BlocklockSender__factory.ts +++ b/src/generated/factories/BlocklockSender__factory.ts @@ -551,7 +551,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa26469706673582212203490cab1ae5cf436599f1c4443cbc68c431da25b95050274deee421efe9ec55d64736f6c63430008180033"; + "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa2646970667358221220a2c3b694e8870f05f3d5c66fb2631f36262c1902a80ec687ed8d7b4ef45f301464736f6c63430008180033"; type BlocklockSenderConstructorParams = | [signer?: Signer] diff --git a/src/generated/factories/DecryptionSender__factory.ts b/src/generated/factories/DecryptionSender__factory.ts index 3a1ae3c..4e982c1 100644 --- a/src/generated/factories/DecryptionSender__factory.ts +++ b/src/generated/factories/DecryptionSender__factory.ts @@ -625,7 +625,7 @@ const _abi = [ ] as const; const _bytecode = - "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b5060405162002983380380620029838339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b60805161253d620004465f395f81816102c701528181610cad0152818161134b0152611600015261253d5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063a217fddf1161009e578063cd802c911161006e578063cd802c911461025d578063d547741f1461028a578063d5c2d4f51461029d578063e6b3ca71146102c2578063f87f0e6114610301575f80fd5b8063a217fddf1461020e578063ac9650d814610215578063acae9fee14610235578063bd1326971461024a575f80fd5b806336568abe116100e457806336568abe1461019857806344880e1e146101ab57806347c03186146101cb57806375b238fc146101d457806391d14854146101fb575f80fd5b806301ffc9a714610115578063248a9ca31461013d5780632e3344521461016d5780632f2ff15d14610183575b5f80fd5b610128610123366004611c7e565b610314565b60405190151581526020015b60405180910390f35b61015f61014b366004611ca5565b5f9081526020819052604090206001015490565b604051908152602001610134565b61017561034a565b604051610134929190611cde565b610196610191366004611d0d565b6103c4565b005b6101966101a6366004611d0d565b6103ee565b6101be6101b9366004611ca5565b610426565b6040516101349190611d88565b61015f60015481565b61015f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610128610209366004611d0d565b610769565b61015f5f81565b610228610223366004611e3b565b610791565b6040516101349190611eaa565b61023d610877565b6040516101349190611f0c565b610196610258366004611f63565b6108f6565b61012861026b366004611ca5565b5f908152600660205260409020600501546001600160a01b0316151590565b610196610298366004611d0d565b61101f565b6102b06102ab366004611ca5565b611043565b60405161013496959493929190611fd7565b6102e97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b61015f61030f366004612053565b61131d565b5f6001600160e01b03198216637965db0b60e01b148061034457506301ffc9a760e01b6001600160e01b03198316145b92915050565b610352611c16565b61035a611c16565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610373575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116103a25750505050509050915091509091565b5f828152602081905260409020600101546103de816118a2565b6103e883836118af565b50505050565b6001600160a01b03811633146104175760405163334bd91960e11b815260040160405180910390fd5b610421828261193e565b505050565b6104676040518060c0016040528060608152602001606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160c0810190925280548290829061048e906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ba906120e6565b80156105055780601f106104dc57610100808354040283529160200191610505565b820191905f5260205f20905b8154815290600101906020018083116104e857829003601f168201915b5050505050815260200160018201805461051e906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461054a906120e6565b80156105955780601f1061056c57610100808354040283529160200191610595565b820191905f5260205f20905b81548152906001019060200180831161057857829003601f168201915b505050505081526020016002820180546105ae906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546105da906120e6565b80156106255780601f106105fc57610100808354040283529160200191610625565b820191905f5260205f20905b81548152906001019060200180831161060857829003601f168201915b5050505050815260200160038201805461063e906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461066a906120e6565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b505050505081526020016004820180546106ce906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa906120e6565b80156107455780601f1061071c57610100808354040283529160200191610745565b820191905f5260205f20905b81548152906001019060200180831161072857829003601f168201915b5050509183525050600591909101546001600160a01b031660209091015292915050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b604080515f8152602081019091526060908267ffffffffffffffff8111156107bb576107bb612132565b6040519080825280602002602001820160405280156107ee57816020015b60608152602001906001900390816107d95790505b5091505f5b8381101561086f5761084a3086868481811061081157610811612146565b9050602002810190610823919061215a565b856040516020016108369392919061219d565b6040516020818303038152906040526119a7565b83828151811061085c5761085c612146565b60209081029190910101526001016107f3565b505092915050565b60408051608081018083526060926108f192916002918391908201908390819081845b81548152602001906001019080831161089a57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116108d057505050505081525050611a19565b905090565b61091f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756118a2565b5f858152600660205260409020600501546001600160a01b03166109965760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b60648201526084015b60405180910390fd5b5f85815260066020526040808220815160c081019092528054829082906109bc906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546109e8906120e6565b8015610a335780601f10610a0a57610100808354040283529160200191610a33565b820191905f5260205f20905b815481529060010190602001808311610a1657829003601f168201915b50505050508152602001600182018054610a4c906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a78906120e6565b8015610ac35780601f10610a9a57610100808354040283529160200191610ac3565b820191905f5260205f20905b815481529060010190602001808311610aa657829003601f168201915b50505050508152602001600282018054610adc906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b08906120e6565b8015610b535780601f10610b2a57610100808354040283529160200191610b53565b820191905f5260205f20905b815481529060010190602001808311610b3657829003601f168201915b50505050508152602001600382018054610b6c906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b98906120e6565b8015610be35780601f10610bba57610100808354040283529160200191610be3565b820191905f5260205f20905b815481529060010190602001808311610bc657829003601f168201915b50505050508152602001600482018054610bfc906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c28906120e6565b8015610c735780601f10610c4a57610100808354040283529160200191610c73565b820191905f5260205f20905b815481529060010190602001808311610c5657829003601f168201915b5050509183525050600591909101546001600160a01b039081166020909201919091528151604051630b76139f60e31b8152929350915f917f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890610ce2908590600401611f0c565b602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2191906121c2565b90506001600160a01b038116610d6a5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420736368656d6560901b604482015260640161098d565b604080840151905163eae1e15b60e01b815282915f916001600160a01b0384169163eae1e15b91610d9e9190600401611f0c565b5f60405180830381865afa158015610db8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ddf91908101906121dd565b9050816001600160a01b031663f6e548e9828989610dfb610877565b6040518563ffffffff1660e01b8152600401610e1a94939291906122ad565b602060405180830381865afa158015610e35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5991906122e6565b610ea55760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c6564000000604482015260640161098d565b5f8560a001516001600160a01b0316635d3be00160e01b8c8c8c8c8c604051602401610ed5959493929190612305565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f13919061233d565b5f604051808303815f865af19150503d805f8114610f4c576040519150601f19603f3d011682016040523d82523d5f602084013e610f51565b606091505b5050905080610f7657604051633fed05c560e01b8152600481018c905260240161098d565b8a7f0a1f5b3782d8f604353407c980dbfe6b55499c5b92cb8c39f089c73f348407e68b8b8b8b604051610fac9493929190612358565b60405180910390a25f8b815260066020526040812090610fcc8282611c34565b610fd9600183015f611c34565b610fe6600283015f611c34565b610ff3600383015f611c34565b611000600483015f611c34565b5060050180546001600160a01b03191690555050505050505050505050565b5f82815260208190526040902060010154611039816118a2565b6103e8838361193e565b60066020525f908152604090208054819061105d906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054611089906120e6565b80156110d45780601f106110ab576101008083540402835291602001916110d4565b820191905f5260205f20905b8154815290600101906020018083116110b757829003601f168201915b5050505050908060010180546110e9906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054611115906120e6565b80156111605780601f1061113757610100808354040283529160200191611160565b820191905f5260205f20905b81548152906001019060200180831161114357829003601f168201915b505050505090806002018054611175906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546111a1906120e6565b80156111ec5780601f106111c3576101008083540402835291602001916111ec565b820191905f5260205f20905b8154815290600101906020018083116111cf57829003601f168201915b505050505090806003018054611201906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461122d906120e6565b80156112785780601f1061124f57610100808354040283529160200191611278565b820191905f5260205f20905b81548152906001019060200180831161125b57829003601f168201915b50505050509080600401805461128d906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546112b9906120e6565b80156113045780601f106112db57610100808354040283529160200191611304565b820191905f5260205f20905b8154815290600101906020018083116112e757829003601f168201915b505050600590930154919250506001600160a01b031686565b5f6001805f82825461132f919061237e565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa3390611382908a908a90600401612391565b602060405180830381865afa15801561139d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c191906122e6565b61140d5760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f727465640000604482015260640161098d565b611454600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611a759050565b6114ab5760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b606482015260840161098d565b6114f15f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611a759050565b6115495760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b606482015260840161098d565b8180156115e75761158e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b0992505050565b156115e75760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b606482015260840161098d565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890611637908c908c90600401612391565b602060405180830381865afa158015611652573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167691906121c2565b90506001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e617475726520736368656d650000000000000000604482015260640161098d565b6040518060c001604052808a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284375f9201829052509385525050604080516020818101835284825280860191909152815180820183528481528286015233606090950194909452600154835260069093525020815181906117ca90826123f7565b50602082015160018201906117df90826123f7565b50604082015160028201906117f490826123f7565b506060820151600382019061180990826123f7565b506080820151600482019061181e90826123f7565b5060a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790556001546040513391907f133b1acfa49920f88bc8c23faeb2ba43b75b3d6c453290a824f3c85e7733df139061188a908d908d908b908b908f908f9042906124b7565b60405180910390a35050600154979650505050505050565b6118ac8133611b54565b50565b5f6118ba8383610769565b611937575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556118ef3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610344565b505f610344565b5f6119498383610769565b15611937575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610344565b60605f80846001600160a01b0316846040516119c3919061233d565b5f60405180830381855af49150503d805f81146119fb576040519150601f19603f3d011682016040523d82523d5f602084013e611a00565b606091505b5091509150611a10858383611b91565b95945050505050565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b5f81831115611aec5760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e677468000000000000606482015260840161098d565b8351838110801590611afe5750828111155b9150505b9392505050565b5f805b8251811015611b4b57828181518110611b2757611b27612146565b01602001516001600160f81b03191615611b4357505f92915050565b600101611b0c565b50600192915050565b611b5e8282610769565b611b8d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161098d565b5050565b606082611ba657611ba182611bed565b611b02565b8151158015611bbd57506001600160a01b0384163b155b15611be657604051639996b31560e01b81526001600160a01b038516600482015260240161098d565b5080611b02565b805115611bfd5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052806002906020820280368337509192915050565b508054611c40906120e6565b5f825580601f10611c4f575050565b601f0160209004905f5260205f20908101906118ac91905b80821115611c7a575f8155600101611c67565b5090565b5f60208284031215611c8e575f80fd5b81356001600160e01b031981168114611b02575f80fd5b5f60208284031215611cb5575f80fd5b5035919050565b805f5b60028110156103e8578151845260209384019390910190600101611cbf565b60808101611cec8285611cbc565b611b026040830184611cbc565b6001600160a01b03811681146118ac575f80fd5b5f8060408385031215611d1e575f80fd5b823591506020830135611d3081611cf9565b809150509250929050565b5f5b83811015611d55578181015183820152602001611d3d565b50505f910152565b5f8151808452611d74816020860160208601611d3b565b601f01601f19169290920160200192915050565b602081525f825160c06020840152611da360e0840182611d5d565b90506020840151601f1980858403016040860152611dc18383611d5d565b92506040860151915080858403016060860152611dde8383611d5d565b92506060860151915080858403016080860152611dfb8383611d5d565b925060808601519150808584030160a086015250611e198282611d5d565b60a095909501516001600160a01b031660c09490940193909352509192915050565b5f8060208385031215611e4c575f80fd5b823567ffffffffffffffff80821115611e63575f80fd5b818501915085601f830112611e76575f80fd5b813581811115611e84575f80fd5b8660208260051b8501011115611e98575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611eff57603f19888603018452611eed858351611d5d565b94509285019290850190600101611ed1565b5092979650505050505050565b602081525f611b026020830184611d5d565b5f8083601f840112611f2e575f80fd5b50813567ffffffffffffffff811115611f45575f80fd5b602083019150836020828501011115611f5c575f80fd5b9250929050565b5f805f805f60608688031215611f77575f80fd5b85359450602086013567ffffffffffffffff80821115611f95575f80fd5b611fa189838a01611f1e565b90965094506040880135915080821115611fb9575f80fd5b50611fc688828901611f1e565b969995985093965092949392505050565b60c081525f611fe960c0830189611d5d565b8281036020840152611ffb8189611d5d565b9050828103604084015261200f8188611d5d565b905082810360608401526120238187611d5d565b905082810360808401526120378186611d5d565b91505060018060a01b03831660a0830152979650505050505050565b5f805f805f8060608789031215612068575f80fd5b863567ffffffffffffffff8082111561207f575f80fd5b61208b8a838b01611f1e565b909850965060208901359150808211156120a3575f80fd5b6120af8a838b01611f1e565b909650945060408901359150808211156120c7575f80fd5b506120d489828a01611f1e565b979a9699509497509295939492505050565b600181811c908216806120fa57607f821691505b60208210810361211857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e1984360301811261216f575f80fd5b83018035915067ffffffffffffffff821115612189575f80fd5b602001915036819003821315611f5c575f80fd5b828482375f8382015f815283516121b8818360208801611d3b565b0195945050505050565b5f602082840312156121d2575f80fd5b8151611b0281611cf9565b5f602082840312156121ed575f80fd5b815167ffffffffffffffff80821115612204575f80fd5b818401915084601f830112612217575f80fd5b81518181111561222957612229612132565b604051601f8201601f19908116603f0116810190838211818310171561225157612251612132565b81604052828152876020848701011115612269575f80fd5b61227a836020830160208801611d3b565b979650505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f6122bf6060830187611d5d565b82810360208401526122d2818688612285565b9050828103604084015261227a8185611d5d565b5f602082840312156122f6575f80fd5b81518015158114611b02575f80fd5b858152606060208201525f61231e606083018688612285565b8281036040840152612331818587612285565b98975050505050505050565b5f825161234e818460208701611d3b565b9190910192915050565b604081525f61236b604083018688612285565b828103602084015261227a818587612285565b808201808211156103445761034461211e565b602081525f6123a4602083018486612285565b949350505050565b601f82111561042157805f5260205f20601f840160051c810160208510156123d15750805b601f840160051c820191505b818110156123f0575f81556001016123dd565b5050505050565b815167ffffffffffffffff81111561241157612411612132565b6124258161241f84546120e6565b846123ac565b602080601f831160018114612458575f84156124415750858301515b5f19600386901b1c1916600185901b1785556124af565b5f85815260208120601f198616915b8281101561248657888601518255948401946001909101908401612467565b50858210156124a357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b608081525f6124ca60808301898b612285565b82810360208401526124dd81888a612285565b905082810360408401526124f2818688612285565b9150508260608301529897505050505050505056fea2646970667358221220b13f4a6a8027f0f3f8248d2446015e46ed4ec0d15c5e3303f2f05b051d7d00ea64736f6c63430008180033"; + "0x5f600181905560e081815261010082905260a08181526101606040526101208381526101409390935260c0929092526002906200003f90829081620002ca565b506020820151620000579060028084019190620002ca565b50505034801562000066575f80fd5b5060405162002983380380620029838339810160408190526200008991620003bc565b60408051808201909152848152602081018490526002620000ac818781620002ca565b506020820151620000c49060028084019190620002ca565b50620000f591507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759050836200021e565b6200013b5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b620001475f836200021e565b6200018a5760405162461bcd60e51b81526020600482015260126024820152714772616e7420726f6c65207265766572747360701b604482015260640162000132565b6001600160a01b038116620002085760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f7420736574207a65726f2061646472657373206173207369676e6160448201527f7475726520736368656d6520616464726573732070726f766964657200000000606482015260840162000132565b6001600160a01b03166080525062000418915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002c1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002783390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002c4565b505f5b92915050565b8260028101928215620002fb579160200282015b82811115620002fb578251825591602001919060010190620002de565b50620003099291506200030d565b5090565b5b8082111562000309575f81556001016200030e565b5f82601f83011262000333575f80fd5b604080519081016001600160401b03811182821017156200036257634e487b7160e01b5f52604160045260245ffd5b806040525080604084018581111562000379575f80fd5b845b81811015620003955780518352602092830192016200037b565b509195945050505050565b80516001600160a01b0381168114620003b7575f80fd5b919050565b5f805f8060c08587031215620003d0575f80fd5b620003dc868662000323565b9350620003ed866040870162000323565b9250620003fd60808601620003a0565b91506200040d60a08601620003a0565b905092959194509250565b60805161253d620004465f395f81816102c701528181610cad0152818161134b0152611600015261253d5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063a217fddf1161009e578063cd802c911161006e578063cd802c911461025d578063d547741f1461028a578063d5c2d4f51461029d578063e6b3ca71146102c2578063f87f0e6114610301575f80fd5b8063a217fddf1461020e578063ac9650d814610215578063acae9fee14610235578063bd1326971461024a575f80fd5b806336568abe116100e457806336568abe1461019857806344880e1e146101ab57806347c03186146101cb57806375b238fc146101d457806391d14854146101fb575f80fd5b806301ffc9a714610115578063248a9ca31461013d5780632e3344521461016d5780632f2ff15d14610183575b5f80fd5b610128610123366004611c7e565b610314565b60405190151581526020015b60405180910390f35b61015f61014b366004611ca5565b5f9081526020819052604090206001015490565b604051908152602001610134565b61017561034a565b604051610134929190611cde565b610196610191366004611d0d565b6103c4565b005b6101966101a6366004611d0d565b6103ee565b6101be6101b9366004611ca5565b610426565b6040516101349190611d88565b61015f60015481565b61015f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610128610209366004611d0d565b610769565b61015f5f81565b610228610223366004611e3b565b610791565b6040516101349190611eaa565b61023d610877565b6040516101349190611f0c565b610196610258366004611f63565b6108f6565b61012861026b366004611ca5565b5f908152600660205260409020600501546001600160a01b0316151590565b610196610298366004611d0d565b61101f565b6102b06102ab366004611ca5565b611043565b60405161013496959493929190611fd7565b6102e97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610134565b61015f61030f366004612053565b61131d565b5f6001600160e01b03198216637965db0b60e01b148061034457506301ffc9a760e01b6001600160e01b03198316145b92915050565b610352611c16565b61035a611c16565b6040805180820191829052600291600491908390819081845b815481526020019060010190808311610373575050604080518082019182905294965085935060029250905082845b8154815260200190600101908083116103a25750505050509050915091509091565b5f828152602081905260409020600101546103de816118a2565b6103e883836118af565b50505050565b6001600160a01b03811633146104175760405163334bd91960e11b815260040160405180910390fd5b610421828261193e565b505050565b6104676040518060c0016040528060608152602001606081526020016060815260200160608152602001606081526020015f6001600160a01b031681525090565b5f8281526006602052604090819020815160c0810190925280548290829061048e906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ba906120e6565b80156105055780601f106104dc57610100808354040283529160200191610505565b820191905f5260205f20905b8154815290600101906020018083116104e857829003601f168201915b5050505050815260200160018201805461051e906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461054a906120e6565b80156105955780601f1061056c57610100808354040283529160200191610595565b820191905f5260205f20905b81548152906001019060200180831161057857829003601f168201915b505050505081526020016002820180546105ae906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546105da906120e6565b80156106255780601f106105fc57610100808354040283529160200191610625565b820191905f5260205f20905b81548152906001019060200180831161060857829003601f168201915b5050505050815260200160038201805461063e906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461066a906120e6565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b505050505081526020016004820180546106ce906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa906120e6565b80156107455780601f1061071c57610100808354040283529160200191610745565b820191905f5260205f20905b81548152906001019060200180831161072857829003601f168201915b5050509183525050600591909101546001600160a01b031660209091015292915050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b604080515f8152602081019091526060908267ffffffffffffffff8111156107bb576107bb612132565b6040519080825280602002602001820160405280156107ee57816020015b60608152602001906001900390816107d95790505b5091505f5b8381101561086f5761084a3086868481811061081157610811612146565b9050602002810190610823919061215a565b856040516020016108369392919061219d565b6040516020818303038152906040526119a7565b83828151811061085c5761085c612146565b60209081029190910101526001016107f3565b505092915050565b60408051608081018083526060926108f192916002918391908201908390819081845b81548152602001906001019080831161089a57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116108d057505050505081525050611a19565b905090565b61091f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756118a2565b5f858152600660205260409020600501546001600160a01b03166109965760405162461bcd60e51b815260206004820152602360248201527f4e6f2072657175657374207769746820737065636966696564207265717565736044820152621d125160ea1b60648201526084015b60405180910390fd5b5f85815260066020526040808220815160c081019092528054829082906109bc906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546109e8906120e6565b8015610a335780601f10610a0a57610100808354040283529160200191610a33565b820191905f5260205f20905b815481529060010190602001808311610a1657829003601f168201915b50505050508152602001600182018054610a4c906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a78906120e6565b8015610ac35780601f10610a9a57610100808354040283529160200191610ac3565b820191905f5260205f20905b815481529060010190602001808311610aa657829003601f168201915b50505050508152602001600282018054610adc906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b08906120e6565b8015610b535780601f10610b2a57610100808354040283529160200191610b53565b820191905f5260205f20905b815481529060010190602001808311610b3657829003601f168201915b50505050508152602001600382018054610b6c906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b98906120e6565b8015610be35780601f10610bba57610100808354040283529160200191610be3565b820191905f5260205f20905b815481529060010190602001808311610bc657829003601f168201915b50505050508152602001600482018054610bfc906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c28906120e6565b8015610c735780601f10610c4a57610100808354040283529160200191610c73565b820191905f5260205f20905b815481529060010190602001808311610c5657829003601f168201915b5050509183525050600591909101546001600160a01b039081166020909201919091528151604051630b76139f60e31b8152929350915f917f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890610ce2908590600401611f0c565b602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2191906121c2565b90506001600160a01b038116610d6a5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420736368656d6560901b604482015260640161098d565b604080840151905163eae1e15b60e01b815282915f916001600160a01b0384169163eae1e15b91610d9e9190600401611f0c565b5f60405180830381865afa158015610db8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ddf91908101906121dd565b9050816001600160a01b031663f6e548e9828989610dfb610877565b6040518563ffffffff1660e01b8152600401610e1a94939291906122ad565b602060405180830381865afa158015610e35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5991906122e6565b610ea55760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c6564000000604482015260640161098d565b5f8560a001516001600160a01b0316635d3be00160e01b8c8c8c8c8c604051602401610ed5959493929190612305565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f13919061233d565b5f604051808303815f865af19150503d805f8114610f4c576040519150601f19603f3d011682016040523d82523d5f602084013e610f51565b606091505b5050905080610f7657604051633fed05c560e01b8152600481018c905260240161098d565b8a7f0a1f5b3782d8f604353407c980dbfe6b55499c5b92cb8c39f089c73f348407e68b8b8b8b604051610fac9493929190612358565b60405180910390a25f8b815260066020526040812090610fcc8282611c34565b610fd9600183015f611c34565b610fe6600283015f611c34565b610ff3600383015f611c34565b611000600483015f611c34565b5060050180546001600160a01b03191690555050505050505050505050565b5f82815260208190526040902060010154611039816118a2565b6103e8838361193e565b60066020525f908152604090208054819061105d906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054611089906120e6565b80156110d45780601f106110ab576101008083540402835291602001916110d4565b820191905f5260205f20905b8154815290600101906020018083116110b757829003601f168201915b5050505050908060010180546110e9906120e6565b80601f0160208091040260200160405190810160405280929190818152602001828054611115906120e6565b80156111605780601f1061113757610100808354040283529160200191611160565b820191905f5260205f20905b81548152906001019060200180831161114357829003601f168201915b505050505090806002018054611175906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546111a1906120e6565b80156111ec5780601f106111c3576101008083540402835291602001916111ec565b820191905f5260205f20905b8154815290600101906020018083116111cf57829003601f168201915b505050505090806003018054611201906120e6565b80601f016020809104026020016040519081016040528092919081815260200182805461122d906120e6565b80156112785780601f1061124f57610100808354040283529160200191611278565b820191905f5260205f20905b81548152906001019060200180831161125b57829003601f168201915b50505050509080600401805461128d906120e6565b80601f01602080910402602001604051908101604052809291908181526020018280546112b9906120e6565b80156113045780601f106112db57610100808354040283529160200191611304565b820191905f5260205f20905b8154815290600101906020018083116112e757829003601f168201915b505050600590930154919250506001600160a01b031686565b5f6001805f82825461132f919061237e565b9091555050604051632fc9fa3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fc9fa3390611382908a908a90600401612391565b602060405180830381865afa15801561139d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c191906122e6565b61140d5760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520736368656d65206e6f7420737570706f727465640000604482015260640161098d565b611454600161100087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611a759050565b6114ab5760405162461bcd60e51b815260206004820152602260248201527f4d657373616765206661696c6564206c656e67746820626f756e647320636865604482015261636b60f01b606482015260840161098d565b6114f15f61100085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929493925050611a759050565b6115495760405162461bcd60e51b8152602060048201526024808201527f436f6e646974696f6e206661696c6564206c656e67746820626f756e647320636044820152636865636b60e01b606482015260840161098d565b8180156115e75761158e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b0992505050565b156115e75760405162461bcd60e51b815260206004820152602360248201527f436f6e646974696f6e2062797465732063616e6e6f7420626520616c6c207a65604482015262726f7360e81b606482015260840161098d565b604051630b76139f60e31b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635bb09cf890611637908c908c90600401612391565b602060405180830381865afa158015611652573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167691906121c2565b90506001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e617475726520736368656d650000000000000000604482015260640161098d565b6040518060c001604052808a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f92019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284375f9201829052509385525050604080516020818101835284825280860191909152815180820183528481528286015233606090950194909452600154835260069093525020815181906117ca90826123f7565b50602082015160018201906117df90826123f7565b50604082015160028201906117f490826123f7565b506060820151600382019061180990826123f7565b506080820151600482019061181e90826123f7565b5060a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790556001546040513391907f133b1acfa49920f88bc8c23faeb2ba43b75b3d6c453290a824f3c85e7733df139061188a908d908d908b908b908f908f9042906124b7565b60405180910390a35050600154979650505050505050565b6118ac8133611b54565b50565b5f6118ba8383610769565b611937575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556118ef3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610344565b505f610344565b5f6119498383610769565b15611937575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610344565b60605f80846001600160a01b0316846040516119c3919061233d565b5f60405180830381855af49150503d805f81146119fb576040519150601f19603f3d011682016040523d82523d5f602084013e611a00565b606091505b5091509150611a10858383611b91565b95945050505050565b60408051608080825260a082019092526060915f91906020820181803683375050845180516020918201519682015180519083015192850191909152604084019690965260608301959095525060808101939093525090919050565b5f81831115611aec5760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420626f756e64733a206d696e4c656e6774682063616e6e6f7460448201527f2062652067726561746572207468616e206d61784c656e677468000000000000606482015260840161098d565b8351838110801590611afe5750828111155b9150505b9392505050565b5f805b8251811015611b4b57828181518110611b2757611b27612146565b01602001516001600160f81b03191615611b4357505f92915050565b600101611b0c565b50600192915050565b611b5e8282610769565b611b8d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161098d565b5050565b606082611ba657611ba182611bed565b611b02565b8151158015611bbd57506001600160a01b0384163b155b15611be657604051639996b31560e01b81526001600160a01b038516600482015260240161098d565b5080611b02565b805115611bfd5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052806002906020820280368337509192915050565b508054611c40906120e6565b5f825580601f10611c4f575050565b601f0160209004905f5260205f20908101906118ac91905b80821115611c7a575f8155600101611c67565b5090565b5f60208284031215611c8e575f80fd5b81356001600160e01b031981168114611b02575f80fd5b5f60208284031215611cb5575f80fd5b5035919050565b805f5b60028110156103e8578151845260209384019390910190600101611cbf565b60808101611cec8285611cbc565b611b026040830184611cbc565b6001600160a01b03811681146118ac575f80fd5b5f8060408385031215611d1e575f80fd5b823591506020830135611d3081611cf9565b809150509250929050565b5f5b83811015611d55578181015183820152602001611d3d565b50505f910152565b5f8151808452611d74816020860160208601611d3b565b601f01601f19169290920160200192915050565b602081525f825160c06020840152611da360e0840182611d5d565b90506020840151601f1980858403016040860152611dc18383611d5d565b92506040860151915080858403016060860152611dde8383611d5d565b92506060860151915080858403016080860152611dfb8383611d5d565b925060808601519150808584030160a086015250611e198282611d5d565b60a095909501516001600160a01b031660c09490940193909352509192915050565b5f8060208385031215611e4c575f80fd5b823567ffffffffffffffff80821115611e63575f80fd5b818501915085601f830112611e76575f80fd5b813581811115611e84575f80fd5b8660208260051b8501011115611e98575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015611eff57603f19888603018452611eed858351611d5d565b94509285019290850190600101611ed1565b5092979650505050505050565b602081525f611b026020830184611d5d565b5f8083601f840112611f2e575f80fd5b50813567ffffffffffffffff811115611f45575f80fd5b602083019150836020828501011115611f5c575f80fd5b9250929050565b5f805f805f60608688031215611f77575f80fd5b85359450602086013567ffffffffffffffff80821115611f95575f80fd5b611fa189838a01611f1e565b90965094506040880135915080821115611fb9575f80fd5b50611fc688828901611f1e565b969995985093965092949392505050565b60c081525f611fe960c0830189611d5d565b8281036020840152611ffb8189611d5d565b9050828103604084015261200f8188611d5d565b905082810360608401526120238187611d5d565b905082810360808401526120378186611d5d565b91505060018060a01b03831660a0830152979650505050505050565b5f805f805f8060608789031215612068575f80fd5b863567ffffffffffffffff8082111561207f575f80fd5b61208b8a838b01611f1e565b909850965060208901359150808211156120a3575f80fd5b6120af8a838b01611f1e565b909650945060408901359150808211156120c7575f80fd5b506120d489828a01611f1e565b979a9699509497509295939492505050565b600181811c908216806120fa57607f821691505b60208210810361211857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e1984360301811261216f575f80fd5b83018035915067ffffffffffffffff821115612189575f80fd5b602001915036819003821315611f5c575f80fd5b828482375f8382015f815283516121b8818360208801611d3b565b0195945050505050565b5f602082840312156121d2575f80fd5b8151611b0281611cf9565b5f602082840312156121ed575f80fd5b815167ffffffffffffffff80821115612204575f80fd5b818401915084601f830112612217575f80fd5b81518181111561222957612229612132565b604051601f8201601f19908116603f0116810190838211818310171561225157612251612132565b81604052828152876020848701011115612269575f80fd5b61227a836020830160208801611d3b565b979650505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f6122bf6060830187611d5d565b82810360208401526122d2818688612285565b9050828103604084015261227a8185611d5d565b5f602082840312156122f6575f80fd5b81518015158114611b02575f80fd5b858152606060208201525f61231e606083018688612285565b8281036040840152612331818587612285565b98975050505050505050565b5f825161234e818460208701611d3b565b9190910192915050565b604081525f61236b604083018688612285565b828103602084015261227a818587612285565b808201808211156103445761034461211e565b602081525f6123a4602083018486612285565b949350505050565b601f82111561042157805f5260205f20601f840160051c810160208510156123d15750805b601f840160051c820191505b818110156123f0575f81556001016123dd565b5050505050565b815167ffffffffffffffff81111561241157612411612132565b6124258161241f84546120e6565b846123ac565b602080601f831160018114612458575f84156124415750858301515b5f19600386901b1c1916600185901b1785556124af565b5f85815260208120601f198616915b8281101561248657888601518255948401946001909101908401612467565b50858210156124a357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b608081525f6124ca60808301898b612285565b82810360208401526124dd81888a612285565b905082810360408401526124f2818688612285565b9150508260608301529897505050505050505056fea264697066735822122013367122fccc26bbec731591702000816f98f183df7227c2df163f76ffa5614164736f6c63430008180033"; type DecryptionSenderConstructorParams = | [signer?: Signer] diff --git a/src/generated/factories/MockBlocklockReceiver__factory.ts b/src/generated/factories/MockBlocklockReceiver__factory.ts index 934666e..f0e947c 100644 --- a/src/generated/factories/MockBlocklockReceiver__factory.ts +++ b/src/generated/factories/MockBlocklockReceiver__factory.ts @@ -24,13 +24,26 @@ const _abi = [ type: "constructor", inputs: [ { - name: "timelockContract", + name: "blocklockContract", type: "address", internalType: "address", }, ], stateMutability: "nonpayable", }, + { + type: "function", + name: "blocklock", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IBlocklockSender", + }, + ], + stateMutability: "view", + }, { type: "function", name: "createTimelockRequest", @@ -163,23 +176,10 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "timelock", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "contract IBlocklockSender", - }, - ], - stateMutability: "view", - }, ] as const; const _bytecode = - "0x608060405234801561000f575f80fd5b50604051610b47380380610b4783398101604081905261002e91610053565b600880546001600160a01b0319166001600160a01b0392909216919091179055610080565b5f60208284031215610063575f80fd5b81516001600160a01b0381168114610079575f80fd5b9392505050565b610aba8061008d5f395ff3fe608060405234801561000f575f80fd5b506004361061005f575f3560e01c80626d6cae14610063578063492eea421461007e5780635d9418021461009557806397a9c285146100aa57806398e5a5e7146100b3578063d33219b4146100c6575b5f80fd5b61006b5f5481565b6040519081526020015b60405180910390f35b6100866100f1565b604051610075939291906104c1565b6100a86100a3366004610510565b61027d565b005b61006b60075481565b61006b6100c1366004610585565b6103c0565b6008546100d9906001600160a01b031681565b6040516001600160a01b039091168152602001610075565b604080516080810180835260019283918391820190839060029082845b81548152602001906001019080831161010e57505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116101445750505050508152505090806004018054610170906105cf565b80601f016020809104026020016040519081016040528092919081815260200182805461019c906105cf565b80156101e75780601f106101be576101008083540402835291602001916101e7565b820191905f5260205f20905b8154815290600101906020018083116101ca57829003601f168201915b5050505050908060050180546101fc906105cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610228906105cf565b80156102735780601f1061024a57610100808354040283529160200191610273565b820191905f5260205f20905b81548152906001019060200180831161025657829003601f168201915b5050505050905083565b6008546001600160a01b031633146102ea5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c792074696d656c6f636b20636f6e74726163742063616e2063616c6c206044820152643a3434b99760d91b60648201526084015b60405180910390fd5b5f54831461032f5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd081a5960721b60448201526064016102e1565b60085460405163326f063160e21b81526001600160a01b039091169063c9bc18c49061036490600190869086906004016106ca565b5f60405180830381865afa15801561037e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a59190810190610745565b8060200190518101906103b891906107ed565b600755505050565b60085460405163236695a160e11b81525f916001600160a01b0316906346cd2b42906103f2908690869060040161084d565b6020604051808303815f875af115801561040e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043291906107ed565b5f5581600161044182826109fc565b50505f549392505050565b805f5b600281101561046e57815184526020938401939091019060010161044f565b50505050565b5f5b8381101561048e578181015183820152602001610476565b50505f910152565b5f81518084526104ad816020860160208601610474565b601f01601f19169290920160200192915050565b6104cc81855161044c565b5f60208501516104df604084018261044c565b5060c060808301526104f460c0830185610496565b82810360a08401526105068185610496565b9695505050505050565b5f805f60408486031215610522575f80fd5b83359250602084013567ffffffffffffffff80821115610540575f80fd5b818601915086601f830112610553575f80fd5b813581811115610561575f80fd5b876020828501011115610572575f80fd5b6020830194508093505050509250925092565b5f8060408385031215610596575f80fd5b82359150602083013567ffffffffffffffff8111156105b3575f80fd5b830160c081860312156105c4575f80fd5b809150509250929050565b600181811c908216806105e357607f821691505b60208210810361060157634e487b7160e01b5f52602260045260245ffd5b50919050565b805f5b600281101561046e57815484526020909301926001918201910161060a565b5f8154610635816105cf565b808552602060018381168015610652576001811461066c57610697565b60ff1985168884015283151560051b880183019550610697565b865f52825f205f5b8581101561068f5781548a8201860152908301908401610674565b890184019650505b505050505092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081526106db6040820185610607565b6106eb6080820160028601610607565b60c0808201525f610703610100830160048701610629565b828103603f190160e084015261071c8160058801610629565b905082810360208401526105068185876106a2565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610755575f80fd5b815167ffffffffffffffff8082111561076c575f80fd5b818401915084601f83011261077f575f80fd5b81518181111561079157610791610731565b604051601f8201601f19908116603f011681019083821181831017156107b9576107b9610731565b816040528281528760208487010111156107d1575f80fd5b6107e2836020830160208801610474565b979650505050505050565b5f602082840312156107fd575f80fd5b5051919050565b5f808335601e19843603018112610819575f80fd5b830160208101925035905067ffffffffffffffff811115610838575f80fd5b803603821315610846575f80fd5b9250929050565b828152604060208201526040826040830137604080830160808301375f6108776080840184610804565b60c08085015261088c610100850182846106a2565b91505061089c60a0850185610804565b848303603f190160e08601526107e28382846106a2565b5f808335601e198436030181126108c8575f80fd5b83018035915067ffffffffffffffff8211156108e2575f80fd5b602001915036819003821315610846575f80fd5b601f82111561093d57805f5260205f20601f840160051c8101602085101561091b5750805b601f840160051c820191505b8181101561093a575f8155600101610927565b50505b505050565b67ffffffffffffffff83111561095a5761095a610731565b61096e8361096883546105cf565b836108f6565b5f601f84116001811461099f575f85156109885750838201355b5f19600387901b1c1916600186901b17835561093a565b5f83815260208120601f198716915b828110156109ce57868501358255602094850194600190920191016109ae565b50868210156109ea575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b815f5b6002811015610a1c578135838201556020909101906001016109ff565b5050604082015f5b6002808210610a335750610a4a565b823584830190910155602090910190600101610a24565b5050610a5960808301836108b3565b610a67818360048601610942565b5050610a7660a08301836108b3565b61046e81836005860161094256fea26469706673582212203aca39bd897c2c31540e5213b8e6abb810d18e5857b6e138663be577615e659964736f6c63430008180033"; + "0x608060405234801561000f575f80fd5b50604051610b46380380610b4683398101604081905261002e91610052565b5f80546001600160a01b0319166001600160a01b039290921691909117905561007f565b5f60208284031215610062575f80fd5b81516001600160a01b0381168114610078575f80fd5b9392505050565b610aba8061008c5f395ff3fe608060405234801561000f575f80fd5b506004361061005f575f3560e01c80626d6cae14610063578063492eea421461007f5780635d9418021461009657806393b9740a146100ab57806397a9c285146100d557806398e5a5e7146100de575b5f80fd5b61006c60015481565b6040519081526020015b60405180910390f35b6100876100f1565b604051610076939291906104c1565b6100a96100a4366004610510565b61027c565b005b5f546100bd906001600160a01b031681565b6040516001600160a01b039091168152602001610076565b61006c60085481565b61006c6100ec366004610585565b6103be565b6040805160808101808352600292839183918201908390819081845b81548152602001906001019080831161010d57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610143575050505050815250509080600401805461016f906105cf565b80601f016020809104026020016040519081016040528092919081815260200182805461019b906105cf565b80156101e65780601f106101bd576101008083540402835291602001916101e6565b820191905f5260205f20905b8154815290600101906020018083116101c957829003601f168201915b5050505050908060050180546101fb906105cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610227906105cf565b80156102725780601f1061024957610100808354040283529160200191610272565b820191905f5260205f20905b81548152906001019060200180831161025557829003601f168201915b5050505050905083565b5f546001600160a01b031633146102e85760405162461bcd60e51b815260206004820152602560248201527f4f6e6c792074696d656c6f636b20636f6e74726163742063616e2063616c6c206044820152643a3434b99760d91b60648201526084015b60405180910390fd5b600154831461032e5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd081a5960721b60448201526064016102df565b5f5460405163326f063160e21b81526001600160a01b039091169063c9bc18c49061036290600290869086906004016106ca565b5f60405180830381865afa15801561037c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a39190810190610745565b8060200190518101906103b691906107ed565b600855505050565b5f805460405163236695a160e11b81526001600160a01b03909116906346cd2b42906103f0908690869060040161084d565b6020604051808303815f875af115801561040c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043091906107ed565b60015581600261044082826109fc565b50506001549392505050565b805f5b600281101561046e57815184526020938401939091019060010161044f565b50505050565b5f5b8381101561048e578181015183820152602001610476565b50505f910152565b5f81518084526104ad816020860160208601610474565b601f01601f19169290920160200192915050565b6104cc81855161044c565b5f60208501516104df604084018261044c565b5060c060808301526104f460c0830185610496565b82810360a08401526105068185610496565b9695505050505050565b5f805f60408486031215610522575f80fd5b83359250602084013567ffffffffffffffff80821115610540575f80fd5b818601915086601f830112610553575f80fd5b813581811115610561575f80fd5b876020828501011115610572575f80fd5b6020830194508093505050509250925092565b5f8060408385031215610596575f80fd5b82359150602083013567ffffffffffffffff8111156105b3575f80fd5b830160c081860312156105c4575f80fd5b809150509250929050565b600181811c908216806105e357607f821691505b60208210810361060157634e487b7160e01b5f52602260045260245ffd5b50919050565b805f5b600281101561046e57815484526020909301926001918201910161060a565b5f8154610635816105cf565b808552602060018381168015610652576001811461066c57610697565b60ff1985168884015283151560051b880183019550610697565b865f52825f205f5b8581101561068f5781548a8201860152908301908401610674565b890184019650505b505050505092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081526106db6040820185610607565b6106eb6080820160028601610607565b60c0808201525f610703610100830160048701610629565b828103603f190160e084015261071c8160058801610629565b905082810360208401526105068185876106a2565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610755575f80fd5b815167ffffffffffffffff8082111561076c575f80fd5b818401915084601f83011261077f575f80fd5b81518181111561079157610791610731565b604051601f8201601f19908116603f011681019083821181831017156107b9576107b9610731565b816040528281528760208487010111156107d1575f80fd5b6107e2836020830160208801610474565b979650505050505050565b5f602082840312156107fd575f80fd5b5051919050565b5f808335601e19843603018112610819575f80fd5b830160208101925035905067ffffffffffffffff811115610838575f80fd5b803603821315610846575f80fd5b9250929050565b828152604060208201526040826040830137604080830160808301375f6108776080840184610804565b60c08085015261088c610100850182846106a2565b91505061089c60a0850185610804565b848303603f190160e08601526107e28382846106a2565b5f808335601e198436030181126108c8575f80fd5b83018035915067ffffffffffffffff8211156108e2575f80fd5b602001915036819003821315610846575f80fd5b601f82111561093d57805f5260205f20601f840160051c8101602085101561091b5750805b601f840160051c820191505b8181101561093a575f8155600101610927565b50505b505050565b67ffffffffffffffff83111561095a5761095a610731565b61096e8361096883546105cf565b836108f6565b5f601f84116001811461099f575f85156109885750838201355b5f19600387901b1c1916600186901b17835561093a565b5f83815260208120601f198716915b828110156109ce57868501358255602094850194600190920191016109ae565b50868210156109ea575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b815f5b6002811015610a1c578135838201556020909101906001016109ff565b5050604082015f5b6002808210610a335750610a4a565b823584830190910155602090910190600101610a24565b5050610a5960808301836108b3565b610a67818360048601610942565b5050610a7660a08301836108b3565b61046e81836005860161094256fea2646970667358221220824ec241388e7561150c57958f0e512fa946a5b1b9a1d9f0afaaeab1f111072a64736f6c63430008180033"; type MockBlocklockReceiverConstructorParams = | [signer?: Signer] @@ -199,16 +199,16 @@ export class MockBlocklockReceiver__factory extends ContractFactory { } override getDeployTransaction( - timelockContract: AddressLike, + blocklockContract: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { - return super.getDeployTransaction(timelockContract, overrides || {}); + return super.getDeployTransaction(blocklockContract, overrides || {}); } override deploy( - timelockContract: AddressLike, + blocklockContract: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { - return super.deploy(timelockContract, overrides || {}) as Promise< + return super.deploy(blocklockContract, overrides || {}) as Promise< MockBlocklockReceiver & { deploymentTransaction(): ContractTransactionResponse; } From b771be800132dbcce79cc311835f8b850711bc34 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 11:34:10 +0000 Subject: [PATCH 28/53] update index.ts imports --- src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.ts b/src/index.ts index 118db93..9ac8b8c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,5 @@ export {Buffer} from "buffer" export * from "./blocklock" export * from "./ethers-utils" +export * from "./solidity-decoder" +export * from "./solidity-decoder" From 89665e32fa64cd53b3a4ae0c5b0bd07185750d9f Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 11:43:50 +0000 Subject: [PATCH 29/53] update imports --- src/index.ts | 2 +- test/integration.test.ts | 34 +++++++++++++++------------------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/index.ts b/src/index.ts index 9ac8b8c..c20beb9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ export {Buffer} from "buffer" export * from "./blocklock" export * from "./ethers-utils" -export * from "./solidity-decoder" +export * from "./solidity-encoder" export * from "./solidity-decoder" diff --git a/test/integration.test.ts b/test/integration.test.ts index 5056986..06ac0e5 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -1,14 +1,11 @@ import Ganache from "ganache"; import { ZeroAddress, ethers, getBytes, isHexString, toUtf8Bytes, AbiCoder } from "ethers"; import { describe, it, expect, beforeAll, afterAll } from "@jest/globals"; -import {MockBlocklockReceiver__factory, BlocklockSender__factory, BlocklockSignatureScheme__factory, DecryptionSender__factory, SignatureSchemeAddressProvider__factory, SignatureSender__factory} from "../src/generated" -import {Blocklock, encodeCiphertextToSolidity, parseSolidityCiphertextString} from "../src" -import { SolidityEncoder } from "../src/solidity-encoder"; -import {BlsBn254} from "../src/crypto/bls-bn254"; -import {extractSingleLog} from "../src" import { keccak_256 } from "@noble/hashes/sha3"; +import { MockBlocklockReceiver__factory, BlocklockSender__factory, BlocklockSignatureScheme__factory, DecryptionSender__factory, SignatureSchemeAddressProvider__factory } from "../src/generated" +import { SolidityEncoder, Blocklock, encodeCiphertextToSolidity, parseSolidityCiphertextString, extractSingleLog } from "../src" +import { BlsBn254 } from "../src/crypto/bls-bn254"; import { IbeOpts, preprocess_decryption_key_g1 } from "../src/crypto/ibe-bn254"; -import { TypesLib as BlocklockTypes } from "../src/generated/BlocklockSender"; const blocklock_default_pk = { x: { @@ -87,19 +84,19 @@ describe("Blocklock blockchain integration tests with Ganache", () => { const SignatureSchemeAddressProvider = new ethers.ContractFactory( SignatureSchemeAddressProvider__factory.abi, SignatureSchemeAddressProvider__factory.bytecode, - wallet, + wallet, ) const signatureSchemeAddressProvider = await SignatureSchemeAddressProvider.deploy( await wallet.getAddress() ) await signatureSchemeAddressProvider.waitForDeployment() const schemeProviderAddr = await signatureSchemeAddressProvider.getAddress() - + // deploy blocklock scheme const BlocklockScheme = new ethers.ContractFactory( BlocklockSignatureScheme__factory.abi, BlocklockSignatureScheme__factory.bytecode, - wallet, + wallet, ) const blocklockScheme = await BlocklockScheme.deploy() await blocklockScheme.waitForDeployment() @@ -111,7 +108,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { const DecryptionSender = new ethers.ContractFactory( DecryptionSender__factory.abi, DecryptionSender__factory.bytecode, - wallet, + wallet, ) const decryptionSender = await DecryptionSender.deploy( [blocklock_default_pk.x.c0, blocklock_default_pk.x.c1], @@ -126,7 +123,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { const BlocklockSender = new ethers.ContractFactory( BlocklockSender__factory.abi, BlocklockSender__factory.bytecode, - wallet, + wallet, ) const blocklockSender = await BlocklockSender.deploy( await decryptionSender.getAddress() @@ -135,7 +132,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { // deploy user mock decryption receiver contract const MockBlocklockReceiver = new ethers.ContractFactory( - MockBlocklockReceiver__factory.abi, + MockBlocklockReceiver__factory.abi, MockBlocklockReceiver__factory.bytecode, wallet ) @@ -149,7 +146,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { const blocklockjs = new Blocklock(wallet, await blocklockSender.getAddress()) const mockBlocklockReceiverInstance = MockBlocklockReceiver__factory.connect(await mockBlocklockReceiver.getAddress(), wallet); - + expect(await mockBlocklockReceiverInstance.plainTextValue()).toBe(BigInt(0)); const blockHeight = BigInt(await provider.getBlockNumber() + 2); @@ -161,7 +158,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { const ct = blocklockjs.encrypt(encodedMessage, blockHeight, blocklock_default_pk); let tx = await mockBlocklockReceiverInstance.connect(wallet).createTimelockRequest(blockHeight, encodeCiphertextToSolidity(ct)) - const receipt = await tx.wait(1); + let receipt = await tx.wait(1); if (!receipt) { throw new Error("transaction has not been mined"); } @@ -198,16 +195,15 @@ describe("Blocklock blockchain integration tests with Ganache", () => { const decryption_key = preprocess_decryption_key_g1(parsedCiphertext, { x: sig[0], y: sig[1] }, BLOCKLOCK_IBE_OPTS); tx = await decryptionSenderInstance.connect(wallet).fulfilDecryptionRequest(requestID, decryption_key, sigBytes); - - const txreceipt = await tx.wait(1); - if (!txreceipt) { + receipt = await tx.wait(1); + if (!receipt) { throw new Error("transaction has not been mined"); } const iface = BlocklockSender__factory.createInterface(); - const [, , , ] = extractSingleLog( + const [, , ,] = extractSingleLog( iface, - txreceipt, + receipt, await blocklockSender.getAddress(), iface.getEvent("BlocklockCallbackSuccess"), ); From c333bf6be228ef88fb19e5dfdd4d2f1d4ff5d785 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 17:01:50 +0000 Subject: [PATCH 30/53] update readme file --- README.md | 124 +++++++++++++++++++++++++++++++++++++-- test/integration.test.ts | 2 + 2 files changed, 121 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 26c710d..ef3839c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,124 @@ ## @randamu/blocklock-js -A convenience library for encrypting data for the dcrypt network to dcrypt based on conditions you set. +BlocklockJS is a TypeScript library designed to simplify the process of generating encrypted data off-chain for the dcrypt network. It enables developers to securely encrypt data tied to a user-specified future block number. The encrypted data can then be used to create on-chain timelock encryption requests in smart contracts. Once the specified block number is mined, the user’s smart contract will receive the decryption keys automatically. -Build everything by running `npm run build`. This creates an `index.js` and `index.d.ts` at the root directory. -Solidity interfaces for encryption and decryption can be found in the [contracts](./contracts) directory. -## Documentation -You can find the docs [on our docs website](https://dcrypt.network/docs/features/blocklock) +### Key Capabilities +Using this library, developers can: + +* Encode and encrypt various Solidity-compatible data types. +* Encrypt the encoded data off-chain using a public key, which can then be integrated into smart contracts for timelock encryption requests. + +### On-Chain Integration + +Solidity interfaces used for on-chain decryption requests can be found in the [contracts](./contracts) directory and the documentation for the solidity interfaces can be found in the [blocklock-solidity](github.com/randa-mu/blocklock-solidity.git) repository. + + +### Build Instructions + +To build the library, run the following command: + +```sh +npm run build +``` + +This creates an `index.js` and `index.d.ts` at the root directory. + + +### Usage Example + +Here’s how to use BlocklockJS to encrypt data and create an on-chain timelock encryption request. + +#### Example: Encrypting a uint256 (4 ETH) for Decryption 2 Blocks Later + +This example demonstrates encrypting a uint256 value and sending it to a user smart contract that implements the createTimelockRequest function. In a different use case, e.g., sealed bid auction, this could be refactored into a `sealedBid` function. +The example user smart contract source code can be found [here](contracts/src/mocks/MockBlocklockReceiver.sol). + +```js +import { ethers } from "ethers"; +import { Blocklock } from "blocklockjs"; +import { SolidityEncoder } from "blocklockjs/encoder"; +import { getBytes, encodeCiphertextToSolidity } from "blocklockjs/utils"; +import { MockBlocklockReceiver__factory } from "../types"; // Generated by Typechain + +async function main() { + const wallet = new ethers.Wallet("your-private-key", ethers.provider); + const blocklockSender = new ethers.Contract("blocklock-sender-address", [], wallet); + const mockBlocklockReceiver = MockBlocklockReceiver__factory.connect("receiver-address", wallet); + + // Ensure plainTextValue is initially 0 + console.log("Initial plainTextValue:", (await mockBlocklockReceiver.plainTextValue()).toString()); + + // Set block height (current block + 2) + const blockHeight = BigInt(await ethers.provider.getBlockNumber() + 2); + + // Value to encrypt (4 ETH as uint256) + const msg = ethers.utils.parseEther("4"); + + // Encode the uint256 value + const encoder = new SolidityEncoder(); + const msgBytes = encoder.encodeUint256(msg); + const encodedMessage = getBytes(msgBytes); + + // Encrypt the encoded message + const blocklockjs = new Blocklock(wallet, await blocklockSender.getAddress()); + const ciphertext = blocklockjs.encrypt(encodedMessage, blockHeight); + + // Call `createTimelockRequest` on the user's contract + const tx = await mockBlocklockReceiver + .connect(wallet) + .createTimelockRequest(blockHeight, encodeCiphertextToSolidity(ciphertext)); + const receipt = await tx.wait(1); + + if (!receipt) { + throw new Error("Transaction has not been mined"); + } + + console.log("Timelock request created!"); +} + +main().catch((error) => { + console.error("Error:", error); +}); +``` + +#### How It Works +1. Encoding and Encryption: + + * Use the SolidityEncoder to encode Solidity-compatible data types. + * Encrypt the encoded message with the recipient's public key and specify the decryption block number. + +2. On-Chain Interaction: + + * Call the user contract's createTimelockRequest function to store the encrypted data and block number. + +3. Decryption: + + * After the specified block number, the on-chain timelock contract will trigger a callback function to decrypt the data using a provided decryption key. + + +### Supported Data Types +The library supports encoding and encryption of the following Solidity-compatible data types: + +* uint256 +* int256 +* address +* string +* bytes +* bytes32 + +Use the SolidityEncoder to encode any of these types before encryption. + + +### Licensing + +This library is licensed under the MIT License which can be accessed [here](LICENSE). + +### Contributing + +Contributions are welcome! If you find a bug, have a feature request, or want to improve the code, feel free to open an issue or submit a pull request. + +### Acknowledgments + +Special thanks to the Filecoin Foundation for supporting the development of this library. diff --git a/test/integration.test.ts b/test/integration.test.ts index 06ac0e5..ee54a99 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -144,6 +144,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { /** Blocklock js Integration */ + // User or client side const blocklockjs = new Blocklock(wallet, await blocklockSender.getAddress()) const mockBlocklockReceiverInstance = MockBlocklockReceiver__factory.connect(await mockBlocklockReceiver.getAddress(), wallet); @@ -163,6 +164,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { throw new Error("transaction has not been mined"); } + // Blocklock agent or server side const blockRequest = await blocklockjs.fetchBlocklockRequest("1"); expect(blockRequest!.blockHeight).toBe(BigInt(blockHeight)); From 1c5d4476520c227ecd7ff98da0826fdd2513b8ab Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 17:15:04 +0000 Subject: [PATCH 31/53] Update README.md --- README.md | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index ef3839c..b741306 100644 --- a/README.md +++ b/README.md @@ -3,18 +3,13 @@ BlocklockJS is a TypeScript library designed to simplify the process of generating encrypted data off-chain for the dcrypt network. It enables developers to securely encrypt data tied to a user-specified future block number. The encrypted data can then be used to create on-chain timelock encryption requests in smart contracts. Once the specified block number is mined, the user’s smart contract will receive the decryption keys automatically. +### Key Capabilities -### Key Capabilities Using this library, developers can: * Encode and encrypt various Solidity-compatible data types. * Encrypt the encoded data off-chain using a public key, which can then be integrated into smart contracts for timelock encryption requests. -### On-Chain Integration - -Solidity interfaces used for on-chain decryption requests can be found in the [contracts](./contracts) directory and the documentation for the solidity interfaces can be found in the [blocklock-solidity](github.com/randa-mu/blocklock-solidity.git) repository. - - ### Build Instructions To build the library, run the following command: @@ -26,6 +21,17 @@ npm run build This creates an `index.js` and `index.d.ts` at the root directory. +### On-Chain Integration + +Solidity interfaces used for on-chain decryption requests can be found in the [contracts](./contracts) directory and the documentation for the solidity interfaces can be found in the [blocklock-solidity](github.com/randa-mu/blocklock-solidity.git) repository. + +#### Smart Contract Addresses + +| Contract | Address | Network | +|-----------------|---------|------------------| +| BlocklockSender | 0x... | Filecoin Testnet | + + ### Usage Example Here’s how to use BlocklockJS to encrypt data and create an on-chain timelock encryption request. @@ -43,8 +49,9 @@ import { getBytes, encodeCiphertextToSolidity } from "blocklockjs/utils"; import { MockBlocklockReceiver__factory } from "../types"; // Generated by Typechain async function main() { + // User wallet const wallet = new ethers.Wallet("your-private-key", ethers.provider); - const blocklockSender = new ethers.Contract("blocklock-sender-address", [], wallet); + // User contract const mockBlocklockReceiver = MockBlocklockReceiver__factory.connect("receiver-address", wallet); // Ensure plainTextValue is initially 0 @@ -62,7 +69,7 @@ async function main() { const encodedMessage = getBytes(msgBytes); // Encrypt the encoded message - const blocklockjs = new Blocklock(wallet, await blocklockSender.getAddress()); + const blocklockjs = new Blocklock(wallet, ); const ciphertext = blocklockjs.encrypt(encodedMessage, blockHeight); // Call `createTimelockRequest` on the user's contract @@ -98,7 +105,7 @@ main().catch((error) => { * After the specified block number, the on-chain timelock contract will trigger a callback function to decrypt the data using a provided decryption key. -### Supported Data Types +### Supported Data Types The library supports encoding and encryption of the following Solidity-compatible data types: * uint256 @@ -111,14 +118,14 @@ The library supports encoding and encryption of the following Solidity-compatibl Use the SolidityEncoder to encode any of these types before encryption. -### Licensing +### Licensing This library is licensed under the MIT License which can be accessed [here](LICENSE). -### Contributing +### Contributing Contributions are welcome! If you find a bug, have a feature request, or want to improve the code, feel free to open an issue or submit a pull request. -### Acknowledgments +### Acknowledgments Special thanks to the Filecoin Foundation for supporting the development of this library. From 5c1fbc1d801c142d5f11cd5a78a63946c08c644a Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 17:22:31 +0000 Subject: [PATCH 32/53] Update README.md --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b741306..0ce9dfe 100644 --- a/README.md +++ b/README.md @@ -10,16 +10,6 @@ Using this library, developers can: * Encode and encrypt various Solidity-compatible data types. * Encrypt the encoded data off-chain using a public key, which can then be integrated into smart contracts for timelock encryption requests. -### Build Instructions - -To build the library, run the following command: - -```sh -npm run build -``` - -This creates an `index.js` and `index.d.ts` at the root directory. - ### On-Chain Integration @@ -32,6 +22,16 @@ Solidity interfaces used for on-chain decryption requests can be found in the [c | BlocklockSender | 0x... | Filecoin Testnet | +### Build Instructions + +To build the library, run the following command: + +```sh +npm run build +``` + +This creates an `index.js` and `index.d.ts` at the root directory. + ### Usage Example Here’s how to use BlocklockJS to encrypt data and create an on-chain timelock encryption request. @@ -94,15 +94,15 @@ main().catch((error) => { 1. Encoding and Encryption: * Use the SolidityEncoder to encode Solidity-compatible data types. - * Encrypt the encoded message with the recipient's public key and specify the decryption block number. + * Encrypt the encoded message and specify the decryption block number. 2. On-Chain Interaction: - * Call the user contract's createTimelockRequest function to store the encrypted data and block number. + * Call the relevant function in the user contract (with the encrypted data and block number used for off-chain encryption) to create an on-chain timelock request. In this example, the function called in the user contract is `createTimelockRequest` which creates a timelock request and stores the encrypted data and request Id. 3. Decryption: - * After the specified block number, the on-chain timelock contract will trigger a callback function to decrypt the data using a provided decryption key. + * After the specified block number, the on-chain timelock contract will trigger a callback function calling the user's contract with the decryption key and the user's contract calls the decrypt function in the BlocklockSender contract using the provided decryption key for on-chain decryption. ### Supported Data Types From 5847dcd2a94a7de95bffcda2e24088deee924883 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 17:23:58 +0000 Subject: [PATCH 33/53] Update README.md --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0ce9dfe..974aba8 100644 --- a/README.md +++ b/README.md @@ -42,10 +42,8 @@ This example demonstrates encrypting a uint256 value and sending it to a user sm The example user smart contract source code can be found [here](contracts/src/mocks/MockBlocklockReceiver.sol). ```js -import { ethers } from "ethers"; -import { Blocklock } from "blocklockjs"; -import { SolidityEncoder } from "blocklockjs/encoder"; -import { getBytes, encodeCiphertextToSolidity } from "blocklockjs/utils"; +import { ethers, getBytes } from "ethers"; +import { Blocklock, SolidityEncoder, encodeCiphertextToSolidity } from "blocklockjs"; import { MockBlocklockReceiver__factory } from "../types"; // Generated by Typechain async function main() { From df45db0f497af41de3babaaeabc5f58a3eb93469 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 17:26:02 +0000 Subject: [PATCH 34/53] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 974aba8..83d8b5c 100644 --- a/README.md +++ b/README.md @@ -96,11 +96,11 @@ main().catch((error) => { 2. On-Chain Interaction: - * Call the relevant function in the user contract (with the encrypted data and block number used for off-chain encryption) to create an on-chain timelock request. In this example, the function called in the user contract is `createTimelockRequest` which creates a timelock request and stores the encrypted data and request Id. + * Call the appropriate function in the user contract with the encrypted data and the block number used during off-chain encryption. In this example, the function `createTimelockRequest` is called, which creates a timelock request, stores the encrypted data, and generates a request ID. 3. Decryption: - * After the specified block number, the on-chain timelock contract will trigger a callback function calling the user's contract with the decryption key and the user's contract calls the decrypt function in the BlocklockSender contract using the provided decryption key for on-chain decryption. + * After the specified block number, the on-chain timelock contract triggers a callback to the user's contract, providing the decryption key. The user's contract then calls the `decrypt` function in the `BlocklockSender` contract to perform on-chain decryption using the provided decryption key. ### Supported Data Types @@ -113,7 +113,7 @@ The library supports encoding and encryption of the following Solidity-compatibl * bytes * bytes32 -Use the SolidityEncoder to encode any of these types before encryption. +Use the `SolidityEncoder` to encode any of these types before encryption. ### Licensing From 9c1df7ae6ff1a8d2b401f27bc7e9fe3723bc44b3 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 17:27:39 +0000 Subject: [PATCH 35/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 83d8b5c..a1a6d2a 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ main().catch((error) => { 2. On-Chain Interaction: - * Call the appropriate function in the user contract with the encrypted data and the block number used during off-chain encryption. In this example, the function `createTimelockRequest` is called, which creates a timelock request, stores the encrypted data, and generates a request ID. + * Call the appropriate function in the user contract with the encrypted data and the block number used during off-chain encryption. In this example, the function `createTimelockRequest` is called, which creates an on-chain timelock request with the encrypted data and block number as a condition for decryption, stores the encrypted data, and generates a request ID. 3. Decryption: From 116d8d0f575a75d9401d370391511c2e815ce184 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Wed, 22 Jan 2025 17:28:15 +0000 Subject: [PATCH 36/53] local readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ef3839c..70ab20c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ BlocklockJS is a TypeScript library designed to simplify the process of generating encrypted data off-chain for the dcrypt network. It enables developers to securely encrypt data tied to a user-specified future block number. The encrypted data can then be used to create on-chain timelock encryption requests in smart contracts. Once the specified block number is mined, the user’s smart contract will receive the decryption keys automatically. - ### Key Capabilities Using this library, developers can: From da7d8d83459e868fe89132f00be1c3e46a176fe8 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Thu, 23 Jan 2025 19:04:57 +0000 Subject: [PATCH 37/53] add blocklock sender contract address to docs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 233cea4..11f5e77 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Solidity interfaces used for on-chain decryption requests can be found in the [c | Contract | Address | Network | |-----------------|---------|------------------| -| BlocklockSender | 0x... | Filecoin Testnet | +| BlocklockSender Proxy | 0xc45580aE3e062aa154CA205A2B5f930194084C6A | Filecoin Testnet | ### Build Instructions From 1060238264016e8a4f0144e31f5c039fd865eeba Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Thu, 23 Jan 2025 21:58:42 +0000 Subject: [PATCH 38/53] update solidity code and ibe lib --- contracts/src/blocklock/BlocklockSender.sol | 7 +++---- src/crypto/ibe-bn254.ts | 2 +- src/generated/factories/BlocklockSender__factory.ts | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/contracts/src/blocklock/BlocklockSender.sol b/contracts/src/blocklock/BlocklockSender.sol index f32e3d1..6d1f183 100644 --- a/contracts/src/blocklock/BlocklockSender.sol +++ b/contracts/src/blocklock/BlocklockSender.sol @@ -104,7 +104,7 @@ contract BlocklockSender is IBlocklockSender, DecryptionReceiverBase { view returns (bytes memory) { - require(decryptionKey.length != 256, "invalid decryption key length"); + require(ciphertext.v.length != 256, "invalid decryption key length"); require(ciphertext.w.length < 256, "message of unsupported length"); // \sigma' \gets V \xor decryptionKey @@ -129,9 +129,8 @@ contract BlocklockSender is IBlocklockSender, DecryptionReceiverBase { // 6: if U = [r]G_2 then return M' else return \bot BLS.PointG1 memory rG1 = BLS.scalarMulG1Base(r); (bool equal, bool success) = BLS.verifyEqualityG1G2(rG1, ciphertext.u); - // Assuming that the validity of the decryptionKey has been verified, - // decryption fails if the ciphertext has been wrongly registered. - require(equal == success == true, "invalid ciphertext registered"); + // Decryption fails if a bad decryption key / ciphertext was provided + require(equal == success == true, "invalid decryption key / ciphertext registered"); return m2; } diff --git a/src/crypto/ibe-bn254.ts b/src/crypto/ibe-bn254.ts index 5b5b991..36dda63 100644 --- a/src/crypto/ibe-bn254.ts +++ b/src/crypto/ibe-bn254.ts @@ -295,7 +295,7 @@ function hash_identity_to_point_g1(identity: Uint8Array, opts: IbeOpts): G1 { // Concrete instantiation of H_2 that outputs a uniformly random byte string of length n // H_2: G_T \rightarrow \{0, 1\}^\ell function hash_shared_key_to_bytes(shared_key: GT, n: number, opts: IbeOpts): Uint8Array { - // todo: analyse the format of Fp12.to_bytes() + // encode shared_key as BE(shared_key.c0.c0.c0) || BE(shared_key.c0.c0.c1) || BE(shared_key.c0.c1.c0) || ... if (opts.expand_fn == "xmd") { return expand_message_xmd(bn254.fields.Fp12.toBytes(shared_key), opts.dsts.H2, n, opts.hash) } else { diff --git a/src/generated/factories/BlocklockSender__factory.ts b/src/generated/factories/BlocklockSender__factory.ts index f6c0568..f650869 100644 --- a/src/generated/factories/BlocklockSender__factory.ts +++ b/src/generated/factories/BlocklockSender__factory.ts @@ -551,7 +551,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801562000010575f80fd5b5060405162002486380380620024868339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b60805161236f620001175f395f818160ba01528181610321015281816105120152610ece015261236f5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611955565b610101610224565b61012961012436600461197d565b610240565b6040519081526020016100f0565b61014a6101453660046119ff565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a73565b610630565b6040516100f0959493929190611b0d565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a73565b610887565b6040516100f09190611b58565b6101016101e0366004611bc6565b610b46565b6101f86101f3366004611a73565b610e5d565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ca602c913981565b6040518060600160405280602281526020016122a86022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d7b565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611ed8565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611eea565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f22565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117a4565b50602082015161044f90600280840191906117a4565b505050602082015160048201906104669082611fb4565b506040820151600582019061047b9082611fb4565b505050606082015160088201906104929082611fb4565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612074565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f4692505050565b5050505050565b6040518060600160405280602281526020016122f66022913981565b6040518060600160405280602281526020016123186022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f39565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f39565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f39565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f6117e2565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f39565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f39565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f39565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f39565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610100829003610b9a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610baa60a086018661209c565b905010610bf95760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c07608086018661209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610c9b57848482818110610c5757610c576120df565b9050013560f81c60f81b828281518110610c7357610c736120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c3d565b505f610caa60a087018761209c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d15945090925090506122f6602083013984610d0e60a08b018b61209c565b90506113ae565b90505f5b610d2660a089018961209c565b9050811015610d8657818181518110610d4157610d416120df565b602001015160f81c60f81b838281518110610d5e57610d5e6120df565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d19565b505f610dcb604051806060016040528060228152602001612318602291398585604051602001610db79291906120f3565b604051602081830303815290604052611544565b90505f610dd7826115a3565b90505f80610df383610dee368e90038e018e612121565b611635565b909250905060018215158215151414610e4e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642063697068657274657874207265676973746572656400000060448201526064016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610eb85760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3f919061213b565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610f9957505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610fcf575050505050815250508152602001600482018054610fff90611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461102b90611f39565b80156110765780601f1061104d57610100808354040283529160200191611076565b820191905f5260205f20905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160058201805461108f90611f39565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90611f39565b80156111065780601f106110dd57610100808354040283529160200191611106565b820191905f5260205f20905b8154815290600101906020018083116110e957829003601f168201915b505050505081525050815260200160088201805461112390611f39565b80601f016020809104026020016040519081016040528092919081815260200182805461114f90611f39565b801561119a5780601f106111715761010080835404028352916020019161119a565b820191905f5260205f20905b81548152906001019060200180831161117d57829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061121b5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b9061124f908890889060240161215a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161128d919061217a565b5f604051808303815f865af19150503d805f81146112c6576040519150601f19603f3d011682016040523d82523d5f602084013e6112cb565b606091505b50509050806112f057604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c836020015184604001518760405161132c93929190612195565b60405180910390a25f8581526020819052604081208181556001810182905560028101828155600382018390556004820183905560058201839055909190816113786006850182611814565b611385600583015f611814565b506113959050600883015f611814565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113d757846040516313727cdd60e11b81526004016102a69190611955565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161141697969594939291906121bf565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161144b9493929190612243565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff81111561148257611482611c2a565b6040519080825280601f01601f1916602001820160405280156114ac576020820181803683370190505b5090505f60056114c0601f60ff8d16612288565b901c905060015b81811015611526578584186114dd826001612288565b8e8b6040516020016114f29493929190612243565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114c7565b505f1901602090810282010191909152955050505050509392505050565b5f80611552848460306113ae565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115be61184e565b6001815260026020820152604081018390525f60608360808460076107d05a03fa90508061162e5760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f0151600160028110611713576117136120df565b60200201518152602001855f01515f60028110611732576117326120df565b602002015181526020018560200151600160028110611753576117536120df565b6020020151815260200185602001515f60028110611773576117736120df565b60200201519052905061178461186c565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117d2579160200282015b828111156117d25782518255916020019190600101906117b7565b506117de92915061188a565b5090565b6040518060a001604052805f81526020015f815260200161180161189e565b8152606060208201525f60409091015290565b50805461182090611f39565b5f825580601f1061182f575050565b601f0160209004905f5260205f209081019061184b919061188a565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156117de575f815560010161188b565b60405180606001604052806118b16118c5565b815260200160608152602001606081525090565b60405180604001604052806118d86118ea565b81526020016118e56118ea565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561192257818101518382015260200161190a565b50505f910152565b5f8151808452611941816020860160208601611908565b601f01601f19169290920160200192915050565b602081525f610f3f602083018461192a565b5f60c08284031215611977575f80fd5b50919050565b5f806040838503121561198e575f80fd5b82359150602083013567ffffffffffffffff8111156119ab575f80fd5b6119b785828601611967565b9150509250929050565b5f8083601f8401126119d1575f80fd5b50813567ffffffffffffffff8111156119e8575f80fd5b60208301915083602082850101111561179d575f80fd5b5f805f805f60608688031215611a13575f80fd5b85359450602086013567ffffffffffffffff80821115611a31575f80fd5b611a3d89838a016119c1565b90965094506040880135915080821115611a55575f80fd5b50611a62888289016119c1565b969995985093965092949392505050565b5f60208284031215611a83575f80fd5b5035919050565b805f5b6002811015611aac578151845260209384019390910190600101611a8d565b50505050565b5f8151611ac0848251611a8a565b60200151611ad16040850182611a8a565b50602082015160c06080850152611aeb60c085018261192a565b9050604083015184820360a0860152611b04828261192a565b95945050505050565b85815284602082015260a060408201525f611b2b60a0830186611ab2565b8281036060840152611b3d818661192a565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611b8760c0840182611ab2565b90506060840151601f19848303016080850152611ba4828261192a565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bd8575f80fd5b833567ffffffffffffffff80821115611bef575f80fd5b611bfb87838801611967565b94506020860135915080821115611c10575f80fd5b50611c1d868287016119c1565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c6157611c61611c2a565b60405290565b5f82601f830112611c76575f80fd5b611c7e611c3e565b806040840185811115611c8f575f80fd5b845b81811015611ca9578035845260209384019301611c91565b509095945050505050565b5f60808284031215611cc4575f80fd5b611ccc611c3e565b9050611cd88383611c67565b8152611ce78360408401611c67565b602082015292915050565b5f82601f830112611d01575f80fd5b813567ffffffffffffffff80821115611d1c57611d1c611c2a565b604051601f8301601f19908116603f01168101908282118183101715611d4457611d44611c2a565b81604052838152866020858801011115611d5c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611d8b575f80fd5b6040516060810167ffffffffffffffff8282108183111715611daf57611daf611c2a565b81604052611dbd3686611cb4565b83526080850135915080821115611dd2575f80fd5b611dde36838701611cf2565b602084015260a0850135915080821115611df6575f80fd5b50611e0336828601611cf2565b60408301525092915050565b5f808335601e19843603018112611e24575f80fd5b830160208101925035905067ffffffffffffffff811115611e43575f80fd5b80360382131561179d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611e966080830183611e0f565b60c06080860152611eab60c086018284611e51565b915050611ebb60a0840184611e0f565b85830360a0870152611ece838284611e51565b9695505050505050565b602081525f610f3f6020830184611e79565b606081525f611efc606083018661192a565b8281036020840152611f0e818661192a565b90508281036040840152611ece818561192a565b5f60208284031215611f32575f80fd5b5051919050565b600181811c90821680611f4d57607f821691505b60208210810361197757634e487b7160e01b5f52602260045260245ffd5b601f821115611faf57805f5260205f20601f840160051c81016020851015611f905750805b601f840160051c820191505b818110156105f1575f8155600101611f9c565b505050565b815167ffffffffffffffff811115611fce57611fce611c2a565b611fe281611fdc8454611f39565b84611f6b565b602080601f831160018114612015575f8415611ffe5750858301515b5f19600386901b1c1916600185901b17855561206c565b5f85815260208120601f198616915b8281101561204357888601518255948401946001909101908401612024565b508582101561206057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f61208c6060830185611e79565b9050826040830152949350505050565b5f808335601e198436030181126120b1575f80fd5b83018035915067ffffffffffffffff8211156120cb575f80fd5b60200191503681900382131561179d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8351612104818460208801611908565b835190830190612118818360208801611908565b01949350505050565b5f60808284031215612131575f80fd5b610f3f8383611cb4565b5f6020828403121561214b575f80fd5b81518015158114610f3f575f80fd5b828152604060208201525f612172604083018461192a565b949350505050565b5f825161218b818460208701611908565b9190910192915050565b838152606060208201525f6121ad6060830185611ab2565b8281036040840152611ece818561192a565b5f88516121d0818460208d01611908565b8851908301906121e4818360208d01611908565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612223816003850160208a01611908565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161226a816021860160208901611908565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa2646970667358221220a2c3b694e8870f05f3d5c66fb2631f36262c1902a80ec687ed8d7b4ef45f301464736f6c63430008180033"; + "0x60a060405234801562000010575f80fd5b50604051620024aa380380620024aa8339810160408190526200003391620000bb565b806001600160a01b038116620000a85760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574207a65726f206164647265737320617320646563727960448201526f383a34b7b71035b2bc9039b2b73232b960811b606482015260840160405180910390fd5b6001600160a01b031660805250620000ea565b5f60208284031215620000cc575f80fd5b81516001600160a01b0381168114620000e3575f80fd5b9392505050565b608051612393620001175f395f818160ba01528181610321015281816105120152610ef201526123935ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80637350f4561161006e5780637350f45614610154578063826d362b1461015c5780638a1f165a14610180578063c58343ef146101b2578063c9bc18c4146101d2578063cd802c91146101e5575f80fd5b8063133c40c7146100b5578063235296f7146100f957806338c27d121461010e57806346cd2b42146101165780635d3be0011461013757806367b276af1461014c575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610101610208565b6040516100f09190611979565b610101610224565b6101296101243660046119a1565b610240565b6040519081526020016100f0565b61014a610145366004611a23565b610507565b005b6101016105f8565b610101610614565b61016f61016a366004611a97565b610630565b6040516100f0959493929190611b31565b61010160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b81525081565b6101c56101c0366004611a97565b610887565b6040516100f09190611b7c565b6101016101e0366004611bea565b610b46565b6101f86101f3366004611a97565b610e81565b60405190151581526020016100f0565b6040518060600160405280602c81526020016122ee602c913981565b6040518060600160405280602281526020016122cc6022913981565b5f4383116102af5760405162461bcd60e51b815260206004820152603160248201527f626c6f636b486569676874206d757374206265207374726963746c7920677265604482015270185d195c881d1a185b8818dd5c9c995b9d607a1b60648201526084015b60405180910390fd5b5f6040518060a001604052805f8152602001858152602001846102d190611d9f565b815260200160405180602001604052805f8152508152602001336001600160a01b031681525090505f8460405160200161030d91815260200190565b60405160208183030381529060405290505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87f0e6160405180604001604052806013815260200172424e3235342d424c532d424c4f434b4c4f434b60681b8152508760405160200161038b9190611efc565b604051602081830303815290604052856040518463ffffffff1660e01b81526004016103b993929190611f0e565b6020604051808303815f875af11580156103d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f99190611f46565b8084525f818152602081815260409182902086518155908601516001820155908501518051805193945086936002808501929183916104399183916117c8565b50602082015161044f90600280840191906117c8565b505050602082015160048201906104669082611fd8565b506040820151600582019061047b9082611fd8565b505050606082015160088201906104929082611fd8565b5060809190910151600990910180546001600160a01b0319166001600160a01b03909216919091179055604051339082907f126e74afe6053bc58ebb2677b900753aa56801a8b86023af245885b817dc7c2e906104f4908a908a904290612098565b60405180910390a3925050505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057f5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792044656372797074696f6e53656e6465722063616e2063616c6c000060448201526064016102a6565b6105f18585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284375f92019190915250610f6a92505050565b5050505050565b60405180606001604052806022815260200161231a6022913981565b60405180606001604052806022815260200161233c6022913981565b5f602081905290815260409081902080546001820154835160e0810194859052919390929190600280840191839160608301918491839160a0860191849182845b81548152602001906001019080831161067157505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116106a75750505050508152505081526020016004820180546106d790611f5d565b80601f016020809104026020016040519081016040528092919081815260200182805461070390611f5d565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200160058201805461076790611f5d565b80601f016020809104026020016040519081016040528092919081815260200182805461079390611f5d565b80156107de5780601f106107b5576101008083540402835291602001916107de565b820191905f5260205f20905b8154815290600101906020018083116107c157829003601f168201915b505050505081525050908060080180546107f790611f5d565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611f5d565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b505050600990930154919250506001600160a01b031685565b61088f611806565b5f82815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b8154815260200190600101908083116108e257505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161091857505050505081525050815260200160048201805461094890611f5d565b80601f016020809104026020016040519081016040528092919081815260200182805461097490611f5d565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081526020016005820180546109d890611f5d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490611f5d565b8015610a4f5780601f10610a2657610100808354040283529160200191610a4f565b820191905f5260205f20905b815481529060010190602001808311610a3257829003601f168201915b5050505050815250508152602001600882018054610a6c90611f5d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890611f5d565b8015610ae35780601f10610aba57610100808354040283529160200191610ae3565b820191905f5260205f20905b815481529060010190602001808311610ac657829003601f168201915b5050509183525050600991909101546001600160a01b031660209091015280519091506105015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c995c5d595cdd1251607a1b60448201526064016102a6565b6060610b5560808501856120c0565b905061010003610ba75760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642064656372797074696f6e206b6579206c656e67746800000060448201526064016102a6565b610100610bb760a08601866120c0565b905010610c065760405162461bcd60e51b815260206004820152601d60248201527f6d657373616765206f6620756e737570706f72746564206c656e67746800000060448201526064016102a6565b5f610c1460808601866120c0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509394505050505b83811015610ca857848482818110610c6457610c64612103565b9050013560f81c60f81b828281518110610c8057610c80612103565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610c4a565b505f610cb760a08701876120c0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080516060810190915260228082529596509094610d229450909250905061231a602083013984610d1b60a08b018b6120c0565b90506113d2565b90505f5b610d3360a08901896120c0565b9050811015610d9357818181518110610d4e57610d4e612103565b602001015160f81c60f81b838281518110610d6b57610d6b612103565b0160200180516001600160f81b0319908116909218909116905f82901a905350600101610d26565b505f610dd860405180606001604052806022815260200161233c602291398585604051602001610dc4929190612117565b604051602081830303815290604052611568565b90505f610de4826115c7565b90505f80610e0083610dfb368e90038e018e612145565b611659565b909250905060018215158215151414610e725760405162461bcd60e51b815260206004820152602e60248201527f696e76616c69642064656372797074696f6e206b6579202f206369706865727460448201526d195e1d081c9959da5cdd195c995960921b60648201526084016102a6565b50939998505050505050505050565b5f8181526020819052604081205480610edc5760405162461bcd60e51b815260206004820152601b60248201527f626c6f636b6c6f636b2072657175657374206e6f7420666f756e64000000000060448201526064016102a6565b60405163cd802c9160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cd802c9190602401602060405180830381865afa158015610f3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f63919061215f565b9392505050565b5f83815260208181526040808320815160a0808201845282548252600183015494820194909452825160e08101808552919492938501929091600280860192849260608401928592849290860191849182845b815481526020019060010190808311610fbd57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610ff357505050505081525050815260200160048201805461102390611f5d565b80601f016020809104026020016040519081016040528092919081815260200182805461104f90611f5d565b801561109a5780601f106110715761010080835404028352916020019161109a565b820191905f5260205f20905b81548152906001019060200180831161107d57829003601f168201915b505050505081526020016005820180546110b390611f5d565b80601f01602080910402602001604051908101604052809291908181526020018280546110df90611f5d565b801561112a5780601f106111015761010080835404028352916020019161112a565b820191905f5260205f20905b81548152906001019060200180831161110d57829003601f168201915b505050505081525050815260200160088201805461114790611f5d565b80601f016020809104026020016040519081016040528092919081815260200182805461117390611f5d565b80156111be5780601f10611195576101008083540402835291602001916111be565b820191905f5260205f20905b8154815290600101906020018083116111a157829003601f168201915b5050509183525050600991909101546001600160a01b0316602090910152805190915061123f5760405162461bcd60e51b815260206004820152602960248201527f6e6f206d61746368696e6720626c6f636b6c6f636b207265717565737420666f6044820152681c881d1a185d081a5960ba1b60648201526084016102a6565b6060810182905260808101516040515f916001600160a01b031690632eca0c0160e11b90611273908890889060240161217e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112b1919061219e565b5f604051808303815f865af19150503d805f81146112ea576040519150601f19603f3d011682016040523d82523d5f602084013e6112ef565b606091505b505090508061131457604051630a841a9b60e11b8152600481018690526024016102a6565b847f33b40097ac8b0a5517c18a7039d9a7aa5c2454fce1aef0eb090c76882533374c8360200151846040015187604051611350939291906121b9565b60405180910390a25f85815260208190526040812081815560018101829055600281018281556003820183905560048201839055600582018390559091908161139c6006850182611838565b6113a9600583015f611838565b506113b99050600883015f611838565b5060090180546001600160a01b03191690555050505050565b825160609060ff8111156113fb57846040516313727cdd60e11b81526004016102a69190611979565b60408051608880825260c082019092525f916020820181803683370190505090505f81865f875f8b8860405160200161143a97969594939291906121e3565b60405160208183030381529060405290505f818051906020012090505f8160018a8760405160200161146f9493929190612267565b60408051601f19818403018152919052805160208201209091505f60ff891667ffffffffffffffff8111156114a6576114a6611c4e565b6040519080825280601f01601f1916602001820160405280156114d0576020820181803683370190505b5090505f60056114e4601f60ff8d166122ac565b901c905060015b8181101561154a578584186115018260016122ac565b8e8b6040516020016115169493929190612267565b60408051808303601f1901815291905260205f198301810285018101959095528051948101949094209394506001016114eb565b505f1901602090810282010191909152955050505050509392505050565b5f80611576848460306113d2565b601881015160308201519192506001600160c01b0391821691165f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478381600160c01b850908979650505050505050565b604080518082019091525f80825260208201526115e2611872565b6001815260026020820152604081018390525f60608360808460076107d05a03fa9050806116525760405162461bcd60e51b815260206004820152601f60248201527f4731207363616c6172206d756c7469706c69636174696f6e206661696c65640060448201526064016102a6565b5050919050565b5f805f604051806101800160405280865f01518152602001866020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020016001815260200160028152602001855f015160016002811061173757611737612103565b60200201518152602001855f01515f6002811061175657611756612103565b60200201518152602001856020015160016002811061177757611777612103565b6020020151815260200185602001515f6002811061179757611797612103565b6020020151905290506117a8611890565b6020816101808460086107d05a03fa9051151593509150505b9250929050565b82600281019282156117f6579160200282015b828111156117f65782518255916020019190600101906117db565b506118029291506118ae565b5090565b6040518060a001604052805f81526020015f81526020016118256118c2565b8152606060208201525f60409091015290565b50805461184490611f5d565b5f825580601f10611853575050565b601f0160209004905f5260205f209081019061186f91906118ae565b50565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b80821115611802575f81556001016118af565b60405180606001604052806118d56118e9565b815260200160608152602001606081525090565b60405180604001604052806118fc61190e565b815260200161190961190e565b905290565b60405180604001604052806002906020820280368337509192915050565b5f5b8381101561194657818101518382015260200161192e565b50505f910152565b5f815180845261196581602086016020860161192c565b601f01601f19169290920160200192915050565b602081525f610f63602083018461194e565b5f60c0828403121561199b575f80fd5b50919050565b5f80604083850312156119b2575f80fd5b82359150602083013567ffffffffffffffff8111156119cf575f80fd5b6119db8582860161198b565b9150509250929050565b5f8083601f8401126119f5575f80fd5b50813567ffffffffffffffff811115611a0c575f80fd5b6020830191508360208285010111156117c1575f80fd5b5f805f805f60608688031215611a37575f80fd5b85359450602086013567ffffffffffffffff80821115611a55575f80fd5b611a6189838a016119e5565b90965094506040880135915080821115611a79575f80fd5b50611a86888289016119e5565b969995985093965092949392505050565b5f60208284031215611aa7575f80fd5b5035919050565b805f5b6002811015611ad0578151845260209384019390910190600101611ab1565b50505050565b5f8151611ae4848251611aae565b60200151611af56040850182611aae565b50602082015160c06080850152611b0f60c085018261194e565b9050604083015184820360a0860152611b28828261194e565b95945050505050565b85815284602082015260a060408201525f611b4f60a0830186611ad6565b8281036060840152611b61818661194e565b91505060018060a01b03831660808301529695505050505050565b6020815281516020820152602082015160408201525f604083015160a06060840152611bab60c0840182611ad6565b90506060840151601f19848303016080850152611bc8828261194e565b608095909501516001600160a01b031660a09490940193909352509192915050565b5f805f60408486031215611bfc575f80fd5b833567ffffffffffffffff80821115611c13575f80fd5b611c1f8783880161198b565b94506020860135915080821115611c34575f80fd5b50611c41868287016119e5565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611c8557611c85611c4e565b60405290565b5f82601f830112611c9a575f80fd5b611ca2611c62565b806040840185811115611cb3575f80fd5b845b81811015611ccd578035845260209384019301611cb5565b509095945050505050565b5f60808284031215611ce8575f80fd5b611cf0611c62565b9050611cfc8383611c8b565b8152611d0b8360408401611c8b565b602082015292915050565b5f82601f830112611d25575f80fd5b813567ffffffffffffffff80821115611d4057611d40611c4e565b604051601f8301601f19908116603f01168101908282118183101715611d6857611d68611c4e565b81604052838152866020858801011115611d80575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60c08236031215611daf575f80fd5b6040516060810167ffffffffffffffff8282108183111715611dd357611dd3611c4e565b81604052611de13686611cd8565b83526080850135915080821115611df6575f80fd5b611e0236838701611d16565b602084015260a0850135915080821115611e1a575f80fd5b50611e2736828601611d16565b60408301525092915050565b5f808335601e19843603018112611e48575f80fd5b830160208101925035905067ffffffffffffffff811115611e67575f80fd5b8036038213156117c1575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f611eba6080830183611e33565b60c06080860152611ecf60c086018284611e75565b915050611edf60a0840184611e33565b85830360a0870152611ef2838284611e75565b9695505050505050565b602081525f610f636020830184611e9d565b606081525f611f20606083018661194e565b8281036020840152611f32818661194e565b90508281036040840152611ef2818561194e565b5f60208284031215611f56575f80fd5b5051919050565b600181811c90821680611f7157607f821691505b60208210810361199b57634e487b7160e01b5f52602260045260245ffd5b601f821115611fd357805f5260205f20601f840160051c81016020851015611fb45750805b601f840160051c820191505b818110156105f1575f8155600101611fc0565b505050565b815167ffffffffffffffff811115611ff257611ff2611c4e565b612006816120008454611f5d565b84611f8f565b602080601f831160018114612039575f84156120225750858301515b5f19600386901b1c1916600185901b178555612090565b5f85815260208120601f198616915b8281101561206757888601518255948401946001909101908401612048565b508582101561208457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b838152606060208201525f6120b06060830185611e9d565b9050826040830152949350505050565b5f808335601e198436030181126120d5575f80fd5b83018035915067ffffffffffffffff8211156120ef575f80fd5b6020019150368190038213156117c1575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f835161212881846020880161192c565b83519083019061213c81836020880161192c565b01949350505050565b5f60808284031215612155575f80fd5b610f638383611cd8565b5f6020828403121561216f575f80fd5b81518015158114610f63575f80fd5b828152604060208201525f612196604083018461194e565b949350505050565b5f82516121af81846020870161192c565b9190910192915050565b838152606060208201525f6121d16060830185611ad6565b8281036040840152611ef2818561194e565b5f88516121f4818460208d0161192c565b885190830190612208818360208d0161192c565b60f889811b6001600160f81b03199081169390920192835288811b8216600184015287901b811660028301528551612247816003850160208a0161192c565b60f89590951b169301600381019390935250506004019695505050505050565b8481525f60ff60f81b808660f81b166020840152845161228e81602186016020890161192c565b60f89490941b16919092016021810191909152602201949350505050565b8082018082111561050157634e487b7160e01b5f52601160045260245ffdfe424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48325f424c4f434b4c4f434b5f424e32353447315f584d443a4b454343414b2d3235365f535644575f524f5f48315f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48345f424c4f434b4c4f434b5f424e3235345f584d443a4b454343414b2d3235365f48335fa2646970667358221220b1301b32985579d75ad590f2957d0305bf6d74791b6f010f07b02e79fab6412864736f6c63430008180033"; type BlocklockSenderConstructorParams = | [signer?: Signer] From c87d85d7422386aa9ffadc10b6b50eea9cbd8aa8 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Thu, 23 Jan 2025 22:32:03 +0000 Subject: [PATCH 39/53] udpate readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 11f5e77..fb53ad5 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Solidity interfaces used for on-chain decryption requests can be found in the [c | Contract | Address | Network | |-----------------|---------|------------------| -| BlocklockSender Proxy | 0xc45580aE3e062aa154CA205A2B5f930194084C6A | Filecoin Testnet | +| BlocklockSender Proxy | 0xa0d2eC4992B016b2C6E469b24CB470669AEa2D1D | Filecoin Testnet | ### Build Instructions From 913927025fb26a596dc3cb7dd4c4a4d23a67a19f Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Thu, 23 Jan 2025 23:07:33 +0000 Subject: [PATCH 40/53] update contract address --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb53ad5..4bde801 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Solidity interfaces used for on-chain decryption requests can be found in the [c | Contract | Address | Network | |-----------------|---------|------------------| -| BlocklockSender Proxy | 0xa0d2eC4992B016b2C6E469b24CB470669AEa2D1D | Filecoin Testnet | +| BlocklockSender Proxy | 0xfF66908E1d7d23ff62791505b2eC120128918F44 | Filecoin Testnet | ### Build Instructions From 2007a31d10762f8d699194b59390561530d91949 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 03:06:35 +0000 Subject: [PATCH 41/53] update contracts readme --- contracts/README.md | 115 +++++++++++++++++++++++++++----------------- 1 file changed, 72 insertions(+), 43 deletions(-) diff --git a/contracts/README.md b/contracts/README.md index 9265b45..6cff781 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -1,66 +1,95 @@ -## Foundry +## blocklock-solidity -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** +This repository contains the Solidity-based smart contracts library that facilitates Randamu's on-chain timelock encryption and decryption. -Foundry consists of: +By leveraging this library, developers can implement time-based data unlocking mechanisms securely in their smart contracts. -- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). -- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. -- **Chisel**: Fast, utilitarian, and verbose solidity REPL. +This library is designed with modularity and simplicity in mind, allowing developers to extend and integrate it into their existing projects easily. -## Documentation +### Features +* Timelock Encryption: Encrypt data that can only be decrypted after a specified block number. +* Decryption Callback: Implement custom logic that gets triggered when the decryption key is received, i.e., decryption of the Ciphertext. +* Abstract Interface: Extend and implement the library to suit your specific needs. -https://book.getfoundry.sh/ -## Usage -### Build +### Smart Contract Addresses -```shell -$ forge build -``` +| Contract | Address | Network | +|-----------------|---------|------------------| +| BlocklockSender Proxy | 0xfF66908E1d7d23ff62791505b2eC120128918F44 | Filecoin Testnet | +| BlocklockSender Implementation | 0x9B849F45dFe4655ac45CA6621b46c0224d3dBf34 | Filecoin Testnet | +| DecryptionSender Proxy | 0x9297Bb1d423ef7386C8b2e6B7BdE377977FBedd3 | Filecoin Testnet | +| DecryptionSender Implementation | 0x9Ae47e892B51Db9Df906C6FB753662072C1a9883 | Filecoin Testnet | +| SignatureSchemeAddressProvider | 0xD2b5084E68230D609AEaAe5E4cF7df9ebDd6375A | Filecoin Testnet | +| BlocklockSignatureScheme | 0x62C9CF8Ff30177d8479eDaB017f38017bEbf10C2 | Filecoin Testnet | +| MockBlocklockReceiver | 0x6f637EcB3Eaf8bEd0fc597Dc54F477a33BBCA72B | Filecoin Testnet | -### Test -```shell -$ forge test -``` +### Using the Solidity Interfaces -### Format +To use this library in your project, import the required files into your contract and use the proxy contract address for BlocklockSender in the constructor as the blocklockContract parameter: -```shell -$ forge fmt +```solidity +// Import the Types library for managing ciphertexts +import {TypesLib} from "../libraries/TypesLib.sol"; +// Import the AbstractBlocklockReceiver for handling timelock decryption callbacks +import {AbstractBlocklockReceiver} from "../AbstractBlocklockReceiver.sol"; ``` -### Gas Snapshots - -```shell -$ forge snapshot +#### Example Usage + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {TypesLib} from "../libraries/TypesLib.sol"; +import {AbstractBlocklockReceiver} from "../AbstractBlocklockReceiver.sol"; + +contract MockBlocklockReceiver is AbstractBlocklockReceiver { + uint256 public requestId; + TypesLib.Ciphertext public encryptedValue; + uint256 public plainTextValue; + + constructor(address blocklockContract) AbstractBlocklockReceiver(blocklockContract) {} + + function createTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) + external + returns (uint256) + { + // Create timelock request + requestId = blocklock.requestBlocklock(decryptionBlockNumber, encryptedData); + // Store the Ciphertext + encryptedValue = encryptedData; + return requestId; + } + + function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) + external + override + onlyBlocklockContract + { + require(requestID == requestId, "Invalid request id"); + // Decrypt stored Ciphertext with the decryption key + plainTextValue = abi.decode(blocklock.decrypt(encryptedValue, decryptionKey), (uint256)); + } +} ``` -### Anvil +### How It Works -```shell -$ anvil -``` +* Encryption: Use the off-chain TypeScript library to generate the encrypted data (`TypesLib.Ciphertext`) with a threshold network public key. The following solidity types are supported by the TypeScript library - uint256, int256, address, string, bool, bytes32, bytes, uint256 array, address array, and struct. +* Timelock Request: Call `blocklock.requestBlocklock` with the block number after which decryption is allowed and the encrypted data or Ciphertext. +* Decryption: Once the specified block number is reached, a callback to your `receiveBlocklock` logic is triggered with the decryption key to unlock the data. -### Deploy +### Licensing -```shell -$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key -``` +This library is licensed under the MIT License which can be accessed [here](LICENSE). -### Cast +### Contributing -```shell -$ cast -``` +Contributions are welcome! If you find a bug, have a feature request, or want to improve the code, feel free to open an issue or submit a pull request. -### Help +### Acknowledgments -```shell -$ forge --help -$ anvil --help -$ cast --help -``` +Special thanks to the Filecoin Foundation for supporting the development of this library. From 6a90719ac2ef07134603d80a3467b5bd9867d2c9 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 03:09:25 +0000 Subject: [PATCH 42/53] remove contracts readme --- contracts/README.md | 95 --------------------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 contracts/README.md diff --git a/contracts/README.md b/contracts/README.md deleted file mode 100644 index 6cff781..0000000 --- a/contracts/README.md +++ /dev/null @@ -1,95 +0,0 @@ -## blocklock-solidity - -This repository contains the Solidity-based smart contracts library that facilitates Randamu's on-chain timelock encryption and decryption. - -By leveraging this library, developers can implement time-based data unlocking mechanisms securely in their smart contracts. - -This library is designed with modularity and simplicity in mind, allowing developers to extend and integrate it into their existing projects easily. - -### Features -* Timelock Encryption: Encrypt data that can only be decrypted after a specified block number. -* Decryption Callback: Implement custom logic that gets triggered when the decryption key is received, i.e., decryption of the Ciphertext. -* Abstract Interface: Extend and implement the library to suit your specific needs. - - - -### Smart Contract Addresses - -| Contract | Address | Network | -|-----------------|---------|------------------| -| BlocklockSender Proxy | 0xfF66908E1d7d23ff62791505b2eC120128918F44 | Filecoin Testnet | -| BlocklockSender Implementation | 0x9B849F45dFe4655ac45CA6621b46c0224d3dBf34 | Filecoin Testnet | -| DecryptionSender Proxy | 0x9297Bb1d423ef7386C8b2e6B7BdE377977FBedd3 | Filecoin Testnet | -| DecryptionSender Implementation | 0x9Ae47e892B51Db9Df906C6FB753662072C1a9883 | Filecoin Testnet | -| SignatureSchemeAddressProvider | 0xD2b5084E68230D609AEaAe5E4cF7df9ebDd6375A | Filecoin Testnet | -| BlocklockSignatureScheme | 0x62C9CF8Ff30177d8479eDaB017f38017bEbf10C2 | Filecoin Testnet | -| MockBlocklockReceiver | 0x6f637EcB3Eaf8bEd0fc597Dc54F477a33BBCA72B | Filecoin Testnet | - - -### Using the Solidity Interfaces - -To use this library in your project, import the required files into your contract and use the proxy contract address for BlocklockSender in the constructor as the blocklockContract parameter: - -```solidity -// Import the Types library for managing ciphertexts -import {TypesLib} from "../libraries/TypesLib.sol"; -// Import the AbstractBlocklockReceiver for handling timelock decryption callbacks -import {AbstractBlocklockReceiver} from "../AbstractBlocklockReceiver.sol"; -``` - -#### Example Usage - -```solidity -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import {TypesLib} from "../libraries/TypesLib.sol"; -import {AbstractBlocklockReceiver} from "../AbstractBlocklockReceiver.sol"; - -contract MockBlocklockReceiver is AbstractBlocklockReceiver { - uint256 public requestId; - TypesLib.Ciphertext public encryptedValue; - uint256 public plainTextValue; - - constructor(address blocklockContract) AbstractBlocklockReceiver(blocklockContract) {} - - function createTimelockRequest(uint256 decryptionBlockNumber, TypesLib.Ciphertext calldata encryptedData) - external - returns (uint256) - { - // Create timelock request - requestId = blocklock.requestBlocklock(decryptionBlockNumber, encryptedData); - // Store the Ciphertext - encryptedValue = encryptedData; - return requestId; - } - - function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) - external - override - onlyBlocklockContract - { - require(requestID == requestId, "Invalid request id"); - // Decrypt stored Ciphertext with the decryption key - plainTextValue = abi.decode(blocklock.decrypt(encryptedValue, decryptionKey), (uint256)); - } -} -``` - -### How It Works - -* Encryption: Use the off-chain TypeScript library to generate the encrypted data (`TypesLib.Ciphertext`) with a threshold network public key. The following solidity types are supported by the TypeScript library - uint256, int256, address, string, bool, bytes32, bytes, uint256 array, address array, and struct. -* Timelock Request: Call `blocklock.requestBlocklock` with the block number after which decryption is allowed and the encrypted data or Ciphertext. -* Decryption: Once the specified block number is reached, a callback to your `receiveBlocklock` logic is triggered with the decryption key to unlock the data. - -### Licensing - -This library is licensed under the MIT License which can be accessed [here](LICENSE). - -### Contributing - -Contributions are welcome! If you find a bug, have a feature request, or want to improve the code, feel free to open an issue or submit a pull request. - -### Acknowledgments - -Special thanks to the Filecoin Foundation for supporting the development of this library. From dcb85d4ecf41b17dfb5b96a035b9c69dac528665 Mon Sep 17 00:00:00 2001 From: najienka Date: Fri, 24 Jan 2025 18:40:24 +0000 Subject: [PATCH 43/53] move blskey to .env --- .env.example | 1 + package.json | 1 + test/integration.test.ts | 6 ++++-- yarn.lock | 5 +++++ 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e92d829 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +BLS_KEY= \ No newline at end of file diff --git a/package.json b/package.json index 5dc0c84..85813b0 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "@jest/globals": "^29.7.0", "@types/jest": "^29.5.14", "@types/node": "^22.7.5", + "dotenv": "^16.4.5", "esbuild": "^0.24.0", "eslint": "^9.17.0", "ganache": "^7.9.2", diff --git a/test/integration.test.ts b/test/integration.test.ts index ee54a99..3ade7e8 100644 --- a/test/integration.test.ts +++ b/test/integration.test.ts @@ -6,6 +6,8 @@ import { MockBlocklockReceiver__factory, BlocklockSender__factory, BlocklockSign import { SolidityEncoder, Blocklock, encodeCiphertextToSolidity, parseSolidityCiphertextString, extractSingleLog } from "../src" import { BlsBn254 } from "../src/crypto/bls-bn254"; import { IbeOpts, preprocess_decryption_key_g1 } from "../src/crypto/ibe-bn254"; +import dotenv from 'dotenv'; +dotenv.config(); const blocklock_default_pk = { x: { @@ -30,7 +32,7 @@ const BLOCKLOCK_IBE_OPTS: IbeOpts = { }, }; -const blsKey = "0x58aabbe98959c4dcb96c44c53be7e3bb980791fc7a9e03445c4af612a45ac906"; +const blsKey = process.env.BLS_KEY; const SCHEME_ID = "BN254-BLS-BLOCKLOCK"; let server: any; @@ -184,7 +186,7 @@ describe("Blocklock blockchain integration tests with Ganache", () => { console.log(`callback address ${callback}, scheme id ${schemeID}`); const bls = await BlsBn254.create(); - const { pubKey, secretKey } = bls.createKeyPair(blsKey); + const { pubKey, secretKey } = bls.createKeyPair(blsKey as `0x${string}`); const conditionBytes = isHexString(condition) ? getBytes(condition) : toUtf8Bytes(condition); const m = bls.hashToPoint(BLOCKLOCK_IBE_OPTS.dsts.H1_G1, conditionBytes); diff --git a/yarn.lock b/yarn.lock index 2fd26aa..2c84622 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1579,6 +1579,11 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dotenv@^16.4.5: + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + ejs@^3.1.10: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" From c6d184d51e6f77233dd42aed68bbef9854e0e92c Mon Sep 17 00:00:00 2001 From: najienka Date: Fri, 24 Jan 2025 19:09:58 +0000 Subject: [PATCH 44/53] update git action with env --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3ba5768..d893cd4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,9 @@ on: branches: [master] pull_request: +env: + BLS_KEY: ${{ secrets.BLS_KEY }} + jobs: build: runs-on: ubuntu-latest From bd4be2606db374f2d07b42c598617cb02c01bb80 Mon Sep 17 00:00:00 2001 From: najienka Date: Fri, 24 Jan 2025 19:24:19 +0000 Subject: [PATCH 45/53] update identityFromEncodedConditions --- src/crypto/abe-bn254.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/crypto/abe-bn254.ts b/src/crypto/abe-bn254.ts index eefd962..cd57f15 100644 --- a/src/crypto/abe-bn254.ts +++ b/src/crypto/abe-bn254.ts @@ -58,9 +58,7 @@ export function identityFromConditions(conditions: Conditions): Uint8Array { * @returns identity representing the conditions */ function identityFromEncodedConditions(encodedConditions: Uint8Array): Uint8Array { - const identity = new Uint8Array(encodedConditions.length) - identity.set(encodedConditions) - return identity + return encodedConditions } /** From 45ebe920b8dd32c4ce883c45376880c51c71ccf4 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 21:22:05 +0000 Subject: [PATCH 46/53] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Robin Müller <33422394+azixus@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4bde801..7b46e93 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ async function main() { // User wallet const wallet = new ethers.Wallet("your-private-key", ethers.provider); // User contract - const mockBlocklockReceiver = MockBlocklockReceiver__factory.connect("user blocklcok receiver contract address", wallet); + const mockBlocklockReceiver = MockBlocklockReceiver__factory.connect("user blocklock receiver contract address", wallet); // Ensure plainTextValue is initially 0 console.log("Initial plainTextValue:", (await mockBlocklockReceiver.plainTextValue()).toString()); From fb7f262bc413a586900da409617ddb77cbef80ec Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 21:30:25 +0000 Subject: [PATCH 47/53] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Robin Müller <33422394+azixus@users.noreply.github.com> --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7b46e93..9f8d0d3 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ Solidity interfaces used for on-chain decryption requests can be found in the [c To build the library, run the following command: ```sh +npm install npm run build ``` From 5ae92a0876524e86a850ae46a0ec5c01a224a968 Mon Sep 17 00:00:00 2001 From: najienka Date: Fri, 24 Jan 2025 21:32:15 +0000 Subject: [PATCH 48/53] use ethers.js data types --- src/solidity-decoder.ts | 8 ++++---- src/solidity-encoder.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/solidity-decoder.ts b/src/solidity-decoder.ts index 81ce52b..f3c9998 100644 --- a/src/solidity-decoder.ts +++ b/src/solidity-decoder.ts @@ -1,4 +1,4 @@ -import { AbiCoder } from "ethers"; +import { AbiCoder, BigNumberish } from "ethers"; export class SolidityDecoder { private abiCoder: AbiCoder; @@ -9,11 +9,11 @@ export class SolidityDecoder { // ------------------- DECODERS ------------------- - decodeUint256(data: string): bigint { + decodeUint256(data: string): BigNumberish { return this.abiCoder.decode(["uint256"], data)[0]; } - decodeInt256(data: string): bigint { + decodeInt256(data: string): BigNumberish { return this.abiCoder.decode(["int256"], data)[0]; } @@ -37,7 +37,7 @@ export class SolidityDecoder { return this.abiCoder.decode(["bytes"], data)[0]; } - decodeUint256Array(data: string): bigint[] { + decodeUint256Array(data: string): BigNumberish[] { return this.abiCoder.decode(["uint256[]"], data)[0]; } diff --git a/src/solidity-encoder.ts b/src/solidity-encoder.ts index f9b08c0..36e0f54 100644 --- a/src/solidity-encoder.ts +++ b/src/solidity-encoder.ts @@ -1,4 +1,4 @@ -import { AbiCoder } from "ethers"; +import { AbiCoder, BigNumberish } from "ethers"; export class SolidityEncoder { private abiCoder: AbiCoder; @@ -9,11 +9,11 @@ export class SolidityEncoder { // ------------------- ENCODERS ------------------- - encodeUint256(value: number | string | bigint): string { + encodeUint256(value: number | string | BigNumberish): string { return this.abiCoder.encode(["uint256"], [value]); } - encodeInt256(value: number | string | bigint): string { + encodeInt256(value: number | string | BigNumberish): string { return this.abiCoder.encode(["int256"], [value]); } @@ -40,7 +40,7 @@ export class SolidityEncoder { return this.abiCoder.encode(["bytes"], [value]); } - encodeUint256Array(values: (number | string | bigint)[]): string { + encodeUint256Array(values: (number | string | BigNumberish)[]): string { return this.abiCoder.encode(["uint256[]"], [values]); } From 4472c795f05ed8272a912dfaf3487fb9771367e3 Mon Sep 17 00:00:00 2001 From: najienka Date: Fri, 24 Jan 2025 21:34:06 +0000 Subject: [PATCH 49/53] update docs --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9f8d0d3..f713380 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## @randamu/blocklock-js -BlocklockJS is a TypeScript library designed to simplify the process of generating encrypted data off-chain for the dcrypt network. It enables developers to securely encrypt data tied to a user-specified future block number. The encrypted data can then be used to create on-chain timelock encryption requests in smart contracts. Once the specified block number is mined, the user’s smart contract will receive the decryption keys automatically. +BlocklockJS is a TypeScript library designed to simplify the process of generating encrypted data off-chain for the dcrypt network. It enables developers to securely encrypt data tied to a user-specified future chain height. The encrypted data can then be used to create on-chain timelock encryption requests in smart contracts. Once the specified chain height is mined, the user’s smart contract will receive the decryption keys automatically. ### Key Capabilities @@ -27,7 +27,6 @@ Solidity interfaces used for on-chain decryption requests can be found in the [c To build the library, run the following command: ```sh -npm install npm run build ``` @@ -51,7 +50,7 @@ async function main() { // User wallet const wallet = new ethers.Wallet("your-private-key", ethers.provider); // User contract - const mockBlocklockReceiver = MockBlocklockReceiver__factory.connect("user blocklock receiver contract address", wallet); + const mockBlocklockReceiver = MockBlocklockReceiver__factory.connect("user blocklcok receiver contract address", wallet); // Ensure plainTextValue is initially 0 console.log("Initial plainTextValue:", (await mockBlocklockReceiver.plainTextValue()).toString()); @@ -93,15 +92,15 @@ main().catch((error) => { 1. Encoding and Encryption: * Use the SolidityEncoder to encode Solidity-compatible data types. - * Encrypt the encoded message and specify the decryption block number. + * Encrypt the encoded message and specify the decryption chain height. 2. On-Chain Interaction: - * Call the appropriate function in the user contract with the encrypted data and the block number used during off-chain encryption. In this example, the function `createTimelockRequest` is called, which creates an on-chain timelock request with the encrypted data and block number as a condition for decryption, stores the encrypted data, and generates a request ID. + * Call the appropriate function in the user contract with the encrypted data and the chain height used during off-chain encryption. In this example, the function `createTimelockRequest` is called, which creates an on-chain timelock request with the encrypted data and chain height as a condition for decryption, stores the encrypted data, and generates a request ID. 3. Decryption: - * After the specified block number, the on-chain timelock contract triggers a callback to the user's contract, providing the decryption key. The user's contract then calls the `decrypt` function in the `BlocklockSender` contract to perform on-chain decryption using the provided decryption key. + * After the specified chain height, the on-chain timelock contract triggers a callback to the user's contract, providing the decryption key. The user's contract then calls the `decrypt` function in the `BlocklockSender` contract to perform on-chain decryption using the provided decryption key. ### Supported Data Types From cfc6b50f6a52d1d267a05e22fa230fbbb2aa2651 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 21:34:38 +0000 Subject: [PATCH 50/53] Update README.md Co-authored-by: PM <3749956+CluEleSsUK@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f713380..4c19313 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Solidity interfaces used for on-chain decryption requests can be found in the [c | Contract | Address | Network | |-----------------|---------|------------------| -| BlocklockSender Proxy | 0xfF66908E1d7d23ff62791505b2eC120128918F44 | Filecoin Testnet | +| BlocklockSender Proxy | 0xfF66908E1d7d23ff62791505b2eC120128918F44 | Filecoin Calibnet | ### Build Instructions From d2e358077fc25b981479ad3fe3eae5575d17a228 Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 21:39:45 +0000 Subject: [PATCH 51/53] Update contracts/src/mocks/MockBlocklockReceiver.sol Co-authored-by: PM <3749956+CluEleSsUK@users.noreply.github.com> --- contracts/src/mocks/MockBlocklockReceiver.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/mocks/MockBlocklockReceiver.sol b/contracts/src/mocks/MockBlocklockReceiver.sol index d9f669e..82828af 100644 --- a/contracts/src/mocks/MockBlocklockReceiver.sol +++ b/contracts/src/mocks/MockBlocklockReceiver.sol @@ -6,7 +6,7 @@ import {AbstractBlocklockReceiver} from "../AbstractBlocklockReceiver.sol"; contract MockBlocklockReceiver is AbstractBlocklockReceiver { uint256 public requestId; - TypesLib.Ciphertext public encrytpedValue; + TypesLib.Ciphertext public encryptedValue; uint256 public plainTextValue; constructor(address blocklockContract) AbstractBlocklockReceiver(blocklockContract) {} From 3aaa78fe006780e7f2c8b59d74e0c1a563247d2d Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 21:40:10 +0000 Subject: [PATCH 52/53] Update contracts/src/mocks/MockBlocklockReceiver.sol Co-authored-by: PM <3749956+CluEleSsUK@users.noreply.github.com> --- contracts/src/mocks/MockBlocklockReceiver.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/mocks/MockBlocklockReceiver.sol b/contracts/src/mocks/MockBlocklockReceiver.sol index 82828af..225b5e2 100644 --- a/contracts/src/mocks/MockBlocklockReceiver.sol +++ b/contracts/src/mocks/MockBlocklockReceiver.sol @@ -18,7 +18,7 @@ contract MockBlocklockReceiver is AbstractBlocklockReceiver { // create timelock request requestId = blocklock.requestBlocklock(decryptionBlockNumber, encryptedData); // store Ciphertext - encrytpedValue = encryptedData; + encryptedValue = encryptedData return requestId; } From c21a3f691716ba304970f5ee365de9ffe7b42d5a Mon Sep 17 00:00:00 2001 From: Nemitari Ajienka Date: Fri, 24 Jan 2025 21:41:04 +0000 Subject: [PATCH 53/53] Update contracts/src/mocks/MockBlocklockReceiver.sol Co-authored-by: PM <3749956+CluEleSsUK@users.noreply.github.com> --- contracts/src/mocks/MockBlocklockReceiver.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/mocks/MockBlocklockReceiver.sol b/contracts/src/mocks/MockBlocklockReceiver.sol index 225b5e2..1bb2018 100644 --- a/contracts/src/mocks/MockBlocklockReceiver.sol +++ b/contracts/src/mocks/MockBlocklockReceiver.sol @@ -25,6 +25,6 @@ contract MockBlocklockReceiver is AbstractBlocklockReceiver { function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) external override onlyBlocklockContract { require(requestID == requestId, "Invalid request id"); // decrypt stored Ciphertext with decryption key - plainTextValue = abi.decode(blocklock.decrypt(encrytpedValue, decryptionKey), (uint256)); + plainTextValue = abi.decode(blocklock.decrypt(encryptedValue, decryptionKey), (uint256)); } }