From 657e795265d9145daa26d1f831e5c4bb1ae65d26 Mon Sep 17 00:00:00 2001 From: TateB Date: Tue, 26 Apr 2022 12:34:41 +1000 Subject: [PATCH] use new reverseRegistrar --- .pnp.cjs | 121 ++ ...-empty-npm-3.0.0-3c5b632650-1e2b030346.zip | Bin 0 -> 6711 bytes ...racts-main-https-7005d2358c-711f6e5565.zip | Bin 0 -> 209837 bytes ...porter-npm-2.8.0-94991dcfe6-d8657b0d4e.zip | Bin 0 -> 6914 bytes ...pm-0.3.0-beta.13-98c7c1196f-45206bf8d0.zip | Bin 0 -> 40374 bytes ...nimist-npm-1.2.6-f4cee4b4af-d15428cd1e.zip | Bin 0 -> 13405 bytes ...s-with-npm-2.0.0-7154de8f73-c780e5feb5.zip | Bin 0 -> 4657 bytes package.json | 3 + packages/ensjs/contracts/ReverseRegistrar.sol | 3 + packages/ensjs/deploy/02_ReverseRegistrar.ts | 65 + ...PublicResolver.ts => 03_PublicResolver.ts} | 17 +- ...salResolver.ts => 04_UniversalResolver.ts} | 0 ...DoNotCallOnChainUniversalResolverProxy.ts} | 0 packages/ensjs/ens-test-env.config.js | 1 + packages/ensjs/hardhat.config.ts | 16 + packages/ensjs/package.json | 4 + packages/ensjs/src/ABIs/DNCOCURP.json | 1 - ...oNotCallOnChainUniversalResolverProxy.json | 154 ++ packages/ensjs/src/ABIs/Multicall.json | 260 ---- packages/ensjs/src/ABIs/NameWrapper.json | 1245 ++++++++++++++++- packages/ensjs/src/ABIs/PublicResolver.json | 876 +++++++++++- packages/ensjs/src/ABIs/ReverseRegistrar.json | 323 +++++ .../ensjs/src/ABIs/StaticMetadataService.json | 33 +- .../ensjs/src/ABIs/UniversalResolver.json | 178 ++- packages/ensjs/src/contracts/DNCOCURP.ts | 7 - .../doNotCallOnChainUniversalResolverProxy.ts | 10 + packages/ensjs/src/contracts/index.ts | 7 +- .../ensjs/src/contracts/publicResolver.ts | 2 +- .../ensjs/src/contracts/reverseRegistrar.ts | 2 +- .../ensjs/src/contracts/universalResolver.ts | 2 +- packages/ensjs/src/functions/setName.ts | 17 +- ...DoNotCallOnChainUniversalResolverProxy.ts} | 70 +- .../ensjs/src/generated/ReverseRegistrar.ts | 361 ++++- ...OnChainUniversalResolverProxy__factory.ts} | 131 +- .../factories/NameWrapper__factory.ts | 859 +++++++----- .../factories/PublicResolver__factory.ts | 618 ++++---- .../factories/ReverseRegistrar__factory.ts | 218 ++- .../StaticMetadataService__factory.ts | 19 +- .../factories/UniversalResolver__factory.ts | 113 +- .../ensjs/src/generated/factories/index.ts | 4 +- packages/ensjs/src/generated/index.ts | 8 +- packages/ensjs/src/tests/getHistory.test.ts | 1 + packages/ensjs/src/tests/getName.test.ts | 2 +- packages/ensjs/src/tests/setName.test.ts | 2 +- yarn.lock | 71 +- 45 files changed, 4697 insertions(+), 1127 deletions(-) create mode 100644 .yarn/cache/delete-empty-npm-3.0.0-3c5b632650-1e2b030346.zip create mode 100644 .yarn/cache/ens-contracts-main-https-7005d2358c-711f6e5565.zip create mode 100644 .yarn/cache/hardhat-abi-exporter-npm-2.8.0-94991dcfe6-d8657b0d4e.zip create mode 100644 .yarn/cache/hardhat-deploy-ethers-npm-0.3.0-beta.13-98c7c1196f-45206bf8d0.zip create mode 100644 .yarn/cache/minimist-npm-1.2.6-f4cee4b4af-d15428cd1e.zip create mode 100644 .yarn/cache/path-starts-with-npm-2.0.0-7154de8f73-c780e5feb5.zip create mode 100644 packages/ensjs/contracts/ReverseRegistrar.sol create mode 100644 packages/ensjs/deploy/02_ReverseRegistrar.ts rename packages/ensjs/deploy/{02_PublicResolver.ts => 03_PublicResolver.ts} (66%) rename packages/ensjs/deploy/{03_UniversalResolver.ts => 04_UniversalResolver.ts} (100%) rename packages/ensjs/deploy/{04_DoNotCallOnChainUniversalResolverProxy.ts => 05_DoNotCallOnChainUniversalResolverProxy.ts} (100%) delete mode 100644 packages/ensjs/src/ABIs/DNCOCURP.json create mode 100644 packages/ensjs/src/ABIs/DoNotCallOnChainUniversalResolverProxy.json delete mode 100644 packages/ensjs/src/ABIs/Multicall.json create mode 100644 packages/ensjs/src/ABIs/ReverseRegistrar.json delete mode 100644 packages/ensjs/src/contracts/DNCOCURP.ts create mode 100644 packages/ensjs/src/contracts/doNotCallOnChainUniversalResolverProxy.ts rename packages/ensjs/src/generated/{DNCOCURP.ts => DoNotCallOnChainUniversalResolverProxy.ts} (86%) rename packages/ensjs/src/generated/factories/{DNCOCURP__factory.ts => DoNotCallOnChainUniversalResolverProxy__factory.ts} (62%) diff --git a/.pnp.cjs b/.pnp.cjs index 3df64fba..4f25b289 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -490,6 +490,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@nodelib/fs.walk",\ "npm:1.2.8"\ ],\ + [\ + "@nomiclabs/hardhat-ethers",\ + [\ + "hardhat-deploy-ethers",\ + "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:0.3.0-beta.13"\ + ]\ + ],\ [\ "@nomiclabs/hardhat-truffle5",\ "virtual:cd804966a4af2a115ae98988b74c122bdd7fc9af5d9f9a5a62f576ef89ea18c25fbb8b994a1a65d60bf2e11d89eb0b2e6cc089c93112e3539943bc0642c881d5#npm:2.0.5"\ @@ -1510,6 +1517,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "delegates",\ "npm:1.0.0"\ ],\ + [\ + "delete-empty",\ + "npm:3.0.0"\ + ],\ [\ "delimit-stream",\ "npm:0.1.0"\ @@ -1638,6 +1649,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "enquirer",\ "npm:2.3.6"\ ],\ + [\ + "ens-contracts-main",\ + "https://github.com/ensdomains/ens-contracts.git#commit=43b483db7ae3b13b985b3600779aa4e65ca22964"\ + ],\ [\ "ens-contracts-namewrapper",\ "https://github.com/ensdomains/ens-contracts.git#commit=9b42c4b57e76aa4041847579c0bd5c3ca3cf6375"\ @@ -2086,6 +2101,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "hardhat",\ "npm:2.9.3"\ ],\ + [\ + "hardhat-abi-exporter",\ + "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:2.8.0"\ + ],\ [\ "hardhat-deploy",\ "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:0.11.4"\ @@ -3182,6 +3201,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "path-parse",\ "npm:1.0.7"\ ],\ + [\ + "path-starts-with",\ + "npm:2.0.0"\ + ],\ [\ "path-to-regexp",\ "npm:0.1.7"\ @@ -5037,6 +5060,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@ensdomains/ens-test-env", "workspace:packages/ens-test-env"],\ ["@ethersproject/abi", "npm:5.6.0"],\ ["@ethersproject/providers", "npm:5.6.2"],\ + ["@nomiclabs/hardhat-ethers", [\ + "hardhat-deploy-ethers",\ + "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:0.3.0-beta.13"\ + ]],\ ["@openzeppelin/contracts", "npm:4.5.0"],\ ["@swc/core", "npm:1.2.162"],\ ["@swc/jest", "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:0.2.20"],\ @@ -5045,12 +5072,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/jest", "npm:27.4.1"],\ ["dns-packet", "npm:5.3.1"],\ ["dotenv", "npm:16.0.0"],\ + ["ens-contracts-main", "https://github.com/ensdomains/ens-contracts.git#commit=43b483db7ae3b13b985b3600779aa4e65ca22964"],\ ["ens-contracts-namewrapper", "https://github.com/ensdomains/ens-contracts.git#commit=9b42c4b57e76aa4041847579c0bd5c3ca3cf6375"],\ ["ens-contracts-universal", "https://github.com/ensdomains/ens-contracts.git#commit=ec2657e78811ff9fa09436209798a6135ecca9b7"],\ ["ethers", "npm:5.6.1"],\ ["graphql", "npm:16.3.0"],\ ["graphql-request", "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:4.1.0"],\ ["hardhat", "npm:2.9.3"],\ + ["hardhat-abi-exporter", "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:2.8.0"],\ ["hardhat-deploy", "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:0.11.4"],\ ["jest", "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:27.5.1"],\ ["jest-environment-node", "npm:27.5.1"],\ @@ -9510,6 +9539,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["delete-empty", [\ + ["npm:3.0.0", {\ + "packageLocation": "./.yarn/cache/delete-empty-npm-3.0.0-3c5b632650-1e2b030346.zip/node_modules/delete-empty/",\ + "packageDependencies": [\ + ["delete-empty", "npm:3.0.0"],\ + ["ansi-colors", "npm:4.1.1"],\ + ["minimist", "npm:1.2.6"],\ + ["path-starts-with", "npm:2.0.0"],\ + ["rimraf", "npm:2.7.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["delimit-stream", [\ ["npm:0.1.0", {\ "packageLocation": "./.yarn/cache/delimit-stream-npm-0.1.0-bbc01f709d-78e71f4889.zip/node_modules/delimit-stream/",\ @@ -9851,6 +9893,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["ens-contracts-main", [\ + ["https://github.com/ensdomains/ens-contracts.git#commit=43b483db7ae3b13b985b3600779aa4e65ca22964", {\ + "packageLocation": "./.yarn/cache/ens-contracts-main-https-7005d2358c-711f6e5565.zip/node_modules/ens-contracts-main/",\ + "packageDependencies": [\ + ["ens-contracts-main", "https://github.com/ensdomains/ens-contracts.git#commit=43b483db7ae3b13b985b3600779aa4e65ca22964"],\ + ["@ensdomains/buffer", "npm:0.0.13"],\ + ["@ensdomains/solsha1", "npm:0.0.3"],\ + ["@openzeppelin/contracts", "npm:4.5.0"],\ + ["dns-packet", "npm:5.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["ens-contracts-namewrapper", [\ ["https://github.com/ensdomains/ens-contracts.git#commit=9b42c4b57e76aa4041847579c0bd5c3ca3cf6375", {\ "packageLocation": "./.yarn/cache/ens-contracts-namewrapper-https-fba17cd56b-2de96c7734.zip/node_modules/ens-contracts-namewrapper/",\ @@ -11667,6 +11722,30 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["hardhat-abi-exporter", [\ + ["npm:2.8.0", {\ + "packageLocation": "./.yarn/cache/hardhat-abi-exporter-npm-2.8.0-94991dcfe6-d8657b0d4e.zip/node_modules/hardhat-abi-exporter/",\ + "packageDependencies": [\ + ["hardhat-abi-exporter", "npm:2.8.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:2.8.0", {\ + "packageLocation": "./.yarn/__virtual__/hardhat-abi-exporter-virtual-2b3560c0d0/0/cache/hardhat-abi-exporter-npm-2.8.0-94991dcfe6-d8657b0d4e.zip/node_modules/hardhat-abi-exporter/",\ + "packageDependencies": [\ + ["hardhat-abi-exporter", "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:2.8.0"],\ + ["@ethersproject/abi", "npm:5.6.1"],\ + ["@types/hardhat", null],\ + ["delete-empty", "npm:3.0.0"],\ + ["hardhat", "npm:2.9.3"]\ + ],\ + "packagePeers": [\ + "@types/hardhat",\ + "hardhat"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["hardhat-deploy", [\ ["npm:0.11.4", {\ "packageLocation": "./.yarn/cache/hardhat-deploy-npm-0.11.4-f0c2bb7efd-0acce341b6.zip/node_modules/hardhat-deploy/",\ @@ -11715,6 +11794,32 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["hardhat-deploy-ethers", [\ + ["npm:0.3.0-beta.13", {\ + "packageLocation": "./.yarn/cache/hardhat-deploy-ethers-npm-0.3.0-beta.13-98c7c1196f-45206bf8d0.zip/node_modules/hardhat-deploy-ethers/",\ + "packageDependencies": [\ + ["hardhat-deploy-ethers", "npm:0.3.0-beta.13"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:0.3.0-beta.13", {\ + "packageLocation": "./.yarn/__virtual__/hardhat-deploy-ethers-virtual-9a9b88bab5/0/cache/hardhat-deploy-ethers-npm-0.3.0-beta.13-98c7c1196f-45206bf8d0.zip/node_modules/hardhat-deploy-ethers/",\ + "packageDependencies": [\ + ["hardhat-deploy-ethers", "virtual:dbab5548d6c479b3d0fbae056bca9e1ff56916aea7763afdc9f1e6c586db7a0fc611c24fbb7ceb65db0555e200d7d546a786802dd5359ca981e1d851cccb800c#npm:0.3.0-beta.13"],\ + ["@types/ethers", null],\ + ["@types/hardhat", null],\ + ["ethers", "npm:5.6.1"],\ + ["hardhat", "npm:2.9.3"]\ + ],\ + "packagePeers": [\ + "@types/ethers",\ + "@types/hardhat",\ + "ethers",\ + "hardhat"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["has", [\ ["npm:1.0.3", {\ "packageLocation": "./.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip/node_modules/has/",\ @@ -14218,6 +14323,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["minimist", "npm:1.2.5"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.2.6", {\ + "packageLocation": "./.yarn/cache/minimist-npm-1.2.6-f4cee4b4af-d15428cd1e.zip/node_modules/minimist/",\ + "packageDependencies": [\ + ["minimist", "npm:1.2.6"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["minipass", [\ @@ -15194,6 +15306,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["path-starts-with", [\ + ["npm:2.0.0", {\ + "packageLocation": "./.yarn/cache/path-starts-with-npm-2.0.0-7154de8f73-c780e5feb5.zip/node_modules/path-starts-with/",\ + "packageDependencies": [\ + ["path-starts-with", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["path-to-regexp", [\ ["npm:0.1.7", {\ "packageLocation": "./.yarn/cache/path-to-regexp-npm-0.1.7-2605347373-69a14ea24d.zip/node_modules/path-to-regexp/",\ diff --git a/.yarn/cache/delete-empty-npm-3.0.0-3c5b632650-1e2b030346.zip b/.yarn/cache/delete-empty-npm-3.0.0-3c5b632650-1e2b030346.zip new file mode 100644 index 0000000000000000000000000000000000000000..0123246da507ae2576d7c8b14edc0b205c043685 GIT binary patch literal 6711 zcmai(byQUA`p1VZ36Tz!knWTix{>aV8DeOOp=%HjkY*4hr9+XBP`X2EXh~r}x+Nuk zoO`bK{*G&%bKgJqe)n4Y`R;eG{k-4xJfE$piiS=C_+v;_Okw|P^6vxw-Py$zY-8c< z3ific@!;0{+gquAzZGobWaDYWY2)nX>HF_EQ~>tB9%0HN8708IZF=Vk?R zw6e3|a`13!nH@f5x-znMB}Xb=l?8 z^PR5evw6|uEGhTU(f*y>wEQB9mt)II^r?2)*~gHQhJnEm}#WUH@$QLrjE%GA-g8 zS9zKIR=`ly^D@cJ16Y1vEYnb{P*YGEF@TWx7q5icu1Doe?7&V5toJu(H z#~9k{%L_%^8bu8GK*tG>8`e_ldd5+_S2{@+Nu&0eo)t$8uj1jlPZ5lixh4~ujKyjX zi`b0;FL zhUS>k3sZ@et94dIpId-gwsd>%hy200|PMoj!WR0Q!`baKgeHt zt|eWUbe|Q8XhOPPxCkv7G4^dNAi7z!ScZ=Z8hM#X zt$ay+C^}OeA|dHd4iy>W}$lScKG~BUGnKD-KoSuX)G|?_ez{Ux&P|Q z2{x>yOqJJ%@wLt&zU3Xh%t3rueeAhFWi$i!4 zy?jpa5Nad43*Kf1*IhegJXgUFsza+dD1nQ#?^@# z;kn^&xR{br0W7-8ALU?IU$vx@AWw=nJ9a&zg$}cW2pXM>wtNgEBh94i>C0CF8;Lmz z23{n!j)Azzq1)Dqpm+?|1`5lev;uOd2=24$>H^dq0n>Thmck_cp9M)XyP><_pr8uK z&o}|j`(tAuTGLkJ;Oi~F6Wiv`=GT}m-}?<-*L&3utvQ;0*Z6QaIg~-&jiD@=J}$uq zpHA=Uqs1o68+Be&=c6-PVO!Xai7w zcDef=l!85GdWKfBNtH4xo$!c!%ULMehmq}|TvC;JOs?*r1(fVHVpc@r1cgu9tDVsi z1=S=*P0XfG!e=dLEQ?uH!Vt0*3Hn!6F}$)F5$mr@2B=tGpz+Yl1x%sBx&@47xT1|L z&ezcBXZuHo+f=OC&-TAf5p2qFXXoxHjMoN8bZ`(FmLEuiDMEVt^os&dAgl3Y7l5SM z`WFVGiuW>0_jsN7X{FsSt$K@7e~=MWy!b|+o)k%@|2AxMQBMnnh_7n1ZuB5wg@u_# zw%Gy;O0n>u=)Nv3`;Yuy%~dx%JL_6(^qLBYy6=RYx~Kr#FE!x`{M7ZBM=zf*5}QZtvI^m2Q_hQ=Mndu0U9JrGL=fR$lSJF=dL< zJ0!}YS3g*~HAEMHIb8q`_1%N8v?oOqyxZv3NPQ#- z()%XI>9y9KH?~6pL z7{_fP7#~&kQNyTPly~s(SlE&`;fJQ?>f=Tlrpc@hg#v>GE$K8XFX`4|OL~U<-38}C zmb+Y{M+?G)`QFx#Kbfl1^9(nwpkB({&eCH8C{txu&9lGl#_5ouQ;K*ZVyTKA-uoi^ zj3CZ`Uyjt?c%eb(I)kgwq1}5!(z9@#+seOr433P1ZzysM_gba;WHp66heY^p_cVuP z*9&2}4&OT41f{&$vEhNZnZox!C?*puE=$5!OUQa7B6+Mo>_#w|KPcF?M-%7!G1caW zcfwc=EaQ*5p@+#5RK-Sc=H3eX@4n4ZTb{Fh&1**ZoiVN$`dY&UCYq?-TayC9>DkpR zoZ*zJB49cUui3}CT)e6P?N9j)jjr^MEb9#Fo~2!d@>M(xL%*()mXBKprnM_F_-m@W z8qWvu28hwvv?dSU3z0sSCDO^r8P(1v8n=iR*Tf0r20gJy9je-~SeC6_L3I6KDvyGN zx4*lz0;I zhD(aO89_{21D6lYLte6|e(csK!%wV8Y~6pg!>9y6>2PvQf4j-?t{`+?5QH+d35r#c-%gW)*4mv8lX3R;&SfTd){UU>CMM$w_3#5*s=E>aiiF# zn-vPZw&y$t3YY;OI-w$Df#RM0aVS_kL~Z42QdBu4wb}p1kEQ4{Cl!71Vl-%mZ}&S=+n2hjSQmUqAgE!9(mOJDy`Q zcA&ktfLNfg515s+#P%cD2=Qcc`|*Bmd`Z1decfzd=C#x|wx4%g+P#!avW$fIk)Rir zKeOpzvJ1)6!d^Or%902fq_cb|-|OK=OJdJMcSn#RDbP0%V1<+Q6(~cA(qZXm%Ncp~ z)cISlRhBEuLCey`i(u%HJMhOh29;)&T(r!^3P1Mniar0CuX7y<)A+BnxuFVqg!c*e zw;rkoWu8mSc9DZpQQ2yFs4Fn~a8=%CgPHi!4snr2sML^D2WNno0QVr-1gcL}xJ7jz zF;S~3XBlpat-IcLZA*1BNXszz5Zfb@ouma46;CN0i%Q=lt*mu_MrFe@iZ17i=^N(` zvN4hupERkSrkGNvS9nysHQmL93Z5 zFrm!7d<{9)roEQlwrZNoCo$3u$5ks7d0mdq*Rm3C{YLv`9%ZfBWVx7bC zLaZ*S0w^t4)!AH8xSANpjg#HDPo`Y2!#?ZjTPC7R_Ab(Jef)hc7$?aG_Cs9k^lu{8 z%f8Xx>;9IvD1S}jd~NBIsJnvt5d{Fi@Q+EXEiWynCeP&zt~K0tnd>9H87Y1mOI~HK z1Wqzf@Z066hC(x(g?NeUyY;a%=|u9Fm_)V)HKS)aiFWwU?Sjc!MvFJ{SCucbmgSQ; zd(|r)(eI0R3}^lnS#pcyGg4w!tj_%OBsN%3VhZkdbYi(RKe*Rh#dh4M4(H&bW~F7O z|6(&w6sz8KBuA1zuVf?-&5mTR>$bi>)aA|;%`$0|`Q0I^)erjP7Er@w# z6d!TjtSv1iw{=|lCkgCJBBGg%EUqB2h6a4@`|~}E@{Q|cv-{3Us^jY7Pj<&Ktlpmt z5I7Hk(LH3~d*kp1xA0m%*-b6g?ihs*Gtxmtyk+KX+DLa2)v@GZk=LSf54xmv?uR81 zJVHoX-dFOEkaZ9+jybd>k6Q~#`Ve5&S2B8$yN2Cb@U%x7R2038T%Z$-=QSN|X1snd zWsY@w59=xSOVAio0|(pU+M8FF8iE^>ejoLq=akjYJ=sh}X+5!2Kp&0P9I4YK(52l> z2tD#`-^A6No$KL63WUs9d8<5%&KYTUJgpR|uctTWK22~6o(oq4+`zieGRg0=<~al@yp0z9UY@V{aG4zG4_Ovht=orwe6b31VuJ$ytJUJdVG0*ON z?IW_XK)?sI<5Y!+RHtI@mMZ0|i0zN@7~%^lph>$WC^PF?J;K1MQ?RDn!=kYNJn)DX z#gjUm8buxWa!y|SBe=~;u6xZkH|Cs;AxjNgoJ(BDbWA*-4UiGz9ZxmOf$ zS5g_N4bQ#c!5uJSHpb3b5FvJv1cc+V=~~OhxRO2%rKZ0`foE59IzP8{ zXDWZD&w6IUO#+!xx?GiM^`CC#^L{XH;@54#91ykP*=P_#C`>23GeXokX7JtaTaQ*R zzk@m|v1@16ro(jNpsr5$5Y(ipn=h}oq`{MoP2KKkaBPpTCZJRsTup6;d|4>1QK0sd z1p0%37W?cWCGU;+WHY6s9YKa$fJ)5}WMMe#*)Sxdorc4_m5L?XjoW7V`m5+XCd#^6 zKY-W<{3%~1FInM;v{`WK)SC=%%?(TG#L0Jj;SHoCP_#p1yf4I3h({`H-xrq4eyfCJ zb@2Y~DkuyKkjU7Z-`fzQbDST{nhPWhnd%+FuMwH|POK|G=C8Ni&nNEhvRaT5dT=_E zv?>-}K^RM5a``;TiXTlI(+3EZljO-~Mf-b#Gbua9V-D~QQ z@eZOKLeLOl4t>kxPMvCe5@w&iusWZ5uO%?krcOS4w-}%wCwLU%sFa~4x4kmptZaq- zrs4%Bzt#ncWSf9cmkX}z>EYU(XZ|>Ik@FV??;s=9QPt4K^_#|Mm*?;H)75gDZUd*c z5#d4`K9Vc50WZvB5K)fq$5Z=1Nl}OF1@iWSgKkd(p&b!f_2&c=e3FlCp$haS3U$Qm zbIlFvqg9J%@6xAYb~{J*orvc?foTN}Ea9#;v$-?i>=C)p#+s5Jr$%$G!cL2=@z>sb z3fCEr1}JXw0WEragkCbt3Lb(B9gc&ZxGAt~DEx~c^>if=xxNGOf{*B+#QG@cnSDQr z5Z7U)VF(Mci#gOe48DDfb+&hV;~{~n(4gYC6Dp*0XeUKT(-Q1A+wTkXIsLKGe{7&Z z0okjn9~P%MQnRD0L&^Puyzu}auFQY%d=_S$IX1)Z3fgZUoukOQe)RXG@8LgIGS(26 z-)J96L~;`=8UQeSNBbE6XDrAGaz{b}byef%gos+U4W1z|cM;V4{lFh7dGd3e z^oHYOhSq9{T*|(VPV-BPlv`GX)N;(vA1(>+@3%JYhqW#_`p2K%o0?3sf!EN%@G4R6 z%8}XpKC`}Kjq^qOuDHyN>aj5tVg}~e~;byWwfT@g? zf%S^P{_OdBhC0M2R7bNGLA%Zb22(yC%VhO|$y>Sjm}6jrX#0Dm9$v0)<-l%v-=jyX%R0h) zAN6L$fD$dar=e(>MT{!Q!5zSx_Xf`y`s@j3HSJKjM2ON{I~^H>-zU#rm@yPPHM)Ch zAxGDXv8##2{uEGz(HZPX!uV-e7^#Fzt22A`g{z#b94THk->4?~c#PpN>-kIM#pX5h z`IU%sEtugl$8du+nzB7#ODo40)bOB_)9)Fpn||`Mh?0PN!P;0DC?v8;P2E*z&}hpL z>o9i(RZ8<#ly#VsS){-nkeznBb$=tYy>t~JV*a+USiqjzI%87-Jvtos^A3V17fp-! z+4W*UIeb9lSebSQ5+ZbPL#JvxJS?WFt>u<3$LDtz7eBSqM?h-%0j9)=U!YbRS^Cjp zI8rP%!8O?*XiM1>ptMZDs4D)$(8)JjJ5UUm5@h{e_nmR*V(XJ9Z;#(yQgsnB^vIsx zZBrCfNwmMG_jmj4Ut?GLkJE1~|L;Tpp!vVXt~C4I^e>^mvHd@FesRy=>HaUBf>6*u z>imD!|Le7WY5vYq|EsBd=PZA}wqIoRcfH^7!hiK5?)tUA*ZVhY_+9SzM(@9Js(Ak- z_n)@!m*5|PzyE~!!*73$U1`$0Z~gb{`_p~@`aOR4-~VWZYW+{GKiybU730pk0e63I PumLuAP^O9ekE{O!rG@=n literal 0 HcmV?d00001 diff --git a/.yarn/cache/ens-contracts-main-https-7005d2358c-711f6e5565.zip b/.yarn/cache/ens-contracts-main-https-7005d2358c-711f6e5565.zip new file mode 100644 index 0000000000000000000000000000000000000000..23290d0794c409273830d94981432560d8ac6da9 GIT binary patch literal 209837 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%0AW@EzQ0#6 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 z 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

<7+A&-V)k(+~J+I=6 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 z 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 Z4jTJD+$vyR(n=ET_YjHhy?`jN=>Pt_#LNHy literal 0 HcmV?d00001 diff --git a/.yarn/cache/hardhat-abi-exporter-npm-2.8.0-94991dcfe6-d8657b0d4e.zip b/.yarn/cache/hardhat-abi-exporter-npm-2.8.0-94991dcfe6-d8657b0d4e.zip new file mode 100644 index 0000000000000000000000000000000000000000..11b6671151ec9158925bb65f9056530185d86657 GIT binary patch literal 6914 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 E0n0(2`2YX_ literal 0 HcmV?d00001 diff --git a/.yarn/cache/minimist-npm-1.2.6-f4cee4b4af-d15428cd1e.zip b/.yarn/cache/minimist-npm-1.2.6-f4cee4b4af-d15428cd1e.zip new file mode 100644 index 0000000000000000000000000000000000000000..e7466c584eef0e50ec0629a3976d0396d0a9a1a0 GIT binary patch literal 13405 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/path-starts-with-npm-2.0.0-7154de8f73-c780e5feb5.zip b/.yarn/cache/path-starts-with-npm-2.0.0-7154de8f73-c780e5feb5.zip new file mode 100644 index 0000000000000000000000000000000000000000..eb88d4b4b17bc14d5fb51222540ae2339f17fc6f GIT binary patch literal 4657 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.0.0; +import 'ens-contracts-main/contracts/registry/ReverseRegistrar.sol'; diff --git a/packages/ensjs/deploy/02_ReverseRegistrar.ts b/packages/ensjs/deploy/02_ReverseRegistrar.ts new file mode 100644 index 00000000..db7c4aa1 --- /dev/null +++ b/packages/ensjs/deploy/02_ReverseRegistrar.ts @@ -0,0 +1,65 @@ +import { namehash, solidityKeccak256 } from 'ethers/lib/utils' +import { ethers } from 'hardhat' +import { DeployFunction } from 'hardhat-deploy/types' +import { HardhatRuntimeEnvironment } from 'hardhat/types' +import { ENSRegistry__factory } from '../src/generated/factories/ENSRegistry__factory' +import { Root__factory } from '../src/generated/factories/Root__factory' + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { deployments, getNamedAccounts } = hre + const { deploy } = deployments + + const { deployer } = await getNamedAccounts() + + const registryAddress = '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' + + ethers.provider = new ethers.providers.JsonRpcProvider( + 'http://localhost:8545', + ) + + const root = Root__factory.connect( + '0x31e789Eb325aB116997942f7809731197a3dc059', + ethers.provider.getSigner('0xa303ddC620aa7d1390BACcc8A495508B183fab59'), + ) + + const registry = ENSRegistry__factory.connect( + registryAddress, + ethers.provider.getSigner('0xa303ddC620aa7d1390BACcc8A495508B183fab59'), + ) + + await deploy('ReverseRegistrar', { + from: deployer, + args: [registryAddress], + }) + + const reverseRegistrarAddress = (await deployments.get('ReverseRegistrar')) + .address + + const tx1 = await root.setSubnodeOwner( + solidityKeccak256(['string'], ['reverse']), + '0xa303ddC620aa7d1390BACcc8A495508B183fab59', + { + from: '0xa303ddC620aa7d1390BACcc8A495508B183fab59', + }, + ) + + await tx1?.wait() + + const tx = await registry.setSubnodeOwner( + namehash('reverse'), + solidityKeccak256(['string'], ['addr']), + reverseRegistrarAddress, + { + from: '0xa303ddC620aa7d1390BACcc8A495508B183fab59', + }, + ) + + await tx?.wait() + + console.log( + 'Deployed ReverseRegistrar, address:', + (await deployments.get('ReverseRegistrar')).address, + ) +} + +export default func diff --git a/packages/ensjs/deploy/02_PublicResolver.ts b/packages/ensjs/deploy/03_PublicResolver.ts similarity index 66% rename from packages/ensjs/deploy/02_PublicResolver.ts rename to packages/ensjs/deploy/03_PublicResolver.ts index 2ac7adbd..28d09014 100644 --- a/packages/ensjs/deploy/02_PublicResolver.ts +++ b/packages/ensjs/deploy/03_PublicResolver.ts @@ -1,15 +1,18 @@ +import { ethers } from 'hardhat' import { DeployFunction } from 'hardhat-deploy/types' import { HardhatRuntimeEnvironment } from 'hardhat/types' const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { deployments, getNamedAccounts } = hre - const { deploy, get } = deployments + const { deploy, get, execute } = deployments const { deployer } = await getNamedAccounts() + const ReverseRegistrar = await ethers.getContract('ReverseRegistrar') + const registryAddress = '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' const controllerAddress = '0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5' - const reverseRegisrarAddress = '0x084b1c3C81545d370f3634392De611CaaBFf8148' + const reverseRegistrarAddress = ReverseRegistrar.address const wrapperAddress = (await get('NameWrapper')).address await deploy('PublicResolver', { @@ -18,10 +21,18 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { registryAddress, wrapperAddress, controllerAddress, - reverseRegisrarAddress, + reverseRegistrarAddress, ], }) + const tx = await ReverseRegistrar.setDefaultResolver( + ( + await get('PublicResolver') + ).address, + ) + await tx.wait() + console.log(tx) + console.log( 'Deployed PublicResolver, address:', (await deployments.get('PublicResolver')).address, diff --git a/packages/ensjs/deploy/03_UniversalResolver.ts b/packages/ensjs/deploy/04_UniversalResolver.ts similarity index 100% rename from packages/ensjs/deploy/03_UniversalResolver.ts rename to packages/ensjs/deploy/04_UniversalResolver.ts diff --git a/packages/ensjs/deploy/04_DoNotCallOnChainUniversalResolverProxy.ts b/packages/ensjs/deploy/05_DoNotCallOnChainUniversalResolverProxy.ts similarity index 100% rename from packages/ensjs/deploy/04_DoNotCallOnChainUniversalResolverProxy.ts rename to packages/ensjs/deploy/05_DoNotCallOnChainUniversalResolverProxy.ts diff --git a/packages/ensjs/ens-test-env.config.js b/packages/ensjs/ens-test-env.config.js index 2d669a43..54e89f7a 100644 --- a/packages/ensjs/ens-test-env.config.js +++ b/packages/ensjs/ens-test-env.config.js @@ -6,6 +6,7 @@ module.exports = { network: 'ropsten', forkRpcUrl: process.env.FORK_RPC_URL, secretWords: 'test test test test test test test test test test test junk', + unlockedAccounts: ['0xa303ddC620aa7d1390BACcc8A495508B183fab59'], }, archive: { subgraphId: 'QmXxAE7Urtv6TPa8o8XmPwLVQNbH6r35hRKHP63udTxTNa', diff --git a/packages/ensjs/hardhat.config.ts b/packages/ensjs/hardhat.config.ts index 2ca3855c..305d57c6 100644 --- a/packages/ensjs/hardhat.config.ts +++ b/packages/ensjs/hardhat.config.ts @@ -1,4 +1,6 @@ +import '@nomiclabs/hardhat-ethers' import 'dotenv/config' +import 'hardhat-abi-exporter' import 'hardhat-deploy' import { HardhatUserConfig } from 'hardhat/config' @@ -30,6 +32,20 @@ const config: HardhatUserConfig = { namedAccounts: { deployer: 0, }, + abiExporter: { + path: './src/ABIs', + clear: true, + flat: true, + only: [ + 'StaticMetadataService', + 'NameWrapper', + 'ReverseRegistrar', + 'PublicResolver', + 'UniversalResolver', + 'DoNotCallOnChainUniversalResolverProxy', + ], + except: ['INameWrapper', 'IReverseRegistrar', 'NameResolver'], + }, } export default config diff --git a/packages/ensjs/package.json b/packages/ensjs/package.json index 171c67a7..33cfdc55 100644 --- a/packages/ensjs/package.json +++ b/packages/ensjs/package.json @@ -14,6 +14,7 @@ "license": "MIT", "scripts": { "generate-types": "ts-node scripts/runTypechain.ts", + "generate-abis": "hardhat export-abi", "start": "ts-node --files src/index.test.ts", "test": "jest --run-in-band src/tests", "test:specific": "ts-node --files ", @@ -36,6 +37,7 @@ "@ensdomains/ens-test-env": "workspace:*", "@ethersproject/abi": "^5.6.0", "@ethersproject/providers": "^5.6.2", + "@nomiclabs/hardhat-ethers": "^2.0.5", "@openzeppelin/contracts": "^4.5.0", "@swc/core": "^1.2.162", "@swc/jest": "^0.2.20", @@ -43,9 +45,11 @@ "@types/bn.js": "^5.1.0", "@types/jest": "^27.4.1", "dotenv": "^16.0.0", + "ens-contracts-main": "github:ensdomains/ens-contracts#head=master&commit=43b483db7ae3b13b985b3600779aa4e65ca22964", "ens-contracts-namewrapper": "github:ensdomains/ens-contracts#commit=9b42c4b57e76aa4041847579c0bd5c3ca3cf6375", "ens-contracts-universal": "github:ensdomains/ens-contracts#head=feature/record-proxy&commit=ec2657e78811ff9fa09436209798a6135ecca9b7", "hardhat": "^2.9.3", + "hardhat-abi-exporter": "^2.8.0", "hardhat-deploy": "^0.11.4", "jest": "^27.5.1", "jest-environment-node": "^27.5.1", diff --git a/packages/ensjs/src/ABIs/DNCOCURP.json b/packages/ensjs/src/ABIs/DNCOCURP.json deleted file mode 100644 index 84239ed0..00000000 --- a/packages/ensjs/src/ABIs/DNCOCURP.json +++ /dev/null @@ -1 +0,0 @@ -[{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_resolver"}]},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}]},{"type":"function","name":"isOwner","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"addr"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"reverse","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes","name":"reverseNode"},{"type":"tuple[]","name":"calls","components":[{"type":"address","name":"target"},{"type":"bytes","name":"data"},{"type":"uint8","name":"dataType"},{"type":"uint256[]","name":"locations"}]}],"outputs":[{"type":"string","name":"name"},{"type":"bytes[]","name":"returnData"}]},{"type":"function","name":"setUniversalResolver","constant":false,"payable":false,"inputs":[{"type":"address","name":"newUniversalResolver"}],"outputs":[]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[]},{"type":"function","name":"universalResolver","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]}] \ No newline at end of file diff --git a/packages/ensjs/src/ABIs/DoNotCallOnChainUniversalResolverProxy.json b/packages/ensjs/src/ABIs/DoNotCallOnChainUniversalResolverProxy.json new file mode 100644 index 00000000..c6266448 --- /dev/null +++ b/packages/ensjs/src/ABIs/DoNotCallOnChainUniversalResolverProxy.json @@ -0,0 +1,154 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_resolver", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "reverseNode", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum DoNotCallOnChainUniversalResolverProxy.ReverseCallDataType", + "name": "dataType", + "type": "uint8" + }, + { + "internalType": "uint256[]", + "name": "locations", + "type": "uint256[]" + } + ], + "internalType": "struct DoNotCallOnChainUniversalResolverProxy.ReverseCall[]", + "name": "calls", + "type": "tuple[]" + } + ], + "name": "reverse", + "outputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes[]", + "name": "returnData", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newUniversalResolver", + "type": "address" + } + ], + "name": "setUniversalResolver", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "universalResolver", + "outputs": [ + { + "internalType": "contract UniversalResolver", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/packages/ensjs/src/ABIs/Multicall.json b/packages/ensjs/src/ABIs/Multicall.json deleted file mode 100644 index 332ac091..00000000 --- a/packages/ensjs/src/ABIs/Multicall.json +++ /dev/null @@ -1,260 +0,0 @@ -[ - { - "inputs": [ - { - "components": [ - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "bytes", "name": "callData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "aggregate", - "outputs": [ - { "internalType": "uint256", "name": "blockNumber", "type": "uint256" }, - { "internalType": "bytes[]", "name": "returnData", "type": "bytes[]" } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "bool", "name": "allowFailure", "type": "bool" }, - { "internalType": "bytes", "name": "callData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Call3[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "aggregate3", - "outputs": [ - { - "components": [ - { "internalType": "bool", "name": "success", "type": "bool" }, - { "internalType": "bytes", "name": "returnData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "bool", "name": "allowFailure", "type": "bool" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { "internalType": "bytes", "name": "callData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Call3Value[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "aggregate3Value", - "outputs": [ - { - "components": [ - { "internalType": "bool", "name": "success", "type": "bool" }, - { "internalType": "bytes", "name": "returnData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "bytes", "name": "callData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "blockAndAggregate", - "outputs": [ - { "internalType": "uint256", "name": "blockNumber", "type": "uint256" }, - { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" }, - { - "components": [ - { "internalType": "bool", "name": "success", "type": "bool" }, - { "internalType": "bytes", "name": "returnData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "getBasefee", - "outputs": [ - { "internalType": "uint256", "name": "basefee", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } - ], - "name": "getBlockHash", - "outputs": [ - { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBlockNumber", - "outputs": [ - { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getChainId", - "outputs": [ - { "internalType": "uint256", "name": "chainid", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockCoinbase", - "outputs": [ - { "internalType": "address", "name": "coinbase", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockDifficulty", - "outputs": [ - { "internalType": "uint256", "name": "difficulty", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockGasLimit", - "outputs": [ - { "internalType": "uint256", "name": "gaslimit", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockTimestamp", - "outputs": [ - { "internalType": "uint256", "name": "timestamp", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "addr", "type": "address" } - ], - "name": "getEthBalance", - "outputs": [ - { "internalType": "uint256", "name": "balance", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastBlockHash", - "outputs": [ - { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bool", "name": "requireSuccess", "type": "bool" }, - { - "components": [ - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "bytes", "name": "callData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "tryAggregate", - "outputs": [ - { - "components": [ - { "internalType": "bool", "name": "success", "type": "bool" }, - { "internalType": "bytes", "name": "returnData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bool", "name": "requireSuccess", "type": "bool" }, - { - "components": [ - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "bytes", "name": "callData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "tryBlockAndAggregate", - "outputs": [ - { "internalType": "uint256", "name": "blockNumber", "type": "uint256" }, - { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" }, - { - "components": [ - { "internalType": "bool", "name": "success", "type": "bool" }, - { "internalType": "bytes", "name": "returnData", "type": "bytes" } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - } -] diff --git a/packages/ensjs/src/ABIs/NameWrapper.json b/packages/ensjs/src/ABIs/NameWrapper.json index 504c04ce..d8f4d9ec 100644 --- a/packages/ensjs/src/ABIs/NameWrapper.json +++ b/packages/ensjs/src/ABIs/NameWrapper.json @@ -1 +1,1244 @@ -[{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_ens"},{"type":"address","name":"_registrar"},{"type":"address","name":"_metadataService"}]},{"type":"error","name":"IncompatibleParent","inputs":[]},{"type":"error","name":"IncorrectTargetOwner","inputs":[{"type":"address","name":"owner"}]},{"type":"error","name":"IncorrectTokenType","inputs":[]},{"type":"error","name":"LabelMismatch","inputs":[{"type":"bytes32","name":"labelHash"},{"type":"bytes32","name":"expectedLabelhash"}]},{"type":"error","name":"LabelTooLong","inputs":[{"type":"string","name":"label"}]},{"type":"error","name":"LabelTooShort","inputs":[{"type":"string","name":"label"}]},{"type":"error","name":"NameNotFound","inputs":[]},{"type":"error","name":"OperationProhibited","inputs":[{"type":"bytes32","name":"node"}]},{"type":"error","name":"Unauthorised","inputs":[{"type":"bytes32","name":"node"},{"type":"address","name":"addr"}]},{"type":"error","name":"UnauthorisedEthWrap","inputs":[{"type":"bytes32","name":"label"},{"type":"address","name":"addr"}]},{"type":"event","anonymous":false,"name":"ApprovalForAll","inputs":[{"type":"address","name":"account","indexed":true},{"type":"address","name":"operator","indexed":true},{"type":"bool","name":"approved","indexed":false}]},{"type":"event","anonymous":false,"name":"ControllerChanged","inputs":[{"type":"address","name":"controller","indexed":true},{"type":"bool","name":"active","indexed":false}]},{"type":"event","anonymous":false,"name":"FusesBurned","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"uint96","name":"fuses","indexed":false}]},{"type":"event","anonymous":false,"name":"NameUnwrapped","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"address","name":"owner","indexed":false}]},{"type":"event","anonymous":false,"name":"NameWrapped","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"bytes","name":"name","indexed":false},{"type":"address","name":"owner","indexed":false},{"type":"uint96","name":"fuses","indexed":false}]},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}]},{"type":"event","anonymous":false,"name":"TransferBatch","inputs":[{"type":"address","name":"operator","indexed":true},{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256[]","name":"ids","indexed":false},{"type":"uint256[]","name":"values","indexed":false}]},{"type":"event","anonymous":false,"name":"TransferSingle","inputs":[{"type":"address","name":"operator","indexed":true},{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"id","indexed":false},{"type":"uint256","name":"value","indexed":false}]},{"type":"event","anonymous":false,"name":"URI","inputs":[{"type":"string","name":"value","indexed":false},{"type":"uint256","name":"id","indexed":true}]},{"type":"function","name":"_tokens","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"allFusesBurned","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"uint96","name":"fuseMask"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"account"},{"type":"uint256","name":"id"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"balanceOfBatch","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address[]","name":"accounts"},{"type":"uint256[]","name":"ids"}],"outputs":[{"type":"uint256[]"}]},{"type":"function","name":"burnFuses","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"uint96","name":"_fuses"}],"outputs":[]},{"type":"function","name":"controllers","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"ens","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"getData","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"address","name":"owner"},{"type":"uint96","name":"fuses"}]},{"type":"function","name":"getFuses","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"}],"outputs":[{"type":"uint96","name":"fuses"},{"type":"uint8","name":"vulnerability"},{"type":"bytes32","name":"vulnerableNode"}]},{"type":"function","name":"isApprovedForAll","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"account"},{"type":"address","name":"operator"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isTokenOwnerOrApproved","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"address","name":"addr"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"metadataService","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"names","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32"}],"outputs":[{"type":"bytes"}]},{"type":"function","name":"onERC721Received","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"address"},{"type":"uint256","name":"tokenId"},{"type":"bytes","name":"data"}],"outputs":[{"type":"bytes4"}]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"ownerOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"id"}],"outputs":[{"type":"address"}]},{"type":"function","name":"registerAndWrapETH2LD","constant":false,"payable":false,"inputs":[{"type":"string","name":"label"},{"type":"address","name":"wrappedOwner"},{"type":"uint256","name":"duration"},{"type":"address","name":"resolver"},{"type":"uint96","name":"_fuses"}],"outputs":[{"type":"uint256","name":"expires"}]},{"type":"function","name":"registrar","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"renew","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"tokenId"},{"type":"uint256","name":"duration"}],"outputs":[{"type":"uint256","name":"expires"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[]},{"type":"function","name":"safeBatchTransferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"bytes","name":"data"}],"outputs":[]},{"type":"function","name":"safeTransferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"id"},{"type":"uint256","name":"amount"},{"type":"bytes","name":"data"}],"outputs":[]},{"type":"function","name":"setApprovalForAll","constant":false,"payable":false,"inputs":[{"type":"address","name":"operator"},{"type":"bool","name":"approved"}],"outputs":[]},{"type":"function","name":"setController","constant":false,"payable":false,"inputs":[{"type":"address","name":"controller"},{"type":"bool","name":"active"}],"outputs":[]},{"type":"function","name":"setMetadataService","constant":false,"payable":false,"inputs":[{"type":"address","name":"_newMetadataService"}],"outputs":[]},{"type":"function","name":"setRecord","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"address","name":"owner"},{"type":"address","name":"resolver"},{"type":"uint64","name":"ttl"}],"outputs":[]},{"type":"function","name":"setResolver","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"address","name":"resolver"}],"outputs":[]},{"type":"function","name":"setSubnodeOwner","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"parentNode"},{"type":"bytes32","name":"label"},{"type":"address","name":"owner"}],"outputs":[{"type":"bytes32"}]},{"type":"function","name":"setSubnodeOwnerAndWrap","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"parentNode"},{"type":"string","name":"label"},{"type":"address","name":"newOwner"},{"type":"uint96","name":"_fuses"}],"outputs":[{"type":"bytes32","name":"node"}]},{"type":"function","name":"setSubnodeRecord","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"parentNode"},{"type":"bytes32","name":"label"},{"type":"address","name":"owner"},{"type":"address","name":"resolver"},{"type":"uint64","name":"ttl"}],"outputs":[]},{"type":"function","name":"setSubnodeRecordAndWrap","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"parentNode"},{"type":"string","name":"label"},{"type":"address","name":"newOwner"},{"type":"address","name":"resolver"},{"type":"uint64","name":"ttl"},{"type":"uint96","name":"_fuses"}],"outputs":[]},{"type":"function","name":"setTTL","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"uint64","name":"ttl"}],"outputs":[]},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[]},{"type":"function","name":"unwrap","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"parentNode"},{"type":"bytes32","name":"label"},{"type":"address","name":"newController"}],"outputs":[]},{"type":"function","name":"unwrapETH2LD","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"label"},{"type":"address","name":"newRegistrant"},{"type":"address","name":"newController"}],"outputs":[]},{"type":"function","name":"uri","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"string"}]},{"type":"function","name":"wrap","constant":false,"payable":false,"inputs":[{"type":"bytes","name":"name"},{"type":"address","name":"wrappedOwner"},{"type":"uint96","name":"_fuses"},{"type":"address","name":"resolver"}],"outputs":[]},{"type":"function","name":"wrapETH2LD","constant":false,"payable":false,"inputs":[{"type":"string","name":"label"},{"type":"address","name":"wrappedOwner"},{"type":"uint96","name":"_fuses"},{"type":"address","name":"resolver"}],"outputs":[]}] \ No newline at end of file +[ + { + "inputs": [ + { + "internalType": "contract ENS", + "name": "_ens", + "type": "address" + }, + { + "internalType": "contract IBaseRegistrar", + "name": "_registrar", + "type": "address" + }, + { + "internalType": "contract IMetadataService", + "name": "_metadataService", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "IncompatibleParent", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "IncorrectTargetOwner", + "type": "error" + }, + { + "inputs": [], + "name": "IncorrectTokenType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "labelHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "expectedLabelhash", + "type": "bytes32" + } + ], + "name": "LabelMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "label", + "type": "string" + } + ], + "name": "LabelTooLong", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "label", + "type": "string" + } + ], + "name": "LabelTooShort", + "type": "error" + }, + { + "inputs": [], + "name": "NameNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "OperationProhibited", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "Unauthorised", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "UnauthorisedEthWrap", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "controller", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "active", + "type": "bool" + } + ], + "name": "ControllerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "fuses", + "type": "uint96" + } + ], + "name": "FusesBurned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "NameUnwrapped", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "fuses", + "type": "uint96" + } + ], + "name": "NameWrapped", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "_tokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "uint96", + "name": "fuseMask", + "type": "uint96" + } + ], + "name": "allFusesBurned", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "uint96", + "name": "_fuses", + "type": "uint96" + } + ], + "name": "burnFuses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "controllers", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ens", + "outputs": [ + { + "internalType": "contract ENS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getData", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint96", + "name": "fuses", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "getFuses", + "outputs": [ + { + "internalType": "uint96", + "name": "fuses", + "type": "uint96" + }, + { + "internalType": "enum INameWrapper.NameSafety", + "name": "vulnerability", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "vulnerableNode", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "isTokenOwnerOrApproved", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "metadataService", + "outputs": [ + { + "internalType": "contract IMetadataService", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "names", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "label", + "type": "string" + }, + { + "internalType": "address", + "name": "wrappedOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_fuses", + "type": "uint96" + } + ], + "name": "registerAndWrapETH2LD", + "outputs": [ + { + "internalType": "uint256", + "name": "expires", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "contract IBaseRegistrar", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "renew", + "outputs": [ + { + "internalType": "uint256", + "name": "expires", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "controller", + "type": "address" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IMetadataService", + "name": "_newMetadataService", + "type": "address" + } + ], + "name": "setMetadataService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + }, + { + "internalType": "uint64", + "name": "ttl", + "type": "uint64" + } + ], + "name": "setRecord", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + } + ], + "name": "setResolver", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "parentNode", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "setSubnodeOwner", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "parentNode", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "label", + "type": "string" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_fuses", + "type": "uint96" + } + ], + "name": "setSubnodeOwnerAndWrap", + "outputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "parentNode", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + }, + { + "internalType": "uint64", + "name": "ttl", + "type": "uint64" + } + ], + "name": "setSubnodeRecord", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "parentNode", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "label", + "type": "string" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + }, + { + "internalType": "uint64", + "name": "ttl", + "type": "uint64" + }, + { + "internalType": "uint96", + "name": "_fuses", + "type": "uint96" + } + ], + "name": "setSubnodeRecordAndWrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "ttl", + "type": "uint64" + } + ], + "name": "setTTL", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "parentNode", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newController", + "type": "address" + } + ], + "name": "unwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newRegistrant", + "type": "address" + }, + { + "internalType": "address", + "name": "newController", + "type": "address" + } + ], + "name": "unwrapETH2LD", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "internalType": "address", + "name": "wrappedOwner", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_fuses", + "type": "uint96" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + } + ], + "name": "wrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "label", + "type": "string" + }, + { + "internalType": "address", + "name": "wrappedOwner", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_fuses", + "type": "uint96" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + } + ], + "name": "wrapETH2LD", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/ensjs/src/ABIs/PublicResolver.json b/packages/ensjs/src/ABIs/PublicResolver.json index ea254caf..d5b95e85 100644 --- a/packages/ensjs/src/ABIs/PublicResolver.json +++ b/packages/ensjs/src/ABIs/PublicResolver.json @@ -1 +1,875 @@ -[{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_ens"},{"type":"address","name":"wrapperAddress"},{"type":"address","name":"_trustedETHController"},{"type":"address","name":"_trustedReverseRegistrar"}]},{"type":"event","anonymous":false,"name":"ABIChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"uint256","name":"contentType","indexed":true}]},{"type":"event","anonymous":false,"name":"AddrChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"address","name":"a","indexed":false}]},{"type":"event","anonymous":false,"name":"AddressChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"uint256","name":"coinType","indexed":false},{"type":"bytes","name":"newAddress","indexed":false}]},{"type":"event","anonymous":false,"name":"ApprovalForAll","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"operator","indexed":true},{"type":"bool","name":"approved","indexed":false}]},{"type":"event","anonymous":false,"name":"ContenthashChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"bytes","name":"hash","indexed":false}]},{"type":"event","anonymous":false,"name":"DNSRecordChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"bytes","name":"name","indexed":false},{"type":"uint16","name":"resource","indexed":false},{"type":"bytes","name":"record","indexed":false}]},{"type":"event","anonymous":false,"name":"DNSRecordDeleted","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"bytes","name":"name","indexed":false},{"type":"uint16","name":"resource","indexed":false}]},{"type":"event","anonymous":false,"name":"DNSZoneCleared","inputs":[{"type":"bytes32","name":"node","indexed":true}]},{"type":"event","anonymous":false,"name":"DNSZonehashChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"bytes","name":"lastzonehash","indexed":false},{"type":"bytes","name":"zonehash","indexed":false}]},{"type":"event","anonymous":false,"name":"InterfaceChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"bytes4","name":"interfaceID","indexed":true},{"type":"address","name":"implementer","indexed":false}]},{"type":"event","anonymous":false,"name":"NameChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"string","name":"name","indexed":false}]},{"type":"event","anonymous":false,"name":"PubkeyChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"bytes32","name":"x","indexed":false},{"type":"bytes32","name":"y","indexed":false}]},{"type":"event","anonymous":false,"name":"TextChanged","inputs":[{"type":"bytes32","name":"node","indexed":true},{"type":"string","name":"indexedKey","indexed":true},{"type":"string","name":"key","indexed":false}]},{"type":"function","name":"ABI","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"uint256","name":"contentTypes"}],"outputs":[{"type":"uint256"},{"type":"bytes"}]},{"type":"function","name":"addr","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"}],"outputs":[{"type":"address"}]},{"type":"function","name":"addr","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"uint256","name":"coinType"}],"outputs":[{"type":"bytes"}]},{"type":"function","name":"clearDNSZone","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"}],"outputs":[]},{"type":"function","name":"contenthash","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"}],"outputs":[{"type":"bytes"}]},{"type":"function","name":"dnsRecord","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes32","name":"name"},{"type":"uint16","name":"resource"}],"outputs":[{"type":"bytes"}]},{"type":"function","name":"hasDNSRecords","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes32","name":"name"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"interfaceImplementer","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes4","name":"interfaceID"}],"outputs":[{"type":"address"}]},{"type":"function","name":"isApprovedForAll","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"account"},{"type":"address","name":"operator"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"multicall","constant":false,"payable":false,"inputs":[{"type":"bytes[]","name":"data"}],"outputs":[{"type":"bytes[]","name":"results"}]},{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"}],"outputs":[{"type":"string"}]},{"type":"function","name":"pubkey","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"}],"outputs":[{"type":"bytes32","name":"x"},{"type":"bytes32","name":"y"}]},{"type":"function","name":"setABI","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"uint256","name":"contentType"},{"type":"bytes","name":"data"}],"outputs":[]},{"type":"function","name":"setAddr","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"uint256","name":"coinType"},{"type":"bytes","name":"a"}],"outputs":[]},{"type":"function","name":"setAddr","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"address","name":"a"}],"outputs":[]},{"type":"function","name":"setApprovalForAll","constant":false,"payable":false,"inputs":[{"type":"address","name":"operator"},{"type":"bool","name":"approved"}],"outputs":[]},{"type":"function","name":"setContenthash","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes","name":"hash"}],"outputs":[]},{"type":"function","name":"setDNSRecords","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes","name":"data"}],"outputs":[]},{"type":"function","name":"setInterface","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes4","name":"interfaceID"},{"type":"address","name":"implementer"}],"outputs":[]},{"type":"function","name":"setName","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"string","name":"newName"}],"outputs":[]},{"type":"function","name":"setPubkey","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes32","name":"x"},{"type":"bytes32","name":"y"}],"outputs":[]},{"type":"function","name":"setText","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"string","name":"key"},{"type":"string","name":"value"}],"outputs":[]},{"type":"function","name":"setZonehash","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"bytes","name":"hash"}],"outputs":[]},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"pure","payable":false,"inputs":[{"type":"bytes4","name":"interfaceID"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"text","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"},{"type":"string","name":"key"}],"outputs":[{"type":"string"}]},{"type":"function","name":"zonehash","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32","name":"node"}],"outputs":[{"type":"bytes"}]}] \ No newline at end of file +[ + { + "inputs": [ + { + "internalType": "contract ENS", + "name": "_ens", + "type": "address" + }, + { + "internalType": "contract INameWrapper", + "name": "wrapperAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_trustedETHController", + "type": "address" + }, + { + "internalType": "address", + "name": "_trustedReverseRegistrar", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "contentType", + "type": "uint256" + } + ], + "name": "ABIChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "AddrChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "coinType", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "newAddress", + "type": "bytes" + } + ], + "name": "AddressChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "hash", + "type": "bytes" + } + ], + "name": "ContenthashChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "resource", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "record", + "type": "bytes" + } + ], + "name": "DNSRecordChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "resource", + "type": "uint16" + } + ], + "name": "DNSRecordDeleted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "DNSZoneCleared", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "lastzonehash", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "zonehash", + "type": "bytes" + } + ], + "name": "DNSZonehashChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "interfaceID", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "implementer", + "type": "address" + } + ], + "name": "InterfaceChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "NameChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "PubkeyChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "string", + "name": "indexedKey", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + } + ], + "name": "TextChanged", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "contentTypes", + "type": "uint256" + } + ], + "name": "ABI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "addr", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "coinType", + "type": "uint256" + } + ], + "name": "addr", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "clearDNSZone", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "contenthash", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "uint16", + "name": "resource", + "type": "uint16" + } + ], + "name": "dnsRecord", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "hasDNSRecords", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes4", + "name": "interfaceID", + "type": "bytes4" + } + ], + "name": "interfaceImplementer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" + } + ], + "name": "multicall", + "outputs": [ + { + "internalType": "bytes[]", + "name": "results", + "type": "bytes[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "pubkey", + "outputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "contentType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "setABI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "coinType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "a", + "type": "bytes" + } + ], + "name": "setAddr", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "setAddr", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "hash", + "type": "bytes" + } + ], + "name": "setContenthash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "setDNSRecords", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes4", + "name": "interfaceID", + "type": "bytes4" + }, + { + "internalType": "address", + "name": "implementer", + "type": "address" + } + ], + "name": "setInterface", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "newName", + "type": "string" + } + ], + "name": "setName", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "setPubkey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "name": "setText", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "hash", + "type": "bytes" + } + ], + "name": "setZonehash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceID", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "key", + "type": "string" + } + ], + "name": "text", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "zonehash", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/packages/ensjs/src/ABIs/ReverseRegistrar.json b/packages/ensjs/src/ABIs/ReverseRegistrar.json new file mode 100644 index 00000000..a6d2736c --- /dev/null +++ b/packages/ensjs/src/ABIs/ReverseRegistrar.json @@ -0,0 +1,323 @@ +[ + { + "inputs": [ + { + "internalType": "contract ENS", + "name": "ensAddr", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "controller", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "ControllerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "ReverseClaimed", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "claim", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + } + ], + "name": "claimForAddr", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + } + ], + "name": "claimWithResolver", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "controllers", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "defaultResolver", + "outputs": [ + { + "internalType": "contract NameResolver", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ens", + "outputs": [ + { + "internalType": "contract ENS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "node", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "controller", + "type": "address" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "resolver", + "type": "address" + } + ], + "name": "setDefaultResolver", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "setName", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "resolver", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "setNameForAddr", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/ensjs/src/ABIs/StaticMetadataService.json b/packages/ensjs/src/ABIs/StaticMetadataService.json index 510b1af8..d0ed0235 100644 --- a/packages/ensjs/src/ABIs/StaticMetadataService.json +++ b/packages/ensjs/src/ABIs/StaticMetadataService.json @@ -1 +1,32 @@ -[{"type":"constructor","payable":false,"inputs":[{"type":"string","name":"_metaDataUri"}]},{"type":"function","name":"uri","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"string"}]}] \ No newline at end of file +[ + { + "inputs": [ + { + "internalType": "string", + "name": "_metaDataUri", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/packages/ensjs/src/ABIs/UniversalResolver.json b/packages/ensjs/src/ABIs/UniversalResolver.json index dafc5130..ec727d7b 100644 --- a/packages/ensjs/src/ABIs/UniversalResolver.json +++ b/packages/ensjs/src/ABIs/UniversalResolver.json @@ -1 +1,177 @@ -[{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_registry"}]},{"type":"error","name":"OffchainLookup","inputs":[{"type":"address","name":"sender"},{"type":"string[]","name":"urls"},{"type":"bytes","name":"callData"},{"type":"bytes4","name":"callbackFunction"},{"type":"bytes","name":"extraData"}]},{"type":"function","name":"findResolver","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes","name":"name"}],"outputs":[{"type":"address"},{"type":"bytes32"}]},{"type":"function","name":"registry","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"resolve","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes","name":"name"},{"type":"bytes","name":"data"}],"outputs":[{"type":"bytes"},{"type":"address"}]},{"type":"function","name":"resolveCallback","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes","name":"response"},{"type":"bytes","name":"extraData"}],"outputs":[{"type":"bytes"}]},{"type":"function","name":"reverse","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes","name":"reverseNode"}],"outputs":[{"type":"string"},{"type":"bytes"}]},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]}] \ No newline at end of file +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "string[]", + "name": "urls", + "type": "string[]" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes4", + "name": "callbackFunction", + "type": "bytes4" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "OffchainLookup", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "name", + "type": "bytes" + } + ], + "name": "findResolver", + "outputs": [ + { + "internalType": "contract Resolver", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "contract ENS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "resolveCallback", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "reverseNode", + "type": "bytes" + } + ], + "name": "reverse", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/packages/ensjs/src/contracts/DNCOCURP.ts b/packages/ensjs/src/contracts/DNCOCURP.ts deleted file mode 100644 index f5909f49..00000000 --- a/packages/ensjs/src/contracts/DNCOCURP.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ethers } from 'ethers' -import { DNCOCURP__factory } from '../generated/factories/DNCOCURP__factory' - -const defaultAddress = '0xf178d75267cd7EA9DfB6F82Bb1f6e7B8edb43E43' - -export default (provider: ethers.providers.JsonRpcProvider, address?: string) => - DNCOCURP__factory.connect(address || defaultAddress, provider) diff --git a/packages/ensjs/src/contracts/doNotCallOnChainUniversalResolverProxy.ts b/packages/ensjs/src/contracts/doNotCallOnChainUniversalResolverProxy.ts new file mode 100644 index 00000000..b7d807fb --- /dev/null +++ b/packages/ensjs/src/contracts/doNotCallOnChainUniversalResolverProxy.ts @@ -0,0 +1,10 @@ +import { ethers } from 'ethers' +import { DoNotCallOnChainUniversalResolverProxy__factory } from '../generated/factories/DoNotCallOnChainUniversalResolverProxy__factory' + +const defaultAddress = '0x17ED1CF9A6E57e3E9fC0832bee4a965eB6ee12E6' + +export default (provider: ethers.providers.JsonRpcProvider, address?: string) => + DoNotCallOnChainUniversalResolverProxy__factory.connect( + address || defaultAddress, + provider, + ) diff --git a/packages/ensjs/src/contracts/index.ts b/packages/ensjs/src/contracts/index.ts index 9661d93d..22caa569 100644 --- a/packages/ensjs/src/contracts/index.ts +++ b/packages/ensjs/src/contracts/index.ts @@ -1,6 +1,6 @@ import { ethers } from 'ethers' import type { BaseRegistrarImplementation } from '../generated/BaseRegistrarImplementation' -import type { DNCOCURP } from '../generated/DNCOCURP' +import type { DoNotCallOnChainUniversalResolverProxy } from '../generated/DoNotCallOnChainUniversalResolverProxy' import type { ENSRegistry } from '../generated/ENSRegistry' import type { Multicall } from '../generated/Multicall' import type { NameWrapper } from '../generated/NameWrapper' @@ -44,7 +44,10 @@ export default class ContractManager { public getRegistry = this.generateContractGetter('registry') public getReverseRegistrar = this.generateContractGetter('reverseRegistrar') - public getDNCOCURP = this.generateContractGetter('DNCOCURP') + public getDNCOCURP = + this.generateContractGetter( + 'doNotCallOnChainUniversalResolverProxy', + ) public getNameWrapper = this.generateContractGetter('nameWrapper') public getBaseRegistrar = diff --git a/packages/ensjs/src/contracts/publicResolver.ts b/packages/ensjs/src/contracts/publicResolver.ts index 692c576c..216f44c9 100644 --- a/packages/ensjs/src/contracts/publicResolver.ts +++ b/packages/ensjs/src/contracts/publicResolver.ts @@ -1,7 +1,7 @@ import { ethers } from 'ethers' import { PublicResolver__factory } from '../generated/factories/PublicResolver__factory' -const defaultAddress = '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC' +const defaultAddress = '0x9e6c745CAEdA0AB8a7AD0f393ef90dcb7C70074A' export default (provider: ethers.providers.JsonRpcProvider, address?: string) => PublicResolver__factory.connect(address || defaultAddress, provider) diff --git a/packages/ensjs/src/contracts/reverseRegistrar.ts b/packages/ensjs/src/contracts/reverseRegistrar.ts index 8043418b..ea8d1c94 100644 --- a/packages/ensjs/src/contracts/reverseRegistrar.ts +++ b/packages/ensjs/src/contracts/reverseRegistrar.ts @@ -1,7 +1,7 @@ import { ethers } from 'ethers' import { ReverseRegistrar__factory } from '../generated/factories/ReverseRegistrar__factory' -const defaultAddress = '0x6F628b68b30Dc3c17f345c9dbBb1E483c2b7aE5c' +const defaultAddress = '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC' export default (provider: ethers.providers.JsonRpcProvider, address?: string) => ReverseRegistrar__factory.connect(address || defaultAddress, provider) diff --git a/packages/ensjs/src/contracts/universalResolver.ts b/packages/ensjs/src/contracts/universalResolver.ts index 54c589c3..5a346345 100644 --- a/packages/ensjs/src/contracts/universalResolver.ts +++ b/packages/ensjs/src/contracts/universalResolver.ts @@ -1,7 +1,7 @@ import { ethers } from 'ethers' import { UniversalResolver__factory } from '../generated/factories/UniversalResolver__factory' -const defaultAddress = '0x9e6c745CAEdA0AB8a7AD0f393ef90dcb7C70074A' +const defaultAddress = '0x454b1F7d4C741A2f86AF7eF19b44B2A6EE179443' export default (provider: ethers.providers.JsonRpcProvider, address?: string) => UniversalResolver__factory.connect(address || defaultAddress, provider) diff --git a/packages/ensjs/src/functions/setName.ts b/packages/ensjs/src/functions/setName.ts index 06acdc22..80c95d53 100644 --- a/packages/ensjs/src/functions/setName.ts +++ b/packages/ensjs/src/functions/setName.ts @@ -3,10 +3,12 @@ import { ENSArgs } from '..' export default async function ( { contracts, provider }: ENSArgs<'contracts' | 'provider'>, name: string, + address?: string, + resolver?: string, ) { - const address = await provider?.getSigner().getAddress() + const signerAddress = await provider?.getSigner().getAddress() - if (!address) { + if (!signerAddress) { throw new Error('No signer found') } @@ -14,5 +16,16 @@ export default async function ( provider?.getSigner()!, ) + if (address) { + const publicResolver = await contracts?.getPublicResolver() + + return reverseRegistrar?.setNameForAddr( + address, + signerAddress, + resolver || publicResolver!.address, + name, + ) + } + return reverseRegistrar?.setName(name) } diff --git a/packages/ensjs/src/generated/DNCOCURP.ts b/packages/ensjs/src/generated/DoNotCallOnChainUniversalResolverProxy.ts similarity index 86% rename from packages/ensjs/src/generated/DNCOCURP.ts rename to packages/ensjs/src/generated/DoNotCallOnChainUniversalResolverProxy.ts index cc0fb45f..1973847b 100644 --- a/packages/ensjs/src/generated/DNCOCURP.ts +++ b/packages/ensjs/src/generated/DoNotCallOnChainUniversalResolverProxy.ts @@ -26,7 +26,29 @@ import type { OnEvent, } from "./common"; -export interface DNCOCURPInterface extends utils.Interface { +export declare namespace DoNotCallOnChainUniversalResolverProxy { + export type ReverseCallStruct = { + target: string; + data: BytesLike; + dataType: BigNumberish; + locations: BigNumberish[]; + }; + + export type ReverseCallStructOutput = [ + string, + string, + number, + BigNumber[] + ] & { + target: string; + data: string; + dataType: number; + locations: BigNumber[]; + }; +} + +export interface DoNotCallOnChainUniversalResolverProxyInterface + extends utils.Interface { functions: { "isOwner(address)": FunctionFragment; "owner()": FunctionFragment; @@ -52,12 +74,7 @@ export interface DNCOCURPInterface extends utils.Interface { functionFragment: "reverse", values: [ BytesLike, - { - target: string; - data: BytesLike; - dataType: BigNumberish; - locations: BigNumberish[]; - }[] + DoNotCallOnChainUniversalResolverProxy.ReverseCallStruct[] ] ): string; encodeFunctionData( @@ -108,12 +125,12 @@ export type OwnershipTransferredEvent = TypedEvent< export type OwnershipTransferredEventFilter = TypedEventFilter; -export interface DNCOCURP extends BaseContract { +export interface DoNotCallOnChainUniversalResolverProxy extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: DNCOCURPInterface; + interface: DoNotCallOnChainUniversalResolverProxyInterface; queryFilter( event: TypedEventFilter, @@ -141,12 +158,7 @@ export interface DNCOCURP extends BaseContract { reverse( reverseNode: BytesLike, - calls: { - target: string; - data: BytesLike; - dataType: BigNumberish; - locations: BigNumberish[]; - }[], + calls: DoNotCallOnChainUniversalResolverProxy.ReverseCallStruct[], overrides?: CallOverrides ): Promise<[string, string[]] & { name: string; returnData: string[] }>; @@ -169,12 +181,7 @@ export interface DNCOCURP extends BaseContract { reverse( reverseNode: BytesLike, - calls: { - target: string; - data: BytesLike; - dataType: BigNumberish; - locations: BigNumberish[]; - }[], + calls: DoNotCallOnChainUniversalResolverProxy.ReverseCallStruct[], overrides?: CallOverrides ): Promise<[string, string[]] & { name: string; returnData: string[] }>; @@ -197,12 +204,7 @@ export interface DNCOCURP extends BaseContract { reverse( reverseNode: BytesLike, - calls: { - target: string; - data: BytesLike; - dataType: BigNumberish; - locations: BigNumberish[]; - }[], + calls: DoNotCallOnChainUniversalResolverProxy.ReverseCallStruct[], overrides?: CallOverrides ): Promise<[string, string[]] & { name: string; returnData: string[] }>; @@ -237,12 +239,7 @@ export interface DNCOCURP extends BaseContract { reverse( reverseNode: BytesLike, - calls: { - target: string; - data: BytesLike; - dataType: BigNumberish; - locations: BigNumberish[]; - }[], + calls: DoNotCallOnChainUniversalResolverProxy.ReverseCallStruct[], overrides?: CallOverrides ): Promise; @@ -269,12 +266,7 @@ export interface DNCOCURP extends BaseContract { reverse( reverseNode: BytesLike, - calls: { - target: string; - data: BytesLike; - dataType: BigNumberish; - locations: BigNumberish[]; - }[], + calls: DoNotCallOnChainUniversalResolverProxy.ReverseCallStruct[], overrides?: CallOverrides ): Promise; diff --git a/packages/ensjs/src/generated/ReverseRegistrar.ts b/packages/ensjs/src/generated/ReverseRegistrar.ts index 2cdfc7c0..a9aed108 100644 --- a/packages/ensjs/src/generated/ReverseRegistrar.ts +++ b/packages/ensjs/src/generated/ReverseRegistrar.ts @@ -12,7 +12,11 @@ import type { Signer, utils, } from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; import type { Listener, Provider } from "@ethersproject/providers"; import type { TypedEventFilter, @@ -23,62 +27,166 @@ import type { export interface ReverseRegistrarInterface extends utils.Interface { functions: { - "ADDR_REVERSE_NODE()": FunctionFragment; "claim(address)": FunctionFragment; + "claimForAddr(address,address,address)": FunctionFragment; "claimWithResolver(address,address)": FunctionFragment; + "controllers(address)": FunctionFragment; "defaultResolver()": FunctionFragment; "ens()": FunctionFragment; "node(address)": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setController(address,bool)": FunctionFragment; + "setDefaultResolver(address)": FunctionFragment; "setName(string)": FunctionFragment; + "setNameForAddr(address,address,address,string)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; }; getFunction( nameOrSignatureOrTopic: - | "ADDR_REVERSE_NODE" | "claim" + | "claimForAddr" | "claimWithResolver" + | "controllers" | "defaultResolver" | "ens" | "node" + | "owner" + | "renounceOwnership" + | "setController" + | "setDefaultResolver" | "setName" + | "setNameForAddr" + | "transferOwnership" ): FunctionFragment; + encodeFunctionData(functionFragment: "claim", values: [string]): string; encodeFunctionData( - functionFragment: "ADDR_REVERSE_NODE", - values?: undefined + functionFragment: "claimForAddr", + values: [string, string, string] ): string; - encodeFunctionData(functionFragment: "claim", values: [string]): string; encodeFunctionData( functionFragment: "claimWithResolver", values: [string, string] ): string; + encodeFunctionData(functionFragment: "controllers", values: [string]): string; encodeFunctionData( functionFragment: "defaultResolver", values?: undefined ): string; encodeFunctionData(functionFragment: "ens", values?: undefined): string; encodeFunctionData(functionFragment: "node", values: [string]): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setController", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "setDefaultResolver", + values: [string] + ): string; encodeFunctionData(functionFragment: "setName", values: [string]): string; + encodeFunctionData( + functionFragment: "setNameForAddr", + values: [string, string, string, string] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "ADDR_REVERSE_NODE", + functionFragment: "claimForAddr", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; decodeFunctionResult( functionFragment: "claimWithResolver", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "controllers", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "defaultResolver", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "ens", data: BytesLike): Result; decodeFunctionResult(functionFragment: "node", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setController", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setDefaultResolver", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "setName", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setNameForAddr", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; - events: {}; + events: { + "ControllerChanged(address,bool)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "ReverseClaimed(address,bytes32)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "ControllerChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ReverseClaimed"): EventFragment; +} + +export interface ControllerChangedEventObject { + controller: string; + enabled: boolean; +} +export type ControllerChangedEvent = TypedEvent< + [string, boolean], + ControllerChangedEventObject +>; + +export type ControllerChangedEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; } +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface ReverseClaimedEventObject { + addr: string; + node: string; +} +export type ReverseClaimedEvent = TypedEvent< + [string, string], + ReverseClaimedEventObject +>; + +export type ReverseClaimedEventFilter = TypedEventFilter; export interface ReverseRegistrar extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; @@ -107,117 +215,300 @@ export interface ReverseRegistrar extends BaseContract { removeListener: OnEvent; functions: { - ADDR_REVERSE_NODE(overrides?: CallOverrides): Promise<[string]>; - claim( owner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + claimForAddr( + addr: string, + owner: string, + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + claimWithResolver( owner: string, resolver: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + controllers(arg0: string, overrides?: CallOverrides): Promise<[boolean]>; + defaultResolver(overrides?: CallOverrides): Promise<[string]>; ens(overrides?: CallOverrides): Promise<[string]>; node(addr: string, overrides?: CallOverrides): Promise<[string]>; + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setController( + controller: string, + enabled: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setDefaultResolver( + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + setName( name: string, overrides?: Overrides & { from?: string | Promise } ): Promise; - }; - ADDR_REVERSE_NODE(overrides?: CallOverrides): Promise; + setNameForAddr( + addr: string, + owner: string, + resolver: string, + name: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; claim( owner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + claimForAddr( + addr: string, + owner: string, + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + claimWithResolver( owner: string, resolver: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + controllers(arg0: string, overrides?: CallOverrides): Promise; + defaultResolver(overrides?: CallOverrides): Promise; ens(overrides?: CallOverrides): Promise; node(addr: string, overrides?: CallOverrides): Promise; + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setController( + controller: string, + enabled: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setDefaultResolver( + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + setName( name: string, overrides?: Overrides & { from?: string | Promise } ): Promise; - callStatic: { - ADDR_REVERSE_NODE(overrides?: CallOverrides): Promise; + setNameForAddr( + addr: string, + owner: string, + resolver: string, + name: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + callStatic: { claim(owner: string, overrides?: CallOverrides): Promise; + claimForAddr( + addr: string, + owner: string, + resolver: string, + overrides?: CallOverrides + ): Promise; + claimWithResolver( owner: string, resolver: string, overrides?: CallOverrides ): Promise; + controllers(arg0: string, overrides?: CallOverrides): Promise; + defaultResolver(overrides?: CallOverrides): Promise; ens(overrides?: CallOverrides): Promise; node(addr: string, overrides?: CallOverrides): Promise; + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setController( + controller: string, + enabled: boolean, + overrides?: CallOverrides + ): Promise; + + setDefaultResolver( + resolver: string, + overrides?: CallOverrides + ): Promise; + setName(name: string, overrides?: CallOverrides): Promise; + + setNameForAddr( + addr: string, + owner: string, + resolver: string, + name: string, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; }; - filters: {}; + filters: { + "ControllerChanged(address,bool)"( + controller?: string | null, + enabled?: null + ): ControllerChangedEventFilter; + ControllerChanged( + controller?: string | null, + enabled?: null + ): ControllerChangedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + + "ReverseClaimed(address,bytes32)"( + addr?: string | null, + node?: BytesLike | null + ): ReverseClaimedEventFilter; + ReverseClaimed( + addr?: string | null, + node?: BytesLike | null + ): ReverseClaimedEventFilter; + }; estimateGas: { - ADDR_REVERSE_NODE(overrides?: CallOverrides): Promise; - claim( owner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + claimForAddr( + addr: string, + owner: string, + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + claimWithResolver( owner: string, resolver: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + controllers(arg0: string, overrides?: CallOverrides): Promise; + defaultResolver(overrides?: CallOverrides): Promise; ens(overrides?: CallOverrides): Promise; node(addr: string, overrides?: CallOverrides): Promise; + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setController( + controller: string, + enabled: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setDefaultResolver( + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + setName( name: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + + setNameForAddr( + addr: string, + owner: string, + resolver: string, + name: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; }; populateTransaction: { - ADDR_REVERSE_NODE(overrides?: CallOverrides): Promise; - claim( owner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + claimForAddr( + addr: string, + owner: string, + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + claimWithResolver( owner: string, resolver: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + controllers( + arg0: string, + overrides?: CallOverrides + ): Promise; + defaultResolver(overrides?: CallOverrides): Promise; ens(overrides?: CallOverrides): Promise; @@ -227,9 +518,39 @@ export interface ReverseRegistrar extends BaseContract { overrides?: CallOverrides ): Promise; + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setController( + controller: string, + enabled: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setDefaultResolver( + resolver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + setName( name: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + + setNameForAddr( + addr: string, + owner: string, + resolver: string, + name: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; }; } diff --git a/packages/ensjs/src/generated/factories/DNCOCURP__factory.ts b/packages/ensjs/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts similarity index 62% rename from packages/ensjs/src/generated/factories/DNCOCURP__factory.ts rename to packages/ensjs/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts index f76e4610..3c0f3f17 100644 --- a/packages/ensjs/src/generated/factories/DNCOCURP__factory.ts +++ b/packages/ensjs/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts @@ -4,162 +4,183 @@ import { Contract, Signer, utils } from "ethers"; import type { Provider } from "@ethersproject/providers"; -import type { DNCOCURP, DNCOCURPInterface } from "../DNCOCURP"; +import type { + DoNotCallOnChainUniversalResolverProxy, + DoNotCallOnChainUniversalResolverProxyInterface, +} from "../DoNotCallOnChainUniversalResolverProxy"; const _abi = [ { - type: "constructor", - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "_resolver", + type: "address", }, ], + stateMutability: "nonpayable", + type: "constructor", }, { - type: "event", anonymous: false, - name: "OwnershipTransferred", inputs: [ { - type: "address", - name: "previousOwner", indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", }, { - type: "address", - name: "newOwner", indexed: true, + internalType: "address", + name: "newOwner", + type: "address", }, ], + name: "OwnershipTransferred", + type: "event", }, { - type: "function", - name: "isOwner", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "addr", + type: "address", }, ], + name: "isOwner", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "owner", - constant: true, - stateMutability: "view", - payable: false, inputs: [], + name: "owner", outputs: [ { + internalType: "address", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "reverse", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes", + internalType: "bytes", name: "reverseNode", + type: "bytes", }, { - type: "tuple[]", - name: "calls", components: [ { - type: "address", + internalType: "address", name: "target", + type: "address", }, { - type: "bytes", + internalType: "bytes", name: "data", + type: "bytes", }, { - type: "uint8", + internalType: + "enum DoNotCallOnChainUniversalResolverProxy.ReverseCallDataType", name: "dataType", + type: "uint8", }, { - type: "uint256[]", + internalType: "uint256[]", name: "locations", + type: "uint256[]", }, ], + internalType: + "struct DoNotCallOnChainUniversalResolverProxy.ReverseCall[]", + name: "calls", + type: "tuple[]", }, ], + name: "reverse", outputs: [ { - type: "string", + internalType: "string", name: "name", + type: "string", }, { - type: "bytes[]", + internalType: "bytes[]", name: "returnData", + type: "bytes[]", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "setUniversalResolver", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "newUniversalResolver", + type: "address", }, ], + name: "setUniversalResolver", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "transferOwnership", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "newOwner", + type: "address", }, ], + name: "transferOwnership", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "universalResolver", - constant: true, - stateMutability: "view", - payable: false, inputs: [], + name: "universalResolver", outputs: [ { + internalType: "contract UniversalResolver", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, ]; -export class DNCOCURP__factory { +export class DoNotCallOnChainUniversalResolverProxy__factory { static readonly abi = _abi; - static createInterface(): DNCOCURPInterface { - return new utils.Interface(_abi) as DNCOCURPInterface; + static createInterface(): DoNotCallOnChainUniversalResolverProxyInterface { + return new utils.Interface( + _abi + ) as DoNotCallOnChainUniversalResolverProxyInterface; } static connect( address: string, signerOrProvider: Signer | Provider - ): DNCOCURP { - return new Contract(address, _abi, signerOrProvider) as DNCOCURP; + ): DoNotCallOnChainUniversalResolverProxy { + return new Contract( + address, + _abi, + signerOrProvider + ) as DoNotCallOnChainUniversalResolverProxy; } } diff --git a/packages/ensjs/src/generated/factories/NameWrapper__factory.ts b/packages/ensjs/src/generated/factories/NameWrapper__factory.ts index d5ae8005..73c8e35f 100644 --- a/packages/ensjs/src/generated/factories/NameWrapper__factory.ts +++ b/packages/ensjs/src/generated/factories/NameWrapper__factory.ts @@ -8,1129 +8,1246 @@ import type { NameWrapper, NameWrapperInterface } from "../NameWrapper"; const _abi = [ { - type: "constructor", - payable: false, inputs: [ { - type: "address", + internalType: "contract ENS", name: "_ens", + type: "address", }, { - type: "address", + internalType: "contract IBaseRegistrar", name: "_registrar", + type: "address", }, { - type: "address", + internalType: "contract IMetadataService", name: "_metadataService", + type: "address", }, ], + stateMutability: "nonpayable", + type: "constructor", }, { - type: "error", - name: "IncompatibleParent", inputs: [], + name: "IncompatibleParent", + type: "error", }, { - type: "error", - name: "IncorrectTargetOwner", inputs: [ { - type: "address", + internalType: "address", name: "owner", + type: "address", }, ], + name: "IncorrectTargetOwner", + type: "error", }, { - type: "error", - name: "IncorrectTokenType", inputs: [], + name: "IncorrectTokenType", + type: "error", }, { - type: "error", - name: "LabelMismatch", inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "labelHash", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "expectedLabelhash", + type: "bytes32", }, ], + name: "LabelMismatch", + type: "error", }, { - type: "error", - name: "LabelTooLong", inputs: [ { - type: "string", + internalType: "string", name: "label", + type: "string", }, ], + name: "LabelTooLong", + type: "error", }, { - type: "error", - name: "LabelTooShort", inputs: [ { - type: "string", + internalType: "string", name: "label", + type: "string", }, ], + name: "LabelTooShort", + type: "error", }, { - type: "error", - name: "NameNotFound", inputs: [], + name: "NameNotFound", + type: "error", }, { - type: "error", - name: "OperationProhibited", inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "OperationProhibited", + type: "error", }, { - type: "error", - name: "Unauthorised", inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "addr", + type: "address", }, ], + name: "Unauthorised", + type: "error", }, { - type: "error", - name: "UnauthorisedEthWrap", inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "label", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "addr", + type: "address", }, ], + name: "UnauthorisedEthWrap", + type: "error", }, { - type: "event", anonymous: false, - name: "ApprovalForAll", inputs: [ { - type: "address", - name: "account", indexed: true, + internalType: "address", + name: "account", + type: "address", }, { - type: "address", - name: "operator", indexed: true, + internalType: "address", + name: "operator", + type: "address", }, { - type: "bool", - name: "approved", indexed: false, + internalType: "bool", + name: "approved", + type: "bool", }, ], + name: "ApprovalForAll", + type: "event", }, { - type: "event", anonymous: false, - name: "ControllerChanged", inputs: [ { - type: "address", - name: "controller", indexed: true, + internalType: "address", + name: "controller", + type: "address", }, { - type: "bool", - name: "active", indexed: false, + internalType: "bool", + name: "active", + type: "bool", }, ], + name: "ControllerChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "FusesBurned", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "uint96", - name: "fuses", indexed: false, + internalType: "uint96", + name: "fuses", + type: "uint96", }, ], + name: "FusesBurned", + type: "event", }, { - type: "event", anonymous: false, - name: "NameUnwrapped", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "address", - name: "owner", indexed: false, + internalType: "address", + name: "owner", + type: "address", }, ], + name: "NameUnwrapped", + type: "event", }, { - type: "event", anonymous: false, - name: "NameWrapped", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "bytes", - name: "name", indexed: false, + internalType: "bytes", + name: "name", + type: "bytes", }, { - type: "address", - name: "owner", indexed: false, + internalType: "address", + name: "owner", + type: "address", }, { - type: "uint96", - name: "fuses", indexed: false, + internalType: "uint96", + name: "fuses", + type: "uint96", }, ], + name: "NameWrapped", + type: "event", }, { - type: "event", anonymous: false, - name: "OwnershipTransferred", inputs: [ { - type: "address", - name: "previousOwner", indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", }, { - type: "address", - name: "newOwner", indexed: true, + internalType: "address", + name: "newOwner", + type: "address", }, ], + name: "OwnershipTransferred", + type: "event", }, { - type: "event", anonymous: false, - name: "TransferBatch", inputs: [ { - type: "address", - name: "operator", indexed: true, + internalType: "address", + name: "operator", + type: "address", }, { - type: "address", - name: "from", indexed: true, + internalType: "address", + name: "from", + type: "address", }, { - type: "address", - name: "to", indexed: true, + internalType: "address", + name: "to", + type: "address", }, { - type: "uint256[]", - name: "ids", indexed: false, + internalType: "uint256[]", + name: "ids", + type: "uint256[]", }, { - type: "uint256[]", - name: "values", indexed: false, + internalType: "uint256[]", + name: "values", + type: "uint256[]", }, ], + name: "TransferBatch", + type: "event", }, { - type: "event", anonymous: false, - name: "TransferSingle", inputs: [ { - type: "address", - name: "operator", indexed: true, + internalType: "address", + name: "operator", + type: "address", }, { - type: "address", - name: "from", indexed: true, + internalType: "address", + name: "from", + type: "address", }, { - type: "address", - name: "to", indexed: true, + internalType: "address", + name: "to", + type: "address", }, { - type: "uint256", - name: "id", indexed: false, + internalType: "uint256", + name: "id", + type: "uint256", }, { - type: "uint256", - name: "value", indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", }, ], + name: "TransferSingle", + type: "event", }, { - type: "event", anonymous: false, - name: "URI", inputs: [ { - type: "string", - name: "value", indexed: false, + internalType: "string", + name: "value", + type: "string", }, { - type: "uint256", - name: "id", indexed: true, + internalType: "uint256", + name: "id", + type: "uint256", }, ], + name: "URI", + type: "event", }, { - type: "function", - name: "_tokens", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { + internalType: "uint256", + name: "", type: "uint256", }, ], + name: "_tokens", outputs: [ { + internalType: "uint256", + name: "", type: "uint256", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "allFusesBurned", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "uint96", + internalType: "uint96", name: "fuseMask", + type: "uint96", }, ], + name: "allFusesBurned", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "balanceOf", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "account", + type: "address", }, { - type: "uint256", + internalType: "uint256", name: "id", + type: "uint256", }, ], + name: "balanceOf", outputs: [ { + internalType: "uint256", + name: "", type: "uint256", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "balanceOfBatch", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "address[]", + internalType: "address[]", name: "accounts", + type: "address[]", }, { - type: "uint256[]", + internalType: "uint256[]", name: "ids", + type: "uint256[]", }, ], + name: "balanceOfBatch", outputs: [ { + internalType: "uint256[]", + name: "", type: "uint256[]", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "burnFuses", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "uint96", + internalType: "uint96", name: "_fuses", + type: "uint96", }, ], + name: "burnFuses", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "controllers", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { + internalType: "address", + name: "", type: "address", }, ], + name: "controllers", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "ens", - constant: true, - stateMutability: "view", - payable: false, inputs: [], + name: "ens", outputs: [ { + internalType: "contract ENS", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "getData", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "uint256", + internalType: "uint256", name: "tokenId", + type: "uint256", }, ], + name: "getData", outputs: [ { - type: "address", + internalType: "address", name: "owner", + type: "address", }, { - type: "uint96", + internalType: "uint96", name: "fuses", + type: "uint96", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "getFuses", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "getFuses", outputs: [ { - type: "uint96", + internalType: "uint96", name: "fuses", + type: "uint96", }, { - type: "uint8", + internalType: "enum INameWrapper.NameSafety", name: "vulnerability", + type: "uint8", }, { - type: "bytes32", + internalType: "bytes32", name: "vulnerableNode", + type: "bytes32", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "isApprovedForAll", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "account", + type: "address", }, { - type: "address", + internalType: "address", name: "operator", + type: "address", }, ], + name: "isApprovedForAll", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "isTokenOwnerOrApproved", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "addr", + type: "address", }, ], + name: "isTokenOwnerOrApproved", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "metadataService", - constant: true, - stateMutability: "view", - payable: false, inputs: [], + name: "metadataService", outputs: [ { + internalType: "contract IMetadataService", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "names", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { + internalType: "bytes32", + name: "", type: "bytes32", }, ], + name: "names", outputs: [ { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "onERC721Received", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "to", + type: "address", }, { + internalType: "address", + name: "", type: "address", }, { - type: "uint256", + internalType: "uint256", name: "tokenId", + type: "uint256", }, { - type: "bytes", + internalType: "bytes", name: "data", + type: "bytes", }, ], + name: "onERC721Received", outputs: [ { + internalType: "bytes4", + name: "", type: "bytes4", }, ], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "owner", - constant: true, - stateMutability: "view", - payable: false, inputs: [], + name: "owner", outputs: [ { + internalType: "address", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "ownerOf", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "uint256", + internalType: "uint256", name: "id", + type: "uint256", }, ], + name: "ownerOf", outputs: [ { + internalType: "address", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "registerAndWrapETH2LD", - constant: false, - payable: false, inputs: [ { - type: "string", + internalType: "string", name: "label", + type: "string", }, { - type: "address", + internalType: "address", name: "wrappedOwner", + type: "address", }, { - type: "uint256", + internalType: "uint256", name: "duration", + type: "uint256", }, { - type: "address", + internalType: "address", name: "resolver", + type: "address", }, { - type: "uint96", + internalType: "uint96", name: "_fuses", + type: "uint96", }, ], + name: "registerAndWrapETH2LD", outputs: [ { - type: "uint256", + internalType: "uint256", name: "expires", + type: "uint256", }, ], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "registrar", - constant: true, - stateMutability: "view", - payable: false, inputs: [], + name: "registrar", outputs: [ { + internalType: "contract IBaseRegistrar", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "renew", - constant: false, - payable: false, inputs: [ { - type: "uint256", + internalType: "uint256", name: "tokenId", + type: "uint256", }, { - type: "uint256", + internalType: "uint256", name: "duration", + type: "uint256", }, ], + name: "renew", outputs: [ { - type: "uint256", + internalType: "uint256", name: "expires", + type: "uint256", }, ], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "renounceOwnership", - constant: false, - payable: false, inputs: [], + name: "renounceOwnership", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "safeBatchTransferFrom", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "from", + type: "address", }, { - type: "address", + internalType: "address", name: "to", + type: "address", }, { - type: "uint256[]", + internalType: "uint256[]", name: "ids", + type: "uint256[]", }, { - type: "uint256[]", + internalType: "uint256[]", name: "amounts", + type: "uint256[]", }, { - type: "bytes", + internalType: "bytes", name: "data", + type: "bytes", }, ], + name: "safeBatchTransferFrom", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "safeTransferFrom", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "from", + type: "address", }, { - type: "address", + internalType: "address", name: "to", + type: "address", }, { - type: "uint256", + internalType: "uint256", name: "id", + type: "uint256", }, { - type: "uint256", + internalType: "uint256", name: "amount", + type: "uint256", }, { - type: "bytes", + internalType: "bytes", name: "data", + type: "bytes", }, ], + name: "safeTransferFrom", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setApprovalForAll", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "operator", + type: "address", }, { - type: "bool", + internalType: "bool", name: "approved", + type: "bool", }, ], + name: "setApprovalForAll", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setController", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "controller", + type: "address", }, { - type: "bool", + internalType: "bool", name: "active", + type: "bool", }, ], + name: "setController", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setMetadataService", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "contract IMetadataService", name: "_newMetadataService", + type: "address", }, ], + name: "setMetadataService", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setRecord", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "owner", + type: "address", }, { - type: "address", + internalType: "address", name: "resolver", + type: "address", }, { - type: "uint64", + internalType: "uint64", name: "ttl", + type: "uint64", }, ], + name: "setRecord", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setResolver", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "resolver", + type: "address", }, ], + name: "setResolver", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setSubnodeOwner", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "parentNode", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "label", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "owner", + type: "address", }, ], + name: "setSubnodeOwner", outputs: [ { + internalType: "bytes32", + name: "", type: "bytes32", }, ], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setSubnodeOwnerAndWrap", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "parentNode", + type: "bytes32", }, { - type: "string", + internalType: "string", name: "label", + type: "string", }, { - type: "address", + internalType: "address", name: "newOwner", + type: "address", }, { - type: "uint96", + internalType: "uint96", name: "_fuses", + type: "uint96", }, ], + name: "setSubnodeOwnerAndWrap", outputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setSubnodeRecord", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "parentNode", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "label", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "owner", + type: "address", }, { - type: "address", + internalType: "address", name: "resolver", + type: "address", }, { - type: "uint64", + internalType: "uint64", name: "ttl", + type: "uint64", }, ], + name: "setSubnodeRecord", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setSubnodeRecordAndWrap", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "parentNode", + type: "bytes32", }, { - type: "string", + internalType: "string", name: "label", + type: "string", }, { - type: "address", + internalType: "address", name: "newOwner", + type: "address", }, { - type: "address", + internalType: "address", name: "resolver", + type: "address", }, { - type: "uint64", + internalType: "uint64", name: "ttl", + type: "uint64", }, { - type: "uint96", + internalType: "uint96", name: "_fuses", + type: "uint96", }, ], + name: "setSubnodeRecordAndWrap", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setTTL", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "uint64", + internalType: "uint64", name: "ttl", + type: "uint64", }, ], + name: "setTTL", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "supportsInterface", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes4", + internalType: "bytes4", name: "interfaceId", + type: "bytes4", }, ], + name: "supportsInterface", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "transferOwnership", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "newOwner", + type: "address", }, ], + name: "transferOwnership", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "unwrap", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "parentNode", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "label", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "newController", + type: "address", }, ], + name: "unwrap", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "unwrapETH2LD", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "label", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "newRegistrant", + type: "address", }, { - type: "address", + internalType: "address", name: "newController", + type: "address", }, ], + name: "unwrapETH2LD", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "uri", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "uint256", + internalType: "uint256", name: "tokenId", + type: "uint256", }, ], + name: "uri", outputs: [ { + internalType: "string", + name: "", type: "string", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "wrap", - constant: false, - payable: false, inputs: [ { - type: "bytes", + internalType: "bytes", name: "name", + type: "bytes", }, { - type: "address", + internalType: "address", name: "wrappedOwner", + type: "address", }, { - type: "uint96", + internalType: "uint96", name: "_fuses", + type: "uint96", }, { - type: "address", + internalType: "address", name: "resolver", + type: "address", }, ], + name: "wrap", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "wrapETH2LD", - constant: false, - payable: false, inputs: [ { - type: "string", + internalType: "string", name: "label", + type: "string", }, { - type: "address", + internalType: "address", name: "wrappedOwner", + type: "address", }, { - type: "uint96", + internalType: "uint96", name: "_fuses", + type: "uint96", }, { - type: "address", + internalType: "address", name: "resolver", + type: "address", }, ], + name: "wrapETH2LD", outputs: [], + stateMutability: "nonpayable", + type: "function", }, ]; diff --git a/packages/ensjs/src/generated/factories/PublicResolver__factory.ts b/packages/ensjs/src/generated/factories/PublicResolver__factory.ts index b72f0d13..b675af00 100644 --- a/packages/ensjs/src/generated/factories/PublicResolver__factory.ts +++ b/packages/ensjs/src/generated/factories/PublicResolver__factory.ts @@ -11,799 +11,877 @@ import type { const _abi = [ { - type: "constructor", - payable: false, inputs: [ { - type: "address", + internalType: "contract ENS", name: "_ens", + type: "address", }, { - type: "address", + internalType: "contract INameWrapper", name: "wrapperAddress", + type: "address", }, { - type: "address", + internalType: "address", name: "_trustedETHController", + type: "address", }, { - type: "address", + internalType: "address", name: "_trustedReverseRegistrar", + type: "address", }, ], + stateMutability: "nonpayable", + type: "constructor", }, { - type: "event", anonymous: false, - name: "ABIChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "uint256", - name: "contentType", indexed: true, + internalType: "uint256", + name: "contentType", + type: "uint256", }, ], + name: "ABIChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "AddrChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "address", - name: "a", indexed: false, + internalType: "address", + name: "a", + type: "address", }, ], + name: "AddrChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "AddressChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "uint256", - name: "coinType", indexed: false, + internalType: "uint256", + name: "coinType", + type: "uint256", }, { - type: "bytes", - name: "newAddress", indexed: false, + internalType: "bytes", + name: "newAddress", + type: "bytes", }, ], + name: "AddressChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "ApprovalForAll", inputs: [ { - type: "address", - name: "owner", indexed: true, + internalType: "address", + name: "owner", + type: "address", }, { - type: "address", - name: "operator", indexed: true, + internalType: "address", + name: "operator", + type: "address", }, { - type: "bool", - name: "approved", indexed: false, + internalType: "bool", + name: "approved", + type: "bool", }, ], + name: "ApprovalForAll", + type: "event", }, { - type: "event", anonymous: false, - name: "ContenthashChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "bytes", - name: "hash", indexed: false, + internalType: "bytes", + name: "hash", + type: "bytes", }, ], + name: "ContenthashChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "DNSRecordChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "bytes", - name: "name", indexed: false, + internalType: "bytes", + name: "name", + type: "bytes", }, { - type: "uint16", - name: "resource", indexed: false, + internalType: "uint16", + name: "resource", + type: "uint16", }, { - type: "bytes", - name: "record", indexed: false, + internalType: "bytes", + name: "record", + type: "bytes", }, ], + name: "DNSRecordChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "DNSRecordDeleted", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "bytes", - name: "name", indexed: false, + internalType: "bytes", + name: "name", + type: "bytes", }, { - type: "uint16", - name: "resource", indexed: false, + internalType: "uint16", + name: "resource", + type: "uint16", }, ], + name: "DNSRecordDeleted", + type: "event", }, { - type: "event", anonymous: false, - name: "DNSZoneCleared", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, ], + name: "DNSZoneCleared", + type: "event", }, { - type: "event", anonymous: false, - name: "DNSZonehashChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "bytes", - name: "lastzonehash", indexed: false, + internalType: "bytes", + name: "lastzonehash", + type: "bytes", }, { - type: "bytes", - name: "zonehash", indexed: false, + internalType: "bytes", + name: "zonehash", + type: "bytes", }, ], + name: "DNSZonehashChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "InterfaceChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "bytes4", - name: "interfaceID", indexed: true, + internalType: "bytes4", + name: "interfaceID", + type: "bytes4", }, { - type: "address", - name: "implementer", indexed: false, + internalType: "address", + name: "implementer", + type: "address", }, ], + name: "InterfaceChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "NameChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "string", - name: "name", indexed: false, + internalType: "string", + name: "name", + type: "string", }, ], + name: "NameChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "PubkeyChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "bytes32", - name: "x", indexed: false, + internalType: "bytes32", + name: "x", + type: "bytes32", }, { - type: "bytes32", - name: "y", indexed: false, + internalType: "bytes32", + name: "y", + type: "bytes32", }, ], + name: "PubkeyChanged", + type: "event", }, { - type: "event", anonymous: false, - name: "TextChanged", inputs: [ { - type: "bytes32", - name: "node", indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", }, { - type: "string", - name: "indexedKey", indexed: true, + internalType: "string", + name: "indexedKey", + type: "string", }, { - type: "string", - name: "key", indexed: false, + internalType: "string", + name: "key", + type: "string", }, ], + name: "TextChanged", + type: "event", }, { - type: "function", - name: "ABI", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "uint256", + internalType: "uint256", name: "contentTypes", + type: "uint256", }, ], + name: "ABI", outputs: [ { + internalType: "uint256", + name: "", type: "uint256", }, { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "addr", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "addr", outputs: [ { + internalType: "address payable", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "addr", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "uint256", + internalType: "uint256", name: "coinType", + type: "uint256", }, ], + name: "addr", outputs: [ { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "clearDNSZone", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "clearDNSZone", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "contenthash", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "contenthash", outputs: [ { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "dnsRecord", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "name", + type: "bytes32", }, { - type: "uint16", + internalType: "uint16", name: "resource", + type: "uint16", }, ], + name: "dnsRecord", outputs: [ { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "hasDNSRecords", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "name", + type: "bytes32", }, ], + name: "hasDNSRecords", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "interfaceImplementer", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes4", + internalType: "bytes4", name: "interfaceID", + type: "bytes4", }, ], + name: "interfaceImplementer", outputs: [ { + internalType: "address", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "isApprovedForAll", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "account", + type: "address", }, { - type: "address", + internalType: "address", name: "operator", + type: "address", }, ], + name: "isApprovedForAll", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "multicall", - constant: false, - payable: false, inputs: [ { - type: "bytes[]", + internalType: "bytes[]", name: "data", + type: "bytes[]", }, ], + name: "multicall", outputs: [ { - type: "bytes[]", + internalType: "bytes[]", name: "results", + type: "bytes[]", }, ], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "name", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "name", outputs: [ { + internalType: "string", + name: "", type: "string", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "pubkey", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "pubkey", outputs: [ { - type: "bytes32", + internalType: "bytes32", name: "x", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "y", + type: "bytes32", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "setABI", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "uint256", + internalType: "uint256", name: "contentType", + type: "uint256", }, { - type: "bytes", + internalType: "bytes", name: "data", + type: "bytes", }, ], + name: "setABI", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setAddr", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "uint256", + internalType: "uint256", name: "coinType", + type: "uint256", }, { - type: "bytes", + internalType: "bytes", name: "a", + type: "bytes", }, ], + name: "setAddr", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setAddr", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "address", + internalType: "address", name: "a", + type: "address", }, ], + name: "setAddr", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setApprovalForAll", - constant: false, - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "operator", + type: "address", }, { - type: "bool", + internalType: "bool", name: "approved", + type: "bool", }, ], + name: "setApprovalForAll", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setContenthash", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes", + internalType: "bytes", name: "hash", + type: "bytes", }, ], + name: "setContenthash", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setDNSRecords", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes", + internalType: "bytes", name: "data", + type: "bytes", }, ], + name: "setDNSRecords", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setInterface", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes4", + internalType: "bytes4", name: "interfaceID", + type: "bytes4", }, { - type: "address", + internalType: "address", name: "implementer", + type: "address", }, ], + name: "setInterface", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setName", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "string", + internalType: "string", name: "newName", + type: "string", }, ], + name: "setName", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setPubkey", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "x", + type: "bytes32", }, { - type: "bytes32", + internalType: "bytes32", name: "y", + type: "bytes32", }, ], + name: "setPubkey", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setText", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "string", + internalType: "string", name: "key", + type: "string", }, { - type: "string", + internalType: "string", name: "value", + type: "string", }, ], + name: "setText", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "setZonehash", - constant: false, - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "bytes", + internalType: "bytes", name: "hash", + type: "bytes", }, ], + name: "setZonehash", outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - type: "function", - name: "supportsInterface", - constant: true, - stateMutability: "pure", - payable: false, inputs: [ { - type: "bytes4", + internalType: "bytes4", name: "interfaceID", + type: "bytes4", }, ], + name: "supportsInterface", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "pure", + type: "function", }, { - type: "function", - name: "text", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, { - type: "string", + internalType: "string", name: "key", + type: "string", }, ], + name: "text", outputs: [ { + internalType: "string", + name: "", type: "string", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "zonehash", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes32", + internalType: "bytes32", name: "node", + type: "bytes32", }, ], + name: "zonehash", outputs: [ { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, ]; diff --git a/packages/ensjs/src/generated/factories/ReverseRegistrar__factory.ts b/packages/ensjs/src/generated/factories/ReverseRegistrar__factory.ts index 5c0c5891..3ec3a647 100644 --- a/packages/ensjs/src/generated/factories/ReverseRegistrar__factory.ts +++ b/packages/ensjs/src/generated/factories/ReverseRegistrar__factory.ts @@ -17,20 +17,76 @@ const _abi = [ name: "ensAddr", type: "address", }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ { - internalType: "contract Resolver", - name: "resolverAddr", + indexed: true, + internalType: "address", + name: "controller", type: "address", }, + { + indexed: false, + internalType: "bool", + name: "enabled", + type: "bool", + }, ], - payable: false, - stateMutability: "nonpayable", - type: "constructor", + name: "ControllerChanged", + type: "event", }, { - constant: true, - inputs: [], - name: "ADDR_REVERSE_NODE", + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "addr", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "node", + type: "bytes32", + }, + ], + name: "ReverseClaimed", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "claim", outputs: [ { internalType: "bytes32", @@ -38,20 +94,28 @@ const _abi = [ type: "bytes32", }, ], - payable: false, - stateMutability: "view", + stateMutability: "nonpayable", type: "function", }, { - constant: false, inputs: [ + { + internalType: "address", + name: "addr", + type: "address", + }, { internalType: "address", name: "owner", type: "address", }, + { + internalType: "address", + name: "resolver", + type: "address", + }, ], - name: "claim", + name: "claimForAddr", outputs: [ { internalType: "bytes32", @@ -59,12 +123,10 @@ const _abi = [ type: "bytes32", }, ], - payable: false, stateMutability: "nonpayable", type: "function", }, { - constant: false, inputs: [ { internalType: "address", @@ -85,27 +147,42 @@ const _abi = [ type: "bytes32", }, ], - payable: false, stateMutability: "nonpayable", type: "function", }, { - constant: true, + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "controllers", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { inputs: [], name: "defaultResolver", outputs: [ { - internalType: "contract Resolver", + internalType: "contract NameResolver", name: "", type: "address", }, ], - payable: false, stateMutability: "view", type: "function", }, { - constant: true, inputs: [], name: "ens", outputs: [ @@ -115,12 +192,10 @@ const _abi = [ type: "address", }, ], - payable: false, stateMutability: "view", type: "function", }, { - constant: true, inputs: [ { internalType: "address", @@ -136,12 +211,61 @@ const _abi = [ type: "bytes32", }, ], - payable: false, stateMutability: "pure", type: "function", }, { - constant: false, + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "controller", + type: "address", + }, + { + internalType: "bool", + name: "enabled", + type: "bool", + }, + ], + name: "setController", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "resolver", + type: "address", + }, + ], + name: "setDefaultResolver", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { inputs: [ { internalType: "string", @@ -157,7 +281,53 @@ const _abi = [ type: "bytes32", }, ], - payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "addr", + type: "address", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "resolver", + type: "address", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + ], + name: "setNameForAddr", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], stateMutability: "nonpayable", type: "function", }, diff --git a/packages/ensjs/src/generated/factories/StaticMetadataService__factory.ts b/packages/ensjs/src/generated/factories/StaticMetadataService__factory.ts index 50672c7e..a01f9be0 100644 --- a/packages/ensjs/src/generated/factories/StaticMetadataService__factory.ts +++ b/packages/ensjs/src/generated/factories/StaticMetadataService__factory.ts @@ -11,31 +11,34 @@ import type { const _abi = [ { - type: "constructor", - payable: false, inputs: [ { - type: "string", + internalType: "string", name: "_metaDataUri", + type: "string", }, ], + stateMutability: "nonpayable", + type: "constructor", }, { - type: "function", - name: "uri", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { + internalType: "uint256", + name: "", type: "uint256", }, ], + name: "uri", outputs: [ { + internalType: "string", + name: "", type: "string", }, ], + stateMutability: "view", + type: "function", }, ]; diff --git a/packages/ensjs/src/generated/factories/UniversalResolver__factory.ts b/packages/ensjs/src/generated/factories/UniversalResolver__factory.ts index 5c0afcc7..385f9bf6 100644 --- a/packages/ensjs/src/generated/factories/UniversalResolver__factory.ts +++ b/packages/ensjs/src/generated/factories/UniversalResolver__factory.ts @@ -11,160 +11,179 @@ import type { const _abi = [ { - type: "constructor", - payable: false, inputs: [ { - type: "address", + internalType: "address", name: "_registry", + type: "address", }, ], + stateMutability: "nonpayable", + type: "constructor", }, { - type: "error", - name: "OffchainLookup", inputs: [ { - type: "address", + internalType: "address", name: "sender", + type: "address", }, { - type: "string[]", + internalType: "string[]", name: "urls", + type: "string[]", }, { - type: "bytes", + internalType: "bytes", name: "callData", + type: "bytes", }, { - type: "bytes4", + internalType: "bytes4", name: "callbackFunction", + type: "bytes4", }, { - type: "bytes", + internalType: "bytes", name: "extraData", + type: "bytes", }, ], + name: "OffchainLookup", + type: "error", }, { - type: "function", - name: "findResolver", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes", + internalType: "bytes", name: "name", + type: "bytes", }, ], + name: "findResolver", outputs: [ { + internalType: "contract Resolver", + name: "", type: "address", }, { + internalType: "bytes32", + name: "", type: "bytes32", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "registry", - constant: true, - stateMutability: "view", - payable: false, inputs: [], + name: "registry", outputs: [ { + internalType: "contract ENS", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "resolve", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes", + internalType: "bytes", name: "name", + type: "bytes", }, { - type: "bytes", + internalType: "bytes", name: "data", + type: "bytes", }, ], + name: "resolve", outputs: [ { + internalType: "bytes", + name: "", type: "bytes", }, { + internalType: "address", + name: "", type: "address", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "resolveCallback", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes", + internalType: "bytes", name: "response", + type: "bytes", }, { - type: "bytes", + internalType: "bytes", name: "extraData", + type: "bytes", }, ], + name: "resolveCallback", outputs: [ { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "reverse", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes", + internalType: "bytes", name: "reverseNode", + type: "bytes", }, ], + name: "reverse", outputs: [ { + internalType: "string", + name: "", type: "string", }, { + internalType: "bytes", + name: "", type: "bytes", }, ], + stateMutability: "view", + type: "function", }, { - type: "function", - name: "supportsInterface", - constant: true, - stateMutability: "view", - payable: false, inputs: [ { - type: "bytes4", + internalType: "bytes4", name: "interfaceId", + type: "bytes4", }, ], + name: "supportsInterface", outputs: [ { + internalType: "bool", + name: "", type: "bool", }, ], + stateMutability: "view", + type: "function", }, ]; diff --git a/packages/ensjs/src/generated/factories/index.ts b/packages/ensjs/src/generated/factories/index.ts index 2bd862e0..96ee8906 100644 --- a/packages/ensjs/src/generated/factories/index.ts +++ b/packages/ensjs/src/generated/factories/index.ts @@ -1,9 +1,9 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export { DNCOCURP__factory } from "./DNCOCURP__factory"; -export { Multicall__factory } from "./Multicall__factory"; +export { DoNotCallOnChainUniversalResolverProxy__factory } from "./DoNotCallOnChainUniversalResolverProxy__factory"; export { NameWrapper__factory } from "./NameWrapper__factory"; export { PublicResolver__factory } from "./PublicResolver__factory"; +export { ReverseRegistrar__factory } from "./ReverseRegistrar__factory"; export { StaticMetadataService__factory } from "./StaticMetadataService__factory"; export { UniversalResolver__factory } from "./UniversalResolver__factory"; diff --git a/packages/ensjs/src/generated/index.ts b/packages/ensjs/src/generated/index.ts index 9211c6a3..89e0361a 100644 --- a/packages/ensjs/src/generated/index.ts +++ b/packages/ensjs/src/generated/index.ts @@ -1,16 +1,16 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { DNCOCURP } from "./DNCOCURP"; -export type { Multicall } from "./Multicall"; +export type { DoNotCallOnChainUniversalResolverProxy } from "./DoNotCallOnChainUniversalResolverProxy"; export type { NameWrapper } from "./NameWrapper"; export type { PublicResolver } from "./PublicResolver"; +export type { ReverseRegistrar } from "./ReverseRegistrar"; export type { StaticMetadataService } from "./StaticMetadataService"; export type { UniversalResolver } from "./UniversalResolver"; export * as factories from "./factories"; -export { DNCOCURP__factory } from "./factories/DNCOCURP__factory"; -export { Multicall__factory } from "./factories/Multicall__factory"; +export { DoNotCallOnChainUniversalResolverProxy__factory } from "./factories/DoNotCallOnChainUniversalResolverProxy__factory"; export { NameWrapper__factory } from "./factories/NameWrapper__factory"; export { PublicResolver__factory } from "./factories/PublicResolver__factory"; +export { ReverseRegistrar__factory } from "./factories/ReverseRegistrar__factory"; export { StaticMetadataService__factory } from "./factories/StaticMetadataService__factory"; export { UniversalResolver__factory } from "./factories/UniversalResolver__factory"; diff --git a/packages/ensjs/src/tests/getHistory.test.ts b/packages/ensjs/src/tests/getHistory.test.ts index 0a1a9f73..f55b66ab 100644 --- a/packages/ensjs/src/tests/getHistory.test.ts +++ b/packages/ensjs/src/tests/getHistory.test.ts @@ -5,6 +5,7 @@ let ENSInstance: ENS beforeAll(async () => { ;({ ENSInstance } = await setup()) + jest.setTimeout(20000) }) describe('getHistory', () => { diff --git a/packages/ensjs/src/tests/getName.test.ts b/packages/ensjs/src/tests/getName.test.ts index df906098..b43373bf 100644 --- a/packages/ensjs/src/tests/getName.test.ts +++ b/packages/ensjs/src/tests/getName.test.ts @@ -35,7 +35,7 @@ describe('getName', () => { }) it('should return with a false match for a name with no forward resolution', async () => { const tx = await ENSInstance.setName('jefflau.eth') - await tx.wait() + await tx?.wait() const result = await ENSInstance.getName(accounts[0]) expect(result).toBeTruthy() diff --git a/packages/ensjs/src/tests/setName.test.ts b/packages/ensjs/src/tests/setName.test.ts index 0f2318cf..79e61e41 100644 --- a/packages/ensjs/src/tests/setName.test.ts +++ b/packages/ensjs/src/tests/setName.test.ts @@ -21,7 +21,7 @@ describe('setName', () => { it('should return a transaction for a name and set successfully', async () => { const tx = await ENSInstance.setName('fleek.eth') expect(tx).toBeTruthy() - await tx.wait() + await tx?.wait() const universalResolver = await ENSInstance.contracts!.getUniversalResolver()! diff --git a/yarn.lock b/yarn.lock index e2b8cd24..6b55d0f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -507,6 +507,7 @@ __metadata: "@ensdomains/ens-test-env": "workspace:*" "@ethersproject/abi": ^5.6.0 "@ethersproject/providers": ^5.6.2 + "@nomiclabs/hardhat-ethers": ^2.0.5 "@openzeppelin/contracts": ^4.5.0 "@swc/core": ^1.2.162 "@swc/jest": ^0.2.20 @@ -515,12 +516,14 @@ __metadata: "@types/jest": ^27.4.1 dns-packet: ^5.3.1 dotenv: ^16.0.0 + ens-contracts-main: "github:ensdomains/ens-contracts#head=master&commit=43b483db7ae3b13b985b3600779aa4e65ca22964" ens-contracts-namewrapper: "github:ensdomains/ens-contracts#commit=9b42c4b57e76aa4041847579c0bd5c3ca3cf6375" ens-contracts-universal: "github:ensdomains/ens-contracts#head=feature/record-proxy&commit=ec2657e78811ff9fa09436209798a6135ecca9b7" ethers: ^5.6.1 graphql: ^16.3.0 graphql-request: ^4.1.0 hardhat: ^2.9.3 + hardhat-abi-exporter: ^2.8.0 hardhat-deploy: ^0.11.4 jest: ^27.5.1 jest-environment-node: ^27.5.1 @@ -696,7 +699,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.4.0": +"@ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.4.0, @ethersproject/abi@npm:^5.5.0": version: 5.6.1 resolution: "@ethersproject/abi@npm:5.6.1" dependencies: @@ -1508,6 +1511,16 @@ __metadata: languageName: node linkType: hard +"@nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers@0.3.0-beta.13": + version: 0.3.0-beta.13 + resolution: "hardhat-deploy-ethers@npm:0.3.0-beta.13" + peerDependencies: + ethers: ^5.0.0 + hardhat: ^2.0.0 + checksum: 45206bf8d088cda08822ecf79d73e4027d8a4777cc23c3ef94568e316c45b8597130d72826fb2417edd32fe4b3dc54097161bef577663769b5c47b8262b983bb + languageName: node + linkType: hard + "@nomiclabs/hardhat-truffle5@npm:^2.0.0": version: 2.0.5 resolution: "@nomiclabs/hardhat-truffle5@npm:2.0.5" @@ -2619,7 +2632,7 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:4.1.1, ansi-colors@npm:^4.1.1": +"ansi-colors@npm:4.1.1, ansi-colors@npm:^4.1.0, ansi-colors@npm:^4.1.1": version: 4.1.1 resolution: "ansi-colors@npm:4.1.1" checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 @@ -4307,6 +4320,20 @@ __metadata: languageName: node linkType: hard +"delete-empty@npm:^3.0.0": + version: 3.0.0 + resolution: "delete-empty@npm:3.0.0" + dependencies: + ansi-colors: ^4.1.0 + minimist: ^1.2.0 + path-starts-with: ^2.0.0 + rimraf: ^2.6.2 + bin: + delete-empty: bin/cli.js + checksum: 1e2b030346683f49b12460b91d7e1793fc61e9aa0be152a1b31317363632e92426be270f8d635b89d3915ae7da753dcfa6e3bd200f62edf21eaa876ef4443fd2 + languageName: node + linkType: hard + "delimit-stream@npm:0.1.0": version: 0.1.0 resolution: "delimit-stream@npm:0.1.0" @@ -4599,6 +4626,18 @@ __metadata: languageName: node linkType: hard +"ens-contracts-main@github:ensdomains/ens-contracts#head=master&commit=43b483db7ae3b13b985b3600779aa4e65ca22964": + version: 0.0.9 + resolution: "ens-contracts-main@https://github.com/ensdomains/ens-contracts.git#commit=43b483db7ae3b13b985b3600779aa4e65ca22964" + dependencies: + "@ensdomains/buffer": ^0.0.13 + "@ensdomains/solsha1": 0.0.3 + "@openzeppelin/contracts": ^4.1.0 + dns-packet: ^5.3.0 + checksum: 711f6e55655c56f77380526b20e7a6c9c490e722d27d59534bb2f002515b4f56de893482fe9bd4409a5774980736ebdd96c93913220eea22b164027dbc4f0888 + languageName: node + linkType: hard + "ens-contracts-namewrapper@github:ensdomains/ens-contracts#commit=9b42c4b57e76aa4041847579c0bd5c3ca3cf6375": version: 0.0.9 resolution: "ens-contracts-namewrapper@https://github.com/ensdomains/ens-contracts.git#commit=9b42c4b57e76aa4041847579c0bd5c3ca3cf6375" @@ -6135,6 +6174,18 @@ __metadata: languageName: node linkType: hard +"hardhat-abi-exporter@npm:^2.8.0": + version: 2.8.0 + resolution: "hardhat-abi-exporter@npm:2.8.0" + dependencies: + "@ethersproject/abi": ^5.5.0 + delete-empty: ^3.0.0 + peerDependencies: + hardhat: ^2.0.0 + checksum: d8657b0d4ed55e1de0a18d8e70b8de38cf1f8c85e4162cdfe499b74d75f17992359c0c621d1b920f5a666eed2bd26c0a63d8c18ba60d1660f49c9fed378afe62 + languageName: node + linkType: hard + "hardhat-deploy@npm:^0.11.4": version: 0.11.4 resolution: "hardhat-deploy@npm:0.11.4" @@ -8437,6 +8488,13 @@ __metadata: languageName: node linkType: hard +"minimist@npm:^1.2.0": + version: 1.2.6 + resolution: "minimist@npm:1.2.6" + checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb + languageName: node + linkType: hard + "minimist@npm:^1.2.5": version: 1.2.5 resolution: "minimist@npm:1.2.5" @@ -9336,6 +9394,13 @@ __metadata: languageName: node linkType: hard +"path-starts-with@npm:^2.0.0": + version: 2.0.0 + resolution: "path-starts-with@npm:2.0.0" + checksum: c780e5feb53f37a0cc78c446181aac2d1e4554e5693bbc4ad03c99157b9411ade26a3503dcd5b3b8f0fd56d36daa60ce5a8c24d66b54a400c812fe11eb5bcab9 + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -9904,7 +9969,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^2.2.8": +"rimraf@npm:^2.2.8, rimraf@npm:^2.6.2": version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: