@ensdomains/ensjs 2.1.0 → 3.0.0-alpha.3

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 (539) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +651 -99
  3. package/dist/cjs/GqlManager.d.ts +6 -0
  4. package/dist/cjs/GqlManager.js +42 -0
  5. package/dist/cjs/contracts/baseRegistrar.d.ts +3 -0
  6. package/dist/cjs/contracts/baseRegistrar.js +4 -0
  7. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
  8. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +4 -0
  9. package/dist/cjs/contracts/ethRegistrarController.d.ts +3 -0
  10. package/dist/cjs/contracts/ethRegistrarController.js +4 -0
  11. package/dist/cjs/contracts/getContractAddress.d.ts +3 -0
  12. package/dist/cjs/contracts/getContractAddress.js +46 -0
  13. package/dist/cjs/contracts/index.d.ts +16 -0
  14. package/dist/cjs/contracts/index.js +37 -0
  15. package/dist/cjs/contracts/multicall.d.ts +3 -0
  16. package/dist/cjs/contracts/multicall.js +22 -0
  17. package/dist/cjs/contracts/nameWrapper.d.ts +3 -0
  18. package/dist/cjs/contracts/nameWrapper.js +4 -0
  19. package/dist/cjs/contracts/publicResolver.d.ts +3 -0
  20. package/dist/cjs/contracts/publicResolver.js +4 -0
  21. package/dist/cjs/contracts/registry.d.ts +3 -0
  22. package/dist/cjs/contracts/registry.js +4 -0
  23. package/dist/cjs/contracts/reverseRegistrar.d.ts +3 -0
  24. package/dist/cjs/contracts/reverseRegistrar.js +4 -0
  25. package/dist/cjs/contracts/types.d.ts +2 -0
  26. package/dist/cjs/contracts/types.js +2 -0
  27. package/dist/cjs/contracts/universalResolver.d.ts +3 -0
  28. package/dist/cjs/contracts/universalResolver.js +4 -0
  29. package/dist/cjs/functions/batch.d.ts +9 -0
  30. package/dist/cjs/functions/batch.js +21 -0
  31. package/dist/cjs/functions/batchWrappers.d.ts +29 -0
  32. package/dist/cjs/functions/batchWrappers.js +71 -0
  33. package/dist/cjs/functions/burnFuses.d.ts +3 -0
  34. package/dist/cjs/functions/burnFuses.js +18 -0
  35. package/dist/cjs/functions/createSubname.d.ts +19 -0
  36. package/dist/cjs/functions/createSubname.js +44 -0
  37. package/dist/cjs/functions/deleteSubname.d.ts +4 -0
  38. package/dist/cjs/functions/deleteSubname.js +6 -0
  39. package/dist/cjs/functions/getDNSOwner.d.ts +7 -0
  40. package/dist/cjs/functions/getDNSOwner.js +81 -0
  41. package/dist/cjs/functions/getExpiry.d.ts +12 -0
  42. package/dist/cjs/functions/getExpiry.js +45 -0
  43. package/dist/cjs/functions/getFuses.d.ts +17 -0
  44. package/dist/cjs/functions/getFuses.js +62 -0
  45. package/dist/cjs/functions/getHistory.d.ts +54 -0
  46. package/dist/cjs/functions/getHistory.js +279 -0
  47. package/dist/cjs/functions/getName.d.ts +19 -0
  48. package/dist/cjs/functions/getName.js +34 -0
  49. package/dist/cjs/functions/getNames.d.ts +40 -0
  50. package/dist/cjs/functions/getNames.js +222 -0
  51. package/dist/cjs/functions/getOwner.d.ts +14 -0
  52. package/dist/cjs/functions/getOwner.js +140 -0
  53. package/dist/cjs/functions/getPrice.d.ts +13 -0
  54. package/dist/cjs/functions/getPrice.js +50 -0
  55. package/dist/cjs/functions/getProfile.d.ts +30 -0
  56. package/dist/cjs/functions/getProfile.js +302 -0
  57. package/dist/cjs/functions/getRecords.d.ts +32 -0
  58. package/dist/cjs/functions/getRecords.js +11 -0
  59. package/dist/cjs/functions/getResolver.d.ts +9 -0
  60. package/dist/cjs/functions/getResolver.js +24 -0
  61. package/dist/cjs/functions/getSpecificRecord.d.ts +73 -0
  62. package/dist/cjs/functions/getSpecificRecord.js +268 -0
  63. package/dist/cjs/functions/getSubnames.d.ts +26 -0
  64. package/dist/cjs/functions/getSubnames.js +154 -0
  65. package/dist/cjs/functions/initialGetters.d.ts +11 -0
  66. package/dist/cjs/functions/initialGetters.js +40 -0
  67. package/dist/cjs/functions/setName.d.ts +4 -0
  68. package/dist/cjs/functions/setName.js +17 -0
  69. package/dist/cjs/functions/setRecords.d.ts +3 -0
  70. package/dist/cjs/functions/setRecords.js +22 -0
  71. package/dist/cjs/functions/setResolver.d.ts +4 -0
  72. package/dist/cjs/functions/setResolver.js +28 -0
  73. package/dist/cjs/functions/transferName.d.ts +5 -0
  74. package/dist/cjs/functions/transferName.js +34 -0
  75. package/dist/cjs/functions/transferSubname.d.ts +5 -0
  76. package/dist/cjs/functions/transferSubname.js +28 -0
  77. package/dist/cjs/functions/unwrapName.d.ts +4 -0
  78. package/dist/cjs/functions/unwrapName.js +28 -0
  79. package/dist/cjs/functions/wrapName.d.ts +6 -0
  80. package/dist/cjs/functions/wrapName.js +64 -0
  81. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +487 -0
  82. package/dist/cjs/generated/BaseRegistrarImplementation.js +2 -0
  83. package/dist/cjs/generated/DNSRegistrar.d.ts +220 -0
  84. package/dist/cjs/generated/DNSRegistrar.js +2 -0
  85. package/dist/cjs/generated/DNSSECImpl.d.ts +402 -0
  86. package/dist/cjs/generated/DNSSECImpl.js +2 -0
  87. package/dist/cjs/generated/DefaultReverseResolver.d.ts +66 -0
  88. package/dist/cjs/generated/DefaultReverseResolver.js +2 -0
  89. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
  90. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +2 -0
  91. package/dist/cjs/generated/ENSRegistry.d.ts +259 -0
  92. package/dist/cjs/generated/ENSRegistry.js +2 -0
  93. package/dist/cjs/generated/ETHRegistrarController.d.ts +319 -0
  94. package/dist/cjs/generated/ETHRegistrarController.js +2 -0
  95. package/dist/cjs/generated/Multicall.d.ts +292 -0
  96. package/dist/cjs/generated/Multicall.js +2 -0
  97. package/dist/cjs/generated/NameWrapper.d.ts +675 -0
  98. package/dist/cjs/generated/NameWrapper.js +2 -0
  99. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +72 -0
  100. package/dist/cjs/generated/P256SHA256Algorithm.js +2 -0
  101. package/dist/cjs/generated/PublicResolver.d.ts +542 -0
  102. package/dist/cjs/generated/PublicResolver.js +2 -0
  103. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +42 -0
  104. package/dist/cjs/generated/RSASHA1Algorithm.js +2 -0
  105. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +42 -0
  106. package/dist/cjs/generated/RSASHA256Algorithm.js +2 -0
  107. package/dist/cjs/generated/ReverseRegistrar.d.ts +259 -0
  108. package/dist/cjs/generated/ReverseRegistrar.js +2 -0
  109. package/dist/cjs/generated/Root.d.ts +173 -0
  110. package/dist/cjs/generated/Root.js +2 -0
  111. package/dist/cjs/generated/SHA1Digest.d.ts +67 -0
  112. package/dist/cjs/generated/SHA1Digest.js +2 -0
  113. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +72 -0
  114. package/dist/cjs/generated/SHA1NSEC3Digest.js +2 -0
  115. package/dist/cjs/generated/SHA256Digest.d.ts +67 -0
  116. package/dist/cjs/generated/SHA256Digest.js +2 -0
  117. package/dist/cjs/generated/StaticMetadataService.d.ts +42 -0
  118. package/dist/cjs/generated/StaticMetadataService.js +2 -0
  119. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +42 -0
  120. package/dist/cjs/generated/TLDPublicSuffixList.js +2 -0
  121. package/dist/cjs/generated/UniversalResolver.d.ts +82 -0
  122. package/dist/cjs/generated/UniversalResolver.js +2 -0
  123. package/dist/cjs/generated/common.d.ts +21 -0
  124. package/dist/cjs/generated/common.js +2 -0
  125. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
  126. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +770 -0
  127. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +79 -0
  128. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +296 -0
  129. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +68 -0
  130. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +501 -0
  131. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
  132. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +87 -0
  133. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
  134. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +171 -0
  135. package/dist/cjs/generated/factories/ENSRegistry__factory.d.ts +52 -0
  136. package/dist/cjs/generated/factories/ENSRegistry__factory.js +439 -0
  137. package/dist/cjs/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
  138. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +511 -0
  139. package/dist/cjs/generated/factories/Multicall__factory.d.ts +42 -0
  140. package/dist/cjs/generated/factories/Multicall__factory.js +457 -0
  141. package/dist/cjs/generated/factories/NameWrapper__factory.d.ts +57 -0
  142. package/dist/cjs/generated/factories/NameWrapper__factory.js +1200 -0
  143. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
  144. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +71 -0
  145. package/dist/cjs/generated/factories/PublicResolver__factory.d.ts +46 -0
  146. package/dist/cjs/generated/factories/PublicResolver__factory.js +892 -0
  147. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +34 -0
  148. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +71 -0
  149. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
  150. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +71 -0
  151. package/dist/cjs/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
  152. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +340 -0
  153. package/dist/cjs/generated/factories/Root__factory.d.ts +52 -0
  154. package/dist/cjs/generated/factories/Root__factory.js +243 -0
  155. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +34 -0
  156. package/dist/cjs/generated/factories/SHA1Digest__factory.js +66 -0
  157. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
  158. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +71 -0
  159. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +34 -0
  160. package/dist/cjs/generated/factories/SHA256Digest__factory.js +66 -0
  161. package/dist/cjs/generated/factories/StaticMetadataService__factory.d.ts +32 -0
  162. package/dist/cjs/generated/factories/StaticMetadataService__factory.js +49 -0
  163. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +34 -0
  164. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +61 -0
  165. package/dist/cjs/generated/factories/UniversalResolver__factory.d.ts +42 -0
  166. package/dist/cjs/generated/factories/UniversalResolver__factory.js +204 -0
  167. package/dist/cjs/generated/factories/index.d.ts +6 -0
  168. package/dist/cjs/generated/factories/index.js +18 -0
  169. package/dist/cjs/generated/index.d.ts +13 -0
  170. package/dist/cjs/generated/index.js +39 -0
  171. package/dist/cjs/index.d.ts +471 -0
  172. package/dist/cjs/index.js +228 -0
  173. package/dist/cjs/utils/contentHash.d.ts +28 -0
  174. package/dist/cjs/utils/contentHash.js +164 -0
  175. package/dist/cjs/utils/createReverseNode.d.ts +2 -0
  176. package/dist/cjs/utils/createReverseNode.js +3 -0
  177. package/dist/cjs/utils/format.d.ts +3 -0
  178. package/dist/cjs/utils/format.js +9 -0
  179. package/dist/cjs/utils/fuses.d.ts +20 -0
  180. package/dist/cjs/utils/fuses.js +24 -0
  181. package/dist/cjs/utils/generateFuseInput.d.ts +3 -0
  182. package/dist/cjs/utils/generateFuseInput.js +19 -0
  183. package/dist/cjs/utils/hexEncodedName.d.ts +1 -0
  184. package/dist/cjs/utils/hexEncodedName.js +9 -0
  185. package/dist/cjs/utils/labels.d.ts +14 -0
  186. package/dist/cjs/utils/labels.js +112 -0
  187. package/dist/cjs/utils/makeHashIndexes.d.ts +2 -0
  188. package/dist/cjs/utils/makeHashIndexes.js +8 -0
  189. package/dist/cjs/utils/normalise.d.ts +2 -0
  190. package/dist/cjs/utils/normalise.js +28 -0
  191. package/dist/cjs/utils/recordHelpers.d.ts +13 -0
  192. package/dist/cjs/utils/recordHelpers.js +44 -0
  193. package/dist/cjs/utils/registerHelpers.d.ts +26 -0
  194. package/dist/cjs/utils/registerHelpers.js +52 -0
  195. package/dist/cjs/utils/singleCall.d.ts +9 -0
  196. package/dist/cjs/utils/singleCall.js +7 -0
  197. package/dist/cjs/utils/validation.d.ts +8 -0
  198. package/dist/cjs/utils/validation.js +73 -0
  199. package/dist/esm/GqlManager.d.ts +6 -0
  200. package/dist/esm/GqlManager.js +18 -0
  201. package/dist/esm/contracts/baseRegistrar.d.ts +3 -0
  202. package/dist/esm/contracts/baseRegistrar.js +2 -0
  203. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
  204. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +2 -0
  205. package/dist/esm/contracts/ethRegistrarController.d.ts +3 -0
  206. package/dist/esm/contracts/ethRegistrarController.js +2 -0
  207. package/dist/esm/contracts/getContractAddress.d.ts +3 -0
  208. package/dist/esm/contracts/getContractAddress.js +42 -0
  209. package/dist/esm/contracts/index.d.ts +16 -0
  210. package/dist/esm/contracts/index.js +29 -0
  211. package/dist/esm/contracts/multicall.d.ts +3 -0
  212. package/dist/esm/contracts/multicall.js +20 -0
  213. package/dist/esm/contracts/nameWrapper.d.ts +3 -0
  214. package/dist/esm/contracts/nameWrapper.js +2 -0
  215. package/dist/esm/contracts/publicResolver.d.ts +3 -0
  216. package/dist/esm/contracts/publicResolver.js +2 -0
  217. package/dist/esm/contracts/registry.d.ts +3 -0
  218. package/dist/esm/contracts/registry.js +2 -0
  219. package/dist/esm/contracts/reverseRegistrar.d.ts +3 -0
  220. package/dist/esm/contracts/reverseRegistrar.js +2 -0
  221. package/dist/esm/contracts/types.d.ts +2 -0
  222. package/dist/esm/contracts/types.js +1 -0
  223. package/dist/esm/contracts/universalResolver.d.ts +3 -0
  224. package/dist/esm/contracts/universalResolver.js +2 -0
  225. package/dist/esm/functions/batch.d.ts +9 -0
  226. package/dist/esm/functions/batch.js +19 -0
  227. package/dist/esm/functions/batchWrappers.d.ts +29 -0
  228. package/dist/esm/functions/batchWrappers.js +68 -0
  229. package/dist/esm/functions/burnFuses.d.ts +3 -0
  230. package/dist/esm/functions/burnFuses.js +12 -0
  231. package/dist/esm/functions/createSubname.d.ts +19 -0
  232. package/dist/esm/functions/createSubname.js +38 -0
  233. package/dist/esm/functions/deleteSubname.d.ts +4 -0
  234. package/dist/esm/functions/deleteSubname.js +3 -0
  235. package/dist/esm/functions/getDNSOwner.d.ts +7 -0
  236. package/dist/esm/functions/getDNSOwner.js +51 -0
  237. package/dist/esm/functions/getExpiry.d.ts +12 -0
  238. package/dist/esm/functions/getExpiry.js +43 -0
  239. package/dist/esm/functions/getFuses.d.ts +17 -0
  240. package/dist/esm/functions/getFuses.js +60 -0
  241. package/dist/esm/functions/getHistory.d.ts +54 -0
  242. package/dist/esm/functions/getHistory.js +273 -0
  243. package/dist/esm/functions/getName.d.ts +19 -0
  244. package/dist/esm/functions/getName.js +32 -0
  245. package/dist/esm/functions/getNames.d.ts +40 -0
  246. package/dist/esm/functions/getNames.js +220 -0
  247. package/dist/esm/functions/getOwner.d.ts +14 -0
  248. package/dist/esm/functions/getOwner.js +138 -0
  249. package/dist/esm/functions/getPrice.d.ts +13 -0
  250. package/dist/esm/functions/getPrice.js +48 -0
  251. package/dist/esm/functions/getProfile.d.ts +30 -0
  252. package/dist/esm/functions/getProfile.js +299 -0
  253. package/dist/esm/functions/getRecords.d.ts +32 -0
  254. package/dist/esm/functions/getRecords.js +8 -0
  255. package/dist/esm/functions/getResolver.d.ts +9 -0
  256. package/dist/esm/functions/getResolver.js +22 -0
  257. package/dist/esm/functions/getSpecificRecord.d.ts +73 -0
  258. package/dist/esm/functions/getSpecificRecord.js +265 -0
  259. package/dist/esm/functions/getSubnames.d.ts +26 -0
  260. package/dist/esm/functions/getSubnames.js +152 -0
  261. package/dist/esm/functions/initialGetters.d.ts +11 -0
  262. package/dist/esm/functions/initialGetters.js +11 -0
  263. package/dist/esm/functions/setName.d.ts +4 -0
  264. package/dist/esm/functions/setName.js +14 -0
  265. package/dist/esm/functions/setRecords.d.ts +3 -0
  266. package/dist/esm/functions/setRecords.js +19 -0
  267. package/dist/esm/functions/setResolver.d.ts +4 -0
  268. package/dist/esm/functions/setResolver.js +25 -0
  269. package/dist/esm/functions/transferName.d.ts +5 -0
  270. package/dist/esm/functions/transferName.js +31 -0
  271. package/dist/esm/functions/transferSubname.d.ts +5 -0
  272. package/dist/esm/functions/transferSubname.js +25 -0
  273. package/dist/esm/functions/unwrapName.d.ts +4 -0
  274. package/dist/esm/functions/unwrapName.js +25 -0
  275. package/dist/esm/functions/wrapName.d.ts +6 -0
  276. package/dist/esm/functions/wrapName.js +58 -0
  277. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +487 -0
  278. package/dist/esm/generated/BaseRegistrarImplementation.js +1 -0
  279. package/dist/esm/generated/DNSRegistrar.d.ts +220 -0
  280. package/dist/esm/generated/DNSRegistrar.js +1 -0
  281. package/dist/esm/generated/DNSSECImpl.d.ts +402 -0
  282. package/dist/esm/generated/DNSSECImpl.js +1 -0
  283. package/dist/esm/generated/DefaultReverseResolver.d.ts +66 -0
  284. package/dist/esm/generated/DefaultReverseResolver.js +1 -0
  285. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
  286. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +1 -0
  287. package/dist/esm/generated/ENSRegistry.d.ts +259 -0
  288. package/dist/esm/generated/ENSRegistry.js +1 -0
  289. package/dist/esm/generated/ETHRegistrarController.d.ts +319 -0
  290. package/dist/esm/generated/ETHRegistrarController.js +1 -0
  291. package/dist/esm/generated/Multicall.d.ts +292 -0
  292. package/dist/esm/generated/Multicall.js +1 -0
  293. package/dist/esm/generated/NameWrapper.d.ts +675 -0
  294. package/dist/esm/generated/NameWrapper.js +1 -0
  295. package/dist/esm/generated/P256SHA256Algorithm.d.ts +72 -0
  296. package/dist/esm/generated/P256SHA256Algorithm.js +1 -0
  297. package/dist/esm/generated/PublicResolver.d.ts +542 -0
  298. package/dist/esm/generated/PublicResolver.js +1 -0
  299. package/dist/esm/generated/RSASHA1Algorithm.d.ts +42 -0
  300. package/dist/esm/generated/RSASHA1Algorithm.js +1 -0
  301. package/dist/esm/generated/RSASHA256Algorithm.d.ts +42 -0
  302. package/dist/esm/generated/RSASHA256Algorithm.js +1 -0
  303. package/dist/esm/generated/ReverseRegistrar.d.ts +259 -0
  304. package/dist/esm/generated/ReverseRegistrar.js +1 -0
  305. package/dist/esm/generated/Root.d.ts +173 -0
  306. package/dist/esm/generated/Root.js +1 -0
  307. package/dist/esm/generated/SHA1Digest.d.ts +67 -0
  308. package/dist/esm/generated/SHA1Digest.js +1 -0
  309. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +72 -0
  310. package/dist/esm/generated/SHA1NSEC3Digest.js +1 -0
  311. package/dist/esm/generated/SHA256Digest.d.ts +67 -0
  312. package/dist/esm/generated/SHA256Digest.js +1 -0
  313. package/dist/esm/generated/StaticMetadataService.d.ts +42 -0
  314. package/dist/esm/generated/StaticMetadataService.js +1 -0
  315. package/dist/esm/generated/TLDPublicSuffixList.d.ts +42 -0
  316. package/dist/esm/generated/TLDPublicSuffixList.js +1 -0
  317. package/dist/esm/generated/UniversalResolver.d.ts +82 -0
  318. package/dist/esm/generated/UniversalResolver.js +1 -0
  319. package/dist/esm/generated/common.d.ts +21 -0
  320. package/dist/esm/generated/common.js +1 -0
  321. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
  322. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +766 -0
  323. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +79 -0
  324. package/dist/esm/generated/factories/DNSRegistrar__factory.js +292 -0
  325. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +68 -0
  326. package/dist/esm/generated/factories/DNSSECImpl__factory.js +497 -0
  327. package/dist/esm/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
  328. package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +83 -0
  329. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
  330. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +167 -0
  331. package/dist/esm/generated/factories/ENSRegistry__factory.d.ts +52 -0
  332. package/dist/esm/generated/factories/ENSRegistry__factory.js +435 -0
  333. package/dist/esm/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
  334. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +507 -0
  335. package/dist/esm/generated/factories/Multicall__factory.d.ts +42 -0
  336. package/dist/esm/generated/factories/Multicall__factory.js +453 -0
  337. package/dist/esm/generated/factories/NameWrapper__factory.d.ts +57 -0
  338. package/dist/esm/generated/factories/NameWrapper__factory.js +1196 -0
  339. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
  340. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +67 -0
  341. package/dist/esm/generated/factories/PublicResolver__factory.d.ts +46 -0
  342. package/dist/esm/generated/factories/PublicResolver__factory.js +888 -0
  343. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +34 -0
  344. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +67 -0
  345. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
  346. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +67 -0
  347. package/dist/esm/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
  348. package/dist/esm/generated/factories/ReverseRegistrar__factory.js +336 -0
  349. package/dist/esm/generated/factories/Root__factory.d.ts +52 -0
  350. package/dist/esm/generated/factories/Root__factory.js +239 -0
  351. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +34 -0
  352. package/dist/esm/generated/factories/SHA1Digest__factory.js +62 -0
  353. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
  354. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +67 -0
  355. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +34 -0
  356. package/dist/esm/generated/factories/SHA256Digest__factory.js +62 -0
  357. package/dist/esm/generated/factories/StaticMetadataService__factory.d.ts +32 -0
  358. package/dist/esm/generated/factories/StaticMetadataService__factory.js +45 -0
  359. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +34 -0
  360. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +57 -0
  361. package/dist/esm/generated/factories/UniversalResolver__factory.d.ts +42 -0
  362. package/dist/esm/generated/factories/UniversalResolver__factory.js +200 -0
  363. package/dist/esm/generated/factories/index.d.ts +6 -0
  364. package/dist/esm/generated/factories/index.js +9 -0
  365. package/dist/esm/generated/index.d.ts +13 -0
  366. package/dist/esm/generated/index.js +7 -0
  367. package/dist/esm/index.d.ts +471 -0
  368. package/dist/esm/index.js +193 -0
  369. package/dist/esm/utils/contentHash.d.ts +28 -0
  370. package/dist/esm/utils/contentHash.js +153 -0
  371. package/dist/esm/utils/createReverseNode.d.ts +2 -0
  372. package/dist/esm/utils/createReverseNode.js +1 -0
  373. package/dist/esm/utils/format.d.ts +3 -0
  374. package/dist/esm/utils/format.js +3 -0
  375. package/dist/esm/utils/fuses.d.ts +20 -0
  376. package/dist/esm/utils/fuses.js +21 -0
  377. package/dist/esm/utils/generateFuseInput.d.ts +3 -0
  378. package/dist/esm/utils/generateFuseInput.js +14 -0
  379. package/dist/esm/utils/hexEncodedName.d.ts +1 -0
  380. package/dist/esm/utils/hexEncodedName.js +2 -0
  381. package/dist/esm/utils/labels.d.ts +14 -0
  382. package/dist/esm/utils/labels.js +95 -0
  383. package/dist/esm/utils/makeHashIndexes.d.ts +2 -0
  384. package/dist/esm/utils/makeHashIndexes.js +3 -0
  385. package/dist/esm/utils/normalise.d.ts +2 -0
  386. package/dist/esm/utils/normalise.js +20 -0
  387. package/dist/esm/utils/recordHelpers.d.ts +13 -0
  388. package/dist/esm/utils/recordHelpers.js +39 -0
  389. package/dist/esm/utils/registerHelpers.d.ts +26 -0
  390. package/dist/esm/utils/registerHelpers.js +43 -0
  391. package/dist/esm/utils/singleCall.d.ts +9 -0
  392. package/dist/esm/utils/singleCall.js +5 -0
  393. package/dist/esm/utils/validation.d.ts +8 -0
  394. package/dist/esm/utils/validation.js +67 -0
  395. package/package.json +77 -49
  396. package/src/@types/@ensdomains/content-hash.d.ts +1 -0
  397. package/src/@types/@ensdomains/ens-contracts.d.ts +1 -0
  398. package/src/@types/FuseOptions.d.ts +9 -0
  399. package/src/@types/dns-packet/index.d.ts +114 -0
  400. package/src/@types/dns-packet.d.ts +1 -0
  401. package/src/@types/idna-uts46-hx.d.ts +1 -0
  402. package/src/ABIs/ETHRegistrarController.json +494 -0
  403. package/src/ABIs/NameWrapper.json +1183 -0
  404. package/src/ABIs/PublicResolver.json +875 -0
  405. package/src/ABIs/ReverseRegistrar.json +323 -0
  406. package/src/ABIs/StaticMetadataService.json +32 -0
  407. package/src/ABIs/UniversalResolver.json +187 -0
  408. package/src/GqlManager.ts +18 -0
  409. package/src/contracts/baseRegistrar.ts +5 -0
  410. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +5 -0
  411. package/src/contracts/ethRegistrarController.ts +5 -0
  412. package/src/contracts/getContractAddress.ts +52 -0
  413. package/src/contracts/index.ts +68 -0
  414. package/src/contracts/multicall.ts +24 -0
  415. package/src/contracts/nameWrapper.ts +5 -0
  416. package/src/contracts/publicResolver.ts +5 -0
  417. package/src/contracts/registry.ts +5 -0
  418. package/src/contracts/reverseRegistrar.ts +5 -0
  419. package/src/contracts/types.ts +11 -0
  420. package/src/contracts/universalResolver.ts +5 -0
  421. package/src/functions/batch.test.ts +36 -0
  422. package/src/functions/batch.ts +36 -0
  423. package/src/functions/batchWrappers.test.ts +31 -0
  424. package/src/functions/batchWrappers.ts +91 -0
  425. package/src/functions/burnFuses.test.ts +44 -0
  426. package/src/functions/burnFuses.ts +23 -0
  427. package/src/functions/createSubname.test.ts +58 -0
  428. package/src/functions/createSubname.ts +83 -0
  429. package/src/functions/deleteSubname.test.ts +71 -0
  430. package/src/functions/deleteSubname.ts +19 -0
  431. package/src/functions/getDNSOwner.test.ts +122 -0
  432. package/src/functions/getDNSOwner.ts +61 -0
  433. package/src/functions/getExpiry.test.ts +37 -0
  434. package/src/functions/getExpiry.ts +63 -0
  435. package/src/functions/getFuses.test.ts +103 -0
  436. package/src/functions/getFuses.ts +76 -0
  437. package/src/functions/getHistory.test.ts +101 -0
  438. package/src/functions/getHistory.ts +347 -0
  439. package/src/functions/getName.test.ts +47 -0
  440. package/src/functions/getName.ts +41 -0
  441. package/src/functions/getNames.test.ts +247 -0
  442. package/src/functions/getNames.ts +275 -0
  443. package/src/functions/getOwner.test.ts +71 -0
  444. package/src/functions/getOwner.ts +202 -0
  445. package/src/functions/getPrice.ts +71 -0
  446. package/src/functions/getProfile.test.ts +120 -0
  447. package/src/functions/getProfile.ts +543 -0
  448. package/src/functions/getRecords.ts +22 -0
  449. package/src/functions/getResolver.test.ts +19 -0
  450. package/src/functions/getResolver.ts +32 -0
  451. package/src/functions/getSpecificRecord.test.ts +76 -0
  452. package/src/functions/getSpecificRecord.ts +365 -0
  453. package/src/functions/getSubnames.test.ts +31 -0
  454. package/src/functions/getSubnames.ts +190 -0
  455. package/src/functions/initialGetters.ts +11 -0
  456. package/src/functions/makeCommitment.test.ts +23 -0
  457. package/src/functions/normalise.test.ts +22 -0
  458. package/src/functions/setName.test.ts +58 -0
  459. package/src/functions/setName.ts +34 -0
  460. package/src/functions/setRecords.test.ts +58 -0
  461. package/src/functions/setRecords.ts +38 -0
  462. package/src/functions/setResolver.test.ts +60 -0
  463. package/src/functions/setResolver.ts +40 -0
  464. package/src/functions/transferName.test.ts +81 -0
  465. package/src/functions/transferName.ts +57 -0
  466. package/src/functions/transferSubname.test.ts +73 -0
  467. package/src/functions/transferSubname.ts +38 -0
  468. package/src/functions/unwrapName.test.ts +68 -0
  469. package/src/functions/unwrapName.ts +39 -0
  470. package/src/functions/wrapName.test.ts +64 -0
  471. package/src/functions/wrapName.ts +128 -0
  472. package/src/generated/BaseRegistrarImplementation.ts +1122 -0
  473. package/src/generated/DNSRegistrar.ts +445 -0
  474. package/src/generated/DNSSECImpl.ts +770 -0
  475. package/src/generated/DefaultReverseResolver.ts +137 -0
  476. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +285 -0
  477. package/src/generated/ENSRegistry.ts +618 -0
  478. package/src/generated/ETHRegistrarController.ts +743 -0
  479. package/src/generated/Multicall.ts +582 -0
  480. package/src/generated/NameWrapper.ts +1694 -0
  481. package/src/generated/P256SHA256Algorithm.ts +139 -0
  482. package/src/generated/PublicResolver.ts +1326 -0
  483. package/src/generated/RSASHA1Algorithm.ts +109 -0
  484. package/src/generated/RSASHA256Algorithm.ts +109 -0
  485. package/src/generated/ReverseRegistrar.ts +556 -0
  486. package/src/generated/Root.ts +377 -0
  487. package/src/generated/SHA1Digest.ts +129 -0
  488. package/src/generated/SHA1NSEC3Digest.ts +140 -0
  489. package/src/generated/SHA256Digest.ts +129 -0
  490. package/src/generated/StaticMetadataService.ts +85 -0
  491. package/src/generated/TLDPublicSuffixList.ts +99 -0
  492. package/src/generated/UniversalResolver.ts +260 -0
  493. package/src/generated/common.ts +44 -0
  494. package/src/generated/factories/BaseRegistrarImplementation__factory.ts +781 -0
  495. package/src/generated/factories/DNSRegistrar__factory.ts +329 -0
  496. package/src/generated/factories/DNSSECImpl__factory.ts +527 -0
  497. package/src/generated/factories/DefaultReverseResolver__factory.ts +98 -0
  498. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +186 -0
  499. package/src/generated/factories/ENSRegistry__factory.ts +443 -0
  500. package/src/generated/factories/ETHRegistrarController__factory.ts +522 -0
  501. package/src/generated/factories/Multicall__factory.ts +461 -0
  502. package/src/generated/factories/NameWrapper__factory.ts +1204 -0
  503. package/src/generated/factories/P256SHA256Algorithm__factory.ts +91 -0
  504. package/src/generated/factories/PublicResolver__factory.ts +899 -0
  505. package/src/generated/factories/RSASHA1Algorithm__factory.ts +91 -0
  506. package/src/generated/factories/RSASHA256Algorithm__factory.ts +91 -0
  507. package/src/generated/factories/ReverseRegistrar__factory.ts +347 -0
  508. package/src/generated/factories/Root__factory.ts +244 -0
  509. package/src/generated/factories/SHA1Digest__factory.ts +83 -0
  510. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +91 -0
  511. package/src/generated/factories/SHA256Digest__factory.ts +83 -0
  512. package/src/generated/factories/StaticMetadataService__factory.ts +60 -0
  513. package/src/generated/factories/TLDPublicSuffixList__factory.ts +81 -0
  514. package/src/generated/factories/UniversalResolver__factory.ts +211 -0
  515. package/src/generated/factories/index.ts +9 -0
  516. package/src/generated/index.ts +16 -0
  517. package/src/index.ts +516 -0
  518. package/src/tests/setup.ts +53 -0
  519. package/src/tests/withProvider.test.ts +28 -0
  520. package/src/utils/contentHash.ts +151 -0
  521. package/src/utils/createReverseNode.ts +2 -0
  522. package/src/utils/format.ts +8 -0
  523. package/src/utils/fuses.ts +23 -0
  524. package/src/utils/generateFuseInput.ts +18 -0
  525. package/src/utils/hexEncodedName.ts +4 -0
  526. package/src/utils/labels.ts +119 -0
  527. package/src/utils/makeHashIndexes.ts +9 -0
  528. package/src/utils/normalise.ts +27 -0
  529. package/src/utils/recordHelpers.ts +72 -0
  530. package/src/utils/registerHelpers.ts +87 -0
  531. package/src/utils/singleCall.ts +16 -0
  532. package/src/utils/validation.ts +73 -0
  533. package/dist/constants/interfaces.js +0 -13
  534. package/dist/index.js +0 -1135
  535. package/dist/utils/contents.js +0 -126
  536. package/dist/utils/index.js +0 -192
  537. package/dist/utils/labelhash.js +0 -55
  538. package/dist/utils/namehash.js +0 -39
  539. package/dist/utils/records.js +0 -56
@@ -0,0 +1,23 @@
1
+ import { ENS } from '..'
2
+ import { makeCommitment } from '../utils/registerHelpers'
3
+ import setup from '../tests/setup'
4
+
5
+ let ENSInstance: ENS
6
+
7
+ beforeAll(async () => {
8
+ ;({ ENSInstance } = await setup())
9
+ })
10
+
11
+ describe('makeCommitment', () => {
12
+ it('should create a valid commitment', async () => {
13
+ const resolver = await ENSInstance.contracts!.getPublicResolver()!
14
+ const commitment = makeCommitment({
15
+ name: 'test.eth',
16
+ owner: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
17
+ duration: 1 * 365 * 24 * 60 * 60,
18
+ resolver: resolver,
19
+ })
20
+ expect(commitment).toHaveProperty('secret')
21
+ expect(commitment).toHaveProperty('commitment')
22
+ })
23
+ })
@@ -0,0 +1,22 @@
1
+ import { namehash } from '../utils/normalise'
2
+
3
+ describe('normalise', () => {
4
+ it('should namehash an empty string', () => {
5
+ const hash = namehash('')
6
+ expect(hash).toEqual(
7
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
8
+ )
9
+ })
10
+ it('should namehash a TLD', () => {
11
+ const hash = namehash('eth')
12
+ expect(hash).toEqual(
13
+ '0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae',
14
+ )
15
+ })
16
+ it('should namehash a 2LD', () => {
17
+ const hash = namehash('foo.eth')
18
+ expect(hash).toEqual(
19
+ '0xde9b09fd7c5f901e23a3f19fecc54828e9c848539801e86591bd9801b019f84f',
20
+ )
21
+ })
22
+ })
@@ -0,0 +1,58 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import { hexEncodeName } from '../utils/hexEncodedName'
4
+ import setup from '../tests/setup'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+ let provider: ethers.providers.JsonRpcProvider
9
+ let accounts: string[]
10
+
11
+ beforeAll(async () => {
12
+ ;({ ENSInstance, revert, provider } = await setup())
13
+ accounts = await provider.listAccounts()
14
+ })
15
+
16
+ afterAll(async () => {
17
+ await revert()
18
+ })
19
+
20
+ describe('setName', () => {
21
+ beforeEach(async () => {
22
+ await revert()
23
+ })
24
+ it('should return a transaction for a name and set successfully', async () => {
25
+ const tx = await ENSInstance.setName('fleek.eth')
26
+ expect(tx).toBeTruthy()
27
+ await tx?.wait()
28
+
29
+ const universalResolver =
30
+ await ENSInstance.contracts!.getUniversalResolver()!
31
+ const reverseNode = accounts[0].toLowerCase().substring(2) + '.addr.reverse'
32
+ const result = await universalResolver.reverse(hexEncodeName(reverseNode))
33
+ expect(result[0]).toBe('fleek.eth')
34
+ })
35
+ it("should return a transaction for setting another address' name", async () => {
36
+ jest.setTimeout(20000)
37
+ const registry = (await ENSInstance.contracts!.getRegistry()!).connect(
38
+ provider.getSigner(),
39
+ )
40
+ const setApprovedForAllTx = await registry.setApprovalForAll(
41
+ accounts[1],
42
+ true,
43
+ )
44
+ await setApprovedForAllTx?.wait()
45
+
46
+ const tx = await ENSInstance.setName('fleek.eth', accounts[0], undefined, {
47
+ addressOrIndex: 1,
48
+ })
49
+ expect(tx).toBeTruthy()
50
+ await tx?.wait()
51
+
52
+ const universalResolver =
53
+ await ENSInstance.contracts!.getUniversalResolver()!
54
+ const reverseNode = accounts[0].toLowerCase().substring(2) + '.addr.reverse'
55
+ const result = await universalResolver.reverse(hexEncodeName(reverseNode))
56
+ expect(result[0]).toBe('fleek.eth')
57
+ })
58
+ })
@@ -0,0 +1,34 @@
1
+ import { ENSArgs } from '..'
2
+
3
+ export default async function (
4
+ { contracts, provider }: ENSArgs<'contracts' | 'provider'>,
5
+ name: string,
6
+ address?: string,
7
+ resolver?: string,
8
+ options?: { addressOrIndex?: string | number },
9
+ ) {
10
+ const signerAddress = await provider
11
+ ?.getSigner(options?.addressOrIndex)
12
+ .getAddress()
13
+
14
+ if (!signerAddress) {
15
+ throw new Error('No signer found')
16
+ }
17
+
18
+ const reverseRegistrar = (await contracts?.getReverseRegistrar())?.connect(
19
+ provider?.getSigner()!,
20
+ )
21
+
22
+ if (address) {
23
+ const publicResolver = await contracts?.getPublicResolver()
24
+
25
+ return reverseRegistrar?.setNameForAddr(
26
+ address,
27
+ signerAddress,
28
+ resolver || publicResolver!.address,
29
+ name,
30
+ )
31
+ }
32
+
33
+ return reverseRegistrar?.setName(name)
34
+ }
@@ -0,0 +1,58 @@
1
+ import { ENS } from '..'
2
+ import { hexEncodeName } from '../utils/hexEncodedName'
3
+ import { namehash } from '../utils/normalise'
4
+ import setup from '../tests/setup'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+
9
+ beforeAll(async () => {
10
+ ;({ ENSInstance, revert } = await setup())
11
+ })
12
+
13
+ afterAll(async () => {
14
+ await revert()
15
+ })
16
+
17
+ describe('setRecords', () => {
18
+ it('should return a transaction to the resolver and set successfully', async () => {
19
+ const tx = await ENSInstance.setRecords('parthtejpal.eth', {
20
+ coinTypes: [
21
+ { key: 'ETC', value: '0x42D63ae25990889E35F215bC95884039Ba354115' },
22
+ ],
23
+ texts: [{ key: 'foo', value: 'bar' }],
24
+ })
25
+ expect(tx).toBeTruthy()
26
+ await tx.wait()
27
+
28
+ const universalResolver =
29
+ await ENSInstance.contracts!.getUniversalResolver()!
30
+ const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
31
+ const encodedText = await universalResolver.resolve(
32
+ hexEncodeName('parthtejpal.eth'),
33
+ publicResolver.interface.encodeFunctionData('text(bytes32,string)', [
34
+ namehash('parthtejpal.eth'),
35
+ 'foo',
36
+ ]),
37
+ )
38
+ const encodedAddr = await universalResolver.resolve(
39
+ hexEncodeName('parthtejpal.eth'),
40
+ publicResolver.interface.encodeFunctionData('addr(bytes32,uint256)', [
41
+ namehash('parthtejpal.eth'),
42
+ '61',
43
+ ]),
44
+ )
45
+ const [resultText] = publicResolver.interface.decodeFunctionResult(
46
+ 'text(bytes32,string)',
47
+ encodedText[0],
48
+ )
49
+ const [resultAddr] = publicResolver.interface.decodeFunctionResult(
50
+ 'addr(bytes32,uint256)',
51
+ encodedAddr[0],
52
+ )
53
+ expect(resultText).toBe('bar')
54
+ expect(resultAddr).toBe(
55
+ '0x42D63ae25990889E35F215bC95884039Ba354115'.toLowerCase(),
56
+ )
57
+ })
58
+ })
@@ -0,0 +1,38 @@
1
+ import { ENSArgs } from '..'
2
+ import { namehash } from '../utils/normalise'
3
+ import { generateRecordCallArray, RecordOptions } from '../utils/recordHelpers'
4
+
5
+ export default async function (
6
+ {
7
+ contracts,
8
+ provider,
9
+ getResolver,
10
+ }: ENSArgs<'contracts' | 'provider' | 'getResolver'>,
11
+ name: string,
12
+ records: RecordOptions,
13
+ ) {
14
+ if (!name.includes('.')) {
15
+ throw new Error('Input is not an ENS name')
16
+ }
17
+
18
+ const resolverAddress = await getResolver(name)
19
+
20
+ if (!resolverAddress) {
21
+ throw new Error('No resolver found for input address')
22
+ }
23
+
24
+ const address = await provider?.getSigner().getAddress()
25
+
26
+ if (!address) {
27
+ throw new Error('No signer found')
28
+ }
29
+
30
+ const resolver = (
31
+ await contracts?.getPublicResolver(provider, resolverAddress)
32
+ )?.connect(provider?.getSigner()!)
33
+ const hash = namehash(name)
34
+
35
+ const calls: string[] = generateRecordCallArray(hash, records, resolver!)
36
+
37
+ return resolver?.multicall(calls)
38
+ }
@@ -0,0 +1,60 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import { hexEncodeName } from '../utils/hexEncodedName'
4
+ import setup from '../tests/setup'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+ let provider: ethers.providers.JsonRpcProvider
9
+
10
+ beforeAll(async () => {
11
+ ;({ ENSInstance, revert, provider } = await setup())
12
+ })
13
+
14
+ afterAll(async () => {
15
+ await revert()
16
+ })
17
+
18
+ describe('setResolver', () => {
19
+ beforeEach(async () => {
20
+ await revert()
21
+ })
22
+ it('should return a transaction to the registry and set successfully', async () => {
23
+ const tx = await ENSInstance.setResolver(
24
+ 'parthtejpal.eth',
25
+ 'registry',
26
+ '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC',
27
+ )
28
+ expect(tx).toBeTruthy()
29
+ await tx.wait()
30
+
31
+ const universalResolver =
32
+ await ENSInstance.contracts!.getUniversalResolver()!
33
+ const [result] = await universalResolver.findResolver(
34
+ hexEncodeName('parthtejpal.eth'),
35
+ )
36
+ expect(result).toBe('0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC')
37
+ })
38
+ it('should return a transaction to the namewrapper and set successfully', async () => {
39
+ const accounts = await provider.listAccounts()
40
+ const wrapNameTx = await ENSInstance.wrapName(
41
+ 'parthtejpal.eth',
42
+ accounts[0],
43
+ )
44
+ await wrapNameTx.wait()
45
+ const tx = await ENSInstance.setResolver(
46
+ 'parthtejpal.eth',
47
+ 'nameWrapper',
48
+ '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC',
49
+ )
50
+ expect(tx).toBeTruthy()
51
+ await tx.wait()
52
+
53
+ const universalResolver =
54
+ await ENSInstance.contracts!.getUniversalResolver()!
55
+ const [result] = await universalResolver.findResolver(
56
+ hexEncodeName('parthtejpal.eth'),
57
+ )
58
+ expect(result).toBe('0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC')
59
+ })
60
+ })
@@ -0,0 +1,40 @@
1
+ import { ENSArgs } from '..'
2
+ import { namehash } from '../utils/normalise'
3
+
4
+ export default async function (
5
+ { contracts, provider }: ENSArgs<'contracts' | 'provider'>,
6
+ name: string,
7
+ contract: 'registry' | 'nameWrapper',
8
+ resolver?: string,
9
+ options?: { addressOrIndex?: string | number },
10
+ ) {
11
+ const address = await provider
12
+ ?.getSigner(options?.addressOrIndex)
13
+ .getAddress()
14
+
15
+ if (!address) {
16
+ throw new Error('No signer found')
17
+ }
18
+
19
+ if (!resolver) {
20
+ resolver = (await contracts?.getPublicResolver()!).address
21
+ }
22
+
23
+ switch (contract) {
24
+ case 'registry': {
25
+ const registry = (await contracts?.getRegistry())!.connect(
26
+ provider?.getSigner(options?.addressOrIndex)!,
27
+ )
28
+ return registry.setResolver(namehash(name), resolver)
29
+ }
30
+ case 'nameWrapper': {
31
+ const nameWrapper = (await contracts?.getNameWrapper())!.connect(
32
+ provider?.getSigner(options?.addressOrIndex)!,
33
+ )
34
+ return nameWrapper.setResolver(namehash(name), resolver)
35
+ }
36
+ default: {
37
+ throw new Error(`Unknown contract: ${contract}`)
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,81 @@
1
+ import { ethers, utils } from 'ethers'
2
+ import { ENS } from '..'
3
+ import { namehash } from '../utils/normalise'
4
+ import setup from '../tests/setup'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+ let provider: ethers.providers.JsonRpcProvider
9
+ let accounts: string[]
10
+
11
+ beforeAll(async () => {
12
+ ;({ ENSInstance, revert, provider } = await setup())
13
+ accounts = await provider.listAccounts()
14
+ })
15
+
16
+ afterAll(async () => {
17
+ await revert()
18
+ })
19
+
20
+ describe('transferName', () => {
21
+ beforeEach(async () => {
22
+ await revert()
23
+ })
24
+ it('should allow a transfer on the registrar', async () => {
25
+ const tx = await ENSInstance.transferName(
26
+ 'parthtejpal.eth',
27
+ accounts[1],
28
+ 'baseRegistrar',
29
+ { addressOrIndex: 0 },
30
+ )
31
+ expect(tx).toBeTruthy()
32
+ await tx.wait()
33
+
34
+ const baseRegistrar = await ENSInstance.contracts!.getBaseRegistrar()!
35
+ const result = await baseRegistrar.ownerOf(
36
+ utils.solidityKeccak256(['string'], ['parthtejpal']),
37
+ )
38
+ expect(result).toBe(accounts[1])
39
+ })
40
+ it('should allow a transfer on the namewrapper', async () => {
41
+ const wrapNameTx = await ENSInstance.wrapName(
42
+ 'parthtejpal.eth',
43
+ accounts[0],
44
+ )
45
+ await wrapNameTx.wait()
46
+ const tx = await ENSInstance.transferName(
47
+ 'parthtejpal.eth',
48
+ accounts[1],
49
+ 'nameWrapper',
50
+ { addressOrIndex: 0 },
51
+ )
52
+ expect(tx).toBeTruthy()
53
+ await tx.wait()
54
+
55
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
56
+ const result = await nameWrapper.ownerOf(namehash('parthtejpal.eth'))
57
+ expect(result).toBe(accounts[1])
58
+ })
59
+ it('should allow a transfer on the registry', async () => {
60
+ const createSubnameTx = await ENSInstance.createSubname({
61
+ name: 'test.parthtejpal.eth',
62
+ contract: 'registry',
63
+ owner: accounts[0],
64
+ options: { addressOrIndex: accounts[0] },
65
+ })
66
+ await createSubnameTx.wait()
67
+
68
+ const tx = await ENSInstance.transferName(
69
+ 'test.parthtejpal.eth',
70
+ accounts[1],
71
+ 'registry',
72
+ { addressOrIndex: accounts[0] },
73
+ )
74
+ expect(tx).toBeTruthy()
75
+ await tx.wait()
76
+
77
+ const registry = await ENSInstance.contracts!.getRegistry()!
78
+ const result = await registry.owner(namehash('test.parthtejpal.eth'))
79
+ expect(result).toBe(accounts[1])
80
+ })
81
+ })
@@ -0,0 +1,57 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENSArgs } from '..'
3
+ import { namehash } from '../utils/normalise'
4
+
5
+ export default async function (
6
+ { contracts, provider }: ENSArgs<'contracts' | 'provider'>,
7
+ name: string,
8
+ newOwner: string,
9
+ contract: 'registry' | 'nameWrapper' | 'baseRegistrar',
10
+ options?: { addressOrIndex?: string | number },
11
+ ) {
12
+ const address = await provider
13
+ ?.getSigner(options?.addressOrIndex)
14
+ .getAddress()
15
+
16
+ if (!address) {
17
+ throw new Error('No signer found')
18
+ }
19
+
20
+ switch (contract) {
21
+ case 'registry': {
22
+ const registry = (await contracts?.getRegistry())!.connect(
23
+ provider?.getSigner(options?.addressOrIndex)!,
24
+ )
25
+ return registry.setOwner(namehash(name), newOwner)
26
+ }
27
+ case 'baseRegistrar': {
28
+ const baseRegistrar = (await contracts?.getBaseRegistrar())!.connect(
29
+ provider?.getSigner(options?.addressOrIndex)!,
30
+ )
31
+ const labels = name.split('.')
32
+ if (labels.length > 2 || labels[labels.length - 1] !== 'eth') {
33
+ throw new Error('Invalid name for baseRegistrar')
34
+ }
35
+ return baseRegistrar['safeTransferFrom(address,address,uint256)'](
36
+ address,
37
+ newOwner,
38
+ ethers.utils.solidityKeccak256(['string'], [labels[0]]),
39
+ )
40
+ }
41
+ case 'nameWrapper': {
42
+ const nameWrapper = (await contracts?.getNameWrapper())!.connect(
43
+ provider?.getSigner(options?.addressOrIndex)!,
44
+ )
45
+ return nameWrapper.safeTransferFrom(
46
+ address,
47
+ newOwner,
48
+ namehash(name),
49
+ 1,
50
+ '0x',
51
+ )
52
+ }
53
+ default: {
54
+ throw new Error(`Unknown contract: ${contract}`)
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,73 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import { namehash } from '../utils/normalise'
4
+ import setup from '../tests/setup'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+ let provider: ethers.providers.JsonRpcProvider
9
+ let accounts: string[]
10
+
11
+ beforeAll(async () => {
12
+ ;({ ENSInstance, revert, provider } = await setup())
13
+ accounts = await provider.listAccounts()
14
+ })
15
+
16
+ afterAll(async () => {
17
+ await revert()
18
+ })
19
+
20
+ describe('transferSubname', () => {
21
+ beforeEach(async () => {
22
+ await revert()
23
+ })
24
+ it('should allow transferring a subname on the registry', async () => {
25
+ const createSubnameTx = await ENSInstance.createSubname({
26
+ contract: 'registry',
27
+ name: 'test.parthtejpal.eth',
28
+ owner: accounts[0],
29
+ options: { addressOrIndex: 0 },
30
+ })
31
+ await createSubnameTx.wait()
32
+
33
+ const tx = await ENSInstance.transferSubname(
34
+ 'test.parthtejpal.eth',
35
+ 'registry',
36
+ accounts[1],
37
+ { addressOrIndex: 0 },
38
+ )
39
+ expect(tx).toBeTruthy()
40
+ await tx.wait()
41
+
42
+ const registry = await ENSInstance.contracts!.getRegistry()!
43
+ const result = await registry.owner(namehash('test.parthtejpal.eth'))
44
+ expect(result).toBe(accounts[1])
45
+ })
46
+ it('should allow transferring a subname on the nameWrapper', async () => {
47
+ const wrapNameTx = await ENSInstance.wrapName(
48
+ 'parthtejpal.eth',
49
+ accounts[0],
50
+ )
51
+ await wrapNameTx.wait()
52
+ const createSubnameTx = await ENSInstance.createSubname({
53
+ contract: 'nameWrapper',
54
+ name: 'test.parthtejpal.eth',
55
+ owner: accounts[0],
56
+ options: { addressOrIndex: 0 },
57
+ })
58
+ await createSubnameTx.wait()
59
+
60
+ const tx = await ENSInstance.transferSubname(
61
+ 'test.parthtejpal.eth',
62
+ 'nameWrapper',
63
+ accounts[1],
64
+ { addressOrIndex: 0 },
65
+ )
66
+ expect(tx).toBeTruthy()
67
+ await tx.wait()
68
+
69
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
70
+ const result = await nameWrapper.ownerOf(namehash('test.parthtejpal.eth'))
71
+ expect(result).toBe(accounts[1])
72
+ })
73
+ })
@@ -0,0 +1,38 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENSArgs } from '..'
3
+ import { namehash } from '../utils/normalise'
4
+
5
+ export default async function (
6
+ { contracts, provider }: ENSArgs<'contracts' | 'provider'>,
7
+ name: string,
8
+ contract: 'registry' | 'nameWrapper',
9
+ address: string,
10
+ options?: { addressOrIndex?: string | number },
11
+ ) {
12
+ const signer = provider?.getSigner(options?.addressOrIndex)
13
+
14
+ if (!signer) {
15
+ throw new Error('No signer found')
16
+ }
17
+
18
+ const labels = name.split('.')
19
+ const label = labels.shift() as string
20
+ const labelhash = ethers.utils.solidityKeccak256(['string'], [label])
21
+ const parentNodehash = namehash(labels.join('.'))
22
+
23
+ switch (contract) {
24
+ case 'registry': {
25
+ const registry = (await contracts?.getRegistry()!).connect(signer)
26
+
27
+ return registry.setSubnodeOwner(parentNodehash, labelhash, address)
28
+ }
29
+ case 'nameWrapper': {
30
+ const nameWrapper = (await contracts?.getNameWrapper()!).connect(signer)
31
+
32
+ return nameWrapper.setSubnodeOwner(parentNodehash, label, address, '0')
33
+ }
34
+ default: {
35
+ throw new Error(`Unknown contract: ${contract}`)
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,68 @@
1
+ import { ethers, utils } from 'ethers'
2
+ import { ENS } from '..'
3
+ import { namehash } from '../utils/normalise'
4
+ import setup from '../tests/setup'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+ let provider: ethers.providers.JsonRpcProvider
9
+ let accounts: string[]
10
+
11
+ beforeAll(async () => {
12
+ ;({ ENSInstance, revert, provider } = await setup())
13
+ accounts = await provider.listAccounts()
14
+ })
15
+
16
+ afterAll(async () => {
17
+ await revert()
18
+ })
19
+
20
+ describe('unwrapName', () => {
21
+ beforeEach(async () => {
22
+ await revert()
23
+ })
24
+ it('should return a .eth unwrap name transaction and succeed', async () => {
25
+ const wrapNameTx = await ENSInstance.wrapName(
26
+ 'parthtejpal.eth',
27
+ accounts[0],
28
+ )
29
+ await wrapNameTx.wait()
30
+
31
+ const tx = await ENSInstance.unwrapName(
32
+ 'parthtejpal.eth',
33
+ accounts[0],
34
+ accounts[0],
35
+ )
36
+ expect(tx).toBeTruthy()
37
+ await tx.wait()
38
+
39
+ const baseRegistrar = await ENSInstance.contracts!.getBaseRegistrar()!
40
+ const result = await baseRegistrar.ownerOf(
41
+ utils.solidityKeccak256(['string'], ['parthtejpal']),
42
+ )
43
+ expect(result).toBe(accounts[0])
44
+ })
45
+ it('should return a regular unwrap name transaction and succeed', async () => {
46
+ const wrapNameTx = await ENSInstance.wrapName(
47
+ 'parthtejpal.eth',
48
+ accounts[0],
49
+ )
50
+ await wrapNameTx.wait()
51
+ const createSubnameTx = await ENSInstance.createSubname({
52
+ contract: 'nameWrapper',
53
+ name: 'test.parthtejpal.eth',
54
+ owner: accounts[0],
55
+ shouldWrap: true,
56
+ options: { addressOrIndex: 0 },
57
+ })
58
+ await createSubnameTx.wait()
59
+
60
+ const tx = await ENSInstance.unwrapName('test.parthtejpal.eth', accounts[0])
61
+ expect(tx).toBeTruthy()
62
+ await tx.wait()
63
+
64
+ const registry = await ENSInstance.contracts!.getRegistry()!
65
+ const result = await registry.owner(namehash('test.parthtejpal.eth'))
66
+ expect(result).toBe(accounts[0])
67
+ })
68
+ })