@ensdomains/ensjs 3.0.0-alpha.1 → 3.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/GqlManager.d.ts +3 -0
  3. package/dist/cjs/GqlManager.js +62 -2
  4. package/dist/cjs/contracts/baseRegistrar.d.ts +1 -1
  5. package/dist/cjs/contracts/index.d.ts +3 -3
  6. package/dist/cjs/contracts/multicall.d.ts +1 -1
  7. package/dist/cjs/contracts/registry.d.ts +1 -1
  8. package/dist/cjs/functions/burnFuses.d.ts +3 -2
  9. package/dist/cjs/functions/burnFuses.js +4 -8
  10. package/dist/cjs/functions/createSubname.d.ts +3 -5
  11. package/dist/cjs/functions/createSubname.js +7 -8
  12. package/dist/cjs/functions/deleteSubname.d.ts +3 -3
  13. package/dist/cjs/functions/deleteSubname.js +6 -2
  14. package/dist/cjs/functions/getDNSOwner.d.ts +7 -0
  15. package/dist/cjs/functions/getDNSOwner.js +81 -0
  16. package/dist/cjs/functions/getExpiry.d.ts +9 -2
  17. package/dist/cjs/functions/getExpiry.js +52 -7
  18. package/dist/cjs/functions/getFuses.d.ts +2 -3
  19. package/dist/cjs/functions/getFuses.js +6 -14
  20. package/dist/cjs/functions/getHistory.d.ts +0 -30
  21. package/dist/cjs/functions/getHistory.js +3 -99
  22. package/dist/cjs/functions/getName.d.ts +2 -2
  23. package/dist/cjs/functions/getName.js +1 -1
  24. package/dist/cjs/functions/getOwner.js +7 -6
  25. package/dist/cjs/functions/getProfile.d.ts +4 -1
  26. package/dist/cjs/functions/getProfile.js +102 -24
  27. package/dist/cjs/functions/getRecords.d.ts +1 -0
  28. package/dist/cjs/functions/getSpecificRecord.js +30 -6
  29. package/dist/cjs/functions/getSubnames.d.ts +1 -1
  30. package/dist/cjs/functions/getSubnames.js +7 -7
  31. package/dist/cjs/functions/setName.d.ts +4 -3
  32. package/dist/cjs/functions/setName.js +5 -10
  33. package/dist/cjs/functions/setRecord.d.ts +18 -0
  34. package/dist/cjs/functions/setRecord.js +27 -0
  35. package/dist/cjs/functions/setRecords.d.ts +4 -2
  36. package/dist/cjs/functions/setRecords.js +14 -12
  37. package/dist/cjs/functions/setResolver.d.ts +4 -4
  38. package/dist/cjs/functions/setResolver.js +6 -12
  39. package/dist/cjs/functions/transferName.d.ts +4 -3
  40. package/dist/cjs/functions/transferName.js +9 -13
  41. package/dist/cjs/functions/transferSubname.d.ts +13 -3
  42. package/dist/cjs/functions/transferSubname.js +7 -8
  43. package/dist/cjs/functions/unwrapName.d.ts +4 -3
  44. package/dist/cjs/functions/unwrapName.js +5 -9
  45. package/dist/cjs/functions/wrapName.d.ts +7 -3
  46. package/dist/cjs/functions/wrapName.js +38 -36
  47. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +222 -201
  48. package/dist/cjs/generated/DNSRegistrar.d.ts +68 -64
  49. package/dist/cjs/generated/DNSSECImpl.d.ts +111 -111
  50. package/dist/cjs/generated/DefaultReverseResolver.d.ts +17 -17
  51. package/dist/cjs/generated/ENSRegistry.d.ts +126 -111
  52. package/dist/cjs/generated/ETHRegistrarController.d.ts +111 -109
  53. package/dist/cjs/generated/Multicall.d.ts +60 -60
  54. package/dist/cjs/generated/NameWrapper.d.ts +493 -354
  55. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +11 -7
  56. package/dist/cjs/generated/PublicResolver.d.ts +259 -235
  57. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +11 -7
  58. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +11 -7
  59. package/dist/cjs/generated/ReverseRegistrar.d.ts +112 -103
  60. package/dist/cjs/generated/Root.d.ts +77 -77
  61. package/dist/cjs/generated/SHA1Digest.d.ts +7 -7
  62. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +11 -7
  63. package/dist/cjs/generated/SHA256Digest.d.ts +7 -7
  64. package/dist/cjs/generated/StaticMetadataService.d.ts +7 -7
  65. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +7 -7
  66. package/dist/cjs/generated/UniversalResolver.d.ts +31 -31
  67. package/dist/cjs/generated/common.d.ts +1 -0
  68. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  69. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +3 -26
  70. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  71. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +3 -26
  72. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +14 -4
  73. package/dist/cjs/generated/factories/NameWrapper__factory.js +210 -79
  74. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  75. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +3 -26
  76. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  77. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +3 -26
  78. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  79. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +3 -26
  80. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +3 -15
  81. package/dist/cjs/generated/factories/SHA1Digest__factory.js +3 -26
  82. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  83. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +3 -26
  84. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +3 -15
  85. package/dist/cjs/generated/factories/SHA256Digest__factory.js +3 -26
  86. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  87. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +3 -26
  88. package/dist/cjs/generated/factories/index.d.ts +14 -0
  89. package/dist/cjs/generated/factories/index.js +29 -1
  90. package/dist/cjs/generated/index.d.ts +29 -1
  91. package/dist/cjs/generated/index.js +31 -3
  92. package/dist/cjs/index.d.ts +62 -84
  93. package/dist/cjs/index.js +44 -21
  94. package/dist/cjs/utils/labels.js +5 -4
  95. package/dist/cjs/utils/makeHashIndexes.js +2 -2
  96. package/dist/cjs/utils/normalise.d.ts +1 -0
  97. package/dist/cjs/utils/normalise.js +27 -1
  98. package/dist/cjs/utils/recordHelpers.d.ts +3 -0
  99. package/dist/cjs/utils/recordHelpers.js +42 -15
  100. package/dist/cjs/utils/registerHelpers.js +3 -4
  101. package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
  102. package/dist/cjs/utils/wrapperExpiry.js +30 -0
  103. package/dist/cjs/utils/writeTx.d.ts +4 -0
  104. package/dist/cjs/utils/writeTx.js +3 -0
  105. package/dist/esm/GqlManager.d.ts +3 -0
  106. package/dist/esm/GqlManager.js +58 -2
  107. package/dist/esm/contracts/baseRegistrar.d.ts +1 -1
  108. package/dist/esm/contracts/index.d.ts +3 -3
  109. package/dist/esm/contracts/multicall.d.ts +1 -1
  110. package/dist/esm/contracts/registry.d.ts +1 -1
  111. package/dist/esm/functions/burnFuses.d.ts +3 -2
  112. package/dist/esm/functions/burnFuses.js +4 -8
  113. package/dist/esm/functions/createSubname.d.ts +3 -5
  114. package/dist/esm/functions/createSubname.js +7 -8
  115. package/dist/esm/functions/deleteSubname.d.ts +3 -3
  116. package/dist/esm/functions/deleteSubname.js +6 -2
  117. package/dist/esm/functions/getDNSOwner.d.ts +7 -0
  118. package/dist/esm/functions/getDNSOwner.js +51 -0
  119. package/dist/esm/functions/getExpiry.d.ts +9 -2
  120. package/dist/esm/functions/getExpiry.js +52 -7
  121. package/dist/esm/functions/getFuses.d.ts +2 -3
  122. package/dist/esm/functions/getFuses.js +7 -15
  123. package/dist/esm/functions/getHistory.d.ts +0 -30
  124. package/dist/esm/functions/getHistory.js +2 -96
  125. package/dist/esm/functions/getName.d.ts +2 -2
  126. package/dist/esm/functions/getName.js +1 -1
  127. package/dist/esm/functions/getOwner.js +7 -6
  128. package/dist/esm/functions/getProfile.d.ts +4 -1
  129. package/dist/esm/functions/getProfile.js +102 -24
  130. package/dist/esm/functions/getRecords.d.ts +1 -0
  131. package/dist/esm/functions/getSpecificRecord.js +30 -6
  132. package/dist/esm/functions/getSubnames.d.ts +1 -1
  133. package/dist/esm/functions/getSubnames.js +4 -4
  134. package/dist/esm/functions/setName.d.ts +4 -3
  135. package/dist/esm/functions/setName.js +5 -10
  136. package/dist/esm/functions/setRecord.d.ts +18 -0
  137. package/dist/esm/functions/setRecord.js +24 -0
  138. package/dist/esm/functions/setRecords.d.ts +4 -2
  139. package/dist/esm/functions/setRecords.js +14 -12
  140. package/dist/esm/functions/setResolver.d.ts +4 -4
  141. package/dist/esm/functions/setResolver.js +6 -12
  142. package/dist/esm/functions/transferName.d.ts +4 -3
  143. package/dist/esm/functions/transferName.js +9 -13
  144. package/dist/esm/functions/transferSubname.d.ts +13 -3
  145. package/dist/esm/functions/transferSubname.js +7 -8
  146. package/dist/esm/functions/unwrapName.d.ts +4 -3
  147. package/dist/esm/functions/unwrapName.js +5 -9
  148. package/dist/esm/functions/wrapName.d.ts +7 -3
  149. package/dist/esm/functions/wrapName.js +38 -36
  150. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +222 -201
  151. package/dist/esm/generated/DNSRegistrar.d.ts +68 -64
  152. package/dist/esm/generated/DNSSECImpl.d.ts +111 -111
  153. package/dist/esm/generated/DefaultReverseResolver.d.ts +17 -17
  154. package/dist/esm/generated/ENSRegistry.d.ts +126 -111
  155. package/dist/esm/generated/ETHRegistrarController.d.ts +111 -109
  156. package/dist/esm/generated/Multicall.d.ts +60 -60
  157. package/dist/esm/generated/NameWrapper.d.ts +493 -354
  158. package/dist/esm/generated/P256SHA256Algorithm.d.ts +11 -7
  159. package/dist/esm/generated/PublicResolver.d.ts +259 -235
  160. package/dist/esm/generated/RSASHA1Algorithm.d.ts +11 -7
  161. package/dist/esm/generated/RSASHA256Algorithm.d.ts +11 -7
  162. package/dist/esm/generated/ReverseRegistrar.d.ts +112 -103
  163. package/dist/esm/generated/Root.d.ts +77 -77
  164. package/dist/esm/generated/SHA1Digest.d.ts +7 -7
  165. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +11 -7
  166. package/dist/esm/generated/SHA256Digest.d.ts +7 -7
  167. package/dist/esm/generated/StaticMetadataService.d.ts +7 -7
  168. package/dist/esm/generated/TLDPublicSuffixList.d.ts +7 -7
  169. package/dist/esm/generated/UniversalResolver.d.ts +31 -31
  170. package/dist/esm/generated/common.d.ts +1 -0
  171. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  172. package/dist/esm/generated/factories/DNSRegistrar__factory.js +2 -25
  173. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  174. package/dist/esm/generated/factories/DNSSECImpl__factory.js +2 -25
  175. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +14 -4
  176. package/dist/esm/generated/factories/NameWrapper__factory.js +210 -79
  177. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  178. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +2 -25
  179. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  180. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +2 -25
  181. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  182. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +2 -25
  183. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +3 -15
  184. package/dist/esm/generated/factories/SHA1Digest__factory.js +2 -25
  185. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  186. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +2 -25
  187. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +3 -15
  188. package/dist/esm/generated/factories/SHA256Digest__factory.js +2 -25
  189. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  190. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +2 -25
  191. package/dist/esm/generated/factories/index.d.ts +14 -0
  192. package/dist/esm/generated/factories/index.js +14 -0
  193. package/dist/esm/generated/index.d.ts +29 -1
  194. package/dist/esm/generated/index.js +15 -1
  195. package/dist/esm/index.d.ts +62 -84
  196. package/dist/esm/index.js +44 -21
  197. package/dist/esm/utils/labels.js +5 -4
  198. package/dist/esm/utils/makeHashIndexes.js +2 -2
  199. package/dist/esm/utils/normalise.d.ts +1 -0
  200. package/dist/esm/utils/normalise.js +25 -0
  201. package/dist/esm/utils/recordHelpers.d.ts +3 -0
  202. package/dist/esm/utils/recordHelpers.js +40 -14
  203. package/dist/esm/utils/registerHelpers.js +3 -4
  204. package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
  205. package/dist/esm/utils/wrapperExpiry.js +26 -0
  206. package/dist/esm/utils/writeTx.d.ts +4 -0
  207. package/dist/esm/utils/writeTx.js +1 -0
  208. package/package.json +24 -14
  209. package/src/@types/dns-packet/index.d.ts +114 -0
  210. package/src/ABIs/Multicall.json +452 -0
  211. package/src/GqlManager.test.ts +170 -0
  212. package/src/GqlManager.ts +67 -2
  213. package/src/contracts/index.ts +1 -1
  214. package/src/{tests → functions}/batch.test.ts +7 -7
  215. package/src/{tests → functions}/batchWrappers.test.ts +6 -6
  216. package/src/{tests → functions}/burnFuses.test.ts +12 -15
  217. package/src/functions/burnFuses.ts +9 -11
  218. package/src/{tests → functions}/createSubname.test.ts +9 -17
  219. package/src/functions/createSubname.ts +20 -14
  220. package/src/{tests → functions}/deleteSubname.test.ts +12 -31
  221. package/src/functions/deleteSubname.ts +10 -12
  222. package/src/functions/getDNSOwner.test.ts +118 -0
  223. package/src/functions/getDNSOwner.ts +61 -0
  224. package/src/functions/getExpiry.test.ts +59 -0
  225. package/src/functions/getExpiry.ts +87 -9
  226. package/src/{tests → functions}/getFuses.test.ts +16 -37
  227. package/src/functions/getFuses.ts +12 -17
  228. package/src/functions/getHistory.test.ts +29 -0
  229. package/src/functions/getHistory.ts +2 -127
  230. package/src/{tests → functions}/getName.test.ts +6 -6
  231. package/src/functions/getName.ts +1 -1
  232. package/src/{tests → functions}/getNames.test.ts +98 -69
  233. package/src/{tests → functions}/getOwner.test.ts +21 -24
  234. package/src/functions/getOwner.ts +7 -7
  235. package/src/functions/getProfile.test.ts +143 -0
  236. package/src/functions/getProfile.ts +151 -24
  237. package/src/functions/getRecords.ts +1 -0
  238. package/src/functions/getResolver.test.ts +15 -0
  239. package/src/{tests → functions}/getSpecificRecord.test.ts +17 -14
  240. package/src/functions/getSpecificRecord.ts +38 -12
  241. package/src/functions/getSubnames.test.ts +35 -0
  242. package/src/functions/getSubnames.ts +76 -67
  243. package/src/{tests → functions}/makeCommitment.test.ts +2 -2
  244. package/src/functions/normalise.test.ts +22 -0
  245. package/src/{tests → functions}/setName.test.ts +11 -11
  246. package/src/functions/setName.ts +15 -17
  247. package/src/functions/setRecord.test.ts +103 -0
  248. package/src/functions/setRecord.ts +63 -0
  249. package/src/{tests → functions}/setRecords.test.ts +16 -13
  250. package/src/functions/setRecords.ts +22 -16
  251. package/src/{tests → functions}/setResolver.test.ts +13 -19
  252. package/src/functions/setResolver.ts +15 -20
  253. package/src/{tests → functions}/transferName.test.ts +20 -35
  254. package/src/functions/transferName.ts +19 -22
  255. package/src/{tests → functions}/transferSubname.test.ts +14 -33
  256. package/src/functions/transferSubname.ts +39 -13
  257. package/src/{tests → functions}/unwrapName.test.ts +16 -30
  258. package/src/functions/unwrapName.ts +20 -15
  259. package/src/functions/wrapName.test.ts +142 -0
  260. package/src/functions/wrapName.ts +63 -49
  261. package/src/generated/BaseRegistrarImplementation.ts +382 -296
  262. package/src/generated/DNSRegistrar.ts +103 -89
  263. package/src/generated/DNSSECImpl.ts +180 -149
  264. package/src/generated/DefaultReverseResolver.ts +37 -21
  265. package/src/generated/ENSRegistry.ts +257 -184
  266. package/src/generated/ETHRegistrarController.ts +252 -191
  267. package/src/generated/Multicall.ts +73 -57
  268. package/src/generated/NameWrapper.ts +979 -649
  269. package/src/generated/P256SHA256Algorithm.ts +21 -16
  270. package/src/generated/PublicResolver.ts +452 -362
  271. package/src/generated/RSASHA1Algorithm.ts +21 -16
  272. package/src/generated/RSASHA256Algorithm.ts +21 -16
  273. package/src/generated/ReverseRegistrar.ts +193 -141
  274. package/src/generated/Root.ts +146 -86
  275. package/src/generated/SHA1Digest.ts +12 -11
  276. package/src/generated/SHA1NSEC3Digest.ts +21 -16
  277. package/src/generated/SHA256Digest.ts +12 -11
  278. package/src/generated/StaticMetadataService.ts +22 -6
  279. package/src/generated/TLDPublicSuffixList.ts +10 -6
  280. package/src/generated/UniversalResolver.ts +44 -40
  281. package/src/generated/common.ts +2 -0
  282. package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
  283. package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
  284. package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
  285. package/src/generated/factories/NameWrapper__factory.ts +210 -79
  286. package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
  287. package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
  288. package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
  289. package/src/generated/factories/SHA1Digest__factory.ts +4 -40
  290. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
  291. package/src/generated/factories/SHA256Digest__factory.ts +4 -40
  292. package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
  293. package/src/generated/factories/index.ts +14 -0
  294. package/src/generated/index.ts +29 -1
  295. package/src/index.ts +117 -47
  296. package/src/tests/populateTransaction.test.ts +40 -0
  297. package/src/tests/setup.ts +17 -13
  298. package/src/tests/signerInjection.test.ts +46 -0
  299. package/src/tests/withProvider.test.ts +3 -3
  300. package/src/utils/labels.ts +6 -4
  301. package/src/utils/makeHashIndexes.ts +4 -4
  302. package/src/utils/normalise.ts +29 -0
  303. package/src/utils/recordHelpers.ts +52 -18
  304. package/src/utils/registerHelpers.ts +3 -4
  305. package/src/utils/wrapperExpiry.ts +31 -0
  306. package/src/utils/writeTx.ts +6 -0
  307. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  308. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
  309. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  310. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
  311. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  312. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
  313. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  314. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
  315. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  316. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
  317. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  318. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
  319. package/src/ABIs/ETHRegistrarController.json +0 -494
  320. package/src/ABIs/NameWrapper.json +0 -1183
  321. package/src/ABIs/PublicResolver.json +0 -875
  322. package/src/ABIs/ReverseRegistrar.json +0 -323
  323. package/src/ABIs/StaticMetadataService.json +0 -32
  324. package/src/ABIs/UniversalResolver.json +0 -187
  325. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
  326. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
  327. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
  328. package/src/tests/getExpiry.test.ts +0 -37
  329. package/src/tests/getHistory.test.ts +0 -101
  330. package/src/tests/getProfile.test.ts +0 -102
  331. package/src/tests/getResolver.test.ts +0 -19
  332. package/src/tests/getSubnames.test.ts +0 -31
  333. package/src/tests/wrapName.test.ts +0 -67
@@ -1,6 +1,6 @@
1
1
  import { ENS } from '..'
2
- import { OwnedName, Registration } from '../functions/getNames'
3
- import setup from './setup'
2
+ import setup from '../tests/setup'
3
+ import { Name } from './getNames'
4
4
 
5
5
  let ENSInstance: ENS
6
6
 
@@ -14,12 +14,43 @@ const testProperties = (obj: object, ...properties: string[]) =>
14
14
  const testNotProperties = (obj: object, ...properties: string[]) =>
15
15
  properties.map((property) => expect(obj).not.toHaveProperty(property))
16
16
 
17
+ const letterItems = [
18
+ 'w',
19
+ '9',
20
+ '8',
21
+ '7',
22
+ '6',
23
+ '5',
24
+ '4',
25
+ ...Array(5).fill('3'),
26
+ ...Array(11).fill('2'),
27
+ ...Array(11).fill('1'),
28
+ '0',
29
+ ]
30
+
31
+ const domainLetterItems = [
32
+ '[',
33
+ 'w',
34
+ 't',
35
+ 't',
36
+ '9',
37
+ '8',
38
+ '7',
39
+ '6',
40
+ '5',
41
+ '4',
42
+ ...Array(5).fill('3'),
43
+ ...Array(11).fill('2'),
44
+ ...Array(11).fill('1'),
45
+ '0',
46
+ ]
47
+
17
48
  describe('getNames', () => {
18
49
  let totalRegistrations: number = 0
19
50
  let totalOwnedNames: number = 0
20
51
  it('should get the registrations for an address', async () => {
21
52
  const result = await ENSInstance.getNames({
22
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
53
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
23
54
  type: 'registrant',
24
55
  })
25
56
  totalRegistrations = result.length
@@ -39,7 +70,7 @@ describe('getNames', () => {
39
70
  })
40
71
  it('should get the owned names for an address', async () => {
41
72
  const result = await ENSInstance.getNames({
42
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
73
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
43
74
  type: 'owner',
44
75
  })
45
76
  totalOwnedNames = result.length
@@ -58,39 +89,51 @@ describe('getNames', () => {
58
89
  })
59
90
  it('should get the registrations for an address with pagination', async () => {
60
91
  const pageOne = await ENSInstance.getNames({
61
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
92
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
62
93
  type: 'registrant',
63
94
  page: 0,
64
95
  })
65
96
  expect(pageOne).toHaveLength(10)
66
97
  const pageTwo = await ENSInstance.getNames({
67
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
98
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
68
99
  type: 'registrant',
69
100
  page: 1,
70
101
  })
71
- expect(pageTwo).toHaveLength(totalRegistrations % 10)
102
+ expect(pageTwo).toHaveLength(10)
103
+ const pageThree = await ENSInstance.getNames({
104
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
105
+ type: 'registrant',
106
+ page: 2,
107
+ })
108
+ expect(pageThree).toHaveLength(10)
109
+ const pageFour = await ENSInstance.getNames({
110
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
111
+ type: 'registrant',
112
+ page: 3,
113
+ })
114
+ expect(pageFour).toHaveLength(totalRegistrations % 10)
72
115
  })
73
116
  it('should get the owned names for an address with pagination', async () => {
74
117
  const pageOne = await ENSInstance.getNames({
75
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
118
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
76
119
  type: 'owner',
77
120
  page: 0,
78
121
  })
79
122
  expect(pageOne).toHaveLength(10)
80
123
  const pageTwo = await ENSInstance.getNames({
81
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
124
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
82
125
  type: 'owner',
83
126
  page: 1,
84
127
  })
85
128
  expect(pageTwo).toHaveLength(10)
86
129
  const pageThree = await ENSInstance.getNames({
87
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
130
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
88
131
  type: 'owner',
89
132
  page: 2,
90
133
  })
91
134
  expect(pageThree).toHaveLength(10)
92
135
  const pageFour = await ENSInstance.getNames({
93
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
136
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
94
137
  type: 'owner',
95
138
  page: 3,
96
139
  })
@@ -100,147 +143,133 @@ describe('getNames', () => {
100
143
  describe('registrations', () => {
101
144
  it('descending registrationDate', async () => {
102
145
  const registrationDateOrderedDesc = (await ENSInstance.getNames({
103
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
146
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
104
147
  type: 'registrant',
105
148
  orderBy: 'registrationDate',
106
149
  orderDirection: 'desc',
107
- })) as Registration[]
150
+ })) as Name[]
108
151
  registrationDateOrderedDesc.reduce((prev, curr) => {
109
- expect(prev.registrationDate.getTime()).toBeGreaterThanOrEqual(
110
- curr.registrationDate.getTime(),
152
+ expect(prev.registrationDate!.getTime()).toBeGreaterThanOrEqual(
153
+ curr.registrationDate!.getTime(),
111
154
  )
112
155
  return curr
113
156
  })
114
157
  })
115
158
  it('ascending registrationDate', async () => {
116
159
  const registrationDateOrderedAsc = (await ENSInstance.getNames({
117
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
160
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
118
161
  type: 'registrant',
119
162
  orderBy: 'registrationDate',
120
163
  orderDirection: 'asc',
121
- })) as Registration[]
164
+ })) as Name[]
122
165
  registrationDateOrderedAsc.reduce((prev, curr) => {
123
- expect(prev.registrationDate.getTime()).toBeLessThanOrEqual(
124
- curr.registrationDate.getTime(),
166
+ expect(prev.registrationDate!.getTime()).toBeLessThanOrEqual(
167
+ curr.registrationDate!.getTime(),
125
168
  )
126
169
  return curr
127
170
  })
128
171
  })
129
172
  it('descending expiryDate', async () => {
130
173
  const expiryDateOrderedDesc = (await ENSInstance.getNames({
131
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
174
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
132
175
  type: 'registrant',
133
176
  orderBy: 'expiryDate',
134
177
  orderDirection: 'desc',
135
- })) as Registration[]
178
+ })) as Name[]
136
179
  expiryDateOrderedDesc.reduce((prev, curr) => {
137
- expect(prev.expiryDate.getTime()).toBeGreaterThanOrEqual(
138
- curr.expiryDate.getTime(),
180
+ expect(prev.expiryDate!.getTime()).toBeGreaterThanOrEqual(
181
+ curr.expiryDate!.getTime(),
139
182
  )
140
183
  return curr
141
184
  })
142
185
  })
143
186
  it('ascending expiryDate', async () => {
144
187
  const expiryDateOrderedAsc = (await ENSInstance.getNames({
145
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
188
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
146
189
  type: 'registrant',
147
190
  orderBy: 'expiryDate',
148
191
  orderDirection: 'asc',
149
- })) as Registration[]
192
+ })) as Name[]
150
193
  expiryDateOrderedAsc.reduce((prev, curr) => {
151
- expect(prev.expiryDate.getTime()).toBeLessThanOrEqual(
152
- curr.expiryDate.getTime(),
194
+ expect(prev.expiryDate!.getTime()).toBeLessThanOrEqual(
195
+ curr.expiryDate!.getTime(),
153
196
  )
154
197
  return curr
155
198
  })
156
199
  })
157
200
  it('descending labelName', async () => {
158
201
  const labelNameOrderedDesc = (await ENSInstance.getNames({
159
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
202
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
160
203
  type: 'registrant',
161
204
  orderBy: 'labelName',
162
205
  orderDirection: 'desc',
163
- })) as Registration[]
164
- labelNameOrderedDesc.reduce((prev, curr) => {
165
- expect((prev.labelName || '') > (curr.labelName || '')).toBeTruthy()
166
- return curr
167
- })
206
+ })) as Name[]
207
+ expect(labelNameOrderedDesc.map((n) => n.labelName![0])).toStrictEqual(
208
+ letterItems,
209
+ )
168
210
  })
169
211
  it('ascending labelName', async () => {
170
212
  const labelNameOrderedAsc = (await ENSInstance.getNames({
171
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
213
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
172
214
  type: 'registrant',
173
215
  orderBy: 'labelName',
174
216
  orderDirection: 'asc',
175
- })) as Registration[]
176
- labelNameOrderedAsc.reduce((prev, curr) => {
177
- expect((prev.labelName || '') < (curr.labelName || '')).toBeTruthy()
178
- return curr
179
- })
217
+ })) as Name[]
218
+ expect(labelNameOrderedAsc.map((n) => n.labelName![0])).toStrictEqual(
219
+ letterItems.reverse(),
220
+ )
180
221
  })
181
222
  })
182
223
  describe('owned names', () => {
183
224
  it('descending createdAt', async () => {
184
225
  const createdAtOrderedDesc = (await ENSInstance.getNames({
185
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
226
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
186
227
  type: 'owner',
187
228
  orderBy: 'createdAt',
188
229
  orderDirection: 'desc',
189
- })) as OwnedName[]
230
+ })) as Name[]
190
231
  createdAtOrderedDesc.reduce((prev, curr) => {
191
- expect(prev.createdAt.getTime()).toBeGreaterThanOrEqual(
192
- curr.createdAt.getTime(),
232
+ expect(prev.createdAt!.getTime()).toBeGreaterThanOrEqual(
233
+ curr.createdAt!.getTime(),
193
234
  )
194
235
  return curr
195
236
  })
196
237
  })
197
238
  it('ascending createdAt', async () => {
198
239
  const createdAtOrderedAsc = (await ENSInstance.getNames({
199
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
240
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
200
241
  type: 'owner',
201
242
  orderBy: 'createdAt',
202
243
  orderDirection: 'asc',
203
- })) as OwnedName[]
244
+ })) as Name[]
204
245
  createdAtOrderedAsc.reduce((prev, curr) => {
205
- expect(prev.createdAt.getTime()).toBeLessThanOrEqual(
206
- curr.createdAt.getTime(),
246
+ expect(prev.createdAt!.getTime()).toBeLessThanOrEqual(
247
+ curr.createdAt!.getTime(),
207
248
  )
208
249
  return curr
209
250
  })
210
251
  })
211
252
  it('descending labelName', async () => {
212
253
  const labelNameOrderedDesc = (await ENSInstance.getNames({
213
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
254
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
214
255
  type: 'owner',
215
256
  orderBy: 'labelName',
216
257
  orderDirection: 'desc',
217
- })) as Registration[]
218
- labelNameOrderedDesc.reduce((prev, curr) => {
219
- if (
220
- (!prev.labelName && !curr.labelName) ||
221
- (!prev.labelName && curr.labelName)
222
- )
223
- return curr
224
- expect((prev.labelName || '') > (curr.labelName || '')).toBeTruthy()
225
- return curr
226
- })
258
+ })) as Name[]
259
+ expect(labelNameOrderedDesc.map((n) => n.name[0])).toStrictEqual(
260
+ domainLetterItems,
261
+ )
227
262
  })
228
263
  it('ascending labelName', async () => {
229
264
  const labelNameOrderedAsc = (await ENSInstance.getNames({
230
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
265
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
231
266
  type: 'owner',
232
267
  orderBy: 'labelName',
233
268
  orderDirection: 'asc',
234
- })) as Registration[]
235
- labelNameOrderedAsc.reduce((prev, curr) => {
236
- if (
237
- (!prev.labelName && !curr.labelName) ||
238
- (prev.labelName && !curr.labelName)
239
- )
240
- return curr
241
- expect((prev.labelName || '') < (curr.labelName || '')).toBeTruthy()
242
- return curr
243
- })
269
+ })) as Name[]
270
+ expect(labelNameOrderedAsc.map((n) => n.name[0])).toStrictEqual(
271
+ domainLetterItems.reverse(),
272
+ )
244
273
  })
245
274
  })
246
275
  })
@@ -1,6 +1,6 @@
1
1
  import { ethers } from 'ethers'
2
2
  import { ENS } from '..'
3
- import setup from './setup'
3
+ import setup from '../tests/setup'
4
4
 
5
5
  let ENSInstance: ENS
6
6
  let revert: Awaited<ReturnType<typeof setup>>['revert']
@@ -10,8 +10,6 @@ let accounts: string[]
10
10
  beforeAll(async () => {
11
11
  ;({ ENSInstance, revert, provider } = await setup())
12
12
  accounts = await provider.listAccounts()
13
- const tx = await ENSInstance.wrapName('parthtejpal.eth', accounts[0])
14
- await tx.wait()
15
13
  })
16
14
 
17
15
  afterAll(async () => {
@@ -24,38 +22,37 @@ describe('getOwner', () => {
24
22
  expect(result).toBeUndefined()
25
23
  })
26
24
  it('should return the owner, registrant, and ownership level for a registered name', async () => {
27
- const result = await ENSInstance.getOwner('jefflau.eth')
25
+ const result = await ENSInstance.getOwner('with-profile.eth')
28
26
  expect(result).toMatchObject({
29
- owner: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
30
- registrant: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
27
+ owner: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
28
+ registrant: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
31
29
  ownershipLevel: 'registrar',
32
30
  })
33
31
  })
34
32
  it('should return nameWrapper as the ownership level for a wrapped name', async () => {
35
- const result = await ENSInstance.getOwner('parthtejpal.eth')
33
+ const result = await ENSInstance.getOwner('wrapped.eth')
36
34
  expect(result?.ownershipLevel).toBe('nameWrapper')
37
35
  })
38
36
  it('should return the owner at a specific level if specified', async () => {
39
- const result = await ENSInstance.getOwner('parthtejpal.eth', 'registrar')
37
+ const result = await ENSInstance.getOwner('wrapped.eth', 'registrar')
40
38
  const nameWrapperAddress = (await ENSInstance.contracts!.getNameWrapper())
41
39
  .address
42
40
  expect(result?.ownershipLevel).toBe('registrar')
43
41
  expect(result?.registrant).toBe(nameWrapperAddress)
44
42
  })
45
- // it('should return registry as the ownership level for an unwrapped subname', async () => {
46
- // const result0 = await ENSInstance.getOwner('fleek.eth')
47
- // console.log(result0?.owner, accounts[2])
48
-
49
- // const tx = await ENSInstance.createSubname({
50
- // name: 'test.fleek.eth',
51
- // contract: 'registry',
52
- // owner: accounts[0],
53
- // options: { addressOrIndex: accounts[1] },
54
- // })
55
-
56
- // await tx.wait()
57
-
58
- // const result = await ENSInstance.getOwner('test.fleek.eth')
59
- // expect(result?.ownershipLevel).toBe('registry')
60
- // })
43
+ it('should return the owner of a TLD on the registry', async () => {
44
+ const result = await ENSInstance.getOwner('eth')
45
+ const baseRegistrarAddress = (
46
+ await ENSInstance.contracts!.getBaseRegistrar()
47
+ ).address
48
+ expect(result?.ownershipLevel).toBe('registry')
49
+ expect(result?.owner?.toLowerCase()).toBe(
50
+ baseRegistrarAddress.toLowerCase(),
51
+ )
52
+ })
53
+ it('should return registry as the ownership level for an unwrapped subname', async () => {
54
+ const result = await ENSInstance.getOwner('test.with-subnames.eth')
55
+ expect(result?.ownershipLevel).toBe('registry')
56
+ expect(result?.owner).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
57
+ })
61
58
  })
@@ -1,6 +1,7 @@
1
1
  import { ethers } from 'ethers'
2
2
  import { ENSArgs } from '..'
3
3
  import { labelhash } from '../utils/labels'
4
+ import { namehash as makeNamehash } from '../utils/normalise'
4
5
 
5
6
  type Owner = {
6
7
  registrant?: string
@@ -49,13 +50,13 @@ const raw = async (
49
50
  name: string,
50
51
  contract?: 'nameWrapper' | 'registry' | 'registrar',
51
52
  ) => {
52
- const namehash = ethers.utils.namehash(name)
53
+ const namehash = makeNamehash(name)
53
54
  const labels = name.split('.')
54
55
 
55
- if (contract) {
56
+ if (contract || labels.length === 1) {
56
57
  return await singleContractOwnerRaw(
57
58
  { contracts },
58
- contract,
59
+ contract || 'registry',
59
60
  namehash,
60
61
  labels,
61
62
  )
@@ -99,10 +100,11 @@ const decode = async (
99
100
  contract?: 'nameWrapper' | 'registry' | 'registrar',
100
101
  ): Promise<Owner | undefined> => {
101
102
  if (data === null) return
102
- if (contract) {
103
+ const labels = name.split('.')
104
+ if (contract || labels.length === 1) {
103
105
  const singleOwner = singleContractOwnerDecode(data)
104
106
  let obj = {
105
- ownershipLevel: contract,
107
+ ownershipLevel: contract || 'registry',
106
108
  }
107
109
  if (contract === 'registrar') {
108
110
  return {
@@ -133,8 +135,6 @@ const decode = async (
133
135
  decodedData[2] as ethers.utils.Result | undefined
134
136
  )?.[0]
135
137
 
136
- const labels = name.split('.')
137
-
138
138
  // check for only .eth names
139
139
  if (labels[labels.length - 1] === 'eth') {
140
140
  // if the owner on the registrar is the namewrapper, then the namewrapper owner is the owner
@@ -0,0 +1,143 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import setup from '../tests/setup'
4
+
5
+ let ENSInstance: ENS
6
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
7
+ let provider: ethers.providers.JsonRpcProvider
8
+ let accounts: string[]
9
+
10
+ beforeAll(async () => {
11
+ ;({ ENSInstance, revert, provider } = await setup())
12
+ accounts = await provider.listAccounts()
13
+ })
14
+
15
+ afterAll(async () => {
16
+ await revert()
17
+ })
18
+
19
+ const checkRecords = (
20
+ result: Record<string, any> | undefined,
21
+ textLength = 3,
22
+ coinTypeLength = 3,
23
+ ) => {
24
+ expect(result).toBeDefined()
25
+ if (result) {
26
+ expect(result.records?.texts).toHaveLength(textLength)
27
+ expect(result.records?.coinTypes).toHaveLength(coinTypeLength)
28
+ expect(result.resolverAddress).toBe(
29
+ '0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
30
+ )
31
+ }
32
+ }
33
+
34
+ jest.setTimeout(20000)
35
+
36
+ describe('getProfile', () => {
37
+ describe('with an address', () => {
38
+ it('should return a profile object with no other args', async () => {
39
+ const result = await ENSInstance.getProfile(
40
+ '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
41
+ )
42
+ expect(result).toBeDefined()
43
+ if (result) {
44
+ expect((result as any).name).toBe('with-profile.eth')
45
+ expect((result as any).address).toBeUndefined()
46
+ checkRecords(result)
47
+ }
48
+ })
49
+ it('should return a profile object with specified records', async () => {
50
+ const result = await ENSInstance.getProfile(
51
+ '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
52
+ { texts: ['description', 'url'], coinTypes: ['ETC', '0'] },
53
+ )
54
+ expect(result).toBeDefined()
55
+ if (result) {
56
+ expect((result as any).name).toBe('with-profile.eth')
57
+ expect((result as any).address).toBeUndefined()
58
+ checkRecords(result, 2, 3)
59
+ }
60
+ })
61
+ it('should return a profile object with all of each specified record type', async () => {
62
+ const result = await ENSInstance.getProfile(
63
+ '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
64
+ { texts: true, coinTypes: true },
65
+ )
66
+ checkRecords(result)
67
+ })
68
+ it('should return null for an address without a name', async () => {
69
+ const result = await ENSInstance.getProfile(
70
+ '0x8e8db5ccef88cca9d624701db544989c996e3216',
71
+ )
72
+ expect(result).toBeUndefined()
73
+ })
74
+ })
75
+ describe('with a name', () => {
76
+ it('should return a profile object with no other args', async () => {
77
+ const result = await ENSInstance.getProfile('with-profile.eth')
78
+ expect((result as any).address).toBe(
79
+ '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
80
+ )
81
+ checkRecords(result)
82
+ })
83
+ it('should return a profile object with specified records', async () => {
84
+ const result = await ENSInstance.getProfile('with-profile.eth', {
85
+ texts: ['description', 'url'],
86
+ coinTypes: ['ETC', '0'],
87
+ })
88
+ expect((result as any).address).toBe(
89
+ '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
90
+ )
91
+ checkRecords(result, 2, 3)
92
+ })
93
+ it('should return a profile object with all of each specified record type', async () => {
94
+ const result = await ENSInstance.getProfile('with-profile.eth', {
95
+ texts: true,
96
+ coinTypes: true,
97
+ })
98
+ checkRecords(result)
99
+ })
100
+ it('should return a profile object for a specified resolver', async () => {
101
+ const tx = await ENSInstance.wrapName('test123.eth', {
102
+ wrappedOwner: accounts[1],
103
+ addressOrIndex: 1,
104
+ })
105
+ await tx.wait()
106
+ const result = await ENSInstance.getProfile('test123.eth', {
107
+ resolverAddress: '0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
108
+ })
109
+ expect(result).toBeDefined()
110
+ expect(result?.address).toBe(accounts[1])
111
+ expect(result?.resolverAddress).toBe(
112
+ '0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
113
+ )
114
+ })
115
+ it('should return undefined for an unregistered name', async () => {
116
+ const result = await ENSInstance.getProfile('test123123123cool.eth')
117
+ expect(result).toBeUndefined()
118
+ })
119
+ })
120
+ describe('with an old resolver', () => {
121
+ it('should use fallback methods for a name with an older resolver (no multicall)', async () => {
122
+ const result = await ENSInstance.getProfile('with-legacy-resolver.eth')
123
+ expect(result).toBeDefined()
124
+ if (result) {
125
+ expect(result.address).toBe(
126
+ '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
127
+ )
128
+ expect(result.resolverAddress).toBe(
129
+ '0x5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154',
130
+ )
131
+ }
132
+ })
133
+ })
134
+ describe('with an unmigrated name', () => {
135
+ it('should return an object with isMigrated false and a message', async () => {
136
+ const result = await ENSInstance.getProfile('legacy.test')
137
+ expect(result).toBeTruthy()
138
+ if (result) {
139
+ expect(result.isMigrated).toBe(false)
140
+ }
141
+ })
142
+ })
143
+ })