@ensdomains/ensjs 2.0.1 → 3.0.0-alpha.2

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 (532) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +651 -99
  3. package/dist/cjs/GqlManager.d.ts +6 -0
  4. package/dist/cjs/GqlManager.js +42 -0
  5. package/dist/cjs/contracts/baseRegistrar.d.ts +3 -0
  6. package/dist/cjs/contracts/baseRegistrar.js +4 -0
  7. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
  8. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +4 -0
  9. package/dist/cjs/contracts/ethRegistrarController.d.ts +3 -0
  10. package/dist/cjs/contracts/ethRegistrarController.js +4 -0
  11. package/dist/cjs/contracts/getContractAddress.d.ts +3 -0
  12. package/dist/cjs/contracts/getContractAddress.js +46 -0
  13. package/dist/cjs/contracts/index.d.ts +16 -0
  14. package/dist/cjs/contracts/index.js +37 -0
  15. package/dist/cjs/contracts/multicall.d.ts +3 -0
  16. package/dist/cjs/contracts/multicall.js +22 -0
  17. package/dist/cjs/contracts/nameWrapper.d.ts +3 -0
  18. package/dist/cjs/contracts/nameWrapper.js +4 -0
  19. package/dist/cjs/contracts/publicResolver.d.ts +3 -0
  20. package/dist/cjs/contracts/publicResolver.js +4 -0
  21. package/dist/cjs/contracts/registry.d.ts +3 -0
  22. package/dist/cjs/contracts/registry.js +4 -0
  23. package/dist/cjs/contracts/reverseRegistrar.d.ts +3 -0
  24. package/dist/cjs/contracts/reverseRegistrar.js +4 -0
  25. package/dist/cjs/contracts/types.d.ts +2 -0
  26. package/dist/cjs/contracts/types.js +2 -0
  27. package/dist/cjs/contracts/universalResolver.d.ts +3 -0
  28. package/dist/cjs/contracts/universalResolver.js +4 -0
  29. package/dist/cjs/functions/batch.d.ts +9 -0
  30. package/dist/cjs/functions/batch.js +21 -0
  31. package/dist/cjs/functions/batchWrappers.d.ts +29 -0
  32. package/dist/cjs/functions/batchWrappers.js +71 -0
  33. package/dist/cjs/functions/burnFuses.d.ts +3 -0
  34. package/dist/cjs/functions/burnFuses.js +18 -0
  35. package/dist/cjs/functions/createSubname.d.ts +19 -0
  36. package/dist/cjs/functions/createSubname.js +44 -0
  37. package/dist/cjs/functions/deleteSubname.d.ts +4 -0
  38. package/dist/cjs/functions/deleteSubname.js +6 -0
  39. package/dist/cjs/functions/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 +62 -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 +30 -0
  54. package/dist/cjs/functions/getProfile.js +302 -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 +268 -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 +3 -0
  68. package/dist/cjs/functions/setRecords.js +22 -0
  69. package/dist/cjs/functions/setResolver.d.ts +4 -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 +34 -0
  73. package/dist/cjs/functions/transferSubname.d.ts +5 -0
  74. package/dist/cjs/functions/transferSubname.js +28 -0
  75. package/dist/cjs/functions/unwrapName.d.ts +4 -0
  76. package/dist/cjs/functions/unwrapName.js +28 -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 +224 -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 +2 -0
  188. package/dist/cjs/utils/normalise.js +28 -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 +52 -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 +3 -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 +38 -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 +60 -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 +138 -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 +299 -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 +265 -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 +3 -0
  262. package/dist/esm/functions/setRecords.js +19 -0
  263. package/dist/esm/functions/setResolver.d.ts +4 -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 +31 -0
  267. package/dist/esm/functions/transferSubname.d.ts +5 -0
  268. package/dist/esm/functions/transferSubname.js +25 -0
  269. package/dist/esm/functions/unwrapName.d.ts +4 -0
  270. package/dist/esm/functions/unwrapName.js +25 -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 +189 -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 +2 -0
  382. package/dist/esm/utils/normalise.js +20 -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 +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/package.json +72 -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 +83 -0
  420. package/src/functions/deleteSubname.ts +19 -0
  421. package/src/functions/getExpiry.ts +63 -0
  422. package/src/functions/getFuses.ts +76 -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 +543 -0
  429. package/src/functions/getRecords.ts +22 -0
  430. package/src/functions/getResolver.ts +32 -0
  431. package/src/functions/getSpecificRecord.ts +365 -0
  432. package/src/functions/getSubnames.ts +190 -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 +57 -0
  438. package/src/functions/transferSubname.ts +38 -0
  439. package/src/functions/unwrapName.ts +39 -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 +507 -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 +44 -0
  490. package/src/tests/createSubname.test.ts +58 -0
  491. package/src/tests/deleteSubname.test.ts +71 -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 +71 -0
  498. package/src/tests/getProfile.test.ts +120 -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/normalise.test.ts +22 -0
  504. package/src/tests/setName.test.ts +58 -0
  505. package/src/tests/setRecords.test.ts +58 -0
  506. package/src/tests/setResolver.test.ts +60 -0
  507. package/src/tests/setup.ts +53 -0
  508. package/src/tests/transferName.test.ts +81 -0
  509. package/src/tests/transferSubname.test.ts +73 -0
  510. package/src/tests/unwrapName.test.ts +68 -0
  511. package/src/tests/withProvider.test.ts +28 -0
  512. package/src/tests/wrapName.test.ts +64 -0
  513. package/src/utils/contentHash.ts +151 -0
  514. package/src/utils/createReverseNode.ts +2 -0
  515. package/src/utils/format.ts +8 -0
  516. package/src/utils/fuses.ts +23 -0
  517. package/src/utils/generateFuseInput.ts +18 -0
  518. package/src/utils/hexEncodedName.ts +4 -0
  519. package/src/utils/labels.ts +119 -0
  520. package/src/utils/makeHashIndexes.ts +9 -0
  521. package/src/utils/normalise.ts +27 -0
  522. package/src/utils/recordHelpers.ts +72 -0
  523. package/src/utils/registerHelpers.ts +87 -0
  524. package/src/utils/singleCall.ts +16 -0
  525. package/src/utils/validation.ts +73 -0
  526. package/dist/constants/interfaces.js +0 -13
  527. package/dist/index.js +0 -1191
  528. package/dist/utils/contents.js +0 -126
  529. package/dist/utils/index.js +0 -189
  530. package/dist/utils/labelhash.js +0 -55
  531. package/dist/utils/namehash.js +0 -39
  532. package/dist/utils/records.js +0 -56
@@ -0,0 +1,71 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import { namehash } from '../utils/normalise'
4
+ import setup from './setup'
5
+
6
+ let ENSInstance: ENS
7
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
8
+ let provider: ethers.providers.JsonRpcProvider
9
+ let accounts: string[]
10
+
11
+ beforeAll(async () => {
12
+ ;({ ENSInstance, revert, provider } = await setup())
13
+ accounts = await provider.listAccounts()
14
+ })
15
+
16
+ afterAll(async () => {
17
+ await revert()
18
+ })
19
+
20
+ describe('deleteSubname', () => {
21
+ beforeEach(async () => {
22
+ await revert()
23
+ })
24
+ it('should allow deleting a subname on the registry', async () => {
25
+ const createSubnameTx = await ENSInstance.createSubname({
26
+ contract: 'registry',
27
+ name: 'test.parthtejpal.eth',
28
+ owner: accounts[0],
29
+ options: { addressOrIndex: 0 },
30
+ })
31
+ await createSubnameTx.wait()
32
+
33
+ const tx = await ENSInstance.deleteSubname(
34
+ 'test.parthtejpal.eth',
35
+ 'registry',
36
+ { addressOrIndex: 0 },
37
+ )
38
+ expect(tx).toBeTruthy()
39
+ await tx.wait()
40
+
41
+ const registry = await ENSInstance.contracts!.getRegistry()!
42
+ const result = await registry.owner(namehash('test.parthtejpal.eth'))
43
+ expect(result).toBe('0x0000000000000000000000000000000000000000')
44
+ })
45
+ it('should allow deleting a subname on the nameWrapper', async () => {
46
+ const wrapNameTx = await ENSInstance.wrapName(
47
+ 'parthtejpal.eth',
48
+ accounts[0],
49
+ )
50
+ await wrapNameTx.wait()
51
+ const createSubnameTx = await ENSInstance.createSubname({
52
+ contract: 'nameWrapper',
53
+ name: 'test.parthtejpal.eth',
54
+ owner: accounts[0],
55
+ options: { addressOrIndex: 0 },
56
+ })
57
+ await createSubnameTx.wait()
58
+
59
+ const tx = await ENSInstance.deleteSubname(
60
+ 'test.parthtejpal.eth',
61
+ 'nameWrapper',
62
+ { addressOrIndex: 0 },
63
+ )
64
+ expect(tx).toBeTruthy()
65
+ await tx.wait()
66
+
67
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
68
+ const result = await nameWrapper.ownerOf(namehash('test.parthtejpal.eth'))
69
+ expect(result).toBe('0x0000000000000000000000000000000000000000')
70
+ })
71
+ })
@@ -0,0 +1,37 @@
1
+ import { ethers } 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('getExpiry', () => {
20
+ it('should get the expiry for a name', async () => {
21
+ const result = await ENSInstance.getExpiry('jefflau.eth')
22
+ expect(result).toBeTruthy()
23
+ if (result) {
24
+ const { expiry, gracePeriod } = result
25
+ expect(expiry).toBeInstanceOf(Date)
26
+ expect(gracePeriod).toBe(7776000000)
27
+ }
28
+ })
29
+ it('should throw an error for a non .eth name', async () => {
30
+ try {
31
+ await ENSInstance.getExpiry('sub.jefflau.eth')
32
+ expect(false).toBeTruthy()
33
+ } catch {
34
+ expect(true).toBeTruthy()
35
+ }
36
+ })
37
+ })
@@ -0,0 +1,103 @@
1
+ import { ethers } 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
+ let withWrappedSnapshot: any
11
+
12
+ beforeAll(async () => {
13
+ ;({ ENSInstance, revert, provider, createSnapshot } = await setup())
14
+ accounts = await provider.listAccounts()
15
+ const tx = await ENSInstance.wrapName('parthtejpal.eth', accounts[0])
16
+ await tx.wait()
17
+
18
+ withWrappedSnapshot = await createSnapshot()
19
+ })
20
+
21
+ afterEach(async () => {
22
+ await revert(withWrappedSnapshot)
23
+ withWrappedSnapshot = await createSnapshot()
24
+ })
25
+
26
+ afterAll(async () => {
27
+ await revert()
28
+ })
29
+
30
+ describe('getFuses', () => {
31
+ it('should return null for an unwrapped name', async () => {
32
+ const result = await ENSInstance.getFuses('jefflau.eth')
33
+ expect(result).toBeUndefined()
34
+ })
35
+ it('should return with canDoEverything set to true for a name with no fuses burned', async () => {
36
+ const tx = await ENSInstance.createSubname({
37
+ contract: 'nameWrapper',
38
+ name: 'test.parthtejpal.eth',
39
+ owner: accounts[0],
40
+ options: { addressOrIndex: 0 },
41
+ })
42
+ await tx.wait()
43
+
44
+ const result = await ENSInstance.getFuses('test.parthtejpal.eth')
45
+ expect(result).toBeTruthy()
46
+ if (result) {
47
+ expect(result.fuseObj.canDoEverything).toBe(true)
48
+ expect(
49
+ Object.values(result.fuseObj).reduce(
50
+ (prev, curr) => (curr ? prev + 1 : prev),
51
+ 0,
52
+ ),
53
+ ).toBe(1)
54
+ expect(result.rawFuses.toHexString()).toBe('0x00')
55
+ }
56
+ })
57
+ it('should return with other correct fuses', async () => {
58
+ const tx = await ENSInstance.burnFuses('parthtejpal.eth', {
59
+ cannotUnwrap: true,
60
+ cannotSetTtl: true,
61
+ cannotCreateSubdomain: true,
62
+ })
63
+ await tx.wait()
64
+ const result = await ENSInstance.getFuses('parthtejpal.eth')
65
+ expect(result).toBeTruthy()
66
+ if (result) {
67
+ expect(result.fuseObj).toMatchObject({
68
+ cannotUnwrap: true,
69
+ cannotBurnFuses: false,
70
+ cannotTransfer: false,
71
+ cannotSetResolver: false,
72
+ cannotSetTtl: true,
73
+ cannotCreateSubdomain: true,
74
+ parentCannotControl: true,
75
+ canDoEverything: false,
76
+ })
77
+ expect(result.rawFuses.toHexString()).toBe('0x71')
78
+ }
79
+ })
80
+ it('should return correct vulnerability data for an invulnerable node', async () => {
81
+ const result = await ENSInstance.getFuses('parthtejpal.eth')
82
+ expect(result).toBeTruthy()
83
+ if (result) {
84
+ expect(result.vulnerability).toBe('Safe')
85
+ expect(result.vulnerableNode).toBeNull()
86
+ }
87
+ })
88
+ it('should return correct vulnerability data for a vulnerable node', async () => {
89
+ const tx = await ENSInstance.createSubname({
90
+ name: 'test.parthtejpal.eth',
91
+ owner: accounts[0],
92
+ contract: 'nameWrapper',
93
+ })
94
+ await tx.wait()
95
+
96
+ const result = await ENSInstance.getFuses('test.parthtejpal.eth')
97
+ expect(result).toBeTruthy()
98
+ if (result) {
99
+ expect(result.vulnerability).toBe('SubdomainReplacementAllowed')
100
+ expect(result.vulnerableNode).toBe('parthtejpal.eth')
101
+ }
102
+ })
103
+ })
@@ -0,0 +1,101 @@
1
+ import { ENS } from '..'
2
+ import setup from './setup'
3
+
4
+ let ENSInstance: ENS
5
+
6
+ beforeAll(async () => {
7
+ ;({ ENSInstance } = await setup())
8
+ jest.setTimeout(20000)
9
+ })
10
+
11
+ describe('getHistory', () => {
12
+ let textEventsWithValue: any[]
13
+
14
+ it('should return null for a non-existent name', async () => {
15
+ const result = await ENSInstance.getHistory('test123123cool.eth')
16
+ expect(result).toBeUndefined()
17
+ })
18
+ it('should return the history of a name', async () => {
19
+ const result = await ENSInstance.getHistory('jefflau.eth')
20
+ expect(result).toBeTruthy()
21
+ if (result) {
22
+ expect(result).toHaveProperty('domain')
23
+ expect(result).toHaveProperty('resolver')
24
+ expect(result).toHaveProperty('registration')
25
+ }
26
+ })
27
+ describe('getHistoryWithDetail', () => {
28
+ it('should return null for a non-existent name', async () => {
29
+ const result = await ENSInstance.getHistoryWithDetail(
30
+ 'test123123cool.eth',
31
+ )
32
+ expect(result).toBeUndefined()
33
+ })
34
+ it('should return the history of a name with TextChanged event detail', async () => {
35
+ const result = await ENSInstance.getHistoryWithDetail('jefflau.eth')
36
+ expect(result).toBeTruthy()
37
+ if (result) {
38
+ const textEvents = result.resolver.filter(
39
+ (x) => x.type === 'TextChanged',
40
+ )
41
+ textEvents.forEach((event) =>
42
+ expect(event.data).toHaveProperty('value'),
43
+ )
44
+ textEventsWithValue = textEvents
45
+ }
46
+ })
47
+ })
48
+ describe('getHistoryDetailForTransactionHash', () => {
49
+ it('should throw an error for an invalid transaction hash', async () => {
50
+ try {
51
+ await ENSInstance.getHistoryDetailForTransactionHash('0x234')
52
+ expect(false).toBeTruthy()
53
+ } catch (error) {
54
+ expect((error as any).message).toContain('invalid hash')
55
+ }
56
+ })
57
+ it('should return null for a transaction hash with no text events', async () => {
58
+ const result = await ENSInstance.getHistoryDetailForTransactionHash(
59
+ '0x0fd7b555e3076ef38dbbe2e40deefe44c9a0530d43f6b3f60dbed4ba49d229b7',
60
+ )
61
+ expect(result).toBeUndefined()
62
+ })
63
+ it('should return single item for a given transaction hash with one event', async () => {
64
+ const eventToUse = textEventsWithValue[0]
65
+ const result = (await ENSInstance.getHistoryDetailForTransactionHash(
66
+ eventToUse.transactionHash,
67
+ )) as { key: any; value: any }[]
68
+ expect(result).toHaveLength(1)
69
+ if (result) {
70
+ expect(result[0]).toMatchObject(eventToUse.data)
71
+ }
72
+ })
73
+ it('should return multiple items for a given transaction hash with multiple events', async () => {
74
+ const hash =
75
+ '0x002b7cc3c85168d885a38226a28fac349d13cbaff7f3db4fa3af31f22b863079'
76
+ const dataArr = [
77
+ { key: 'description', value: 'Not so super description' },
78
+ { key: 'url', value: 'facebook.com' },
79
+ ]
80
+ const result = (await ENSInstance.getHistoryDetailForTransactionHash(
81
+ hash,
82
+ )) as { key: any; value: any }[]
83
+ expect(result).toHaveLength(dataArr.length)
84
+ if (result) {
85
+ result.forEach((item, index) =>
86
+ expect(item).toMatchObject(dataArr[index]),
87
+ )
88
+ }
89
+ })
90
+ it('should return a single item when an index is specified for a hash', async () => {
91
+ const hash =
92
+ '0x002b7cc3c85168d885a38226a28fac349d13cbaff7f3db4fa3af31f22b863079'
93
+ const data = { key: 'url', value: 'facebook.com' }
94
+ const result = (await ENSInstance.getHistoryDetailForTransactionHash(
95
+ hash,
96
+ 1,
97
+ )) as { key: any; value: any }
98
+ expect(result).toMatchObject(data)
99
+ })
100
+ })
101
+ })
@@ -0,0 +1,47 @@
1
+ import { ethers } 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('getName', () => {
20
+ it('should get a primary name from an address', async () => {
21
+ const result = await ENSInstance.getName(
22
+ '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
23
+ )
24
+ expect(result).toBeTruthy()
25
+ if (result) {
26
+ expect(result.name).toBe('jefflau.eth')
27
+ expect(result.match).toBeTruthy()
28
+ }
29
+ })
30
+ it('should return null for an address with no primary name', async () => {
31
+ const result = await ENSInstance.getName(
32
+ '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0',
33
+ )
34
+ expect(result).toBeUndefined()
35
+ })
36
+ it('should return with a false match for a name with no forward resolution', async () => {
37
+ const tx = await ENSInstance.setName('jefflau.eth')
38
+ await tx?.wait()
39
+
40
+ const result = await ENSInstance.getName(accounts[0])
41
+ expect(result).toBeTruthy()
42
+ if (result) {
43
+ expect(result.name).toBe('jefflau.eth')
44
+ expect(result.match).toBeFalsy()
45
+ }
46
+ })
47
+ })
@@ -0,0 +1,247 @@
1
+ import { ENS } from '..'
2
+ import { OwnedName, Registration } from '../functions/getNames'
3
+ import setup from './setup'
4
+
5
+ let ENSInstance: ENS
6
+
7
+ beforeAll(async () => {
8
+ ;({ ENSInstance } = await setup())
9
+ })
10
+
11
+ const testProperties = (obj: object, ...properties: string[]) =>
12
+ properties.map((property) => expect(obj).toHaveProperty(property))
13
+
14
+ const testNotProperties = (obj: object, ...properties: string[]) =>
15
+ properties.map((property) => expect(obj).not.toHaveProperty(property))
16
+
17
+ describe('getNames', () => {
18
+ let totalRegistrations: number = 0
19
+ let totalOwnedNames: number = 0
20
+ it('should get the registrations for an address', async () => {
21
+ const result = await ENSInstance.getNames({
22
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
23
+ type: 'registrant',
24
+ })
25
+ totalRegistrations = result.length
26
+ expect(result).toBeTruthy()
27
+ testProperties(
28
+ result[0],
29
+ 'expiryDate',
30
+ 'registrationDate',
31
+ 'id',
32
+ 'labelName',
33
+ 'labelhash',
34
+ 'name',
35
+ 'isMigrated',
36
+ 'parent',
37
+ 'truncatedName',
38
+ )
39
+ })
40
+ it('should get the owned names for an address', async () => {
41
+ const result = await ENSInstance.getNames({
42
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
43
+ type: 'owner',
44
+ })
45
+ totalOwnedNames = result.length
46
+ expect(result).toBeTruthy()
47
+ testProperties(
48
+ result[0],
49
+ 'id',
50
+ 'labelName',
51
+ 'labelhash',
52
+ 'name',
53
+ 'isMigrated',
54
+ 'parent',
55
+ 'truncatedName',
56
+ )
57
+ testNotProperties(result[0], 'expiryDate', 'registrationDate')
58
+ })
59
+ it('should get the registrations for an address with pagination', async () => {
60
+ const pageOne = await ENSInstance.getNames({
61
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
62
+ type: 'registrant',
63
+ page: 0,
64
+ })
65
+ expect(pageOne).toHaveLength(10)
66
+ const pageTwo = await ENSInstance.getNames({
67
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
68
+ type: 'registrant',
69
+ page: 1,
70
+ })
71
+ expect(pageTwo).toHaveLength(totalRegistrations % 10)
72
+ })
73
+ it('should get the owned names for an address with pagination', async () => {
74
+ const pageOne = await ENSInstance.getNames({
75
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
76
+ type: 'owner',
77
+ page: 0,
78
+ })
79
+ expect(pageOne).toHaveLength(10)
80
+ const pageTwo = await ENSInstance.getNames({
81
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
82
+ type: 'owner',
83
+ page: 1,
84
+ })
85
+ expect(pageTwo).toHaveLength(10)
86
+ const pageThree = await ENSInstance.getNames({
87
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
88
+ type: 'owner',
89
+ page: 2,
90
+ })
91
+ expect(pageThree).toHaveLength(10)
92
+ const pageFour = await ENSInstance.getNames({
93
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
94
+ type: 'owner',
95
+ page: 3,
96
+ })
97
+ expect(pageFour).toHaveLength(totalOwnedNames % 10)
98
+ })
99
+ describe('orderBy', () => {
100
+ describe('registrations', () => {
101
+ it('descending registrationDate', async () => {
102
+ const registrationDateOrderedDesc = (await ENSInstance.getNames({
103
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
104
+ type: 'registrant',
105
+ orderBy: 'registrationDate',
106
+ orderDirection: 'desc',
107
+ })) as Registration[]
108
+ registrationDateOrderedDesc.reduce((prev, curr) => {
109
+ expect(prev.registrationDate.getTime()).toBeGreaterThanOrEqual(
110
+ curr.registrationDate.getTime(),
111
+ )
112
+ return curr
113
+ })
114
+ })
115
+ it('ascending registrationDate', async () => {
116
+ const registrationDateOrderedAsc = (await ENSInstance.getNames({
117
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
118
+ type: 'registrant',
119
+ orderBy: 'registrationDate',
120
+ orderDirection: 'asc',
121
+ })) as Registration[]
122
+ registrationDateOrderedAsc.reduce((prev, curr) => {
123
+ expect(prev.registrationDate.getTime()).toBeLessThanOrEqual(
124
+ curr.registrationDate.getTime(),
125
+ )
126
+ return curr
127
+ })
128
+ })
129
+ it('descending expiryDate', async () => {
130
+ const expiryDateOrderedDesc = (await ENSInstance.getNames({
131
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
132
+ type: 'registrant',
133
+ orderBy: 'expiryDate',
134
+ orderDirection: 'desc',
135
+ })) as Registration[]
136
+ expiryDateOrderedDesc.reduce((prev, curr) => {
137
+ expect(prev.expiryDate.getTime()).toBeGreaterThanOrEqual(
138
+ curr.expiryDate.getTime(),
139
+ )
140
+ return curr
141
+ })
142
+ })
143
+ it('ascending expiryDate', async () => {
144
+ const expiryDateOrderedAsc = (await ENSInstance.getNames({
145
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
146
+ type: 'registrant',
147
+ orderBy: 'expiryDate',
148
+ orderDirection: 'asc',
149
+ })) as Registration[]
150
+ expiryDateOrderedAsc.reduce((prev, curr) => {
151
+ expect(prev.expiryDate.getTime()).toBeLessThanOrEqual(
152
+ curr.expiryDate.getTime(),
153
+ )
154
+ return curr
155
+ })
156
+ })
157
+ it('descending labelName', async () => {
158
+ const labelNameOrderedDesc = (await ENSInstance.getNames({
159
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
160
+ type: 'registrant',
161
+ orderBy: 'labelName',
162
+ orderDirection: 'desc',
163
+ })) as Registration[]
164
+ labelNameOrderedDesc.reduce((prev, curr) => {
165
+ expect((prev.labelName || '') > (curr.labelName || '')).toBeTruthy()
166
+ return curr
167
+ })
168
+ })
169
+ it('ascending labelName', async () => {
170
+ const labelNameOrderedAsc = (await ENSInstance.getNames({
171
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
172
+ type: 'registrant',
173
+ orderBy: 'labelName',
174
+ orderDirection: 'asc',
175
+ })) as Registration[]
176
+ labelNameOrderedAsc.reduce((prev, curr) => {
177
+ expect((prev.labelName || '') < (curr.labelName || '')).toBeTruthy()
178
+ return curr
179
+ })
180
+ })
181
+ })
182
+ describe('owned names', () => {
183
+ it('descending createdAt', async () => {
184
+ const createdAtOrderedDesc = (await ENSInstance.getNames({
185
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
186
+ type: 'owner',
187
+ orderBy: 'createdAt',
188
+ orderDirection: 'desc',
189
+ })) as OwnedName[]
190
+ createdAtOrderedDesc.reduce((prev, curr) => {
191
+ expect(prev.createdAt.getTime()).toBeGreaterThanOrEqual(
192
+ curr.createdAt.getTime(),
193
+ )
194
+ return curr
195
+ })
196
+ })
197
+ it('ascending createdAt', async () => {
198
+ const createdAtOrderedAsc = (await ENSInstance.getNames({
199
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
200
+ type: 'owner',
201
+ orderBy: 'createdAt',
202
+ orderDirection: 'asc',
203
+ })) as OwnedName[]
204
+ createdAtOrderedAsc.reduce((prev, curr) => {
205
+ expect(prev.createdAt.getTime()).toBeLessThanOrEqual(
206
+ curr.createdAt.getTime(),
207
+ )
208
+ return curr
209
+ })
210
+ })
211
+ it('descending labelName', async () => {
212
+ const labelNameOrderedDesc = (await ENSInstance.getNames({
213
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
214
+ type: 'owner',
215
+ orderBy: 'labelName',
216
+ orderDirection: 'desc',
217
+ })) as Registration[]
218
+ labelNameOrderedDesc.reduce((prev, curr) => {
219
+ if (
220
+ (!prev.labelName && !curr.labelName) ||
221
+ (!prev.labelName && curr.labelName)
222
+ )
223
+ return curr
224
+ expect((prev.labelName || '') > (curr.labelName || '')).toBeTruthy()
225
+ return curr
226
+ })
227
+ })
228
+ it('ascending labelName', async () => {
229
+ const labelNameOrderedAsc = (await ENSInstance.getNames({
230
+ address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
231
+ type: 'owner',
232
+ orderBy: 'labelName',
233
+ orderDirection: 'asc',
234
+ })) as Registration[]
235
+ labelNameOrderedAsc.reduce((prev, curr) => {
236
+ if (
237
+ (!prev.labelName && !curr.labelName) ||
238
+ (prev.labelName && !curr.labelName)
239
+ )
240
+ return curr
241
+ expect((prev.labelName || '') < (curr.labelName || '')).toBeTruthy()
242
+ return curr
243
+ })
244
+ })
245
+ })
246
+ })
247
+ })
@@ -0,0 +1,71 @@
1
+ import { ethers } 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
+ const tx = await ENSInstance.wrapName('parthtejpal.eth', accounts[0])
14
+ await tx.wait()
15
+ })
16
+
17
+ afterAll(async () => {
18
+ await revert()
19
+ })
20
+
21
+ describe('getOwner', () => {
22
+ it('should return null for an unregistered name', async () => {
23
+ const result = await ENSInstance.getOwner('test123123cool.eth')
24
+ expect(result).toBeUndefined()
25
+ })
26
+ it('should return the owner, registrant, and ownership level for a registered name', async () => {
27
+ const result = await ENSInstance.getOwner('jefflau.eth')
28
+ expect(result).toMatchObject({
29
+ owner: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
30
+ registrant: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
31
+ ownershipLevel: 'registrar',
32
+ })
33
+ })
34
+ it('should return nameWrapper as the ownership level for a wrapped name', async () => {
35
+ const result = await ENSInstance.getOwner('parthtejpal.eth')
36
+ expect(result?.ownershipLevel).toBe('nameWrapper')
37
+ })
38
+ it('should return the owner at a specific level if specified', async () => {
39
+ const result = await ENSInstance.getOwner('parthtejpal.eth', 'registrar')
40
+ const nameWrapperAddress = (await ENSInstance.contracts!.getNameWrapper())
41
+ .address
42
+ expect(result?.ownershipLevel).toBe('registrar')
43
+ expect(result?.registrant).toBe(nameWrapperAddress)
44
+ })
45
+ it('should return the owner of a TLD on the registry', async () => {
46
+ const result = await ENSInstance.getOwner('eth')
47
+ const baseRegistrarAddress = (
48
+ await ENSInstance.contracts!.getBaseRegistrar()
49
+ ).address
50
+ expect(result?.ownershipLevel).toBe('registry')
51
+ expect(result?.owner?.toLowerCase()).toBe(
52
+ baseRegistrarAddress.toLowerCase(),
53
+ )
54
+ })
55
+ // it('should return registry as the ownership level for an unwrapped subname', async () => {
56
+ // const result0 = await ENSInstance.getOwner('fleek.eth')
57
+ // console.log(result0?.owner, accounts[2])
58
+
59
+ // const tx = await ENSInstance.createSubname({
60
+ // name: 'test.fleek.eth',
61
+ // contract: 'registry',
62
+ // owner: accounts[0],
63
+ // options: { addressOrIndex: accounts[1] },
64
+ // })
65
+
66
+ // await tx.wait()
67
+
68
+ // const result = await ENSInstance.getOwner('test.fleek.eth')
69
+ // expect(result?.ownershipLevel).toBe('registry')
70
+ // })
71
+ })