@ensdomains/ensjs 2.0.0 → 3.0.0-alpha.1

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 (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +651 -97
  3. package/dist/cjs/GqlManager.d.ts +6 -0
  4. package/dist/cjs/GqlManager.js +42 -0
  5. package/dist/cjs/contracts/baseRegistrar.d.ts +3 -0
  6. package/dist/cjs/contracts/baseRegistrar.js +4 -0
  7. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
  8. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +4 -0
  9. package/dist/cjs/contracts/ethRegistrarController.d.ts +3 -0
  10. package/dist/cjs/contracts/ethRegistrarController.js +4 -0
  11. package/dist/cjs/contracts/getContractAddress.d.ts +3 -0
  12. package/dist/cjs/contracts/getContractAddress.js +46 -0
  13. package/dist/cjs/contracts/index.d.ts +16 -0
  14. package/dist/cjs/contracts/index.js +37 -0
  15. package/dist/cjs/contracts/multicall.d.ts +3 -0
  16. package/dist/cjs/contracts/multicall.js +22 -0
  17. package/dist/cjs/contracts/nameWrapper.d.ts +3 -0
  18. package/dist/cjs/contracts/nameWrapper.js +4 -0
  19. package/dist/cjs/contracts/publicResolver.d.ts +3 -0
  20. package/dist/cjs/contracts/publicResolver.js +4 -0
  21. package/dist/cjs/contracts/registry.d.ts +3 -0
  22. package/dist/cjs/contracts/registry.js +4 -0
  23. package/dist/cjs/contracts/reverseRegistrar.d.ts +3 -0
  24. package/dist/cjs/contracts/reverseRegistrar.js +4 -0
  25. package/dist/cjs/contracts/types.d.ts +2 -0
  26. package/dist/cjs/contracts/types.js +2 -0
  27. package/dist/cjs/contracts/universalResolver.d.ts +3 -0
  28. package/dist/cjs/contracts/universalResolver.js +4 -0
  29. package/dist/cjs/functions/batch.d.ts +9 -0
  30. package/dist/cjs/functions/batch.js +21 -0
  31. package/dist/cjs/functions/batchWrappers.d.ts +29 -0
  32. package/dist/cjs/functions/batchWrappers.js +71 -0
  33. package/dist/cjs/functions/burnFuses.d.ts +4 -0
  34. package/dist/cjs/functions/burnFuses.js +18 -0
  35. package/dist/cjs/functions/createSubname.d.ts +19 -0
  36. package/dist/cjs/functions/createSubname.js +43 -0
  37. package/dist/cjs/functions/deleteSubname.d.ts +4 -0
  38. package/dist/cjs/functions/deleteSubname.js +6 -0
  39. package/dist/cjs/functions/getExpiry.d.ts +12 -0
  40. package/dist/cjs/functions/getExpiry.js +45 -0
  41. package/dist/cjs/functions/getFuses.d.ts +17 -0
  42. package/dist/cjs/functions/getFuses.js +61 -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 +139 -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 +30 -0
  54. package/dist/cjs/functions/getProfile.js +268 -0
  55. package/dist/cjs/functions/getRecords.d.ts +32 -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 +251 -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 +4 -0
  66. package/dist/cjs/functions/setName.js +17 -0
  67. package/dist/cjs/functions/setRecords.d.ts +4 -0
  68. package/dist/cjs/functions/setRecords.js +22 -0
  69. package/dist/cjs/functions/setResolver.d.ts +5 -0
  70. package/dist/cjs/functions/setResolver.js +28 -0
  71. package/dist/cjs/functions/transferName.d.ts +5 -0
  72. package/dist/cjs/functions/transferName.js +33 -0
  73. package/dist/cjs/functions/transferSubname.d.ts +5 -0
  74. package/dist/cjs/functions/transferSubname.js +27 -0
  75. package/dist/cjs/functions/unwrapName.d.ts +4 -0
  76. package/dist/cjs/functions/unwrapName.js +27 -0
  77. package/dist/cjs/functions/wrapName.d.ts +6 -0
  78. package/dist/cjs/functions/wrapName.js +64 -0
  79. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +487 -0
  80. package/dist/cjs/generated/BaseRegistrarImplementation.js +2 -0
  81. package/dist/cjs/generated/DNSRegistrar.d.ts +220 -0
  82. package/dist/cjs/generated/DNSRegistrar.js +2 -0
  83. package/dist/cjs/generated/DNSSECImpl.d.ts +402 -0
  84. package/dist/cjs/generated/DNSSECImpl.js +2 -0
  85. package/dist/cjs/generated/DefaultReverseResolver.d.ts +66 -0
  86. package/dist/cjs/generated/DefaultReverseResolver.js +2 -0
  87. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
  88. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +2 -0
  89. package/dist/cjs/generated/ENSRegistry.d.ts +259 -0
  90. package/dist/cjs/generated/ENSRegistry.js +2 -0
  91. package/dist/cjs/generated/ETHRegistrarController.d.ts +319 -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 +675 -0
  96. package/dist/cjs/generated/NameWrapper.js +2 -0
  97. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +72 -0
  98. package/dist/cjs/generated/P256SHA256Algorithm.js +2 -0
  99. package/dist/cjs/generated/PublicResolver.d.ts +542 -0
  100. package/dist/cjs/generated/PublicResolver.js +2 -0
  101. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +42 -0
  102. package/dist/cjs/generated/RSASHA1Algorithm.js +2 -0
  103. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +42 -0
  104. package/dist/cjs/generated/RSASHA256Algorithm.js +2 -0
  105. package/dist/cjs/generated/ReverseRegistrar.d.ts +259 -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 +72 -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 +21 -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 +79 -0
  126. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +296 -0
  127. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +68 -0
  128. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +501 -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/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
  132. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +171 -0
  133. package/dist/cjs/generated/factories/ENSRegistry__factory.d.ts +52 -0
  134. package/dist/cjs/generated/factories/ENSRegistry__factory.js +439 -0
  135. package/dist/cjs/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
  136. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +511 -0
  137. package/dist/cjs/generated/factories/Multicall__factory.d.ts +42 -0
  138. package/dist/cjs/generated/factories/Multicall__factory.js +457 -0
  139. package/dist/cjs/generated/factories/NameWrapper__factory.d.ts +57 -0
  140. package/dist/cjs/generated/factories/NameWrapper__factory.js +1200 -0
  141. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
  142. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +71 -0
  143. package/dist/cjs/generated/factories/PublicResolver__factory.d.ts +46 -0
  144. package/dist/cjs/generated/factories/PublicResolver__factory.js +892 -0
  145. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +34 -0
  146. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +71 -0
  147. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
  148. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +71 -0
  149. package/dist/cjs/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
  150. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +340 -0
  151. package/dist/cjs/generated/factories/Root__factory.d.ts +52 -0
  152. package/dist/cjs/generated/factories/Root__factory.js +243 -0
  153. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +34 -0
  154. package/dist/cjs/generated/factories/SHA1Digest__factory.js +66 -0
  155. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
  156. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +71 -0
  157. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +34 -0
  158. package/dist/cjs/generated/factories/SHA256Digest__factory.js +66 -0
  159. package/dist/cjs/generated/factories/StaticMetadataService__factory.d.ts +32 -0
  160. package/dist/cjs/generated/factories/StaticMetadataService__factory.js +49 -0
  161. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +34 -0
  162. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +61 -0
  163. package/dist/cjs/generated/factories/UniversalResolver__factory.d.ts +42 -0
  164. package/dist/cjs/generated/factories/UniversalResolver__factory.js +204 -0
  165. package/dist/cjs/generated/factories/index.d.ts +6 -0
  166. package/dist/cjs/generated/factories/index.js +18 -0
  167. package/dist/cjs/generated/index.d.ts +13 -0
  168. package/dist/cjs/generated/index.js +39 -0
  169. package/dist/cjs/index.d.ts +470 -0
  170. package/dist/cjs/index.js +223 -0
  171. package/dist/cjs/utils/contentHash.d.ts +28 -0
  172. package/dist/cjs/utils/contentHash.js +164 -0
  173. package/dist/cjs/utils/createReverseNode.d.ts +2 -0
  174. package/dist/cjs/utils/createReverseNode.js +3 -0
  175. package/dist/cjs/utils/format.d.ts +3 -0
  176. package/dist/cjs/utils/format.js +9 -0
  177. package/dist/cjs/utils/fuses.d.ts +20 -0
  178. package/dist/cjs/utils/fuses.js +24 -0
  179. package/dist/cjs/utils/generateFuseInput.d.ts +3 -0
  180. package/dist/cjs/utils/generateFuseInput.js +19 -0
  181. package/dist/cjs/utils/hexEncodedName.d.ts +1 -0
  182. package/dist/cjs/utils/hexEncodedName.js +9 -0
  183. package/dist/cjs/utils/labels.d.ts +14 -0
  184. package/dist/cjs/utils/labels.js +112 -0
  185. package/dist/cjs/utils/makeHashIndexes.d.ts +2 -0
  186. package/dist/cjs/utils/makeHashIndexes.js +8 -0
  187. package/dist/cjs/utils/normalise.d.ts +1 -0
  188. package/dist/cjs/utils/normalise.js +9 -0
  189. package/dist/cjs/utils/recordHelpers.d.ts +13 -0
  190. package/dist/cjs/utils/recordHelpers.js +44 -0
  191. package/dist/cjs/utils/registerHelpers.d.ts +26 -0
  192. package/dist/cjs/utils/registerHelpers.js +53 -0
  193. package/dist/cjs/utils/singleCall.d.ts +9 -0
  194. package/dist/cjs/utils/singleCall.js +7 -0
  195. package/dist/cjs/utils/validation.d.ts +8 -0
  196. package/dist/cjs/utils/validation.js +73 -0
  197. package/dist/esm/GqlManager.d.ts +6 -0
  198. package/dist/esm/GqlManager.js +18 -0
  199. package/dist/esm/contracts/baseRegistrar.d.ts +3 -0
  200. package/dist/esm/contracts/baseRegistrar.js +2 -0
  201. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
  202. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.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 +4 -0
  228. package/dist/esm/functions/burnFuses.js +12 -0
  229. package/dist/esm/functions/createSubname.d.ts +19 -0
  230. package/dist/esm/functions/createSubname.js +37 -0
  231. package/dist/esm/functions/deleteSubname.d.ts +4 -0
  232. package/dist/esm/functions/deleteSubname.js +3 -0
  233. package/dist/esm/functions/getExpiry.d.ts +12 -0
  234. package/dist/esm/functions/getExpiry.js +43 -0
  235. package/dist/esm/functions/getFuses.d.ts +17 -0
  236. package/dist/esm/functions/getFuses.js +59 -0
  237. package/dist/esm/functions/getHistory.d.ts +54 -0
  238. package/dist/esm/functions/getHistory.js +273 -0
  239. package/dist/esm/functions/getName.d.ts +19 -0
  240. package/dist/esm/functions/getName.js +32 -0
  241. package/dist/esm/functions/getNames.d.ts +40 -0
  242. package/dist/esm/functions/getNames.js +220 -0
  243. package/dist/esm/functions/getOwner.d.ts +14 -0
  244. package/dist/esm/functions/getOwner.js +137 -0
  245. package/dist/esm/functions/getPrice.d.ts +13 -0
  246. package/dist/esm/functions/getPrice.js +48 -0
  247. package/dist/esm/functions/getProfile.d.ts +30 -0
  248. package/dist/esm/functions/getProfile.js +265 -0
  249. package/dist/esm/functions/getRecords.d.ts +32 -0
  250. package/dist/esm/functions/getRecords.js +8 -0
  251. package/dist/esm/functions/getResolver.d.ts +9 -0
  252. package/dist/esm/functions/getResolver.js +22 -0
  253. package/dist/esm/functions/getSpecificRecord.d.ts +73 -0
  254. package/dist/esm/functions/getSpecificRecord.js +248 -0
  255. package/dist/esm/functions/getSubnames.d.ts +26 -0
  256. package/dist/esm/functions/getSubnames.js +152 -0
  257. package/dist/esm/functions/initialGetters.d.ts +11 -0
  258. package/dist/esm/functions/initialGetters.js +11 -0
  259. package/dist/esm/functions/setName.d.ts +4 -0
  260. package/dist/esm/functions/setName.js +14 -0
  261. package/dist/esm/functions/setRecords.d.ts +4 -0
  262. package/dist/esm/functions/setRecords.js +19 -0
  263. package/dist/esm/functions/setResolver.d.ts +5 -0
  264. package/dist/esm/functions/setResolver.js +25 -0
  265. package/dist/esm/functions/transferName.d.ts +5 -0
  266. package/dist/esm/functions/transferName.js +30 -0
  267. package/dist/esm/functions/transferSubname.d.ts +5 -0
  268. package/dist/esm/functions/transferSubname.js +24 -0
  269. package/dist/esm/functions/unwrapName.d.ts +4 -0
  270. package/dist/esm/functions/unwrapName.js +24 -0
  271. package/dist/esm/functions/wrapName.d.ts +6 -0
  272. package/dist/esm/functions/wrapName.js +58 -0
  273. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +487 -0
  274. package/dist/esm/generated/BaseRegistrarImplementation.js +1 -0
  275. package/dist/esm/generated/DNSRegistrar.d.ts +220 -0
  276. package/dist/esm/generated/DNSRegistrar.js +1 -0
  277. package/dist/esm/generated/DNSSECImpl.d.ts +402 -0
  278. package/dist/esm/generated/DNSSECImpl.js +1 -0
  279. package/dist/esm/generated/DefaultReverseResolver.d.ts +66 -0
  280. package/dist/esm/generated/DefaultReverseResolver.js +1 -0
  281. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
  282. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +1 -0
  283. package/dist/esm/generated/ENSRegistry.d.ts +259 -0
  284. package/dist/esm/generated/ENSRegistry.js +1 -0
  285. package/dist/esm/generated/ETHRegistrarController.d.ts +319 -0
  286. package/dist/esm/generated/ETHRegistrarController.js +1 -0
  287. package/dist/esm/generated/Multicall.d.ts +292 -0
  288. package/dist/esm/generated/Multicall.js +1 -0
  289. package/dist/esm/generated/NameWrapper.d.ts +675 -0
  290. package/dist/esm/generated/NameWrapper.js +1 -0
  291. package/dist/esm/generated/P256SHA256Algorithm.d.ts +72 -0
  292. package/dist/esm/generated/P256SHA256Algorithm.js +1 -0
  293. package/dist/esm/generated/PublicResolver.d.ts +542 -0
  294. package/dist/esm/generated/PublicResolver.js +1 -0
  295. package/dist/esm/generated/RSASHA1Algorithm.d.ts +42 -0
  296. package/dist/esm/generated/RSASHA1Algorithm.js +1 -0
  297. package/dist/esm/generated/RSASHA256Algorithm.d.ts +42 -0
  298. package/dist/esm/generated/RSASHA256Algorithm.js +1 -0
  299. package/dist/esm/generated/ReverseRegistrar.d.ts +259 -0
  300. package/dist/esm/generated/ReverseRegistrar.js +1 -0
  301. package/dist/esm/generated/Root.d.ts +173 -0
  302. package/dist/esm/generated/Root.js +1 -0
  303. package/dist/esm/generated/SHA1Digest.d.ts +67 -0
  304. package/dist/esm/generated/SHA1Digest.js +1 -0
  305. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +72 -0
  306. package/dist/esm/generated/SHA1NSEC3Digest.js +1 -0
  307. package/dist/esm/generated/SHA256Digest.d.ts +67 -0
  308. package/dist/esm/generated/SHA256Digest.js +1 -0
  309. package/dist/esm/generated/StaticMetadataService.d.ts +42 -0
  310. package/dist/esm/generated/StaticMetadataService.js +1 -0
  311. package/dist/esm/generated/TLDPublicSuffixList.d.ts +42 -0
  312. package/dist/esm/generated/TLDPublicSuffixList.js +1 -0
  313. package/dist/esm/generated/UniversalResolver.d.ts +82 -0
  314. package/dist/esm/generated/UniversalResolver.js +1 -0
  315. package/dist/esm/generated/common.d.ts +21 -0
  316. package/dist/esm/generated/common.js +1 -0
  317. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
  318. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +766 -0
  319. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +79 -0
  320. package/dist/esm/generated/factories/DNSRegistrar__factory.js +292 -0
  321. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +68 -0
  322. package/dist/esm/generated/factories/DNSSECImpl__factory.js +497 -0
  323. package/dist/esm/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
  324. package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +83 -0
  325. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
  326. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +167 -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 +507 -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 +1196 -0
  335. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
  336. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +67 -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 +34 -0
  340. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +67 -0
  341. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
  342. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +67 -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 +34 -0
  348. package/dist/esm/generated/factories/SHA1Digest__factory.js +62 -0
  349. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
  350. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +67 -0
  351. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +34 -0
  352. package/dist/esm/generated/factories/SHA256Digest__factory.js +62 -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 +34 -0
  356. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +57 -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 +6 -0
  360. package/dist/esm/generated/factories/index.js +9 -0
  361. package/dist/esm/generated/index.d.ts +13 -0
  362. package/dist/esm/generated/index.js +7 -0
  363. package/dist/esm/index.d.ts +470 -0
  364. package/dist/esm/index.js +188 -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 +95 -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 +1 -0
  382. package/dist/esm/utils/normalise.js +2 -0
  383. package/dist/esm/utils/recordHelpers.d.ts +13 -0
  384. package/dist/esm/utils/recordHelpers.js +39 -0
  385. package/dist/esm/utils/registerHelpers.d.ts +26 -0
  386. package/dist/esm/utils/registerHelpers.js +44 -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/package.json +70 -48
  392. package/src/@types/@ensdomains/content-hash.d.ts +1 -0
  393. package/src/@types/@ensdomains/ens-contracts.d.ts +1 -0
  394. package/src/@types/FuseOptions.d.ts +9 -0
  395. package/src/@types/dns-packet.d.ts +1 -0
  396. package/src/@types/idna-uts46-hx.d.ts +1 -0
  397. package/src/ABIs/ETHRegistrarController.json +494 -0
  398. package/src/ABIs/NameWrapper.json +1183 -0
  399. package/src/ABIs/PublicResolver.json +875 -0
  400. package/src/ABIs/ReverseRegistrar.json +323 -0
  401. package/src/ABIs/StaticMetadataService.json +32 -0
  402. package/src/ABIs/UniversalResolver.json +187 -0
  403. package/src/GqlManager.ts +18 -0
  404. package/src/contracts/baseRegistrar.ts +5 -0
  405. package/src/contracts/doNotCallOnChainUniversalResolverProxy.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.ts +36 -0
  417. package/src/functions/batchWrappers.ts +91 -0
  418. package/src/functions/burnFuses.ts +23 -0
  419. package/src/functions/createSubname.ts +82 -0
  420. package/src/functions/deleteSubname.ts +19 -0
  421. package/src/functions/getExpiry.ts +63 -0
  422. package/src/functions/getFuses.ts +75 -0
  423. package/src/functions/getHistory.ts +347 -0
  424. package/src/functions/getName.ts +41 -0
  425. package/src/functions/getNames.ts +275 -0
  426. package/src/functions/getOwner.ts +202 -0
  427. package/src/functions/getPrice.ts +71 -0
  428. package/src/functions/getProfile.ts +479 -0
  429. package/src/functions/getRecords.ts +22 -0
  430. package/src/functions/getResolver.ts +32 -0
  431. package/src/functions/getSpecificRecord.ts +345 -0
  432. package/src/functions/getSubnames.ts +188 -0
  433. package/src/functions/initialGetters.ts +11 -0
  434. package/src/functions/setName.ts +34 -0
  435. package/src/functions/setRecords.ts +38 -0
  436. package/src/functions/setResolver.ts +40 -0
  437. package/src/functions/transferName.ts +56 -0
  438. package/src/functions/transferSubname.ts +37 -0
  439. package/src/functions/unwrapName.ts +38 -0
  440. package/src/functions/wrapName.ts +128 -0
  441. package/src/generated/BaseRegistrarImplementation.ts +1122 -0
  442. package/src/generated/DNSRegistrar.ts +445 -0
  443. package/src/generated/DNSSECImpl.ts +770 -0
  444. package/src/generated/DefaultReverseResolver.ts +137 -0
  445. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +285 -0
  446. package/src/generated/ENSRegistry.ts +618 -0
  447. package/src/generated/ETHRegistrarController.ts +743 -0
  448. package/src/generated/Multicall.ts +582 -0
  449. package/src/generated/NameWrapper.ts +1694 -0
  450. package/src/generated/P256SHA256Algorithm.ts +139 -0
  451. package/src/generated/PublicResolver.ts +1326 -0
  452. package/src/generated/RSASHA1Algorithm.ts +109 -0
  453. package/src/generated/RSASHA256Algorithm.ts +109 -0
  454. package/src/generated/ReverseRegistrar.ts +556 -0
  455. package/src/generated/Root.ts +377 -0
  456. package/src/generated/SHA1Digest.ts +129 -0
  457. package/src/generated/SHA1NSEC3Digest.ts +140 -0
  458. package/src/generated/SHA256Digest.ts +129 -0
  459. package/src/generated/StaticMetadataService.ts +85 -0
  460. package/src/generated/TLDPublicSuffixList.ts +99 -0
  461. package/src/generated/UniversalResolver.ts +260 -0
  462. package/src/generated/common.ts +44 -0
  463. package/src/generated/factories/BaseRegistrarImplementation__factory.ts +781 -0
  464. package/src/generated/factories/DNSRegistrar__factory.ts +329 -0
  465. package/src/generated/factories/DNSSECImpl__factory.ts +527 -0
  466. package/src/generated/factories/DefaultReverseResolver__factory.ts +98 -0
  467. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +186 -0
  468. package/src/generated/factories/ENSRegistry__factory.ts +443 -0
  469. package/src/generated/factories/ETHRegistrarController__factory.ts +522 -0
  470. package/src/generated/factories/Multicall__factory.ts +461 -0
  471. package/src/generated/factories/NameWrapper__factory.ts +1204 -0
  472. package/src/generated/factories/P256SHA256Algorithm__factory.ts +91 -0
  473. package/src/generated/factories/PublicResolver__factory.ts +899 -0
  474. package/src/generated/factories/RSASHA1Algorithm__factory.ts +91 -0
  475. package/src/generated/factories/RSASHA256Algorithm__factory.ts +91 -0
  476. package/src/generated/factories/ReverseRegistrar__factory.ts +347 -0
  477. package/src/generated/factories/Root__factory.ts +244 -0
  478. package/src/generated/factories/SHA1Digest__factory.ts +83 -0
  479. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +91 -0
  480. package/src/generated/factories/SHA256Digest__factory.ts +83 -0
  481. package/src/generated/factories/StaticMetadataService__factory.ts +60 -0
  482. package/src/generated/factories/TLDPublicSuffixList__factory.ts +81 -0
  483. package/src/generated/factories/UniversalResolver__factory.ts +211 -0
  484. package/src/generated/factories/index.ts +9 -0
  485. package/src/generated/index.ts +16 -0
  486. package/src/index.ts +506 -0
  487. package/src/tests/batch.test.ts +36 -0
  488. package/src/tests/batchWrappers.test.ts +31 -0
  489. package/src/tests/burnFuses.test.ts +43 -0
  490. package/src/tests/createSubname.test.ts +59 -0
  491. package/src/tests/deleteSubname.test.ts +72 -0
  492. package/src/tests/getExpiry.test.ts +37 -0
  493. package/src/tests/getFuses.test.ts +103 -0
  494. package/src/tests/getHistory.test.ts +101 -0
  495. package/src/tests/getName.test.ts +47 -0
  496. package/src/tests/getNames.test.ts +247 -0
  497. package/src/tests/getOwner.test.ts +61 -0
  498. package/src/tests/getProfile.test.ts +102 -0
  499. package/src/tests/getResolver.test.ts +19 -0
  500. package/src/tests/getSpecificRecord.test.ts +76 -0
  501. package/src/tests/getSubnames.test.ts +31 -0
  502. package/src/tests/makeCommitment.test.ts +23 -0
  503. package/src/tests/setName.test.ts +58 -0
  504. package/src/tests/setRecords.test.ts +58 -0
  505. package/src/tests/setResolver.test.ts +60 -0
  506. package/src/tests/setup.ts +53 -0
  507. package/src/tests/transferName.test.ts +80 -0
  508. package/src/tests/transferSubname.test.ts +74 -0
  509. package/src/tests/unwrapName.test.ts +67 -0
  510. package/src/tests/withProvider.test.ts +28 -0
  511. package/src/tests/wrapName.test.ts +67 -0
  512. package/src/utils/contentHash.ts +151 -0
  513. package/src/utils/createReverseNode.ts +2 -0
  514. package/src/utils/format.ts +8 -0
  515. package/src/utils/fuses.ts +23 -0
  516. package/src/utils/generateFuseInput.ts +18 -0
  517. package/src/utils/hexEncodedName.ts +4 -0
  518. package/src/utils/labels.ts +119 -0
  519. package/src/utils/makeHashIndexes.ts +9 -0
  520. package/src/utils/normalise.ts +4 -0
  521. package/src/utils/recordHelpers.ts +72 -0
  522. package/src/utils/registerHelpers.ts +88 -0
  523. package/src/utils/singleCall.ts +16 -0
  524. package/src/utils/validation.ts +73 -0
  525. package/dist/constants/interfaces.js +0 -13
  526. package/dist/index.js +0 -1135
  527. package/dist/utils/contents.js +0 -126
  528. package/dist/utils/index.js +0 -189
  529. package/dist/utils/labelhash.js +0 -55
  530. package/dist/utils/namehash.js +0 -39
  531. package/dist/utils/records.js +0 -56
package/src/index.ts ADDED
@@ -0,0 +1,506 @@
1
+ import { ethers } from 'ethers'
2
+ import ContractManager from './contracts'
3
+ import { getContractAddress as _getContractAddress } from './contracts/getContractAddress'
4
+ import { SupportedNetworkId } from './contracts/types'
5
+ import type batch from './functions/batch'
6
+ import type {
7
+ multicallWrapper,
8
+ resolverMulticallWrapper,
9
+ universalWrapper,
10
+ } from './functions/batchWrappers'
11
+ import type burnFuses from './functions/burnFuses'
12
+ import type createSubname from './functions/createSubname'
13
+ import type deleteSubname from './functions/deleteSubname'
14
+ import type getExpiry from './functions/getExpiry'
15
+ import type getFuses from './functions/getFuses'
16
+ import type {
17
+ getHistory,
18
+ getHistoryDetailForTransactionHash,
19
+ getHistoryWithDetail,
20
+ } from './functions/getHistory'
21
+ import type getName from './functions/getName'
22
+ import type getNames from './functions/getNames'
23
+ import type getOwner from './functions/getOwner'
24
+ import type getPrice from './functions/getPrice'
25
+ import type getProfile from './functions/getProfile'
26
+ import type getRecords from './functions/getRecords'
27
+ import type getResolver from './functions/getResolver'
28
+ import type {
29
+ getAddr,
30
+ getContentHash,
31
+ getText,
32
+ _getAddr,
33
+ _getContentHash,
34
+ _getText,
35
+ } from './functions/getSpecificRecord'
36
+ import type getSubnames from './functions/getSubnames'
37
+ import type setName from './functions/setName'
38
+ import type setRecords from './functions/setRecords'
39
+ import type setResolver from './functions/setResolver'
40
+ import type transferName from './functions/transferName'
41
+ import type transferSubname from './functions/transferSubname'
42
+ import type unwrapName from './functions/unwrapName'
43
+ import type wrapName from './functions/wrapName'
44
+ import GqlManager from './GqlManager'
45
+ import singleCall from './utils/singleCall'
46
+
47
+ type ENSOptions = {
48
+ graphURI?: string | null
49
+ getContractAddress?: typeof _getContractAddress
50
+ }
51
+
52
+ export type InternalENS = {
53
+ options?: ENSOptions
54
+ provider?: ethers.providers.Provider
55
+ graphURI?: string | null
56
+ } & ENS
57
+
58
+ export type ENSArgs<K extends keyof InternalENS> = {
59
+ [P in K]: InternalENS[P]
60
+ }
61
+
62
+ type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R
63
+ ? (...args: P) => R
64
+ : never
65
+
66
+ type OmitFirstTwoArgs<F> = F extends (
67
+ x: any,
68
+ y: any,
69
+ ...args: infer P
70
+ ) => infer R
71
+ ? (...args: P) => R
72
+ : never
73
+
74
+ type FirstArg<F> = F extends (x: infer A, ...args: any[]) => any ? A : never
75
+
76
+ type FunctionDeps<F> = Extract<keyof FirstArg<F>, string>[]
77
+
78
+ const graphURIEndpoints: Record<string, string> = {
79
+ 1: 'https://api.thegraph.com/subgraphs/name/ensdomains/ens',
80
+ 3: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensropsten',
81
+ 4: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensrinkeby',
82
+ 5: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensgoerli',
83
+ }
84
+
85
+ export type RawFunction = {
86
+ raw: (...args: any[]) => Promise<{ to: string; data: string }>
87
+ decode: (...args: any[]) => Promise<any>
88
+ }
89
+
90
+ export type BatchFunctionResult<F extends RawFunction> = {
91
+ args: Parameters<OmitFirstArg<F['raw']>>
92
+ raw: F['raw']
93
+ decode: F['decode']
94
+ }
95
+
96
+ type BatchFunction<F extends RawFunction> = (
97
+ ...args: Parameters<OmitFirstArg<F['raw']>>
98
+ ) => BatchFunctionResult<F>
99
+
100
+ export type RawFunctionWithBatch = {
101
+ batch: BatchFunction<any>
102
+ } & RawFunction
103
+
104
+ interface GeneratedRawFunction<F extends RawFunction>
105
+ extends Function,
106
+ RawFunction {
107
+ (...args: Parameters<OmitFirstArg<F['raw']>>): ReturnType<
108
+ OmitFirstTwoArgs<F['decode']>
109
+ >
110
+ batch: BatchFunction<F>
111
+ }
112
+
113
+ type CombineFunctionDeps<F> = F extends RawFunction
114
+ ? FunctionDeps<F['raw']> | FunctionDeps<F['decode']>
115
+ : never
116
+
117
+ export interface GenericGeneratedRawFunction
118
+ extends Function,
119
+ RawFunctionWithBatch {}
120
+
121
+ export class ENS {
122
+ [x: string]: any
123
+ protected options?: ENSOptions
124
+ protected provider?: ethers.providers.JsonRpcProvider
125
+ protected graphURI?: string | null
126
+ protected initialProvider?: ethers.providers.JsonRpcProvider
127
+ contracts?: ContractManager
128
+ getContractAddress = _getContractAddress
129
+ gqlInstance = new GqlManager()
130
+
131
+ constructor(options?: ENSOptions) {
132
+ this.options = options
133
+ this.getContractAddress = options?.getContractAddress || _getContractAddress
134
+ }
135
+
136
+ /**
137
+ * Checks for an initial provider and if it exists, sets it as the provider
138
+ * @returns {Promise<void>} - A promise that resolves when the provider is checked, and set if needed
139
+ */
140
+ private checkInitialProvider = async (): Promise<void> => {
141
+ if (!this.initialProvider) {
142
+ return
143
+ }
144
+ await this.setProvider(this.initialProvider)
145
+ return
146
+ }
147
+
148
+ /**
149
+ * Creates an object of ENS properties from an array
150
+ * @param {FunctionDeps} dependencies - An array of ENS properties
151
+ * @returns {Object} - An object of ENS properties
152
+ */
153
+ private forwardDependenciesFromArray = <F>(
154
+ dependencies: FunctionDeps<F>,
155
+ ): object =>
156
+ // Creates an object from entries of the array
157
+ Object.fromEntries(
158
+ // Maps over dependencies and create arrays for each, e.g. ['contracts', contractObj]
159
+ dependencies.map((dep) => [dep, this[dep as keyof InternalENS]]),
160
+ )
161
+
162
+ /**
163
+ * Creates a wrapper for a function to be dynamically imported, with the correct dependencies passed in
164
+ * @param {string} path - The path of the exported function
165
+ * @param {FunctionDeps} dependencies - An array of ENS properties
166
+ * @param {string} exportName - The export name of the target function
167
+ * @param {string} subFunc - The type of function being imported
168
+ * @returns {Function} - The generated wrapped function
169
+ */
170
+ private importGenerator = <F>(
171
+ path: string,
172
+ dependencies: FunctionDeps<F>,
173
+ exportName: string = 'default',
174
+ subFunc?: 'raw' | 'decode' | 'combine' | 'batch',
175
+ passthrough?: RawFunction,
176
+ ): Function => {
177
+ // if batch is specified, create batch func
178
+ if (subFunc === 'batch') {
179
+ return (...args: any[]) => ({ args, ...passthrough })
180
+ }
181
+
182
+ const thisRef = this
183
+ const mainFunc = async function (...args: any[]) {
184
+ // check the initial provider and set if it exists
185
+ await thisRef.checkInitialProvider()
186
+ // import the module dynamically
187
+ const mod = await import(
188
+ /* webpackMode: "lazy", webpackChunkName: "[request]", webpackPreload: true */
189
+ `./functions/${path}`
190
+ )
191
+
192
+ // if combine isn't specified, run normally
193
+ // otherwise, create a function from the raw and decode functions
194
+ if (subFunc !== 'combine') {
195
+ // get the function to call
196
+ const func = subFunc ? mod[exportName][subFunc] : mod[exportName]
197
+ // get the dependencies to forward to the function as the first arg
198
+ const dependenciesToForward =
199
+ thisRef.forwardDependenciesFromArray<F>(dependencies)
200
+ // return the function with the dependencies forwarded
201
+ return func(dependenciesToForward, ...args)
202
+ } else {
203
+ // get the dependencies to forward from raw and decode functions
204
+ const dependenciesToForward = thisRef.forwardDependenciesFromArray<
205
+ CombineFunctionDeps<F>
206
+ >(dependencies as any)
207
+
208
+ // return singleCall function with dependencies forwarded
209
+ return singleCall(
210
+ thisRef.provider!,
211
+ dependenciesToForward,
212
+ mod[exportName],
213
+ ...args,
214
+ )
215
+ }
216
+ }
217
+
218
+ // if subfunc is combine, add raw and decode property methods to the function
219
+ if (subFunc === 'combine') {
220
+ mainFunc.raw = this.importGenerator<F>(
221
+ path,
222
+ dependencies,
223
+ exportName,
224
+ 'raw',
225
+ )
226
+ mainFunc.decode = this.importGenerator<F>(
227
+ path,
228
+ dependencies,
229
+ exportName,
230
+ 'decode',
231
+ ) as (data: any, ...args: any[]) => Promise<any>
232
+ mainFunc.batch = this.importGenerator<F>(
233
+ path,
234
+ dependencies,
235
+ exportName,
236
+ 'batch',
237
+ { raw: mainFunc.raw as any, decode: mainFunc.decode as any },
238
+ )
239
+ }
240
+
241
+ return mainFunc as Function
242
+ }
243
+
244
+ /**
245
+ * Generates a normal wrapped function
246
+ * @param {string} path - The path of the exported function
247
+ * @param {FunctionDeps} dependencies - An array of ENS properties
248
+ * @param {string} exportName - The export name of the target function
249
+ * @returns {OmitFirstArg} - The generated wrapped function
250
+ */
251
+ private generateFunction = <F>(
252
+ path: string,
253
+ dependencies: FunctionDeps<F>,
254
+ exportName: string = 'default',
255
+ ): OmitFirstArg<F> =>
256
+ this.importGenerator<F>(path, dependencies, exportName) as OmitFirstArg<F>
257
+
258
+ /**
259
+ * Generates a wrapped function from raw and decode exports
260
+ * @param {string} path - The path of the exported function
261
+ * @param {FunctionDeps} dependencies - An array of ENS properties
262
+ * @param {string} exportName - The export name of the target function
263
+ * @returns {GeneratedRawFunction} - The generated wrapped function
264
+ */
265
+ private generateRawFunction = <F extends RawFunction>(
266
+ path: string,
267
+ dependencies: FunctionDeps<F['raw']> | FunctionDeps<F['decode']>,
268
+ exportName: string = 'default',
269
+ ): GeneratedRawFunction<F> =>
270
+ this.importGenerator<F>(
271
+ path,
272
+ dependencies as any,
273
+ exportName,
274
+ 'combine',
275
+ ) as GeneratedRawFunction<F>
276
+
277
+ /**
278
+ * Sets the provider for the ENS class
279
+ * @param {ethers.providers.JsonRpcProvider} provider - The provider to set
280
+ * @returns {Promise<void>} - A promise that resolves when the provider is set
281
+ */
282
+ public setProvider = async (
283
+ provider: ethers.providers.JsonRpcProvider,
284
+ ): Promise<void> => {
285
+ this.provider = provider
286
+ const network = (await this.provider.getNetwork()).chainId
287
+ if (this.options && this.options.graphURI) {
288
+ this.graphURI = this.options.graphURI
289
+ } else {
290
+ this.graphURI = graphURIEndpoints[network]
291
+ }
292
+ await this.gqlInstance.setUrl(this.graphURI)
293
+ this.contracts = new ContractManager(
294
+ this.provider,
295
+ this.getContractAddress(String(network) as SupportedNetworkId),
296
+ )
297
+ return
298
+ }
299
+
300
+ /**
301
+ * Creates a new ENS instance with a different provider, ideally should be used individually with any given function
302
+ * @param {ethers.providers.JsonRpcProvider} provider - The provider to use
303
+ * @returns {ENS} - A new ENS instance with the given provider
304
+ */
305
+ public withProvider = (provider: ethers.providers.JsonRpcProvider): ENS => {
306
+ const newENS = new ENS(this.options)
307
+ newENS.initialProvider = provider
308
+ return newENS
309
+ }
310
+
311
+ public batch = this.generateRawFunction<typeof batch>(
312
+ 'initialGetters',
313
+ ['multicallWrapper'],
314
+ 'batch',
315
+ )
316
+
317
+ public getProfile = this.generateFunction<typeof getProfile>(
318
+ 'initialGetters',
319
+ [
320
+ 'contracts',
321
+ 'gqlInstance',
322
+ 'getName',
323
+ 'resolverMulticallWrapper',
324
+ '_getAddr',
325
+ '_getContentHash',
326
+ '_getText',
327
+ ],
328
+ 'getProfile',
329
+ )
330
+
331
+ public getRecords = this.generateFunction<typeof getRecords>(
332
+ 'initialGetters',
333
+ ['getProfile'],
334
+ 'getRecords',
335
+ )
336
+
337
+ public getName = this.generateRawFunction<typeof getName>(
338
+ 'initialGetters',
339
+ ['contracts'],
340
+ 'getName',
341
+ )
342
+
343
+ public getResolver = this.generateRawFunction<typeof getResolver>(
344
+ 'getResolver',
345
+ ['contracts'],
346
+ )
347
+
348
+ public getFuses = this.generateRawFunction<typeof getFuses>('getFuses', [
349
+ 'contracts',
350
+ ])
351
+
352
+ public getHistory = this.generateFunction<typeof getHistory>(
353
+ 'getHistory',
354
+ ['gqlInstance'],
355
+ 'getHistory',
356
+ )
357
+
358
+ public getHistoryWithDetail = this.generateFunction<
359
+ typeof getHistoryWithDetail
360
+ >(
361
+ 'getHistory',
362
+ ['contracts', 'gqlInstance', 'provider'],
363
+ 'getHistoryWithDetail',
364
+ )
365
+
366
+ public getHistoryDetailForTransactionHash = this.generateFunction<
367
+ typeof getHistoryDetailForTransactionHash
368
+ >(
369
+ 'getHistory',
370
+ ['contracts', 'provider'],
371
+ 'getHistoryDetailForTransactionHash',
372
+ )
373
+
374
+ public getContentHash = this.generateRawFunction<typeof getContentHash>(
375
+ 'initialGetters',
376
+ ['contracts', 'universalWrapper'],
377
+ 'getContentHash',
378
+ )
379
+
380
+ public _getContentHash = this.generateRawFunction<typeof _getContentHash>(
381
+ 'initialGetters',
382
+ ['contracts'],
383
+ '_getContentHash',
384
+ )
385
+
386
+ public getAddr = this.generateRawFunction<typeof getAddr>(
387
+ 'initialGetters',
388
+ ['contracts', 'universalWrapper'],
389
+ 'getAddr',
390
+ )
391
+
392
+ public _getAddr = this.generateRawFunction<typeof _getAddr>(
393
+ 'initialGetters',
394
+ ['contracts'],
395
+ '_getAddr',
396
+ )
397
+
398
+ public getText = this.generateRawFunction<typeof getText>(
399
+ 'initialGetters',
400
+ ['contracts', 'universalWrapper'],
401
+ 'getText',
402
+ )
403
+
404
+ public _getText = this.generateRawFunction<typeof _getText>(
405
+ 'initialGetters',
406
+ ['contracts'],
407
+ '_getText',
408
+ )
409
+
410
+ public getOwner = this.generateRawFunction<typeof getOwner>(
411
+ 'initialGetters',
412
+ ['contracts', 'multicallWrapper'],
413
+ 'getOwner',
414
+ )
415
+
416
+ public getExpiry = this.generateRawFunction<typeof getExpiry>(
417
+ 'initialGetters',
418
+ ['contracts', 'multicallWrapper'],
419
+ 'getExpiry',
420
+ )
421
+
422
+ public getSubnames = this.generateFunction<typeof getSubnames>(
423
+ 'initialGetters',
424
+ ['gqlInstance'],
425
+ 'getSubnames',
426
+ )
427
+
428
+ public getNames = this.generateFunction<typeof getNames>(
429
+ 'initialGetters',
430
+ ['gqlInstance'],
431
+ 'getNames',
432
+ )
433
+
434
+ public getPrice = this.generateRawFunction<typeof getPrice>(
435
+ 'initialGetters',
436
+ ['contracts', 'multicallWrapper'],
437
+ 'getPrice',
438
+ )
439
+
440
+ public universalWrapper = this.generateRawFunction<typeof universalWrapper>(
441
+ 'initialGetters',
442
+ ['contracts'],
443
+ 'universalWrapper',
444
+ )
445
+
446
+ public resolverMulticallWrapper = this.generateRawFunction<
447
+ typeof resolverMulticallWrapper
448
+ >('initialGetters', ['contracts'], 'resolverMulticallWrapper')
449
+
450
+ public multicallWrapper = this.generateRawFunction<typeof multicallWrapper>(
451
+ 'initialGetters',
452
+ ['contracts'],
453
+ 'multicallWrapper',
454
+ )
455
+
456
+ public setName = this.generateFunction<typeof setName>('setName', [
457
+ 'contracts',
458
+ 'provider',
459
+ ])
460
+
461
+ public setRecords = this.generateFunction<typeof setRecords>('setRecords', [
462
+ 'contracts',
463
+ 'provider',
464
+ 'getResolver',
465
+ ])
466
+
467
+ public setResolver = this.generateFunction<typeof setResolver>(
468
+ 'setResolver',
469
+ ['contracts', 'provider'],
470
+ )
471
+
472
+ public transferName = this.generateFunction<typeof transferName>(
473
+ 'transferName',
474
+ ['contracts', 'provider'],
475
+ )
476
+
477
+ public wrapName = this.generateFunction<typeof wrapName>('wrapName', [
478
+ 'contracts',
479
+ 'provider',
480
+ ])
481
+
482
+ public unwrapName = this.generateFunction<typeof unwrapName>('unwrapName', [
483
+ 'contracts',
484
+ 'provider',
485
+ ])
486
+
487
+ public burnFuses = this.generateFunction<typeof burnFuses>('burnFuses', [
488
+ 'contracts',
489
+ 'provider',
490
+ ])
491
+
492
+ public createSubname = this.generateFunction<typeof createSubname>(
493
+ 'createSubname',
494
+ ['contracts', 'provider'],
495
+ )
496
+
497
+ public deleteSubname = this.generateFunction<typeof deleteSubname>(
498
+ 'deleteSubname',
499
+ ['contracts', 'provider', 'transferSubname'],
500
+ )
501
+
502
+ public transferSubname = this.generateFunction<typeof transferSubname>(
503
+ 'transferSubname',
504
+ ['contracts', 'provider'],
505
+ )
506
+ }
@@ -0,0 +1,36 @@
1
+ import { ENS } from '..'
2
+ import setup from './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('jefflau.eth', 'description'),
14
+ ENSInstance.getAddr.batch('jefflau.eth'),
15
+ ENSInstance.getName.batch('0x866B3c4994e1416B7C738B9818b31dC246b95eEE'),
16
+ )
17
+ expect(result).toBeTruthy()
18
+ if (result) {
19
+ expect(result[0]).toBe('Hello2')
20
+ expect(result[1]).toBe('0x866B3c4994e1416B7C738B9818b31dC246b95eEE')
21
+ expect(result[2]).toMatchObject({
22
+ name: 'jefflau.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('jefflau.eth', 'description'),
30
+ )
31
+ expect(result).toBeTruthy()
32
+ if (result) {
33
+ expect(result[0]).toBe('Hello2')
34
+ }
35
+ })
36
+ })
@@ -0,0 +1,31 @@
1
+ import { ENS } from '..'
2
+ import setup from './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('jefflau.eth', 'description'),
14
+ await ENSInstance._getText.raw('jefflau.eth', 'url'),
15
+ await ENSInstance._getAddr.raw('jefflau.eth'),
16
+ ])
17
+ const universalResponse = await ENSInstance.universalWrapper(
18
+ 'jefflau.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('0x866B3c4994e1416B7C738B9818b31dC246b95eEE')
30
+ })
31
+ })
@@ -0,0 +1,43 @@
1
+ import { BigNumber, ethers, utils } from 'ethers'
2
+ import { ENS } from '..'
3
+ import setup from './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
+ describe('burnFuses', () => {
20
+ beforeEach(async () => {
21
+ await revert()
22
+ })
23
+ it('should return a burnFuses transaction and succeed', async () => {
24
+ const wrapNameTx = await ENSInstance.wrapName(
25
+ 'parthtejpal.eth',
26
+ accounts[0],
27
+ )
28
+ await wrapNameTx.wait()
29
+
30
+ const tx = await ENSInstance.burnFuses('parthtejpal.eth', {
31
+ cannotUnwrap: true,
32
+ cannotCreateSubdomain: true,
33
+ cannotSetTtl: true,
34
+ })
35
+ expect(tx).toBeTruthy()
36
+ await tx.wait()
37
+
38
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
39
+ const result = await nameWrapper.getFuses(utils.namehash('parthtejpal.eth'))
40
+ const fuseBN = result.fuses as BigNumber
41
+ expect(fuseBN.toHexString()).toBe('0x71')
42
+ })
43
+ })
@@ -0,0 +1,59 @@
1
+ import { ethers, utils } from 'ethers'
2
+ import { ENS } from '..'
3
+ import setup from './setup'
4
+
5
+ let ENSInstance: ENS
6
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
7
+ let createSnapshot: Awaited<ReturnType<typeof setup>>['createSnapshot']
8
+ let provider: ethers.providers.JsonRpcProvider
9
+ let accounts: string[]
10
+
11
+ beforeAll(async () => {
12
+ ;({ ENSInstance, revert, createSnapshot, provider } = await setup())
13
+ accounts = await provider.listAccounts()
14
+ })
15
+
16
+ afterAll(async () => {
17
+ await revert()
18
+ })
19
+
20
+ describe('createSubname', () => {
21
+ beforeEach(async () => {
22
+ await revert()
23
+ })
24
+ it('should allow creating a subname on the registry', async () => {
25
+ const tx = await ENSInstance.createSubname({
26
+ contract: 'registry',
27
+ name: 'test.parthtejpal.eth',
28
+ owner: accounts[0],
29
+ options: { addressOrIndex: 0 },
30
+ })
31
+ expect(tx).toBeTruthy()
32
+ await tx.wait()
33
+
34
+ const registry = await ENSInstance.contracts!.getRegistry()!
35
+ const result = await registry.owner(utils.namehash('test.parthtejpal.eth'))
36
+ expect(result).toBe(accounts[0])
37
+ })
38
+ it('should allow creating a subname on the namewrapper', async () => {
39
+ const wrapNameTx = await ENSInstance.wrapName(
40
+ 'parthtejpal.eth',
41
+ accounts[0],
42
+ )
43
+ await wrapNameTx.wait()
44
+ const tx = await ENSInstance.createSubname({
45
+ contract: 'nameWrapper',
46
+ name: 'test.parthtejpal.eth',
47
+ owner: accounts[0],
48
+ options: { addressOrIndex: 0 },
49
+ })
50
+ expect(tx).toBeTruthy()
51
+ await tx.wait()
52
+
53
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
54
+ const result = await nameWrapper.ownerOf(
55
+ utils.namehash('test.parthtejpal.eth'),
56
+ )
57
+ expect(result).toBe(accounts[0])
58
+ })
59
+ })