@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
package/src/index.ts ADDED
@@ -0,0 +1,596 @@
1
+ import { JsonRpcSigner } from '@ethersproject/providers'
2
+ import { ContractTransaction, ethers, PopulatedTransaction } from 'ethers'
3
+ import ContractManager from './contracts'
4
+ import { getContractAddress as _getContractAddress } from './contracts/getContractAddress'
5
+ import { SupportedNetworkId } from './contracts/types'
6
+ import type batch from './functions/batch'
7
+ import type {
8
+ multicallWrapper,
9
+ resolverMulticallWrapper,
10
+ universalWrapper,
11
+ } from './functions/batchWrappers'
12
+ import type burnFuses from './functions/burnFuses'
13
+ import type createSubname from './functions/createSubname'
14
+ import type deleteSubname from './functions/deleteSubname'
15
+ import type getDNSOwner from './functions/getDNSOwner'
16
+ import type getExpiry from './functions/getExpiry'
17
+ import type getFuses from './functions/getFuses'
18
+ import type {
19
+ getHistory,
20
+ getHistoryDetailForTransactionHash,
21
+ getHistoryWithDetail,
22
+ } from './functions/getHistory'
23
+ import type getName from './functions/getName'
24
+ import type getNames from './functions/getNames'
25
+ import type getOwner from './functions/getOwner'
26
+ import type getPrice from './functions/getPrice'
27
+ import type getProfile from './functions/getProfile'
28
+ import type getRecords from './functions/getRecords'
29
+ import type getResolver from './functions/getResolver'
30
+ import type {
31
+ getAddr,
32
+ getContentHash,
33
+ getText,
34
+ _getAddr,
35
+ _getContentHash,
36
+ _getText,
37
+ } from './functions/getSpecificRecord'
38
+ import type getSubnames from './functions/getSubnames'
39
+ import type setName from './functions/setName'
40
+ import type setRecord from './functions/setRecord'
41
+ import type setRecords from './functions/setRecords'
42
+ import type setResolver from './functions/setResolver'
43
+ import type transferName from './functions/transferName'
44
+ import type transferSubname from './functions/transferSubname'
45
+ import type unwrapName from './functions/unwrapName'
46
+ import type wrapName from './functions/wrapName'
47
+ import GqlManager from './GqlManager'
48
+ import singleCall from './utils/singleCall'
49
+ import writeTx from './utils/writeTx'
50
+
51
+ type ENSOptions = {
52
+ graphURI?: string | null
53
+ getContractAddress?: typeof _getContractAddress
54
+ }
55
+
56
+ export type InternalENS = {
57
+ options?: ENSOptions
58
+ provider?: ethers.providers.Provider
59
+ signer: JsonRpcSigner
60
+ graphURI?: string | null
61
+ } & ENS
62
+
63
+ export type ENSArgs<K extends keyof InternalENS> = {
64
+ [P in K]: InternalENS[P]
65
+ }
66
+
67
+ type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R
68
+ ? (...args: P) => R
69
+ : never
70
+
71
+ type OmitFirstTwoArgs<F> = F extends (
72
+ x: any,
73
+ y: any,
74
+ ...args: infer P
75
+ ) => infer R
76
+ ? (...args: P) => R
77
+ : never
78
+
79
+ type FirstArg<F> = F extends (x: infer A, ...args: any[]) => any ? A : never
80
+
81
+ type FunctionDeps<F> = Extract<keyof FirstArg<F>, string>[]
82
+
83
+ type WriteOptions = {
84
+ addressOrIndex?: string | number
85
+ signer?: JsonRpcSigner
86
+ }
87
+
88
+ type OptionalWriteOptions<F> = F extends (
89
+ x: any,
90
+ arg_0: infer Z,
91
+ options?: infer P,
92
+ ) => infer R
93
+ ? (name: Z, options?: P & WriteOptions) => R
94
+ : F extends (x: any, arg_0: infer Z, options: infer P) => infer R
95
+ ? (name: Z, options: P & WriteOptions) => R
96
+ : never
97
+
98
+ interface WriteFunction<F extends (...args: any) => any> extends Function {
99
+ (...args: Parameters<OptionalWriteOptions<F>>): Promise<ContractTransaction>
100
+ populateTransaction: (
101
+ ...args: Parameters<OptionalWriteOptions<F>>
102
+ ) => Promise<PopulatedTransaction>
103
+ }
104
+
105
+ const graphURIEndpoints: Record<string, string> = {
106
+ 1: 'https://api.thegraph.com/subgraphs/name/ensdomains/ens',
107
+ 3: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensropsten',
108
+ 4: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensrinkeby',
109
+ 5: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensgoerli',
110
+ }
111
+
112
+ export type RawFunction = {
113
+ raw: (...args: any[]) => Promise<{ to: string; data: string }>
114
+ decode: (...args: any[]) => Promise<any>
115
+ }
116
+
117
+ export type BatchFunctionResult<F extends RawFunction> = {
118
+ args: Parameters<OmitFirstArg<F['raw']>>
119
+ raw: F['raw']
120
+ decode: F['decode']
121
+ }
122
+
123
+ type BatchFunction<F extends RawFunction> = (
124
+ ...args: Parameters<OmitFirstArg<F['raw']>>
125
+ ) => BatchFunctionResult<F>
126
+
127
+ export type RawFunctionWithBatch = {
128
+ batch: BatchFunction<any>
129
+ } & RawFunction
130
+
131
+ interface GeneratedRawFunction<F extends RawFunction>
132
+ extends Function,
133
+ RawFunction {
134
+ (...args: Parameters<OmitFirstArg<F['raw']>>): ReturnType<
135
+ OmitFirstTwoArgs<F['decode']>
136
+ >
137
+ batch: BatchFunction<F>
138
+ }
139
+
140
+ type CombineFunctionDeps<F> = F extends RawFunction
141
+ ? FunctionDeps<F['raw']> | FunctionDeps<F['decode']>
142
+ : never
143
+
144
+ export interface GenericGeneratedRawFunction
145
+ extends Function,
146
+ RawFunctionWithBatch {}
147
+
148
+ export class ENS {
149
+ [x: string]: any
150
+ protected options?: ENSOptions
151
+ protected provider?: ethers.providers.JsonRpcProvider
152
+ protected graphURI?: string | null
153
+ protected initialProvider?: ethers.providers.JsonRpcProvider
154
+ contracts?: ContractManager
155
+ getContractAddress = _getContractAddress
156
+ gqlInstance = new GqlManager()
157
+
158
+ constructor(options?: ENSOptions) {
159
+ this.options = options
160
+ this.getContractAddress = options?.getContractAddress || _getContractAddress
161
+ }
162
+
163
+ /**
164
+ * Checks for an initial provider and if it exists, sets it as the provider
165
+ * @returns {Promise<void>} - A promise that resolves when the provider is checked, and set if needed
166
+ */
167
+ private checkInitialProvider = async (): Promise<void> => {
168
+ if (!this.initialProvider) {
169
+ return
170
+ }
171
+ await this.setProvider(this.initialProvider)
172
+ return
173
+ }
174
+
175
+ /**
176
+ * Creates an object of ENS properties from an array
177
+ * @param {FunctionDeps} dependencies - An array of ENS properties
178
+ * @returns {Object} - An object of ENS properties
179
+ */
180
+ private forwardDependenciesFromArray = <F>(
181
+ dependencies: FunctionDeps<F>,
182
+ ): object =>
183
+ // Creates an object from entries of the array
184
+ Object.fromEntries(
185
+ // Maps over dependencies and create arrays for each, e.g. ['contracts', contractObj]
186
+ dependencies.map((dep) => [dep, this[dep as keyof InternalENS]]),
187
+ )
188
+
189
+ /**
190
+ * Creates a wrapper for a function to be dynamically imported, with the correct dependencies passed in
191
+ * @param {string} path - The path of the exported function
192
+ * @param {FunctionDeps} dependencies - An array of ENS properties
193
+ * @param {string} exportName - The export name of the target function
194
+ * @param {string} subFunc - The type of function being imported
195
+ * @returns {Function} - The generated wrapped function
196
+ */
197
+ private importGenerator = <F>(
198
+ path: string,
199
+ dependencies: FunctionDeps<F>,
200
+ exportName: string = 'default',
201
+ subFunc?:
202
+ | 'raw'
203
+ | 'decode'
204
+ | 'combine'
205
+ | 'batch'
206
+ | 'write'
207
+ | 'populateTransaction',
208
+ passthrough?: RawFunction,
209
+ ): Function => {
210
+ // if batch is specified, create batch func
211
+ if (subFunc === 'batch') {
212
+ return (...args: any[]) => ({ args, ...passthrough })
213
+ }
214
+
215
+ const thisRef = this
216
+ const mainFunc = async function (...args: any[]) {
217
+ // check the initial provider and set if it exists
218
+ await thisRef.checkInitialProvider()
219
+ // import the module dynamically
220
+ const mod = await import(
221
+ /* webpackMode: "lazy", webpackChunkName: "[request]", webpackPreload: true, webpackExclude: /.*\.ts$/ */
222
+ `./functions/${path}`
223
+ )
224
+
225
+ // if combine isn't specified, run normally
226
+ // otherwise, create a function from the raw and decode functions
227
+ if (subFunc !== 'combine') {
228
+ const writeable =
229
+ subFunc === 'write' || subFunc === 'populateTransaction'
230
+ // get the function to call
231
+ const func =
232
+ subFunc && !writeable ? mod[exportName][subFunc] : mod[exportName]
233
+ // get the dependencies to forward to the function as the first arg
234
+ let dependenciesToForward =
235
+ thisRef.forwardDependenciesFromArray<F>(dependencies)
236
+
237
+ // if func is write func, inject signer into dependencies
238
+ if (writeable) {
239
+ const options = (args[1] || {}) as WriteOptions
240
+ const signer =
241
+ options.signer ||
242
+ thisRef.provider?.getSigner(options.addressOrIndex)
243
+ const populate = subFunc === 'populateTransaction'
244
+ if (!signer) {
245
+ throw new Error('No signer specified')
246
+ }
247
+ delete options.addressOrIndex
248
+ delete options.signer
249
+ dependenciesToForward = { ...dependenciesToForward, signer }
250
+ return func(dependenciesToForward, args[0], options).then(
251
+ writeTx(signer, populate),
252
+ )
253
+ }
254
+
255
+ // return the function with the dependencies forwarded
256
+ return func(dependenciesToForward, ...args)
257
+ } else {
258
+ // get the dependencies to forward from raw and decode functions
259
+ const dependenciesToForward = thisRef.forwardDependenciesFromArray<
260
+ CombineFunctionDeps<F>
261
+ >(dependencies as any)
262
+
263
+ // return singleCall function with dependencies forwarded
264
+ return singleCall(
265
+ thisRef.provider!,
266
+ dependenciesToForward,
267
+ mod[exportName],
268
+ ...args,
269
+ )
270
+ }
271
+ }
272
+
273
+ // if subfunc is combine, add raw and decode property methods to the function
274
+ if (subFunc === 'combine') {
275
+ mainFunc.raw = this.importGenerator<F>(
276
+ path,
277
+ dependencies,
278
+ exportName,
279
+ 'raw',
280
+ )
281
+ mainFunc.decode = this.importGenerator<F>(
282
+ path,
283
+ dependencies,
284
+ exportName,
285
+ 'decode',
286
+ ) as (data: any, ...args: any[]) => Promise<any>
287
+ mainFunc.batch = this.importGenerator<F>(
288
+ path,
289
+ dependencies,
290
+ exportName,
291
+ 'batch',
292
+ { raw: mainFunc.raw as any, decode: mainFunc.decode as any },
293
+ )
294
+ } else if (subFunc === 'write') {
295
+ mainFunc.populateTransaction = this.importGenerator<F>(
296
+ path,
297
+ dependencies,
298
+ exportName,
299
+ 'populateTransaction',
300
+ )
301
+ }
302
+
303
+ return mainFunc as Function
304
+ }
305
+
306
+ /**
307
+ * Generates a normal wrapped function
308
+ * @param {string} path - The path of the exported function
309
+ * @param {FunctionDeps} dependencies - An array of ENS properties
310
+ * @param {string} exportName - The export name of the target function
311
+ * @returns {OmitFirstArg} - The generated wrapped function
312
+ */
313
+ private generateFunction = <F>(
314
+ path: string,
315
+ dependencies: FunctionDeps<F>,
316
+ exportName: string = 'default',
317
+ ): OmitFirstArg<F> =>
318
+ this.importGenerator<F>(path, dependencies, exportName) as OmitFirstArg<F>
319
+
320
+ /**
321
+ * Generates a write wrapped function
322
+ * @param {string} path - The path of the exported function
323
+ * @param {FunctionDeps} dependencies - An array of ENS properties
324
+ * @param {string} exportName - The export name of the target function
325
+ * @returns {OmitFirstArg} - The generated wrapped function
326
+ */
327
+ private generateWriteFunction = <F extends (...args: any) => any>(
328
+ path: string,
329
+ dependencies: FunctionDeps<F>,
330
+ exportName: string = 'default',
331
+ ): WriteFunction<F> =>
332
+ this.importGenerator<F>(
333
+ path,
334
+ dependencies,
335
+ exportName,
336
+ 'write',
337
+ ) as WriteFunction<F>
338
+
339
+ /**
340
+ * Generates a wrapped function from raw and decode exports
341
+ * @param {string} path - The path of the exported function
342
+ * @param {FunctionDeps} dependencies - An array of ENS properties
343
+ * @param {string} exportName - The export name of the target function
344
+ * @returns {GeneratedRawFunction} - The generated wrapped function
345
+ */
346
+ private generateRawFunction = <F extends RawFunction>(
347
+ path: string,
348
+ dependencies: FunctionDeps<F['raw']> | FunctionDeps<F['decode']>,
349
+ exportName: string = 'default',
350
+ ): GeneratedRawFunction<F> =>
351
+ this.importGenerator<F>(
352
+ path,
353
+ dependencies as any,
354
+ exportName,
355
+ 'combine',
356
+ ) as GeneratedRawFunction<F>
357
+
358
+ /**
359
+ * Sets the provider for the ENS class
360
+ * @param {ethers.providers.JsonRpcProvider} provider - The provider to set
361
+ * @returns {Promise<void>} - A promise that resolves when the provider is set
362
+ */
363
+ public setProvider = async (
364
+ provider: ethers.providers.JsonRpcProvider,
365
+ ): Promise<void> => {
366
+ this.provider = provider
367
+ const network = (await this.provider.getNetwork()).chainId
368
+ if (this.options && this.options.graphURI) {
369
+ this.graphURI = this.options.graphURI
370
+ } else {
371
+ this.graphURI = graphURIEndpoints[network]
372
+ }
373
+ await this.gqlInstance.setUrl(this.graphURI)
374
+ this.contracts = new ContractManager(
375
+ this.provider,
376
+ this.getContractAddress(String(network) as SupportedNetworkId),
377
+ )
378
+ return
379
+ }
380
+
381
+ /**
382
+ * Creates a new ENS instance with a different provider, ideally should be used individually with any given function
383
+ * @param {ethers.providers.JsonRpcProvider} provider - The provider to use
384
+ * @returns {ENS} - A new ENS instance with the given provider
385
+ */
386
+ public withProvider = (provider: ethers.providers.JsonRpcProvider): ENS => {
387
+ const newENS = new ENS(this.options)
388
+ newENS.initialProvider = provider
389
+ return newENS
390
+ }
391
+
392
+ public batch = this.generateRawFunction<typeof batch>(
393
+ 'initialGetters',
394
+ ['multicallWrapper'],
395
+ 'batch',
396
+ )
397
+
398
+ public getProfile = this.generateFunction<typeof getProfile>(
399
+ 'initialGetters',
400
+ [
401
+ 'contracts',
402
+ 'gqlInstance',
403
+ 'getName',
404
+ 'resolverMulticallWrapper',
405
+ 'multicallWrapper',
406
+ '_getAddr',
407
+ '_getContentHash',
408
+ '_getText',
409
+ ],
410
+ 'getProfile',
411
+ )
412
+
413
+ public getRecords = this.generateFunction<typeof getRecords>(
414
+ 'initialGetters',
415
+ ['getProfile'],
416
+ 'getRecords',
417
+ )
418
+
419
+ public getName = this.generateRawFunction<typeof getName>(
420
+ 'initialGetters',
421
+ ['contracts'],
422
+ 'getName',
423
+ )
424
+
425
+ public getResolver = this.generateRawFunction<typeof getResolver>(
426
+ 'getResolver',
427
+ ['contracts'],
428
+ )
429
+
430
+ public getFuses = this.generateRawFunction<typeof getFuses>('getFuses', [
431
+ 'contracts',
432
+ ])
433
+
434
+ public getHistory = this.generateFunction<typeof getHistory>(
435
+ 'getHistory',
436
+ ['gqlInstance'],
437
+ 'getHistory',
438
+ )
439
+
440
+ public getHistoryWithDetail = this.generateFunction<
441
+ typeof getHistoryWithDetail
442
+ >(
443
+ 'getHistory',
444
+ ['contracts', 'gqlInstance', 'provider'],
445
+ 'getHistoryWithDetail',
446
+ )
447
+
448
+ public getHistoryDetailForTransactionHash = this.generateFunction<
449
+ typeof getHistoryDetailForTransactionHash
450
+ >(
451
+ 'getHistory',
452
+ ['contracts', 'provider'],
453
+ 'getHistoryDetailForTransactionHash',
454
+ )
455
+
456
+ public getContentHash = this.generateRawFunction<typeof getContentHash>(
457
+ 'initialGetters',
458
+ ['contracts', 'universalWrapper'],
459
+ 'getContentHash',
460
+ )
461
+
462
+ public _getContentHash = this.generateRawFunction<typeof _getContentHash>(
463
+ 'initialGetters',
464
+ ['contracts'],
465
+ '_getContentHash',
466
+ )
467
+
468
+ public getAddr = this.generateRawFunction<typeof getAddr>(
469
+ 'initialGetters',
470
+ ['contracts', 'universalWrapper'],
471
+ 'getAddr',
472
+ )
473
+
474
+ public _getAddr = this.generateRawFunction<typeof _getAddr>(
475
+ 'initialGetters',
476
+ ['contracts'],
477
+ '_getAddr',
478
+ )
479
+
480
+ public getText = this.generateRawFunction<typeof getText>(
481
+ 'initialGetters',
482
+ ['contracts', 'universalWrapper'],
483
+ 'getText',
484
+ )
485
+
486
+ public _getText = this.generateRawFunction<typeof _getText>(
487
+ 'initialGetters',
488
+ ['contracts'],
489
+ '_getText',
490
+ )
491
+
492
+ public getOwner = this.generateRawFunction<typeof getOwner>(
493
+ 'initialGetters',
494
+ ['contracts', 'multicallWrapper'],
495
+ 'getOwner',
496
+ )
497
+
498
+ public getExpiry = this.generateRawFunction<typeof getExpiry>(
499
+ 'initialGetters',
500
+ ['contracts', 'multicallWrapper'],
501
+ 'getExpiry',
502
+ )
503
+
504
+ public getSubnames = this.generateFunction<typeof getSubnames>(
505
+ 'initialGetters',
506
+ ['gqlInstance'],
507
+ 'getSubnames',
508
+ )
509
+
510
+ public getNames = this.generateFunction<typeof getNames>(
511
+ 'initialGetters',
512
+ ['gqlInstance'],
513
+ 'getNames',
514
+ )
515
+
516
+ public getPrice = this.generateRawFunction<typeof getPrice>(
517
+ 'initialGetters',
518
+ ['contracts', 'multicallWrapper'],
519
+ 'getPrice',
520
+ )
521
+
522
+ public universalWrapper = this.generateRawFunction<typeof universalWrapper>(
523
+ 'initialGetters',
524
+ ['contracts'],
525
+ 'universalWrapper',
526
+ )
527
+
528
+ public resolverMulticallWrapper = this.generateRawFunction<
529
+ typeof resolverMulticallWrapper
530
+ >('initialGetters', ['contracts'], 'resolverMulticallWrapper')
531
+
532
+ public multicallWrapper = this.generateRawFunction<typeof multicallWrapper>(
533
+ 'initialGetters',
534
+ ['contracts'],
535
+ 'multicallWrapper',
536
+ )
537
+
538
+ public setName = this.generateWriteFunction<typeof setName>('setName', [
539
+ 'contracts',
540
+ ])
541
+
542
+ public setRecords = this.generateWriteFunction<typeof setRecords>(
543
+ 'setRecords',
544
+ ['contracts', 'provider', 'getResolver'],
545
+ )
546
+
547
+ public setRecord = this.generateWriteFunction<typeof setRecord>('setRecord', [
548
+ 'contracts',
549
+ 'provider',
550
+ 'getResolver',
551
+ ])
552
+
553
+ public setResolver = this.generateWriteFunction<typeof setResolver>(
554
+ 'setResolver',
555
+ ['contracts'],
556
+ )
557
+
558
+ public transferName = this.generateWriteFunction<typeof transferName>(
559
+ 'transferName',
560
+ ['contracts'],
561
+ )
562
+
563
+ public wrapName = this.generateWriteFunction<typeof wrapName>('wrapName', [
564
+ 'contracts',
565
+ 'getExpiry',
566
+ ])
567
+
568
+ public unwrapName = this.generateWriteFunction<typeof unwrapName>(
569
+ 'unwrapName',
570
+ ['contracts'],
571
+ )
572
+
573
+ public burnFuses = this.generateWriteFunction<typeof burnFuses>('burnFuses', [
574
+ 'contracts',
575
+ ])
576
+
577
+ public createSubname = this.generateWriteFunction<typeof createSubname>(
578
+ 'createSubname',
579
+ ['contracts', 'getExpiry'],
580
+ )
581
+
582
+ public deleteSubname = this.generateWriteFunction<typeof deleteSubname>(
583
+ 'deleteSubname',
584
+ ['transferSubname'],
585
+ )
586
+
587
+ public transferSubname = this.generateWriteFunction<typeof transferSubname>(
588
+ 'transferSubname',
589
+ ['contracts', 'getExpiry'],
590
+ )
591
+
592
+ public getDNSOwner = this.generateFunction<typeof getDNSOwner>(
593
+ 'getDNSOwner',
594
+ [],
595
+ )
596
+ }
@@ -0,0 +1,40 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import setup from '../tests/setup'
4
+
5
+ let ENSInstance: ENS
6
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
7
+ let provider: ethers.providers.JsonRpcProvider
8
+ let accounts: string[]
9
+
10
+ beforeAll(async () => {
11
+ ;({ ENSInstance, revert, provider } = await setup())
12
+ accounts = await provider.listAccounts()
13
+ })
14
+
15
+ afterAll(async () => {
16
+ await revert()
17
+ })
18
+
19
+ jest.setTimeout(20000)
20
+
21
+ describe('populateTransaction', () => {
22
+ beforeEach(async () => {
23
+ await revert()
24
+ })
25
+ it('should return a transaction successfully', async () => {
26
+ const tx = await ENSInstance.setName('fleek.eth')
27
+ expect(tx).toBeTruthy()
28
+ if (tx) {
29
+ await tx.wait()
30
+ expect(tx.hash).toBeTruthy()
31
+ }
32
+ })
33
+ it('should return a populated transaction successfully', async () => {
34
+ const tx = await ENSInstance.setName.populateTransaction('fleek.eth')
35
+ expect(tx).toBeTruthy()
36
+ if (tx) {
37
+ expect(tx).not.toHaveProperty('hash')
38
+ }
39
+ })
40
+ })
@@ -0,0 +1,58 @@
1
+ import { config } from 'dotenv'
2
+ import { ethers } from 'ethers'
3
+ import { resolve } from 'path'
4
+ import { ENS } from '../'
5
+ import { ContractName, SupportedNetworkId } from '../contracts/types'
6
+
7
+ config({
8
+ path: resolve(__dirname, '../../.env.local'),
9
+ override: true,
10
+ debug: true,
11
+ })
12
+
13
+ const deploymentAddresses = JSON.parse(
14
+ process.env.DEPLOYMENT_ADDRESSES!,
15
+ ) as Record<ContractName | 'ENSRegistry', string>
16
+
17
+ const createENS = (graphURI: string) =>
18
+ new ENS({
19
+ graphURI,
20
+ getContractAddress: (_: SupportedNetworkId) => (contractName) =>
21
+ deploymentAddresses[
22
+ contractName === 'ENSRegistryWithFallback'
23
+ ? 'ENSRegistry'
24
+ : contractName
25
+ ],
26
+ })
27
+
28
+ export default async (useReal?: boolean) => {
29
+ const graphURI = useReal
30
+ ? 'https://api.thegraph.com/subgraphs/name/ensdomains/ensropsten'
31
+ : 'http://localhost:8000/subgraphs/name/graphprotocol/ens'
32
+
33
+ const provider = new ethers.providers.JsonRpcProvider(
34
+ 'http://localhost:8545',
35
+ 1337,
36
+ )
37
+
38
+ let ENSInstance = createENS(graphURI)
39
+ await ENSInstance.setProvider(provider)
40
+
41
+ let snapshot = await provider.send('evm_snapshot', [])
42
+
43
+ const revert = async (customSnapshot?: any) => {
44
+ const snapshotToUse = customSnapshot || snapshot
45
+ await provider.send('evm_revert', [snapshotToUse])
46
+ if (parseInt(snapshot, 16) >= parseInt(snapshotToUse, 16)) {
47
+ snapshot = await provider.send('evm_snapshot', [])
48
+ }
49
+
50
+ ENSInstance = createENS(graphURI)
51
+ await ENSInstance.setProvider(provider)
52
+ return
53
+ }
54
+
55
+ const createSnapshot = async () => await provider.send('evm_snapshot', [])
56
+
57
+ return { ENSInstance, revert, createSnapshot, provider }
58
+ }