@ensdomains/ensjs 2.1.0 → 3.0.0-alpha.11

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 (538) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +651 -99
  3. package/dist/cjs/GqlManager.d.ts +9 -0
  4. package/dist/cjs/GqlManager.js +102 -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/ethRegistrarController.d.ts +3 -0
  8. package/dist/cjs/contracts/ethRegistrarController.js +4 -0
  9. package/dist/cjs/contracts/getContractAddress.d.ts +3 -0
  10. package/dist/cjs/contracts/getContractAddress.js +46 -0
  11. package/dist/cjs/contracts/index.d.ts +16 -0
  12. package/dist/cjs/contracts/index.js +37 -0
  13. package/dist/cjs/contracts/multicall.d.ts +3 -0
  14. package/dist/cjs/contracts/multicall.js +22 -0
  15. package/dist/cjs/contracts/nameWrapper.d.ts +3 -0
  16. package/dist/cjs/contracts/nameWrapper.js +4 -0
  17. package/dist/cjs/contracts/publicResolver.d.ts +3 -0
  18. package/dist/cjs/contracts/publicResolver.js +4 -0
  19. package/dist/cjs/contracts/registry.d.ts +3 -0
  20. package/dist/cjs/contracts/registry.js +4 -0
  21. package/dist/cjs/contracts/reverseRegistrar.d.ts +3 -0
  22. package/dist/cjs/contracts/reverseRegistrar.js +4 -0
  23. package/dist/cjs/contracts/types.d.ts +2 -0
  24. package/dist/cjs/contracts/types.js +2 -0
  25. package/dist/cjs/contracts/universalResolver.d.ts +3 -0
  26. package/dist/cjs/contracts/universalResolver.js +4 -0
  27. package/dist/cjs/functions/batch.d.ts +9 -0
  28. package/dist/cjs/functions/batch.js +21 -0
  29. package/dist/cjs/functions/batchWrappers.d.ts +29 -0
  30. package/dist/cjs/functions/batchWrappers.js +71 -0
  31. package/dist/cjs/functions/burnFuses.d.ts +5 -0
  32. package/dist/cjs/functions/burnFuses.js +14 -0
  33. package/dist/cjs/functions/createSubname.d.ts +17 -0
  34. package/dist/cjs/functions/createSubname.js +42 -0
  35. package/dist/cjs/functions/deleteSubname.d.ts +4 -0
  36. package/dist/cjs/functions/deleteSubname.js +10 -0
  37. package/dist/cjs/functions/getDNSOwner.d.ts +7 -0
  38. package/dist/cjs/functions/getDNSOwner.js +81 -0
  39. package/dist/cjs/functions/getExpiry.d.ts +19 -0
  40. package/dist/cjs/functions/getExpiry.js +90 -0
  41. package/dist/cjs/functions/getFuses.d.ts +16 -0
  42. package/dist/cjs/functions/getFuses.js +53 -0
  43. package/dist/cjs/functions/getHistory.d.ts +54 -0
  44. package/dist/cjs/functions/getHistory.js +279 -0
  45. package/dist/cjs/functions/getName.d.ts +19 -0
  46. package/dist/cjs/functions/getName.js +34 -0
  47. package/dist/cjs/functions/getNames.d.ts +40 -0
  48. package/dist/cjs/functions/getNames.js +222 -0
  49. package/dist/cjs/functions/getOwner.d.ts +14 -0
  50. package/dist/cjs/functions/getOwner.js +140 -0
  51. package/dist/cjs/functions/getPrice.d.ts +13 -0
  52. package/dist/cjs/functions/getPrice.js +50 -0
  53. package/dist/cjs/functions/getProfile.d.ts +33 -0
  54. package/dist/cjs/functions/getProfile.js +346 -0
  55. package/dist/cjs/functions/getRecords.d.ts +33 -0
  56. package/dist/cjs/functions/getRecords.js +11 -0
  57. package/dist/cjs/functions/getResolver.d.ts +9 -0
  58. package/dist/cjs/functions/getResolver.js +24 -0
  59. package/dist/cjs/functions/getSpecificRecord.d.ts +73 -0
  60. package/dist/cjs/functions/getSpecificRecord.js +275 -0
  61. package/dist/cjs/functions/getSubnames.d.ts +26 -0
  62. package/dist/cjs/functions/getSubnames.js +154 -0
  63. package/dist/cjs/functions/initialGetters.d.ts +11 -0
  64. package/dist/cjs/functions/initialGetters.js +40 -0
  65. package/dist/cjs/functions/setName.d.ts +5 -0
  66. package/dist/cjs/functions/setName.js +12 -0
  67. package/dist/cjs/functions/setRecord.d.ts +18 -0
  68. package/dist/cjs/functions/setRecord.js +27 -0
  69. package/dist/cjs/functions/setRecords.d.ts +6 -0
  70. package/dist/cjs/functions/setRecords.js +24 -0
  71. package/dist/cjs/functions/setResolver.d.ts +5 -0
  72. package/dist/cjs/functions/setResolver.js +22 -0
  73. package/dist/cjs/functions/transferName.d.ts +6 -0
  74. package/dist/cjs/functions/transferName.js +29 -0
  75. package/dist/cjs/functions/transferSubname.d.ts +15 -0
  76. package/dist/cjs/functions/transferSubname.js +26 -0
  77. package/dist/cjs/functions/unwrapName.d.ts +5 -0
  78. package/dist/cjs/functions/unwrapName.js +23 -0
  79. package/dist/cjs/functions/wrapName.d.ts +10 -0
  80. package/dist/cjs/functions/wrapName.js +66 -0
  81. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +508 -0
  82. package/dist/cjs/generated/BaseRegistrarImplementation.js +2 -0
  83. package/dist/cjs/generated/DNSRegistrar.d.ts +224 -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/ENSRegistry.d.ts +274 -0
  90. package/dist/cjs/generated/ENSRegistry.js +2 -0
  91. package/dist/cjs/generated/ETHRegistrarController.d.ts +321 -0
  92. package/dist/cjs/generated/ETHRegistrarController.js +2 -0
  93. package/dist/cjs/generated/Multicall.d.ts +292 -0
  94. package/dist/cjs/generated/Multicall.js +2 -0
  95. package/dist/cjs/generated/NameWrapper.d.ts +814 -0
  96. package/dist/cjs/generated/NameWrapper.js +2 -0
  97. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +76 -0
  98. package/dist/cjs/generated/P256SHA256Algorithm.js +2 -0
  99. package/dist/cjs/generated/PublicResolver.d.ts +566 -0
  100. package/dist/cjs/generated/PublicResolver.js +2 -0
  101. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +46 -0
  102. package/dist/cjs/generated/RSASHA1Algorithm.js +2 -0
  103. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +46 -0
  104. package/dist/cjs/generated/RSASHA256Algorithm.js +2 -0
  105. package/dist/cjs/generated/ReverseRegistrar.d.ts +268 -0
  106. package/dist/cjs/generated/ReverseRegistrar.js +2 -0
  107. package/dist/cjs/generated/Root.d.ts +173 -0
  108. package/dist/cjs/generated/Root.js +2 -0
  109. package/dist/cjs/generated/SHA1Digest.d.ts +67 -0
  110. package/dist/cjs/generated/SHA1Digest.js +2 -0
  111. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +76 -0
  112. package/dist/cjs/generated/SHA1NSEC3Digest.js +2 -0
  113. package/dist/cjs/generated/SHA256Digest.d.ts +67 -0
  114. package/dist/cjs/generated/SHA256Digest.js +2 -0
  115. package/dist/cjs/generated/StaticMetadataService.d.ts +42 -0
  116. package/dist/cjs/generated/StaticMetadataService.js +2 -0
  117. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +42 -0
  118. package/dist/cjs/generated/TLDPublicSuffixList.js +2 -0
  119. package/dist/cjs/generated/UniversalResolver.d.ts +82 -0
  120. package/dist/cjs/generated/UniversalResolver.js +2 -0
  121. package/dist/cjs/generated/common.d.ts +22 -0
  122. package/dist/cjs/generated/common.js +2 -0
  123. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
  124. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +770 -0
  125. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +67 -0
  126. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +273 -0
  127. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +56 -0
  128. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +478 -0
  129. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
  130. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +87 -0
  131. package/dist/cjs/generated/factories/ENSRegistry__factory.d.ts +52 -0
  132. package/dist/cjs/generated/factories/ENSRegistry__factory.js +439 -0
  133. package/dist/cjs/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
  134. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +521 -0
  135. package/dist/cjs/generated/factories/Multicall__factory.d.ts +42 -0
  136. package/dist/cjs/generated/factories/Multicall__factory.js +457 -0
  137. package/dist/cjs/generated/factories/NameWrapper__factory.d.ts +57 -0
  138. package/dist/cjs/generated/factories/NameWrapper__factory.js +1331 -0
  139. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +22 -0
  140. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +48 -0
  141. package/dist/cjs/generated/factories/PublicResolver__factory.d.ts +46 -0
  142. package/dist/cjs/generated/factories/PublicResolver__factory.js +892 -0
  143. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +22 -0
  144. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +48 -0
  145. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +22 -0
  146. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +48 -0
  147. package/dist/cjs/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
  148. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +340 -0
  149. package/dist/cjs/generated/factories/Root__factory.d.ts +52 -0
  150. package/dist/cjs/generated/factories/Root__factory.js +243 -0
  151. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +22 -0
  152. package/dist/cjs/generated/factories/SHA1Digest__factory.js +43 -0
  153. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +22 -0
  154. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +48 -0
  155. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +22 -0
  156. package/dist/cjs/generated/factories/SHA256Digest__factory.js +43 -0
  157. package/dist/cjs/generated/factories/StaticMetadataService__factory.d.ts +32 -0
  158. package/dist/cjs/generated/factories/StaticMetadataService__factory.js +49 -0
  159. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +22 -0
  160. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +38 -0
  161. package/dist/cjs/generated/factories/UniversalResolver__factory.d.ts +42 -0
  162. package/dist/cjs/generated/factories/UniversalResolver__factory.js +204 -0
  163. package/dist/cjs/generated/factories/index.d.ts +20 -0
  164. package/dist/cjs/generated/factories/index.js +46 -0
  165. package/dist/cjs/generated/index.d.ts +41 -0
  166. package/dist/cjs/generated/index.js +67 -0
  167. package/dist/cjs/index.d.ts +478 -0
  168. package/dist/cjs/index.js +248 -0
  169. package/dist/cjs/utils/contentHash.d.ts +28 -0
  170. package/dist/cjs/utils/contentHash.js +164 -0
  171. package/dist/cjs/utils/createReverseNode.d.ts +2 -0
  172. package/dist/cjs/utils/createReverseNode.js +3 -0
  173. package/dist/cjs/utils/format.d.ts +3 -0
  174. package/dist/cjs/utils/format.js +9 -0
  175. package/dist/cjs/utils/fuses.d.ts +20 -0
  176. package/dist/cjs/utils/fuses.js +24 -0
  177. package/dist/cjs/utils/generateFuseInput.d.ts +3 -0
  178. package/dist/cjs/utils/generateFuseInput.js +19 -0
  179. package/dist/cjs/utils/hexEncodedName.d.ts +1 -0
  180. package/dist/cjs/utils/hexEncodedName.js +9 -0
  181. package/dist/cjs/utils/labels.d.ts +14 -0
  182. package/dist/cjs/utils/labels.js +113 -0
  183. package/dist/cjs/utils/makeHashIndexes.d.ts +2 -0
  184. package/dist/cjs/utils/makeHashIndexes.js +8 -0
  185. package/dist/cjs/utils/normalise.d.ts +2 -0
  186. package/dist/cjs/utils/normalise.js +35 -0
  187. package/dist/cjs/utils/recordHelpers.d.ts +16 -0
  188. package/dist/cjs/utils/recordHelpers.js +71 -0
  189. package/dist/cjs/utils/registerHelpers.d.ts +26 -0
  190. package/dist/cjs/utils/registerHelpers.js +52 -0
  191. package/dist/cjs/utils/singleCall.d.ts +9 -0
  192. package/dist/cjs/utils/singleCall.js +7 -0
  193. package/dist/cjs/utils/validation.d.ts +8 -0
  194. package/dist/cjs/utils/validation.js +73 -0
  195. package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
  196. package/dist/cjs/utils/wrapperExpiry.js +30 -0
  197. package/dist/cjs/utils/writeTx.d.ts +4 -0
  198. package/dist/cjs/utils/writeTx.js +3 -0
  199. package/dist/esm/GqlManager.d.ts +9 -0
  200. package/dist/esm/GqlManager.js +74 -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/ethRegistrarController.d.ts +3 -0
  204. package/dist/esm/contracts/ethRegistrarController.js +2 -0
  205. package/dist/esm/contracts/getContractAddress.d.ts +3 -0
  206. package/dist/esm/contracts/getContractAddress.js +42 -0
  207. package/dist/esm/contracts/index.d.ts +16 -0
  208. package/dist/esm/contracts/index.js +29 -0
  209. package/dist/esm/contracts/multicall.d.ts +3 -0
  210. package/dist/esm/contracts/multicall.js +20 -0
  211. package/dist/esm/contracts/nameWrapper.d.ts +3 -0
  212. package/dist/esm/contracts/nameWrapper.js +2 -0
  213. package/dist/esm/contracts/publicResolver.d.ts +3 -0
  214. package/dist/esm/contracts/publicResolver.js +2 -0
  215. package/dist/esm/contracts/registry.d.ts +3 -0
  216. package/dist/esm/contracts/registry.js +2 -0
  217. package/dist/esm/contracts/reverseRegistrar.d.ts +3 -0
  218. package/dist/esm/contracts/reverseRegistrar.js +2 -0
  219. package/dist/esm/contracts/types.d.ts +2 -0
  220. package/dist/esm/contracts/types.js +1 -0
  221. package/dist/esm/contracts/universalResolver.d.ts +3 -0
  222. package/dist/esm/contracts/universalResolver.js +2 -0
  223. package/dist/esm/functions/batch.d.ts +9 -0
  224. package/dist/esm/functions/batch.js +19 -0
  225. package/dist/esm/functions/batchWrappers.d.ts +29 -0
  226. package/dist/esm/functions/batchWrappers.js +68 -0
  227. package/dist/esm/functions/burnFuses.d.ts +5 -0
  228. package/dist/esm/functions/burnFuses.js +8 -0
  229. package/dist/esm/functions/createSubname.d.ts +17 -0
  230. package/dist/esm/functions/createSubname.js +36 -0
  231. package/dist/esm/functions/deleteSubname.d.ts +4 -0
  232. package/dist/esm/functions/deleteSubname.js +7 -0
  233. package/dist/esm/functions/getDNSOwner.d.ts +7 -0
  234. package/dist/esm/functions/getDNSOwner.js +51 -0
  235. package/dist/esm/functions/getExpiry.d.ts +19 -0
  236. package/dist/esm/functions/getExpiry.js +88 -0
  237. package/dist/esm/functions/getFuses.d.ts +16 -0
  238. package/dist/esm/functions/getFuses.js +51 -0
  239. package/dist/esm/functions/getHistory.d.ts +54 -0
  240. package/dist/esm/functions/getHistory.js +273 -0
  241. package/dist/esm/functions/getName.d.ts +19 -0
  242. package/dist/esm/functions/getName.js +32 -0
  243. package/dist/esm/functions/getNames.d.ts +40 -0
  244. package/dist/esm/functions/getNames.js +220 -0
  245. package/dist/esm/functions/getOwner.d.ts +14 -0
  246. package/dist/esm/functions/getOwner.js +138 -0
  247. package/dist/esm/functions/getPrice.d.ts +13 -0
  248. package/dist/esm/functions/getPrice.js +48 -0
  249. package/dist/esm/functions/getProfile.d.ts +33 -0
  250. package/dist/esm/functions/getProfile.js +343 -0
  251. package/dist/esm/functions/getRecords.d.ts +33 -0
  252. package/dist/esm/functions/getRecords.js +8 -0
  253. package/dist/esm/functions/getResolver.d.ts +9 -0
  254. package/dist/esm/functions/getResolver.js +22 -0
  255. package/dist/esm/functions/getSpecificRecord.d.ts +73 -0
  256. package/dist/esm/functions/getSpecificRecord.js +272 -0
  257. package/dist/esm/functions/getSubnames.d.ts +26 -0
  258. package/dist/esm/functions/getSubnames.js +152 -0
  259. package/dist/esm/functions/initialGetters.d.ts +11 -0
  260. package/dist/esm/functions/initialGetters.js +11 -0
  261. package/dist/esm/functions/setName.d.ts +5 -0
  262. package/dist/esm/functions/setName.js +9 -0
  263. package/dist/esm/functions/setRecord.d.ts +18 -0
  264. package/dist/esm/functions/setRecord.js +24 -0
  265. package/dist/esm/functions/setRecords.d.ts +6 -0
  266. package/dist/esm/functions/setRecords.js +21 -0
  267. package/dist/esm/functions/setResolver.d.ts +5 -0
  268. package/dist/esm/functions/setResolver.js +19 -0
  269. package/dist/esm/functions/transferName.d.ts +6 -0
  270. package/dist/esm/functions/transferName.js +26 -0
  271. package/dist/esm/functions/transferSubname.d.ts +15 -0
  272. package/dist/esm/functions/transferSubname.js +23 -0
  273. package/dist/esm/functions/unwrapName.d.ts +5 -0
  274. package/dist/esm/functions/unwrapName.js +20 -0
  275. package/dist/esm/functions/wrapName.d.ts +10 -0
  276. package/dist/esm/functions/wrapName.js +60 -0
  277. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +508 -0
  278. package/dist/esm/generated/BaseRegistrarImplementation.js +1 -0
  279. package/dist/esm/generated/DNSRegistrar.d.ts +224 -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/ENSRegistry.d.ts +274 -0
  286. package/dist/esm/generated/ENSRegistry.js +1 -0
  287. package/dist/esm/generated/ETHRegistrarController.d.ts +321 -0
  288. package/dist/esm/generated/ETHRegistrarController.js +1 -0
  289. package/dist/esm/generated/Multicall.d.ts +292 -0
  290. package/dist/esm/generated/Multicall.js +1 -0
  291. package/dist/esm/generated/NameWrapper.d.ts +814 -0
  292. package/dist/esm/generated/NameWrapper.js +1 -0
  293. package/dist/esm/generated/P256SHA256Algorithm.d.ts +76 -0
  294. package/dist/esm/generated/P256SHA256Algorithm.js +1 -0
  295. package/dist/esm/generated/PublicResolver.d.ts +566 -0
  296. package/dist/esm/generated/PublicResolver.js +1 -0
  297. package/dist/esm/generated/RSASHA1Algorithm.d.ts +46 -0
  298. package/dist/esm/generated/RSASHA1Algorithm.js +1 -0
  299. package/dist/esm/generated/RSASHA256Algorithm.d.ts +46 -0
  300. package/dist/esm/generated/RSASHA256Algorithm.js +1 -0
  301. package/dist/esm/generated/ReverseRegistrar.d.ts +268 -0
  302. package/dist/esm/generated/ReverseRegistrar.js +1 -0
  303. package/dist/esm/generated/Root.d.ts +173 -0
  304. package/dist/esm/generated/Root.js +1 -0
  305. package/dist/esm/generated/SHA1Digest.d.ts +67 -0
  306. package/dist/esm/generated/SHA1Digest.js +1 -0
  307. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +76 -0
  308. package/dist/esm/generated/SHA1NSEC3Digest.js +1 -0
  309. package/dist/esm/generated/SHA256Digest.d.ts +67 -0
  310. package/dist/esm/generated/SHA256Digest.js +1 -0
  311. package/dist/esm/generated/StaticMetadataService.d.ts +42 -0
  312. package/dist/esm/generated/StaticMetadataService.js +1 -0
  313. package/dist/esm/generated/TLDPublicSuffixList.d.ts +42 -0
  314. package/dist/esm/generated/TLDPublicSuffixList.js +1 -0
  315. package/dist/esm/generated/UniversalResolver.d.ts +82 -0
  316. package/dist/esm/generated/UniversalResolver.js +1 -0
  317. package/dist/esm/generated/common.d.ts +22 -0
  318. package/dist/esm/generated/common.js +1 -0
  319. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
  320. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +766 -0
  321. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +67 -0
  322. package/dist/esm/generated/factories/DNSRegistrar__factory.js +269 -0
  323. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +56 -0
  324. package/dist/esm/generated/factories/DNSSECImpl__factory.js +474 -0
  325. package/dist/esm/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
  326. package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +83 -0
  327. package/dist/esm/generated/factories/ENSRegistry__factory.d.ts +52 -0
  328. package/dist/esm/generated/factories/ENSRegistry__factory.js +435 -0
  329. package/dist/esm/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
  330. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +517 -0
  331. package/dist/esm/generated/factories/Multicall__factory.d.ts +42 -0
  332. package/dist/esm/generated/factories/Multicall__factory.js +453 -0
  333. package/dist/esm/generated/factories/NameWrapper__factory.d.ts +57 -0
  334. package/dist/esm/generated/factories/NameWrapper__factory.js +1327 -0
  335. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +22 -0
  336. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +44 -0
  337. package/dist/esm/generated/factories/PublicResolver__factory.d.ts +46 -0
  338. package/dist/esm/generated/factories/PublicResolver__factory.js +888 -0
  339. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +22 -0
  340. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +44 -0
  341. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +22 -0
  342. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +44 -0
  343. package/dist/esm/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
  344. package/dist/esm/generated/factories/ReverseRegistrar__factory.js +336 -0
  345. package/dist/esm/generated/factories/Root__factory.d.ts +52 -0
  346. package/dist/esm/generated/factories/Root__factory.js +239 -0
  347. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +22 -0
  348. package/dist/esm/generated/factories/SHA1Digest__factory.js +39 -0
  349. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +22 -0
  350. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +44 -0
  351. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +22 -0
  352. package/dist/esm/generated/factories/SHA256Digest__factory.js +39 -0
  353. package/dist/esm/generated/factories/StaticMetadataService__factory.d.ts +32 -0
  354. package/dist/esm/generated/factories/StaticMetadataService__factory.js +45 -0
  355. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +22 -0
  356. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +34 -0
  357. package/dist/esm/generated/factories/UniversalResolver__factory.d.ts +42 -0
  358. package/dist/esm/generated/factories/UniversalResolver__factory.js +200 -0
  359. package/dist/esm/generated/factories/index.d.ts +20 -0
  360. package/dist/esm/generated/factories/index.js +23 -0
  361. package/dist/esm/generated/index.d.ts +41 -0
  362. package/dist/esm/generated/index.js +21 -0
  363. package/dist/esm/index.d.ts +478 -0
  364. package/dist/esm/index.js +213 -0
  365. package/dist/esm/utils/contentHash.d.ts +28 -0
  366. package/dist/esm/utils/contentHash.js +153 -0
  367. package/dist/esm/utils/createReverseNode.d.ts +2 -0
  368. package/dist/esm/utils/createReverseNode.js +1 -0
  369. package/dist/esm/utils/format.d.ts +3 -0
  370. package/dist/esm/utils/format.js +3 -0
  371. package/dist/esm/utils/fuses.d.ts +20 -0
  372. package/dist/esm/utils/fuses.js +21 -0
  373. package/dist/esm/utils/generateFuseInput.d.ts +3 -0
  374. package/dist/esm/utils/generateFuseInput.js +14 -0
  375. package/dist/esm/utils/hexEncodedName.d.ts +1 -0
  376. package/dist/esm/utils/hexEncodedName.js +2 -0
  377. package/dist/esm/utils/labels.d.ts +14 -0
  378. package/dist/esm/utils/labels.js +96 -0
  379. package/dist/esm/utils/makeHashIndexes.d.ts +2 -0
  380. package/dist/esm/utils/makeHashIndexes.js +3 -0
  381. package/dist/esm/utils/normalise.d.ts +2 -0
  382. package/dist/esm/utils/normalise.js +27 -0
  383. package/dist/esm/utils/recordHelpers.d.ts +16 -0
  384. package/dist/esm/utils/recordHelpers.js +65 -0
  385. package/dist/esm/utils/registerHelpers.d.ts +26 -0
  386. package/dist/esm/utils/registerHelpers.js +43 -0
  387. package/dist/esm/utils/singleCall.d.ts +9 -0
  388. package/dist/esm/utils/singleCall.js +5 -0
  389. package/dist/esm/utils/validation.d.ts +8 -0
  390. package/dist/esm/utils/validation.js +67 -0
  391. package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
  392. package/dist/esm/utils/wrapperExpiry.js +26 -0
  393. package/dist/esm/utils/writeTx.d.ts +4 -0
  394. package/dist/esm/utils/writeTx.js +1 -0
  395. package/package.json +81 -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/Multicall.json +452 -0
  403. package/src/GqlManager.test.ts +170 -0
  404. package/src/GqlManager.ts +83 -0
  405. package/src/contracts/baseRegistrar.ts +5 -0
  406. package/src/contracts/ethRegistrarController.ts +5 -0
  407. package/src/contracts/getContractAddress.ts +52 -0
  408. package/src/contracts/index.ts +68 -0
  409. package/src/contracts/multicall.ts +24 -0
  410. package/src/contracts/nameWrapper.ts +5 -0
  411. package/src/contracts/publicResolver.ts +5 -0
  412. package/src/contracts/registry.ts +5 -0
  413. package/src/contracts/reverseRegistrar.ts +5 -0
  414. package/src/contracts/types.ts +11 -0
  415. package/src/contracts/universalResolver.ts +5 -0
  416. package/src/functions/batch.test.ts +36 -0
  417. package/src/functions/batch.ts +36 -0
  418. package/src/functions/batchWrappers.test.ts +31 -0
  419. package/src/functions/batchWrappers.ts +91 -0
  420. package/src/functions/burnFuses.test.ts +40 -0
  421. package/src/functions/burnFuses.ts +21 -0
  422. package/src/functions/createSubname.test.ts +51 -0
  423. package/src/functions/createSubname.ts +88 -0
  424. package/src/functions/deleteSubname.test.ts +53 -0
  425. package/src/functions/deleteSubname.ts +17 -0
  426. package/src/functions/getDNSOwner.test.ts +118 -0
  427. package/src/functions/getDNSOwner.ts +61 -0
  428. package/src/functions/getExpiry.test.ts +59 -0
  429. package/src/functions/getExpiry.ts +141 -0
  430. package/src/functions/getFuses.test.ts +82 -0
  431. package/src/functions/getFuses.ts +70 -0
  432. package/src/functions/getHistory.test.ts +113 -0
  433. package/src/functions/getHistory.ts +347 -0
  434. package/src/functions/getName.test.ts +47 -0
  435. package/src/functions/getName.ts +41 -0
  436. package/src/functions/getNames.test.ts +276 -0
  437. package/src/functions/getNames.ts +275 -0
  438. package/src/functions/getOwner.test.ts +58 -0
  439. package/src/functions/getOwner.ts +202 -0
  440. package/src/functions/getPrice.ts +71 -0
  441. package/src/functions/getProfile.test.ts +143 -0
  442. package/src/functions/getProfile.ts +606 -0
  443. package/src/functions/getRecords.ts +23 -0
  444. package/src/functions/getResolver.test.ts +15 -0
  445. package/src/functions/getResolver.ts +32 -0
  446. package/src/functions/getSpecificRecord.test.ts +79 -0
  447. package/src/functions/getSpecificRecord.ts +371 -0
  448. package/src/functions/getSubnames.test.ts +35 -0
  449. package/src/functions/getSubnames.ts +197 -0
  450. package/src/functions/initialGetters.ts +11 -0
  451. package/src/functions/makeCommitment.test.ts +23 -0
  452. package/src/functions/normalise.test.ts +22 -0
  453. package/src/functions/setName.test.ts +58 -0
  454. package/src/functions/setName.ts +32 -0
  455. package/src/functions/setRecord.test.ts +103 -0
  456. package/src/functions/setRecord.ts +63 -0
  457. package/src/functions/setRecords.test.ts +61 -0
  458. package/src/functions/setRecords.ts +44 -0
  459. package/src/functions/setResolver.test.ts +54 -0
  460. package/src/functions/setResolver.ts +35 -0
  461. package/src/functions/transferName.test.ts +65 -0
  462. package/src/functions/transferName.ts +53 -0
  463. package/src/functions/transferSubname.test.ts +55 -0
  464. package/src/functions/transferSubname.ts +63 -0
  465. package/src/functions/unwrapName.test.ts +53 -0
  466. package/src/functions/unwrapName.ts +43 -0
  467. package/src/functions/wrapName.test.ts +142 -0
  468. package/src/functions/wrapName.ts +142 -0
  469. package/src/generated/BaseRegistrarImplementation.ts +1208 -0
  470. package/src/generated/DNSRegistrar.ts +459 -0
  471. package/src/generated/DNSSECImpl.ts +801 -0
  472. package/src/generated/DefaultReverseResolver.ts +153 -0
  473. package/src/generated/ENSRegistry.ts +691 -0
  474. package/src/generated/ETHRegistrarController.ts +804 -0
  475. package/src/generated/Multicall.ts +598 -0
  476. package/src/generated/NameWrapper.ts +2024 -0
  477. package/src/generated/P256SHA256Algorithm.ts +144 -0
  478. package/src/generated/PublicResolver.ts +1416 -0
  479. package/src/generated/RSASHA1Algorithm.ts +114 -0
  480. package/src/generated/RSASHA256Algorithm.ts +114 -0
  481. package/src/generated/ReverseRegistrar.ts +608 -0
  482. package/src/generated/Root.ts +437 -0
  483. package/src/generated/SHA1Digest.ts +130 -0
  484. package/src/generated/SHA1NSEC3Digest.ts +145 -0
  485. package/src/generated/SHA256Digest.ts +130 -0
  486. package/src/generated/StaticMetadataService.ts +101 -0
  487. package/src/generated/TLDPublicSuffixList.ts +103 -0
  488. package/src/generated/UniversalResolver.ts +264 -0
  489. package/src/generated/common.ts +46 -0
  490. package/src/generated/factories/BaseRegistrarImplementation__factory.ts +781 -0
  491. package/src/generated/factories/DNSRegistrar__factory.ts +277 -0
  492. package/src/generated/factories/DNSSECImpl__factory.ts +482 -0
  493. package/src/generated/factories/DefaultReverseResolver__factory.ts +98 -0
  494. package/src/generated/factories/ENSRegistry__factory.ts +443 -0
  495. package/src/generated/factories/ETHRegistrarController__factory.ts +532 -0
  496. package/src/generated/factories/Multicall__factory.ts +461 -0
  497. package/src/generated/factories/NameWrapper__factory.ts +1335 -0
  498. package/src/generated/factories/P256SHA256Algorithm__factory.ts +55 -0
  499. package/src/generated/factories/PublicResolver__factory.ts +899 -0
  500. package/src/generated/factories/RSASHA1Algorithm__factory.ts +55 -0
  501. package/src/generated/factories/RSASHA256Algorithm__factory.ts +55 -0
  502. package/src/generated/factories/ReverseRegistrar__factory.ts +347 -0
  503. package/src/generated/factories/Root__factory.ts +244 -0
  504. package/src/generated/factories/SHA1Digest__factory.ts +47 -0
  505. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +55 -0
  506. package/src/generated/factories/SHA256Digest__factory.ts +47 -0
  507. package/src/generated/factories/StaticMetadataService__factory.ts +60 -0
  508. package/src/generated/factories/TLDPublicSuffixList__factory.ts +45 -0
  509. package/src/generated/factories/UniversalResolver__factory.ts +211 -0
  510. package/src/generated/factories/index.ts +23 -0
  511. package/src/generated/index.ts +44 -0
  512. package/src/index.ts +596 -0
  513. package/src/tests/populateTransaction.test.ts +40 -0
  514. package/src/tests/setup.ts +58 -0
  515. package/src/tests/signerInjection.test.ts +46 -0
  516. package/src/tests/withProvider.test.ts +28 -0
  517. package/src/utils/contentHash.ts +151 -0
  518. package/src/utils/createReverseNode.ts +2 -0
  519. package/src/utils/format.ts +8 -0
  520. package/src/utils/fuses.ts +23 -0
  521. package/src/utils/generateFuseInput.ts +18 -0
  522. package/src/utils/hexEncodedName.ts +4 -0
  523. package/src/utils/labels.ts +121 -0
  524. package/src/utils/makeHashIndexes.ts +9 -0
  525. package/src/utils/normalise.ts +33 -0
  526. package/src/utils/recordHelpers.ts +106 -0
  527. package/src/utils/registerHelpers.ts +87 -0
  528. package/src/utils/singleCall.ts +16 -0
  529. package/src/utils/validation.ts +73 -0
  530. package/src/utils/wrapperExpiry.ts +31 -0
  531. package/src/utils/writeTx.ts +6 -0
  532. package/dist/constants/interfaces.js +0 -13
  533. package/dist/index.js +0 -1135
  534. package/dist/utils/contents.js +0 -126
  535. package/dist/utils/index.js +0 -192
  536. package/dist/utils/labelhash.js +0 -55
  537. package/dist/utils/namehash.js +0 -39
  538. package/dist/utils/records.js +0 -56
@@ -0,0 +1,83 @@
1
+ // @ts-nocheck
2
+ import { namehash } from './utils/normalise'
3
+
4
+ const generateSelection = (selection: any) => ({
5
+ kind: 'Field',
6
+ name: {
7
+ kind: 'Name',
8
+ value: selection,
9
+ },
10
+ arguments: [],
11
+ directives: [],
12
+ alias: undefined,
13
+ selectionSet: undefined,
14
+ })
15
+
16
+ export const enter = (node: any) => {
17
+ if (node.kind === 'SelectionSet') {
18
+ const id = node.selections.find((x) => x.name && x.name.value === 'id')
19
+ const name = node.selections.find((x) => x.name && x.name.value === 'name')
20
+
21
+ if (!id && name) {
22
+ node.selections = [...node.selections, generateSelection('id')]
23
+ return node
24
+ }
25
+ }
26
+ }
27
+
28
+ export const requestMiddleware = (visit, parse) => (request: any) => {
29
+ const requestBody = JSON.parse(request.body)
30
+ const rawQuery = requestBody.query
31
+ const parsedQuery = parse(rawQuery)
32
+ const updatedQuery = visit(parsedQuery, { enter })
33
+ const updatedBody = { ...requestBody, query: updatedQuery.loc.source.body }
34
+
35
+ return {
36
+ ...request,
37
+ body: JSON.stringify(updatedBody),
38
+ }
39
+ }
40
+
41
+ export const responseMiddleware = (traverse) => (response: any) => {
42
+ traverse(response).forEach(function (responseItem: any) {
43
+ if (responseItem instanceof Object && responseItem.name) {
44
+ //Name already in hashed form
45
+ if (responseItem.name && responseItem.name.includes('[')) {
46
+ return
47
+ }
48
+
49
+ const hashedName = namehash(responseItem.name)
50
+ if (responseItem.id !== hashedName) {
51
+ this.update({ ...responseItem, name: hashedName, invalidName: true })
52
+ }
53
+ }
54
+ })
55
+ return response
56
+ }
57
+
58
+ export default class GqlManager {
59
+ public gql: any = () => null
60
+ public client?: any | null = null
61
+
62
+ public setUrl = async (url: string | null) => {
63
+ if (url) {
64
+ const [imported, traverse, { visit, parse }] = await Promise.all([
65
+ import('graphql-request'),
66
+ import('traverse'),
67
+ import('graphql/language'),
68
+ ])
69
+
70
+ this.client = new imported.GraphQLClient(url, {
71
+ requestMiddleware: requestMiddleware(visit, parse),
72
+ responseMiddleware: responseMiddleware(traverse.default),
73
+ })
74
+ this.gql = imported.gql
75
+ } else {
76
+ this.client = null
77
+ this.gql = () => null
78
+ }
79
+ }
80
+
81
+ public request = (...arg: any[]) =>
82
+ this.client ? this.client.request(...arg) : null
83
+ }
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { BaseRegistrarImplementation__factory } from '../generated/factories/BaseRegistrarImplementation__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ BaseRegistrarImplementation__factory.connect(address, provider)
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { ETHRegistrarController__factory } from '../generated/factories/ETHRegistrarController__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ ETHRegistrarController__factory.connect(address, provider)
@@ -0,0 +1,52 @@
1
+ import { ContractName, SupportedNetworkId } from './types'
2
+
3
+ const addresses: Record<
4
+ ContractName,
5
+ Partial<Record<SupportedNetworkId, string>> | string
6
+ > = {
7
+ BaseRegistrarImplementation: {
8
+ '1': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
9
+ '3': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
10
+ '4': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
11
+ '5': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
12
+ },
13
+ ETHRegistrarController: {
14
+ '1': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
15
+ '3': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
16
+ '4': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
17
+ '5': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
18
+ },
19
+ Multicall: '0xcA11bde05977b3631167028862bE2a173976CA11',
20
+ NameWrapper: '0x0000000000000000000000000000000000000000',
21
+ PublicResolver: {
22
+ '1': '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41',
23
+ },
24
+ ENSRegistryWithFallback: {
25
+ '1': '0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e',
26
+ '3': '0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e',
27
+ '4': '0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e',
28
+ '5': '0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e',
29
+ },
30
+ ReverseRegistrar: {
31
+ '1': '0x084b1c3C81545d370f3634392De611CaaBFf8148',
32
+ },
33
+ UniversalResolver: {
34
+ '1': '0x580AF46E06DaaD47eb5940526FD64d95b815Cb70',
35
+ '4': '0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376',
36
+ },
37
+ }
38
+
39
+ export type ContractAddressFetch = (contractName: ContractName) => string
40
+
41
+ export const getContractAddress = (networkId: SupportedNetworkId) =>
42
+ ((contractName: ContractName) => {
43
+ try {
44
+ return typeof addresses[contractName] === 'string'
45
+ ? addresses[contractName]
46
+ : addresses[contractName][networkId]
47
+ } catch {
48
+ throw new Error(
49
+ `No address for contract ${contractName} on network ${networkId}`,
50
+ )
51
+ }
52
+ }) as ContractAddressFetch
@@ -0,0 +1,68 @@
1
+ import { ethers } from 'ethers'
2
+ import getBaseRegistrar from './baseRegistrar'
3
+ import getEthRegistrarController from './ethRegistrarController'
4
+ import { ContractAddressFetch } from './getContractAddress'
5
+ import getMulticall from './multicall'
6
+ import getNameWrapper from './nameWrapper'
7
+ import getPublicResolver from './publicResolver'
8
+ import getRegistry from './registry'
9
+ import getReverseRegistrar from './reverseRegistrar'
10
+ import { ContractName } from './types'
11
+ import getUniversalResolver from './universalResolver'
12
+
13
+ export default class ContractManager {
14
+ private provider: ethers.providers.Provider
15
+ private fetchAddress: ContractAddressFetch
16
+
17
+ constructor(
18
+ provider: ethers.providers.Provider,
19
+ fetchAddress: ContractAddressFetch,
20
+ ) {
21
+ this.provider = provider
22
+ this.fetchAddress = fetchAddress
23
+ }
24
+
25
+ private generateContractGetter = <C extends (...args: any) => any>(
26
+ name: ContractName,
27
+ func: C,
28
+ ): ((passedProvider?: any, address?: string) => Promise<ReturnType<C>>) => {
29
+ return async (
30
+ passedProvider?: any,
31
+ address?: string,
32
+ ): Promise<ReturnType<C>> => {
33
+ const inputAddress = address || this.fetchAddress(name)
34
+ const provider = passedProvider || this.provider
35
+ return func(provider, inputAddress)
36
+ }
37
+ }
38
+
39
+ public getPublicResolver = this.generateContractGetter(
40
+ 'PublicResolver',
41
+ getPublicResolver,
42
+ )
43
+ public getUniversalResolver = this.generateContractGetter(
44
+ 'UniversalResolver',
45
+ getUniversalResolver,
46
+ )
47
+ public getRegistry = this.generateContractGetter(
48
+ 'ENSRegistryWithFallback',
49
+ getRegistry,
50
+ )
51
+ public getReverseRegistrar = this.generateContractGetter(
52
+ 'ReverseRegistrar',
53
+ getReverseRegistrar,
54
+ )
55
+ public getNameWrapper = this.generateContractGetter(
56
+ 'NameWrapper',
57
+ getNameWrapper,
58
+ )
59
+ public getBaseRegistrar = this.generateContractGetter(
60
+ 'BaseRegistrarImplementation',
61
+ getBaseRegistrar,
62
+ )
63
+ public getEthRegistrarController = this.generateContractGetter(
64
+ 'ETHRegistrarController',
65
+ getEthRegistrarController,
66
+ )
67
+ public getMulticall = this.generateContractGetter('Multicall', getMulticall)
68
+ }
@@ -0,0 +1,24 @@
1
+ import { ethers } from 'ethers'
2
+ import { Multicall__factory } from '../generated/factories/Multicall__factory'
3
+
4
+ const ABI = [
5
+ 'function aggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes[] returnData)',
6
+ 'function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
7
+ 'function aggregate3Value(tuple(address target, bool allowFailure, uint256 value, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
8
+ 'function blockAndAggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)',
9
+ 'function getBasefee() view returns (uint256 basefee)',
10
+ 'function getBlockHash(uint256 blockNumber) view returns (bytes32 blockHash)',
11
+ 'function getBlockNumber() view returns (uint256 blockNumber)',
12
+ 'function getChainId() view returns (uint256 chainid)',
13
+ 'function getCurrentBlockCoinbase() view returns (address coinbase)',
14
+ 'function getCurrentBlockDifficulty() view returns (uint256 difficulty)',
15
+ 'function getCurrentBlockGasLimit() view returns (uint256 gaslimit)',
16
+ 'function getCurrentBlockTimestamp() view returns (uint256 timestamp)',
17
+ 'function getEthBalance(address addr) view returns (uint256 balance)',
18
+ 'function getLastBlockHash() view returns (bytes32 blockHash)',
19
+ 'function tryAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
20
+ 'function tryBlockAndAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)',
21
+ ]
22
+
23
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
24
+ Multicall__factory.connect(address, provider)
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { NameWrapper__factory } from '../generated/factories/NameWrapper__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ NameWrapper__factory.connect(address, provider)
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { PublicResolver__factory } from '../generated/factories/PublicResolver__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ PublicResolver__factory.connect(address, provider)
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENSRegistry__factory } from '../generated/factories/ENSRegistry__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ ENSRegistry__factory.connect(address, provider)
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { ReverseRegistrar__factory } from '../generated/factories/ReverseRegistrar__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ ReverseRegistrar__factory.connect(address, provider)
@@ -0,0 +1,11 @@
1
+ export type SupportedNetworkId = '1' | '3' | '4' | '5' | '1337'
2
+
3
+ export type ContractName =
4
+ | 'BaseRegistrarImplementation'
5
+ | 'ETHRegistrarController'
6
+ | 'Multicall'
7
+ | 'NameWrapper'
8
+ | 'PublicResolver'
9
+ | 'ENSRegistryWithFallback'
10
+ | 'ReverseRegistrar'
11
+ | 'UniversalResolver'
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { UniversalResolver__factory } from '../generated/factories/UniversalResolver__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ UniversalResolver__factory.connect(address, provider)
@@ -0,0 +1,36 @@
1
+ import { ENS } from '..'
2
+ import setup from '../tests/setup'
3
+
4
+ let ENSInstance: ENS
5
+
6
+ beforeAll(async () => {
7
+ ;({ ENSInstance } = await setup())
8
+ })
9
+
10
+ describe('batch', () => {
11
+ it('should batch calls together', async () => {
12
+ const result = await ENSInstance.batch(
13
+ ENSInstance.getText.batch('with-profile.eth', 'description'),
14
+ ENSInstance.getAddr.batch('with-profile.eth'),
15
+ ENSInstance.getName.batch('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'),
16
+ )
17
+ expect(result).toBeTruthy()
18
+ if (result) {
19
+ expect(result[0]).toBe('Hello2')
20
+ expect(result[1]).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
21
+ expect(result[2]).toMatchObject({
22
+ name: 'with-profile.eth',
23
+ match: true,
24
+ })
25
+ }
26
+ })
27
+ it('should batch a single call', async () => {
28
+ const result = await ENSInstance.batch(
29
+ ENSInstance.getText.batch('with-profile.eth', 'description'),
30
+ )
31
+ expect(result).toBeTruthy()
32
+ if (result) {
33
+ expect(result[0]).toBe('Hello2')
34
+ }
35
+ })
36
+ })
@@ -0,0 +1,36 @@
1
+ import { BatchFunctionResult, ENSArgs, RawFunction } from '..'
2
+
3
+ const raw = async (
4
+ { multicallWrapper }: ENSArgs<'multicallWrapper'>,
5
+ ...items: BatchFunctionResult<RawFunction>[]
6
+ ) => {
7
+ const rawDataArr: { to: string; data: string }[] = await Promise.all(
8
+ items.map(({ args, raw }, i: number) => {
9
+ if (!raw) {
10
+ throw new Error(`Function ${i} is not batchable`)
11
+ }
12
+ return raw(...args)
13
+ }),
14
+ )
15
+ return multicallWrapper.raw(rawDataArr)
16
+ }
17
+
18
+ const decode = async (
19
+ { multicallWrapper }: ENSArgs<'multicallWrapper'>,
20
+ data: string,
21
+ ...items: BatchFunctionResult<RawFunction>[]
22
+ ): Promise<any[] | undefined> => {
23
+ const response = await multicallWrapper.decode(data)
24
+ if (!response) return
25
+
26
+ return Promise.all(
27
+ response.map((ret: any, i: number) =>
28
+ items[i].decode(ret.returnData, ...items[i].args),
29
+ ),
30
+ )
31
+ }
32
+
33
+ export default {
34
+ raw,
35
+ decode,
36
+ }
@@ -0,0 +1,31 @@
1
+ import { ENS } from '..'
2
+ import setup from '../tests/setup'
3
+
4
+ let ENSInstance: ENS
5
+
6
+ beforeAll(async () => {
7
+ ;({ ENSInstance } = await setup())
8
+ })
9
+
10
+ describe('batchWrappers', () => {
11
+ it('should batch calls together', async () => {
12
+ const batch = await ENSInstance.resolverMulticallWrapper.raw([
13
+ await ENSInstance._getText.raw('with-profile.eth', 'description'),
14
+ await ENSInstance._getText.raw('with-profile.eth', 'url'),
15
+ await ENSInstance._getAddr.raw('with-profile.eth'),
16
+ ])
17
+ const universalResponse = await ENSInstance.universalWrapper(
18
+ 'with-profile.eth',
19
+ batch.data,
20
+ )
21
+ const [batchDecoded] = await ENSInstance.resolverMulticallWrapper.decode(
22
+ universalResponse?.data,
23
+ )
24
+ const decoded1 = await ENSInstance._getText.decode(batchDecoded[0])
25
+ const decoded2 = await ENSInstance._getText.decode(batchDecoded[1])
26
+ const decoded3 = await ENSInstance._getAddr.decode(batchDecoded[2])
27
+ expect(decoded1).toBe('Hello2')
28
+ expect(decoded2).toBe('twitter.com')
29
+ expect(decoded3).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
30
+ })
31
+ })
@@ -0,0 +1,91 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENSArgs } from '..'
3
+ import { hexEncodeName } from '../utils/hexEncodedName'
4
+
5
+ export const universalWrapper = {
6
+ raw: async (
7
+ { contracts }: ENSArgs<'contracts'>,
8
+ name: string,
9
+ data: string,
10
+ ) => {
11
+ const universalResolver = await contracts?.getUniversalResolver()!
12
+ return {
13
+ to: universalResolver.address,
14
+ data: universalResolver.interface.encodeFunctionData('resolve', [
15
+ hexEncodeName(name),
16
+ data,
17
+ ]),
18
+ }
19
+ },
20
+ decode: async ({ contracts }: ENSArgs<'contracts'>, data: string) => {
21
+ const universalResolver = await contracts?.getUniversalResolver()!
22
+ const response = universalResolver.interface.decodeFunctionResult(
23
+ 'resolve',
24
+ data,
25
+ )
26
+ if (!response || !response[0]) {
27
+ return
28
+ }
29
+ return { data: response[0], resolver: response[1] }
30
+ },
31
+ }
32
+
33
+ export const resolverMulticallWrapper = {
34
+ raw: async (
35
+ { contracts }: ENSArgs<'contracts'>,
36
+ data: { to: string; data: string }[],
37
+ ) => {
38
+ const publicResolver = await contracts?.getPublicResolver()!
39
+ const formattedDataArr = data.map((item) => (item as any).data)
40
+ return {
41
+ to: publicResolver.address,
42
+ data: publicResolver.interface.encodeFunctionData('multicall', [
43
+ formattedDataArr,
44
+ ]),
45
+ }
46
+ },
47
+ decode: async ({ contracts }: ENSArgs<'contracts'>, data: string) => {
48
+ const publicResolver = await contracts?.getPublicResolver()!
49
+ const response = publicResolver.interface.decodeFunctionResult(
50
+ 'multicall',
51
+ data,
52
+ )
53
+ if (!response) {
54
+ return
55
+ }
56
+ return response
57
+ },
58
+ }
59
+
60
+ export const multicallWrapper = {
61
+ raw: async function (
62
+ { contracts }: ENSArgs<'contracts'>,
63
+ transactions: ethers.providers.TransactionRequest[],
64
+ requireSuccess: boolean = false,
65
+ ) {
66
+ const multicall = await contracts?.getMulticall()!
67
+ return {
68
+ to: multicall.address,
69
+ data: multicall.interface.encodeFunctionData('tryAggregate', [
70
+ requireSuccess,
71
+ transactions.map((tx) => ({
72
+ target: tx.to!,
73
+ callData: tx.data!,
74
+ })),
75
+ ]),
76
+ }
77
+ },
78
+ decode: async function ({ contracts }: ENSArgs<'contracts'>, data: string) {
79
+ if (!data) return
80
+ const multicall = await contracts?.getMulticall()!
81
+ try {
82
+ const [result] = multicall.interface.decodeFunctionResult(
83
+ 'tryAggregate',
84
+ data,
85
+ )
86
+ return result
87
+ } catch {
88
+ return
89
+ }
90
+ },
91
+ }
@@ -0,0 +1,40 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import setup from '../tests/setup'
4
+ import { namehash } from '../utils/normalise'
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('burnFuses', () => {
21
+ beforeEach(async () => {
22
+ await revert()
23
+ })
24
+ it('should return a burnFuses transaction and succeed', async () => {
25
+ const tx = await ENSInstance.burnFuses('wrapped.eth', {
26
+ fusesToBurn: {
27
+ cannotUnwrap: true,
28
+ cannotCreateSubdomain: true,
29
+ cannotSetTtl: true,
30
+ },
31
+ addressOrIndex: accounts[1],
32
+ })
33
+ expect(tx).toBeTruthy()
34
+ await tx.wait()
35
+
36
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
37
+ const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
38
+ expect(fuses).toBe(113)
39
+ })
40
+ })
@@ -0,0 +1,21 @@
1
+ import { ENSArgs } from '..'
2
+ import { FuseOptions } from '../@types/FuseOptions'
3
+ import generateFuseInput from '../utils/generateFuseInput'
4
+ import { namehash } from '../utils/normalise'
5
+
6
+ export default async function (
7
+ { contracts, signer }: ENSArgs<'contracts' | 'signer'>,
8
+ name: string,
9
+ {
10
+ fusesToBurn,
11
+ }: {
12
+ fusesToBurn: FuseOptions
13
+ },
14
+ ) {
15
+ const nameWrapper = (await contracts?.getNameWrapper()!).connect(signer)
16
+ const hash = namehash(name)
17
+
18
+ const encodedFuses = generateFuseInput(fusesToBurn)
19
+
20
+ return nameWrapper.populateTransaction.setFuses(hash, encodedFuses)
21
+ }
@@ -0,0 +1,51 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import setup from '../tests/setup'
4
+ import { namehash } from '../utils/normalise'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+ let createSnapshot: Awaited<ReturnType<typeof setup>>['createSnapshot']
9
+ let provider: ethers.providers.JsonRpcProvider
10
+ let accounts: string[]
11
+
12
+ beforeAll(async () => {
13
+ ;({ ENSInstance, revert, createSnapshot, provider } = await setup())
14
+ accounts = await provider.listAccounts()
15
+ })
16
+
17
+ afterAll(async () => {
18
+ await revert()
19
+ })
20
+
21
+ describe('createSubname', () => {
22
+ beforeEach(async () => {
23
+ await revert()
24
+ })
25
+ it('should allow creating a subname on the registry', async () => {
26
+ const tx = await ENSInstance.createSubname('test.test123.eth', {
27
+ contract: 'registry',
28
+ owner: accounts[0],
29
+ addressOrIndex: 1,
30
+ })
31
+ expect(tx).toBeTruthy()
32
+ await tx.wait()
33
+
34
+ const registry = await ENSInstance.contracts!.getRegistry()!
35
+ const result = await registry.owner(namehash('test.test123.eth'))
36
+ expect(result).toBe(accounts[0])
37
+ })
38
+ it('should allow creating a subname on the namewrapper', async () => {
39
+ const tx = await ENSInstance.createSubname('test.wrapped.eth', {
40
+ contract: 'nameWrapper',
41
+ owner: accounts[0],
42
+ addressOrIndex: 1,
43
+ })
44
+ expect(tx).toBeTruthy()
45
+ await tx.wait()
46
+
47
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
48
+ const result = await nameWrapper.ownerOf(namehash('test.wrapped.eth'))
49
+ expect(result).toBe(accounts[0])
50
+ })
51
+ })