@ensdomains/ensjs 3.0.0-alpha.5 → 3.0.0-alpha.50

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 (773) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +13 -1
  3. package/dist/cjs/GqlManager.js +109 -36
  4. package/dist/cjs/contracts/baseRegistrar.js +24 -3
  5. package/dist/cjs/contracts/bulkRenewal.js +25 -0
  6. package/dist/cjs/contracts/dnsRegistrar.js +25 -0
  7. package/dist/cjs/contracts/ethRegistrarController.js +24 -3
  8. package/dist/cjs/contracts/factories.js +16 -0
  9. package/dist/cjs/contracts/getContractAddress.js +82 -43
  10. package/dist/cjs/contracts/index.js +56 -32
  11. package/dist/cjs/contracts/multicall.js +24 -21
  12. package/dist/cjs/contracts/nameWrapper.js +24 -3
  13. package/dist/cjs/contracts/publicResolver.js +24 -3
  14. package/dist/cjs/contracts/registry.js +24 -3
  15. package/dist/cjs/contracts/reverseRegistrar.js +24 -3
  16. package/dist/cjs/contracts/types.js +15 -1
  17. package/dist/cjs/contracts/universalResolver.js +24 -3
  18. package/dist/cjs/functions/batch.js +51 -16
  19. package/dist/cjs/functions/batchWrappers.js +130 -67
  20. package/dist/cjs/functions/commitName.js +48 -0
  21. package/dist/cjs/functions/createSubname.js +74 -34
  22. package/dist/cjs/functions/deleteSubname.js +69 -7
  23. package/dist/cjs/functions/getAvailable.js +55 -0
  24. package/dist/cjs/functions/getDNSOwner.js +78 -72
  25. package/dist/cjs/functions/getDecryptedName.js +111 -0
  26. package/dist/cjs/functions/getExpiry.js +111 -41
  27. package/dist/cjs/functions/getHistory.js +178 -193
  28. package/dist/cjs/functions/getName.js +51 -28
  29. package/dist/cjs/functions/getNames.js +228 -107
  30. package/dist/cjs/functions/getOwner.js +192 -123
  31. package/dist/cjs/functions/getPrice.js +119 -43
  32. package/dist/cjs/functions/getProfile.js +455 -253
  33. package/dist/cjs/functions/getRecords.js +29 -9
  34. package/dist/cjs/functions/getResolver.js +41 -19
  35. package/dist/cjs/functions/getSpecificRecord.js +270 -260
  36. package/dist/cjs/functions/getSubnames.js +99 -118
  37. package/dist/cjs/functions/getWrapperData.js +57 -0
  38. package/dist/cjs/functions/importDNSSECName.js +65 -0
  39. package/dist/cjs/functions/initialGetters.js +48 -37
  40. package/dist/cjs/functions/registerName.js +44 -0
  41. package/dist/cjs/functions/renewNames.js +55 -0
  42. package/dist/cjs/functions/setFuses.js +49 -0
  43. package/dist/cjs/functions/setName.js +41 -10
  44. package/dist/cjs/functions/setRecord.js +56 -0
  45. package/dist/cjs/functions/setRecords.js +50 -22
  46. package/dist/cjs/functions/setResolver.js +44 -18
  47. package/dist/cjs/functions/supportsTLD.js +48 -0
  48. package/dist/cjs/functions/transferController.js +42 -0
  49. package/dist/cjs/functions/transferName.js +62 -26
  50. package/dist/cjs/functions/transferSubname.js +56 -21
  51. package/dist/cjs/functions/types.js +16 -0
  52. package/dist/cjs/functions/unwrapName.js +50 -20
  53. package/dist/cjs/functions/wrapName.js +107 -52
  54. package/dist/cjs/generated/BaseRegistrarImplementation.js +15 -1
  55. package/dist/cjs/generated/BulkRenewal.js +16 -0
  56. package/dist/cjs/generated/DNSRegistrar.js +15 -1
  57. package/dist/cjs/generated/DNSSECImpl.js +15 -1
  58. package/dist/cjs/generated/DefaultReverseResolver.js +15 -1
  59. package/dist/cjs/generated/ENSRegistry.js +15 -1
  60. package/dist/cjs/generated/ETHRegistrarController.js +15 -1
  61. package/dist/cjs/generated/Multicall.js +15 -1
  62. package/dist/cjs/generated/NameWrapper.js +15 -1
  63. package/dist/cjs/generated/P256SHA256Algorithm.js +15 -1
  64. package/dist/cjs/generated/PublicResolver.js +15 -1
  65. package/dist/cjs/generated/RSASHA1Algorithm.js +15 -1
  66. package/dist/cjs/generated/RSASHA256Algorithm.js +15 -1
  67. package/dist/cjs/generated/ReverseRegistrar.js +15 -1
  68. package/dist/cjs/generated/Root.js +15 -1
  69. package/dist/cjs/generated/SHA1Digest.js +15 -1
  70. package/dist/cjs/generated/SHA1NSEC3Digest.js +15 -1
  71. package/dist/cjs/generated/SHA256Digest.js +15 -1
  72. package/dist/cjs/generated/StaticMetadataService.js +15 -1
  73. package/dist/cjs/generated/TLDPublicSuffixList.js +15 -1
  74. package/dist/cjs/generated/UniversalResolver.js +15 -1
  75. package/dist/cjs/generated/common.js +15 -1
  76. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +785 -764
  77. package/dist/cjs/generated/factories/BulkRenewal__factory.js +121 -0
  78. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +282 -288
  79. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +486 -492
  80. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +103 -82
  81. package/dist/cjs/generated/factories/ENSRegistry__factory.js +448 -431
  82. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +623 -504
  83. package/dist/cjs/generated/factories/Multicall__factory.js +458 -441
  84. package/dist/cjs/generated/factories/NameWrapper__factory.js +1400 -1194
  85. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +61 -67
  86. package/dist/cjs/generated/factories/PublicResolver__factory.js +1040 -885
  87. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +61 -67
  88. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +61 -67
  89. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +363 -333
  90. package/dist/cjs/generated/factories/Root__factory.js +254 -237
  91. package/dist/cjs/generated/factories/SHA1Digest__factory.js +56 -62
  92. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +61 -67
  93. package/dist/cjs/generated/factories/SHA256Digest__factory.js +56 -62
  94. package/dist/cjs/generated/factories/StaticMetadataService__factory.js +65 -44
  95. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +51 -57
  96. package/dist/cjs/generated/factories/UniversalResolver__factory.js +558 -199
  97. package/dist/cjs/generated/factories/index.js +63 -17
  98. package/dist/cjs/generated/index.js +70 -37
  99. package/dist/cjs/index.js +319 -224
  100. package/dist/cjs/static.js +85 -0
  101. package/dist/cjs/utils/ccip.js +129 -0
  102. package/dist/cjs/utils/consts.js +26 -0
  103. package/dist/cjs/utils/contentHash.js +145 -142
  104. package/dist/cjs/utils/createReverseNode.js +23 -2
  105. package/dist/cjs/utils/format.js +27 -8
  106. package/dist/cjs/utils/fuses.js +293 -15
  107. package/dist/cjs/utils/hexEncodedName.js +31 -7
  108. package/dist/cjs/utils/labels.js +105 -83
  109. package/dist/cjs/utils/makeHashIndexes.js +27 -6
  110. package/dist/cjs/utils/normalise.js +51 -22
  111. package/dist/cjs/utils/recordHelpers.js +151 -37
  112. package/dist/cjs/utils/registerHelpers.js +104 -46
  113. package/dist/cjs/utils/registry.js +32 -0
  114. package/dist/cjs/utils/singleCall.js +31 -6
  115. package/dist/cjs/utils/subgraph-types.js +16 -0
  116. package/dist/cjs/utils/validation.js +78 -63
  117. package/dist/cjs/utils/wrapper.js +56 -0
  118. package/dist/cjs/utils/writeTx.js +25 -0
  119. package/dist/esm/GqlManager.mjs +88 -0
  120. package/dist/esm/contracts/baseRegistrar.mjs +6 -0
  121. package/dist/esm/contracts/bulkRenewal.mjs +6 -0
  122. package/dist/esm/contracts/dnsRegistrar.mjs +6 -0
  123. package/dist/esm/contracts/ethRegistrarController.mjs +6 -0
  124. package/dist/esm/contracts/factories.mjs +0 -0
  125. package/dist/esm/contracts/getContractAddress.mjs +66 -0
  126. package/dist/esm/contracts/index.mjs +44 -0
  127. package/dist/esm/contracts/multicall.mjs +6 -0
  128. package/dist/esm/contracts/nameWrapper.mjs +6 -0
  129. package/dist/esm/contracts/publicResolver.mjs +6 -0
  130. package/dist/esm/contracts/registry.mjs +6 -0
  131. package/dist/esm/contracts/reverseRegistrar.mjs +6 -0
  132. package/dist/esm/contracts/types.mjs +0 -0
  133. package/dist/esm/contracts/universalResolver.mjs +6 -0
  134. package/dist/esm/functions/batch.mjs +37 -0
  135. package/dist/esm/functions/batchWrappers.mjs +109 -0
  136. package/dist/esm/functions/commitName.mjs +29 -0
  137. package/dist/esm/functions/createSubname.mjs +61 -0
  138. package/dist/esm/functions/deleteSubname.mjs +52 -0
  139. package/dist/esm/functions/getAvailable.mjs +36 -0
  140. package/dist/esm/functions/getDNSOwner.mjs +60 -0
  141. package/dist/esm/functions/getDecryptedName.mjs +96 -0
  142. package/dist/esm/functions/getExpiry.mjs +96 -0
  143. package/dist/esm/functions/getHistory.mjs +245 -0
  144. package/dist/esm/functions/getName.mjs +38 -0
  145. package/dist/esm/functions/getNames.mjs +324 -0
  146. package/dist/esm/functions/getOwner.mjs +189 -0
  147. package/dist/esm/functions/getPrice.mjs +107 -0
  148. package/dist/esm/functions/getProfile.mjs +485 -0
  149. package/dist/esm/functions/getRecords.mjs +12 -0
  150. package/dist/esm/functions/getResolver.mjs +27 -0
  151. package/dist/esm/functions/getSpecificRecord.mjs +253 -0
  152. package/dist/esm/functions/getSubnames.mjs +116 -0
  153. package/dist/esm/functions/getWrapperData.mjs +38 -0
  154. package/dist/esm/functions/importDNSSECName.mjs +40 -0
  155. package/dist/esm/functions/initialGetters.mjs +25 -0
  156. package/dist/esm/functions/registerName.mjs +27 -0
  157. package/dist/esm/functions/renewNames.mjs +36 -0
  158. package/dist/esm/functions/setFuses.mjs +30 -0
  159. package/dist/esm/functions/setName.mjs +23 -0
  160. package/dist/esm/functions/setRecord.mjs +36 -0
  161. package/dist/esm/functions/setRecords.mjs +32 -0
  162. package/dist/esm/functions/setResolver.mjs +29 -0
  163. package/dist/esm/functions/supportsTLD.mjs +29 -0
  164. package/dist/esm/functions/transferController.mjs +23 -0
  165. package/dist/esm/functions/transferName.mjs +46 -0
  166. package/dist/esm/functions/transferSubname.mjs +40 -0
  167. package/dist/esm/functions/types.mjs +0 -0
  168. package/dist/esm/functions/unwrapName.mjs +34 -0
  169. package/dist/esm/functions/wrapName.mjs +96 -0
  170. package/dist/esm/generated/BaseRegistrarImplementation.mjs +0 -0
  171. package/dist/esm/generated/BulkRenewal.mjs +0 -0
  172. package/dist/esm/generated/DNSRegistrar.mjs +0 -0
  173. package/dist/esm/generated/DNSSECImpl.mjs +0 -0
  174. package/dist/esm/generated/DefaultReverseResolver.mjs +0 -0
  175. package/dist/esm/generated/ENSRegistry.mjs +0 -0
  176. package/dist/esm/generated/ETHRegistrarController.mjs +0 -0
  177. package/dist/esm/generated/Multicall.mjs +0 -0
  178. package/dist/esm/generated/NameWrapper.mjs +0 -0
  179. package/dist/esm/generated/P256SHA256Algorithm.mjs +0 -0
  180. package/dist/esm/generated/PublicResolver.mjs +0 -0
  181. package/dist/esm/generated/RSASHA1Algorithm.mjs +0 -0
  182. package/dist/esm/generated/RSASHA256Algorithm.mjs +0 -0
  183. package/dist/esm/generated/ReverseRegistrar.mjs +0 -0
  184. package/dist/esm/generated/Root.mjs +0 -0
  185. package/dist/esm/generated/SHA1Digest.mjs +0 -0
  186. package/dist/esm/generated/SHA1NSEC3Digest.mjs +0 -0
  187. package/dist/esm/generated/SHA256Digest.mjs +0 -0
  188. package/dist/esm/generated/StaticMetadataService.mjs +0 -0
  189. package/dist/esm/generated/TLDPublicSuffixList.mjs +0 -0
  190. package/dist/esm/generated/UniversalResolver.mjs +0 -0
  191. package/dist/esm/generated/common.mjs +0 -0
  192. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.mjs +779 -0
  193. package/dist/esm/generated/factories/BulkRenewal__factory.mjs +109 -0
  194. package/dist/esm/generated/factories/DNSRegistrar__factory.mjs +278 -0
  195. package/dist/esm/generated/factories/DNSSECImpl__factory.mjs +483 -0
  196. package/dist/esm/generated/factories/DefaultReverseResolver__factory.mjs +96 -0
  197. package/dist/esm/generated/factories/ENSRegistry__factory.mjs +444 -0
  198. package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +618 -0
  199. package/dist/esm/generated/factories/Multicall__factory.mjs +462 -0
  200. package/dist/esm/generated/factories/NameWrapper__factory.mjs +1394 -0
  201. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.mjs +53 -0
  202. package/dist/esm/generated/factories/PublicResolver__factory.mjs +1035 -0
  203. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.mjs +53 -0
  204. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.mjs +53 -0
  205. package/dist/esm/generated/factories/ReverseRegistrar__factory.mjs +358 -0
  206. package/dist/esm/generated/factories/Root__factory.mjs +248 -0
  207. package/dist/esm/generated/factories/SHA1Digest__factory.mjs +48 -0
  208. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.mjs +53 -0
  209. package/dist/esm/generated/factories/SHA256Digest__factory.mjs +48 -0
  210. package/dist/esm/generated/factories/StaticMetadataService__factory.mjs +58 -0
  211. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.mjs +43 -0
  212. package/dist/esm/generated/factories/UniversalResolver__factory.mjs +551 -0
  213. package/dist/esm/generated/factories/index.mjs +45 -0
  214. package/dist/esm/generated/index.mjs +47 -0
  215. package/dist/esm/index.mjs +311 -0
  216. package/dist/esm/static.mjs +62 -0
  217. package/dist/esm/utils/ccip.mjs +114 -0
  218. package/dist/esm/utils/consts.mjs +7 -0
  219. package/dist/esm/utils/contentHash.mjs +142 -0
  220. package/dist/esm/utils/createReverseNode.mjs +5 -0
  221. package/dist/esm/utils/format.mjs +9 -0
  222. package/dist/esm/utils/fuses.mjs +283 -0
  223. package/dist/esm/utils/hexEncodedName.mjs +8 -0
  224. package/dist/esm/utils/labels.mjs +112 -0
  225. package/dist/esm/utils/makeHashIndexes.mjs +10 -0
  226. package/dist/esm/utils/normalise.mjs +32 -0
  227. package/dist/esm/utils/recordHelpers.mjs +133 -0
  228. package/dist/esm/utils/registerHelpers.mjs +90 -0
  229. package/dist/esm/utils/registry.mjs +13 -0
  230. package/dist/esm/utils/singleCall.mjs +13 -0
  231. package/dist/esm/utils/subgraph-types.mjs +0 -0
  232. package/dist/esm/utils/validation.mjs +69 -0
  233. package/dist/esm/utils/wrapper.mjs +37 -0
  234. package/dist/esm/utils/writeTx.mjs +6 -0
  235. package/dist/types/GqlManager.d.ts +13 -0
  236. package/dist/types/contracts/baseRegistrar.d.ts +3 -0
  237. package/dist/types/contracts/bulkRenewal.d.ts +3 -0
  238. package/dist/types/contracts/dnsRegistrar.d.ts +3 -0
  239. package/dist/types/contracts/ethRegistrarController.d.ts +3 -0
  240. package/dist/types/contracts/factories.d.ts +45 -0
  241. package/dist/types/contracts/index.d.ts +38 -0
  242. package/dist/types/contracts/multicall.d.ts +3 -0
  243. package/dist/types/contracts/nameWrapper.d.ts +3 -0
  244. package/dist/types/contracts/publicResolver.d.ts +3 -0
  245. package/dist/types/contracts/registry.d.ts +3 -0
  246. package/dist/types/contracts/reverseRegistrar.d.ts +3 -0
  247. package/dist/types/contracts/types.d.ts +2 -0
  248. package/dist/types/contracts/universalResolver.d.ts +3 -0
  249. package/dist/{cjs → types}/functions/batch.d.ts +8 -1
  250. package/dist/types/functions/batchWrappers.d.ts +86 -0
  251. package/dist/types/functions/commitName.d.ts +25 -0
  252. package/dist/types/functions/createSubname.d.ts +16 -0
  253. package/dist/types/functions/deleteSubname.d.ts +12 -0
  254. package/dist/{esm/functions/getResolver.d.ts → types/functions/getAvailable.d.ts} +1 -1
  255. package/dist/types/functions/getDecryptedName.d.ts +9 -0
  256. package/dist/types/functions/getExpiry.d.ts +19 -0
  257. package/dist/types/functions/getHistory.d.ts +44 -0
  258. package/dist/{cjs → types}/functions/getName.d.ts +2 -2
  259. package/dist/{esm → types}/functions/getNames.d.ts +13 -3
  260. package/dist/{cjs → types}/functions/getOwner.d.ts +2 -1
  261. package/dist/{esm → types}/functions/getPrice.d.ts +3 -3
  262. package/dist/{esm → types}/functions/getProfile.d.ts +12 -1
  263. package/dist/{cjs → types}/functions/getRecords.d.ts +5 -2
  264. package/dist/{esm → types}/functions/getSpecificRecord.d.ts +28 -6
  265. package/dist/{esm → types}/functions/getSubnames.d.ts +18 -6
  266. package/dist/types/functions/getWrapperData.d.ts +54 -0
  267. package/dist/types/functions/importDNSSECName.d.ts +7 -0
  268. package/dist/{cjs → types}/functions/initialGetters.d.ts +1 -0
  269. package/dist/types/functions/registerName.d.ts +8 -0
  270. package/dist/types/functions/renewNames.d.ts +12 -0
  271. package/dist/types/functions/setFuses.d.ts +7 -0
  272. package/dist/{esm → types}/functions/setName.d.ts +1 -1
  273. package/dist/types/functions/setRecord.d.ts +22 -0
  274. package/dist/{cjs → types}/functions/setRecords.d.ts +1 -1
  275. package/dist/{esm → types}/functions/setResolver.d.ts +1 -1
  276. package/dist/types/functions/supportsTLD.d.ts +2 -0
  277. package/dist/types/functions/transferController.d.ts +5 -0
  278. package/dist/{esm → types}/functions/transferName.d.ts +3 -3
  279. package/dist/{esm/functions/createSubname.d.ts → types/functions/transferSubname.d.ts} +3 -4
  280. package/dist/types/functions/types.d.ts +83 -0
  281. package/dist/{esm → types}/functions/unwrapName.d.ts +1 -1
  282. package/dist/types/functions/wrapName.d.ts +9 -0
  283. package/dist/types/generated/BaseRegistrarImplementation.d.ts +512 -0
  284. package/dist/types/generated/BulkRenewal.d.ts +80 -0
  285. package/dist/types/generated/DNSRegistrar.d.ts +228 -0
  286. package/dist/types/generated/DNSSECImpl.d.ts +406 -0
  287. package/dist/types/generated/DefaultReverseResolver.d.ts +70 -0
  288. package/dist/types/generated/ENSRegistry.d.ts +278 -0
  289. package/dist/types/generated/ETHRegistrarController.d.ts +343 -0
  290. package/dist/{esm → types}/generated/Multicall.d.ts +113 -109
  291. package/dist/types/generated/NameWrapper.d.ts +859 -0
  292. package/dist/{esm → types}/generated/P256SHA256Algorithm.d.ts +22 -14
  293. package/dist/types/generated/PublicResolver.d.ts +647 -0
  294. package/dist/types/generated/RSASHA1Algorithm.d.ts +50 -0
  295. package/dist/types/generated/RSASHA256Algorithm.d.ts +50 -0
  296. package/dist/types/generated/ReverseRegistrar.d.ts +283 -0
  297. package/dist/types/generated/Root.d.ts +177 -0
  298. package/dist/{cjs → types}/generated/SHA1Digest.d.ts +18 -14
  299. package/dist/{esm → types}/generated/SHA1NSEC3Digest.d.ts +22 -14
  300. package/dist/{esm → types}/generated/SHA256Digest.d.ts +18 -14
  301. package/dist/types/generated/StaticMetadataService.d.ts +46 -0
  302. package/dist/types/generated/TLDPublicSuffixList.d.ts +46 -0
  303. package/dist/types/generated/UniversalResolver.d.ts +235 -0
  304. package/dist/{esm → types}/generated/common.d.ts +4 -3
  305. package/dist/{cjs → types}/generated/factories/BaseRegistrarImplementation__factory.d.ts +3 -3
  306. package/dist/{cjs/generated/factories/StaticMetadataService__factory.d.ts → types/generated/factories/BulkRenewal__factory.d.ts} +6 -6
  307. package/dist/{cjs/generated/factories/ETHRegistrarController__factory.d.ts → types/generated/factories/DNSRegistrar__factory.d.ts} +17 -16
  308. package/dist/{esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts → types/generated/factories/DNSSECImpl__factory.d.ts} +11 -11
  309. package/dist/{esm → types}/generated/factories/DefaultReverseResolver__factory.d.ts +3 -3
  310. package/dist/{esm → types}/generated/factories/ENSRegistry__factory.d.ts +3 -3
  311. package/dist/{esm → types}/generated/factories/ETHRegistrarController__factory.d.ts +15 -4
  312. package/dist/{esm → types}/generated/factories/Multicall__factory.d.ts +3 -3
  313. package/dist/{esm → types}/generated/factories/NameWrapper__factory.d.ts +3 -3
  314. package/dist/types/generated/factories/P256SHA256Algorithm__factory.d.ts +22 -0
  315. package/dist/{esm → types}/generated/factories/PublicResolver__factory.d.ts +3 -3
  316. package/dist/types/generated/factories/RSASHA1Algorithm__factory.d.ts +22 -0
  317. package/dist/types/generated/factories/RSASHA256Algorithm__factory.d.ts +22 -0
  318. package/dist/{esm → types}/generated/factories/ReverseRegistrar__factory.d.ts +3 -3
  319. package/dist/{cjs → types}/generated/factories/Root__factory.d.ts +3 -3
  320. package/dist/types/generated/factories/SHA1Digest__factory.d.ts +22 -0
  321. package/dist/types/generated/factories/SHA1NSEC3Digest__factory.d.ts +22 -0
  322. package/dist/types/generated/factories/SHA256Digest__factory.d.ts +22 -0
  323. package/dist/{esm → types}/generated/factories/StaticMetadataService__factory.d.ts +3 -3
  324. package/dist/types/generated/factories/TLDPublicSuffixList__factory.d.ts +22 -0
  325. package/dist/{cjs/generated/factories/NameWrapper__factory.d.ts → types/generated/factories/UniversalResolver__factory.d.ts} +6 -6
  326. package/dist/types/generated/factories/index.d.ts +21 -0
  327. package/dist/types/generated/index.d.ts +43 -0
  328. package/dist/types/index.d.ts +684 -0
  329. package/dist/types/static.d.ts +26 -0
  330. package/dist/types/utils/ccip.d.ts +3 -0
  331. package/dist/types/utils/consts.d.ts +2 -0
  332. package/dist/types/utils/fuses.d.ts +133 -0
  333. package/dist/{cjs → types}/utils/hexEncodedName.d.ts +1 -0
  334. package/dist/{cjs → types}/utils/labels.d.ts +2 -1
  335. package/dist/types/utils/normalise.d.ts +2 -0
  336. package/dist/types/utils/recordHelpers.d.ts +29 -0
  337. package/dist/types/utils/registerHelpers.d.ts +41 -0
  338. package/dist/types/utils/registry.d.ts +2 -0
  339. package/dist/{esm → types}/utils/singleCall.d.ts +3 -2
  340. package/dist/types/utils/subgraph-types.d.ts +284 -0
  341. package/dist/{esm → types}/utils/validation.d.ts +1 -0
  342. package/dist/types/utils/wrapper.d.ts +7 -0
  343. package/dist/types/utils/writeTx.d.ts +21 -0
  344. package/package.json +110 -39
  345. package/src/@types/@ensdomains/ens-contracts.d.ts +1 -1
  346. package/src/@types/dns-packet/index.d.ts +113 -113
  347. package/src/@types/pako.d.ts +188 -0
  348. package/src/ABIs/Multicall.json +452 -0
  349. package/src/GqlManager.test.ts +173 -0
  350. package/src/GqlManager.ts +105 -9
  351. package/src/contracts/baseRegistrar.ts +2 -2
  352. package/src/contracts/bulkRenewal.ts +6 -0
  353. package/src/contracts/dnsRegistrar.ts +5 -0
  354. package/src/contracts/ethRegistrarController.ts +2 -2
  355. package/src/contracts/factories.ts +48 -0
  356. package/src/contracts/getContractAddress.ts +28 -5
  357. package/src/contracts/index.ts +72 -48
  358. package/src/contracts/multicall.ts +2 -21
  359. package/src/contracts/nameWrapper.ts +2 -2
  360. package/src/contracts/publicResolver.ts +2 -2
  361. package/src/contracts/registry.ts +2 -2
  362. package/src/contracts/reverseRegistrar.ts +2 -2
  363. package/src/contracts/types.ts +3 -1
  364. package/src/contracts/universalResolver.ts +2 -2
  365. package/src/functions/batch.test.ts +10 -10
  366. package/src/functions/batch.ts +18 -8
  367. package/src/functions/batchWrappers.test.ts +13 -13
  368. package/src/functions/batchWrappers.ts +42 -11
  369. package/src/functions/ccip.test.ts +62 -0
  370. package/src/functions/commitName.test.ts +58 -0
  371. package/src/functions/commitName.ts +38 -0
  372. package/src/functions/createSubname.test.ts +10 -15
  373. package/src/functions/createSubname.ts +25 -12
  374. package/src/functions/deleteSubname.test.ts +160 -30
  375. package/src/functions/deleteSubname.ts +64 -10
  376. package/src/functions/getAvailable.test.ts +21 -0
  377. package/src/functions/getAvailable.ts +37 -0
  378. package/src/functions/getDNSOwner.test.ts +9 -19
  379. package/src/functions/getDNSOwner.ts +11 -9
  380. package/src/functions/getDecryptedName.test.ts +49 -0
  381. package/src/functions/getDecryptedName.ts +119 -0
  382. package/src/functions/getExpiry.test.ts +28 -10
  383. package/src/functions/getExpiry.ts +90 -11
  384. package/src/functions/getHistory.test.ts +27 -79
  385. package/src/functions/getHistory.ts +166 -194
  386. package/src/functions/getName.test.ts +10 -10
  387. package/src/functions/getName.ts +4 -4
  388. package/src/functions/getNames.test.ts +166 -89
  389. package/src/functions/getNames.ts +181 -44
  390. package/src/functions/getOwner.test.ts +57 -51
  391. package/src/functions/getOwner.ts +87 -29
  392. package/src/functions/getPrice.test.ts +55 -0
  393. package/src/functions/getPrice.ts +66 -13
  394. package/src/functions/getProfile.test.ts +135 -29
  395. package/src/functions/getProfile.ts +306 -159
  396. package/src/functions/getRecords.ts +2 -1
  397. package/src/functions/getResolver.test.ts +5 -9
  398. package/src/functions/getResolver.ts +2 -6
  399. package/src/functions/getSpecificRecord.test.ts +185 -20
  400. package/src/functions/getSpecificRecord.ts +114 -149
  401. package/src/functions/getSubnames.test.ts +1556 -7
  402. package/src/functions/getSubnames.ts +105 -114
  403. package/src/functions/getWrapperData.test.ts +66 -0
  404. package/src/functions/getWrapperData.ts +44 -0
  405. package/src/functions/importDNSSECName.ts +54 -0
  406. package/src/functions/initialGetters.ts +1 -0
  407. package/src/functions/makeCommitment.test.ts +6 -6
  408. package/src/functions/registerName.test.ts +59 -0
  409. package/src/functions/registerName.ts +38 -0
  410. package/src/functions/renewNames.test.ts +64 -0
  411. package/src/functions/renewNames.ts +54 -0
  412. package/src/functions/setFuses.test.ts +240 -0
  413. package/src/functions/setFuses.ts +44 -0
  414. package/src/functions/setName.test.ts +21 -18
  415. package/src/functions/setName.ts +5 -5
  416. package/src/functions/setRecord.test.ts +249 -0
  417. package/src/functions/setRecord.ts +64 -0
  418. package/src/functions/setRecords.test.ts +54 -14
  419. package/src/functions/setRecords.ts +2 -2
  420. package/src/functions/setResolver.test.ts +10 -15
  421. package/src/functions/setResolver.ts +6 -3
  422. package/src/functions/supportsTLD.test.ts +45 -0
  423. package/src/functions/supportsTLD.ts +38 -0
  424. package/src/functions/transferController.ts +29 -0
  425. package/src/functions/transferName.test.ts +18 -32
  426. package/src/functions/transferName.ts +15 -8
  427. package/src/functions/transferSubname.test.ts +126 -43
  428. package/src/functions/transferSubname.ts +35 -13
  429. package/src/functions/types.ts +102 -0
  430. package/src/functions/unwrapName.test.ts +17 -32
  431. package/src/functions/unwrapName.ts +20 -11
  432. package/src/functions/wrapName.test.ts +121 -37
  433. package/src/functions/wrapName.ts +60 -56
  434. package/src/generated/BaseRegistrarImplementation.ts +846 -773
  435. package/src/generated/BulkRenewal.ts +196 -0
  436. package/src/generated/DNSRegistrar.ts +276 -262
  437. package/src/generated/DNSSECImpl.ts +436 -412
  438. package/src/generated/DefaultReverseResolver.ts +95 -79
  439. package/src/generated/ENSRegistry.ts +491 -422
  440. package/src/generated/ETHRegistrarController.ts +583 -492
  441. package/src/generated/Multicall.ts +345 -336
  442. package/src/generated/NameWrapper.ts +1645 -1215
  443. package/src/generated/P256SHA256Algorithm.ts +70 -65
  444. package/src/generated/PublicResolver.ts +1228 -941
  445. package/src/generated/RSASHA1Algorithm.ts +70 -65
  446. package/src/generated/RSASHA256Algorithm.ts +70 -65
  447. package/src/generated/ReverseRegistrar.ts +428 -362
  448. package/src/generated/Root.ts +295 -241
  449. package/src/generated/SHA1Digest.ts +61 -60
  450. package/src/generated/SHA1NSEC3Digest.ts +70 -66
  451. package/src/generated/SHA256Digest.ts +61 -60
  452. package/src/generated/StaticMetadataService.ts +61 -46
  453. package/src/generated/TLDPublicSuffixList.ts +59 -55
  454. package/src/generated/UniversalResolver.ts +696 -189
  455. package/src/generated/common.ts +16 -14
  456. package/src/generated/factories/BaseRegistrarImplementation__factory.ts +340 -338
  457. package/src/generated/factories/BulkRenewal__factory.ts +110 -0
  458. package/src/generated/factories/DNSRegistrar__factory.ts +134 -184
  459. package/src/generated/factories/DNSSECImpl__factory.ts +233 -276
  460. package/src/generated/factories/DefaultReverseResolver__factory.ts +40 -38
  461. package/src/generated/factories/ENSRegistry__factory.ts +199 -197
  462. package/src/generated/factories/ETHRegistrarController__factory.ts +351 -251
  463. package/src/generated/factories/Multicall__factory.ts +226 -224
  464. package/src/generated/factories/NameWrapper__factory.ts +792 -601
  465. package/src/generated/factories/P256SHA256Algorithm__factory.ts +27 -61
  466. package/src/generated/factories/PublicResolver__factory.ts +573 -436
  467. package/src/generated/factories/RSASHA1Algorithm__factory.ts +27 -61
  468. package/src/generated/factories/RSASHA256Algorithm__factory.ts +27 -61
  469. package/src/generated/factories/ReverseRegistrar__factory.ts +175 -160
  470. package/src/generated/factories/Root__factory.ts +103 -101
  471. package/src/generated/factories/SHA1Digest__factory.ts +24 -58
  472. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +27 -61
  473. package/src/generated/factories/SHA256Digest__factory.ts +24 -58
  474. package/src/generated/factories/StaticMetadataService__factory.ts +25 -23
  475. package/src/generated/factories/TLDPublicSuffixList__factory.ts +21 -55
  476. package/src/generated/factories/UniversalResolver__factory.ts +446 -102
  477. package/src/generated/factories/index.ts +15 -0
  478. package/src/generated/index.ts +31 -1
  479. package/src/index.ts +244 -160
  480. package/src/static.ts +94 -0
  481. package/src/utils/ccip.ts +149 -0
  482. package/src/utils/consts.ts +2 -0
  483. package/src/utils/contentHash.ts +29 -27
  484. package/src/utils/createReverseNode.ts +1 -1
  485. package/src/utils/fuses.ts +341 -4
  486. package/src/utils/hexEncodedName.ts +3 -0
  487. package/src/utils/labels.ts +20 -16
  488. package/src/utils/normalise.ts +14 -6
  489. package/src/utils/recordHelpers.ts +131 -20
  490. package/src/utils/registerHelpers.ts +98 -56
  491. package/src/utils/registry.ts +14 -0
  492. package/src/utils/singleCall.ts +13 -8
  493. package/src/utils/subgraph-types.ts +312 -0
  494. package/src/utils/validation.ts +12 -10
  495. package/src/utils/wrapper.ts +39 -0
  496. package/src/utils/writeTx.ts +16 -0
  497. package/dist/cjs/GqlManager.d.ts +0 -6
  498. package/dist/cjs/contracts/baseRegistrar.d.ts +0 -3
  499. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  500. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
  501. package/dist/cjs/contracts/ethRegistrarController.d.ts +0 -3
  502. package/dist/cjs/contracts/index.d.ts +0 -16
  503. package/dist/cjs/contracts/multicall.d.ts +0 -3
  504. package/dist/cjs/contracts/nameWrapper.d.ts +0 -3
  505. package/dist/cjs/contracts/publicResolver.d.ts +0 -3
  506. package/dist/cjs/contracts/registry.d.ts +0 -3
  507. package/dist/cjs/contracts/reverseRegistrar.d.ts +0 -3
  508. package/dist/cjs/contracts/types.d.ts +0 -2
  509. package/dist/cjs/contracts/universalResolver.d.ts +0 -3
  510. package/dist/cjs/functions/batchWrappers.d.ts +0 -29
  511. package/dist/cjs/functions/burnFuses.d.ts +0 -5
  512. package/dist/cjs/functions/burnFuses.js +0 -14
  513. package/dist/cjs/functions/createSubname.d.ts +0 -15
  514. package/dist/cjs/functions/deleteSubname.d.ts +0 -4
  515. package/dist/cjs/functions/getExpiry.d.ts +0 -12
  516. package/dist/cjs/functions/getFuses.d.ts +0 -17
  517. package/dist/cjs/functions/getFuses.js +0 -62
  518. package/dist/cjs/functions/getHistory.d.ts +0 -54
  519. package/dist/cjs/functions/getNames.d.ts +0 -40
  520. package/dist/cjs/functions/getPrice.d.ts +0 -13
  521. package/dist/cjs/functions/getProfile.d.ts +0 -30
  522. package/dist/cjs/functions/getSpecificRecord.d.ts +0 -73
  523. package/dist/cjs/functions/getSubnames.d.ts +0 -26
  524. package/dist/cjs/functions/setName.d.ts +0 -5
  525. package/dist/cjs/functions/setResolver.d.ts +0 -5
  526. package/dist/cjs/functions/transferName.d.ts +0 -6
  527. package/dist/cjs/functions/transferSubname.d.ts +0 -6
  528. package/dist/cjs/functions/unwrapName.d.ts +0 -5
  529. package/dist/cjs/functions/wrapName.d.ts +0 -8
  530. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +0 -487
  531. package/dist/cjs/generated/DNSRegistrar.d.ts +0 -220
  532. package/dist/cjs/generated/DNSSECImpl.d.ts +0 -402
  533. package/dist/cjs/generated/DefaultReverseResolver.d.ts +0 -66
  534. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  535. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
  536. package/dist/cjs/generated/ENSRegistry.d.ts +0 -259
  537. package/dist/cjs/generated/ETHRegistrarController.d.ts +0 -319
  538. package/dist/cjs/generated/Multicall.d.ts +0 -292
  539. package/dist/cjs/generated/NameWrapper.d.ts +0 -675
  540. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +0 -72
  541. package/dist/cjs/generated/PublicResolver.d.ts +0 -542
  542. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +0 -42
  543. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +0 -42
  544. package/dist/cjs/generated/ReverseRegistrar.d.ts +0 -259
  545. package/dist/cjs/generated/Root.d.ts +0 -173
  546. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +0 -72
  547. package/dist/cjs/generated/SHA256Digest.d.ts +0 -67
  548. package/dist/cjs/generated/StaticMetadataService.d.ts +0 -42
  549. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +0 -42
  550. package/dist/cjs/generated/UniversalResolver.d.ts +0 -82
  551. package/dist/cjs/generated/common.d.ts +0 -21
  552. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +0 -79
  553. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +0 -68
  554. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.d.ts +0 -36
  555. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  556. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
  557. package/dist/cjs/generated/factories/ENSRegistry__factory.d.ts +0 -52
  558. package/dist/cjs/generated/factories/Multicall__factory.d.ts +0 -42
  559. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -34
  560. package/dist/cjs/generated/factories/PublicResolver__factory.d.ts +0 -46
  561. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +0 -34
  562. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -34
  563. package/dist/cjs/generated/factories/ReverseRegistrar__factory.d.ts +0 -46
  564. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +0 -34
  565. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -34
  566. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +0 -34
  567. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +0 -34
  568. package/dist/cjs/generated/factories/UniversalResolver__factory.d.ts +0 -42
  569. package/dist/cjs/generated/factories/index.d.ts +0 -6
  570. package/dist/cjs/generated/index.d.ts +0 -13
  571. package/dist/cjs/index.d.ts +0 -488
  572. package/dist/cjs/utils/fuses.d.ts +0 -20
  573. package/dist/cjs/utils/generateFuseInput.d.ts +0 -3
  574. package/dist/cjs/utils/generateFuseInput.js +0 -19
  575. package/dist/cjs/utils/normalise.d.ts +0 -2
  576. package/dist/cjs/utils/recordHelpers.d.ts +0 -13
  577. package/dist/cjs/utils/registerHelpers.d.ts +0 -26
  578. package/dist/cjs/utils/singleCall.d.ts +0 -9
  579. package/dist/cjs/utils/validation.d.ts +0 -8
  580. package/dist/esm/GqlManager.d.ts +0 -6
  581. package/dist/esm/GqlManager.js +0 -18
  582. package/dist/esm/contracts/baseRegistrar.d.ts +0 -3
  583. package/dist/esm/contracts/baseRegistrar.js +0 -2
  584. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  585. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
  586. package/dist/esm/contracts/ethRegistrarController.d.ts +0 -3
  587. package/dist/esm/contracts/ethRegistrarController.js +0 -2
  588. package/dist/esm/contracts/getContractAddress.d.ts +0 -3
  589. package/dist/esm/contracts/getContractAddress.js +0 -42
  590. package/dist/esm/contracts/index.d.ts +0 -16
  591. package/dist/esm/contracts/index.js +0 -29
  592. package/dist/esm/contracts/multicall.d.ts +0 -3
  593. package/dist/esm/contracts/multicall.js +0 -20
  594. package/dist/esm/contracts/nameWrapper.d.ts +0 -3
  595. package/dist/esm/contracts/nameWrapper.js +0 -2
  596. package/dist/esm/contracts/publicResolver.d.ts +0 -3
  597. package/dist/esm/contracts/publicResolver.js +0 -2
  598. package/dist/esm/contracts/registry.d.ts +0 -3
  599. package/dist/esm/contracts/registry.js +0 -2
  600. package/dist/esm/contracts/reverseRegistrar.d.ts +0 -3
  601. package/dist/esm/contracts/reverseRegistrar.js +0 -2
  602. package/dist/esm/contracts/types.d.ts +0 -2
  603. package/dist/esm/contracts/types.js +0 -1
  604. package/dist/esm/contracts/universalResolver.d.ts +0 -3
  605. package/dist/esm/contracts/universalResolver.js +0 -2
  606. package/dist/esm/functions/batch.d.ts +0 -9
  607. package/dist/esm/functions/batch.js +0 -19
  608. package/dist/esm/functions/batchWrappers.d.ts +0 -29
  609. package/dist/esm/functions/batchWrappers.js +0 -68
  610. package/dist/esm/functions/burnFuses.d.ts +0 -5
  611. package/dist/esm/functions/burnFuses.js +0 -8
  612. package/dist/esm/functions/createSubname.js +0 -34
  613. package/dist/esm/functions/deleteSubname.d.ts +0 -4
  614. package/dist/esm/functions/deleteSubname.js +0 -6
  615. package/dist/esm/functions/getDNSOwner.d.ts +0 -7
  616. package/dist/esm/functions/getDNSOwner.js +0 -51
  617. package/dist/esm/functions/getExpiry.d.ts +0 -12
  618. package/dist/esm/functions/getExpiry.js +0 -43
  619. package/dist/esm/functions/getFuses.d.ts +0 -17
  620. package/dist/esm/functions/getFuses.js +0 -60
  621. package/dist/esm/functions/getHistory.d.ts +0 -54
  622. package/dist/esm/functions/getHistory.js +0 -273
  623. package/dist/esm/functions/getName.d.ts +0 -19
  624. package/dist/esm/functions/getName.js +0 -32
  625. package/dist/esm/functions/getNames.js +0 -220
  626. package/dist/esm/functions/getOwner.d.ts +0 -14
  627. package/dist/esm/functions/getOwner.js +0 -138
  628. package/dist/esm/functions/getPrice.js +0 -48
  629. package/dist/esm/functions/getProfile.js +0 -299
  630. package/dist/esm/functions/getRecords.d.ts +0 -32
  631. package/dist/esm/functions/getRecords.js +0 -8
  632. package/dist/esm/functions/getResolver.js +0 -22
  633. package/dist/esm/functions/getSpecificRecord.js +0 -265
  634. package/dist/esm/functions/getSubnames.js +0 -152
  635. package/dist/esm/functions/initialGetters.d.ts +0 -11
  636. package/dist/esm/functions/initialGetters.js +0 -11
  637. package/dist/esm/functions/setName.js +0 -9
  638. package/dist/esm/functions/setRecords.d.ts +0 -6
  639. package/dist/esm/functions/setRecords.js +0 -21
  640. package/dist/esm/functions/setResolver.js +0 -19
  641. package/dist/esm/functions/transferName.js +0 -26
  642. package/dist/esm/functions/transferSubname.d.ts +0 -6
  643. package/dist/esm/functions/transferSubname.js +0 -21
  644. package/dist/esm/functions/unwrapName.js +0 -20
  645. package/dist/esm/functions/wrapName.d.ts +0 -8
  646. package/dist/esm/functions/wrapName.js +0 -54
  647. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +0 -487
  648. package/dist/esm/generated/BaseRegistrarImplementation.js +0 -1
  649. package/dist/esm/generated/DNSRegistrar.d.ts +0 -220
  650. package/dist/esm/generated/DNSRegistrar.js +0 -1
  651. package/dist/esm/generated/DNSSECImpl.d.ts +0 -402
  652. package/dist/esm/generated/DNSSECImpl.js +0 -1
  653. package/dist/esm/generated/DefaultReverseResolver.d.ts +0 -66
  654. package/dist/esm/generated/DefaultReverseResolver.js +0 -1
  655. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  656. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
  657. package/dist/esm/generated/ENSRegistry.d.ts +0 -259
  658. package/dist/esm/generated/ENSRegistry.js +0 -1
  659. package/dist/esm/generated/ETHRegistrarController.d.ts +0 -319
  660. package/dist/esm/generated/ETHRegistrarController.js +0 -1
  661. package/dist/esm/generated/Multicall.js +0 -1
  662. package/dist/esm/generated/NameWrapper.d.ts +0 -675
  663. package/dist/esm/generated/NameWrapper.js +0 -1
  664. package/dist/esm/generated/P256SHA256Algorithm.js +0 -1
  665. package/dist/esm/generated/PublicResolver.d.ts +0 -542
  666. package/dist/esm/generated/PublicResolver.js +0 -1
  667. package/dist/esm/generated/RSASHA1Algorithm.d.ts +0 -42
  668. package/dist/esm/generated/RSASHA1Algorithm.js +0 -1
  669. package/dist/esm/generated/RSASHA256Algorithm.d.ts +0 -42
  670. package/dist/esm/generated/RSASHA256Algorithm.js +0 -1
  671. package/dist/esm/generated/ReverseRegistrar.d.ts +0 -259
  672. package/dist/esm/generated/ReverseRegistrar.js +0 -1
  673. package/dist/esm/generated/Root.d.ts +0 -173
  674. package/dist/esm/generated/Root.js +0 -1
  675. package/dist/esm/generated/SHA1Digest.d.ts +0 -67
  676. package/dist/esm/generated/SHA1Digest.js +0 -1
  677. package/dist/esm/generated/SHA1NSEC3Digest.js +0 -1
  678. package/dist/esm/generated/SHA256Digest.js +0 -1
  679. package/dist/esm/generated/StaticMetadataService.d.ts +0 -42
  680. package/dist/esm/generated/StaticMetadataService.js +0 -1
  681. package/dist/esm/generated/TLDPublicSuffixList.d.ts +0 -42
  682. package/dist/esm/generated/TLDPublicSuffixList.js +0 -1
  683. package/dist/esm/generated/UniversalResolver.d.ts +0 -82
  684. package/dist/esm/generated/UniversalResolver.js +0 -1
  685. package/dist/esm/generated/common.js +0 -1
  686. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +0 -52
  687. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +0 -766
  688. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +0 -79
  689. package/dist/esm/generated/factories/DNSRegistrar__factory.js +0 -292
  690. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +0 -68
  691. package/dist/esm/generated/factories/DNSSECImpl__factory.js +0 -497
  692. package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +0 -83
  693. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
  694. package/dist/esm/generated/factories/ENSRegistry__factory.js +0 -435
  695. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +0 -507
  696. package/dist/esm/generated/factories/Multicall__factory.js +0 -453
  697. package/dist/esm/generated/factories/NameWrapper__factory.js +0 -1196
  698. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -34
  699. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +0 -67
  700. package/dist/esm/generated/factories/PublicResolver__factory.js +0 -888
  701. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +0 -34
  702. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +0 -67
  703. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -34
  704. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +0 -67
  705. package/dist/esm/generated/factories/ReverseRegistrar__factory.js +0 -336
  706. package/dist/esm/generated/factories/Root__factory.d.ts +0 -52
  707. package/dist/esm/generated/factories/Root__factory.js +0 -239
  708. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +0 -34
  709. package/dist/esm/generated/factories/SHA1Digest__factory.js +0 -62
  710. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -34
  711. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +0 -67
  712. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +0 -34
  713. package/dist/esm/generated/factories/SHA256Digest__factory.js +0 -62
  714. package/dist/esm/generated/factories/StaticMetadataService__factory.js +0 -45
  715. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +0 -34
  716. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +0 -57
  717. package/dist/esm/generated/factories/UniversalResolver__factory.d.ts +0 -42
  718. package/dist/esm/generated/factories/UniversalResolver__factory.js +0 -200
  719. package/dist/esm/generated/factories/index.d.ts +0 -6
  720. package/dist/esm/generated/factories/index.js +0 -9
  721. package/dist/esm/generated/index.d.ts +0 -13
  722. package/dist/esm/generated/index.js +0 -7
  723. package/dist/esm/index.d.ts +0 -488
  724. package/dist/esm/index.js +0 -203
  725. package/dist/esm/utils/contentHash.d.ts +0 -28
  726. package/dist/esm/utils/contentHash.js +0 -153
  727. package/dist/esm/utils/createReverseNode.d.ts +0 -2
  728. package/dist/esm/utils/createReverseNode.js +0 -1
  729. package/dist/esm/utils/format.d.ts +0 -3
  730. package/dist/esm/utils/format.js +0 -3
  731. package/dist/esm/utils/fuses.d.ts +0 -20
  732. package/dist/esm/utils/fuses.js +0 -21
  733. package/dist/esm/utils/generateFuseInput.d.ts +0 -3
  734. package/dist/esm/utils/generateFuseInput.js +0 -14
  735. package/dist/esm/utils/hexEncodedName.d.ts +0 -1
  736. package/dist/esm/utils/hexEncodedName.js +0 -2
  737. package/dist/esm/utils/labels.d.ts +0 -14
  738. package/dist/esm/utils/labels.js +0 -95
  739. package/dist/esm/utils/makeHashIndexes.d.ts +0 -2
  740. package/dist/esm/utils/makeHashIndexes.js +0 -3
  741. package/dist/esm/utils/normalise.d.ts +0 -2
  742. package/dist/esm/utils/normalise.js +0 -20
  743. package/dist/esm/utils/recordHelpers.d.ts +0 -13
  744. package/dist/esm/utils/recordHelpers.js +0 -39
  745. package/dist/esm/utils/registerHelpers.d.ts +0 -26
  746. package/dist/esm/utils/registerHelpers.js +0 -43
  747. package/dist/esm/utils/singleCall.js +0 -5
  748. package/dist/esm/utils/validation.js +0 -67
  749. package/src/@types/FuseOptions.d.ts +0 -9
  750. package/src/ABIs/ETHRegistrarController.json +0 -494
  751. package/src/ABIs/NameWrapper.json +0 -1183
  752. package/src/ABIs/PublicResolver.json +0 -875
  753. package/src/ABIs/ReverseRegistrar.json +0 -323
  754. package/src/ABIs/StaticMetadataService.json +0 -32
  755. package/src/ABIs/UniversalResolver.json +0 -187
  756. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
  757. package/src/functions/burnFuses.test.ts +0 -45
  758. package/src/functions/burnFuses.ts +0 -21
  759. package/src/functions/getFuses.test.ts +0 -105
  760. package/src/functions/getFuses.ts +0 -76
  761. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
  762. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
  763. package/src/tests/setup.ts +0 -53
  764. package/src/tests/signerInjection.test.ts +0 -42
  765. package/src/tests/withProvider.test.ts +0 -28
  766. package/src/utils/generateFuseInput.ts +0 -18
  767. /package/dist/{cjs → types}/contracts/getContractAddress.d.ts +0 -0
  768. /package/dist/{cjs → types}/functions/getDNSOwner.d.ts +0 -0
  769. /package/dist/{cjs → types}/functions/getResolver.d.ts +0 -0
  770. /package/dist/{cjs → types}/utils/contentHash.d.ts +0 -0
  771. /package/dist/{cjs → types}/utils/createReverseNode.d.ts +0 -0
  772. /package/dist/{cjs → types}/utils/format.d.ts +0 -0
  773. /package/dist/{cjs → types}/utils/makeHashIndexes.d.ts +0 -0
@@ -1,6 +1,8 @@
1
1
  import { ENSArgs } from '..'
2
2
  import { truncateFormat } from '../utils/format'
3
+ import { AllCurrentFuses, checkPCCBurned, decodeFuses } from '../utils/fuses'
3
4
  import { decryptName } from '../utils/labels'
5
+ import { Domain, Registration, WrappedDomain } from '../utils/subgraph-types'
4
6
 
5
7
  export type Name = {
6
8
  id: string
@@ -15,12 +17,17 @@ export type Name = {
15
17
  createdAt?: Date
16
18
  registrationDate?: Date
17
19
  expiryDate?: Date
18
- type: 'domain' | 'registration'
20
+ fuses?: AllCurrentFuses
21
+ registration?: {
22
+ expiryDate: Date
23
+ registrationDate: Date
24
+ }
25
+ type: 'domain' | 'registration' | 'wrappedDomain'
19
26
  }
20
27
 
21
28
  type BaseParams = {
22
29
  address: string
23
- type: 'registrant' | 'owner' | 'all'
30
+ type: 'registrant' | 'owner' | 'wrappedOwner' | 'all'
24
31
  page?: number
25
32
  pageSize?: number
26
33
  orderDirection?: 'asc' | 'desc'
@@ -36,6 +43,11 @@ type OwnerParams = {
36
43
  orderBy?: 'createdAt' | 'labelName'
37
44
  }
38
45
 
46
+ type WrappedOwnerParams = {
47
+ type: 'wrappedOwner'
48
+ orderBy?: 'expiryDate' | 'name'
49
+ }
50
+
39
51
  type AllParams = {
40
52
  type: 'all'
41
53
  orderBy?: 'labelName' | 'creationDate'
@@ -43,21 +55,63 @@ type AllParams = {
43
55
  pageSize?: never
44
56
  }
45
57
 
46
- type Params = BaseParams & (RegistrantParams | OwnerParams | AllParams)
58
+ type Params = BaseParams &
59
+ (RegistrantParams | OwnerParams | WrappedOwnerParams | AllParams)
60
+
61
+ const mapDomain = ({ name, ...domain }: Domain) => {
62
+ const decrypted = name ? decryptName(name) : undefined
47
63
 
48
- const mapDomain = (domain: any) => {
49
- const decrypted = decryptName(domain.name)
50
64
  return {
51
65
  ...domain,
66
+ ...(domain.registration
67
+ ? {
68
+ registration: {
69
+ expiryDate: new Date(
70
+ parseInt(domain.registration.expiryDate) * 1000,
71
+ ),
72
+ registrationDate: new Date(
73
+ parseInt(domain.registration.registrationDate) * 1000,
74
+ ),
75
+ },
76
+ }
77
+ : {}),
52
78
  name: decrypted,
53
- truncatedName: truncateFormat(decrypted),
79
+ truncatedName: decrypted ? truncateFormat(decrypted) : undefined,
54
80
  createdAt: new Date(parseInt(domain.createdAt) * 1000),
55
81
  type: 'domain',
56
82
  }
57
83
  }
58
84
 
59
- const mapRegistration = (registration: any) => {
60
- const decrypted = decryptName(registration.domain.name)
85
+ const mapWrappedDomain = (wrappedDomain: WrappedDomain) => {
86
+ const expiryDate =
87
+ wrappedDomain.expiryDate && wrappedDomain.expiryDate !== '0'
88
+ ? new Date(parseInt(wrappedDomain.expiryDate) * 1000)
89
+ : undefined
90
+ if (
91
+ expiryDate &&
92
+ expiryDate < new Date() &&
93
+ checkPCCBurned(wrappedDomain.fuses)
94
+ ) {
95
+ // PCC was burned previously and now the fuses are expired meaning that the
96
+ // owner is now 0x0 so we need to filter this out
97
+ // if a user's local time is out of sync with the blockchain, this could potentially
98
+ // be incorrect. the likelihood of that happening though is very low, and devs
99
+ // shouldn't be relying on this value for anything critical anyway.
100
+ return null
101
+ }
102
+
103
+ const domain = mapDomain(wrappedDomain.domain)
104
+
105
+ return {
106
+ expiryDate,
107
+ fuses: decodeFuses(wrappedDomain.fuses),
108
+ ...domain,
109
+ type: 'wrappedDomain',
110
+ }
111
+ }
112
+
113
+ const mapRegistration = (registration: Registration) => {
114
+ const decrypted = decryptName(registration.domain.name!)
61
115
  return {
62
116
  expiryDate: new Date(parseInt(registration.expiryDate) * 1000),
63
117
  registrationDate: new Date(parseInt(registration.registrationDate) * 1000),
@@ -76,7 +130,7 @@ const getNames = async (
76
130
  page,
77
131
  pageSize = 10,
78
132
  orderDirection,
79
- orderBy,
133
+ orderBy = 'labelName',
80
134
  }: Params,
81
135
  ) => {
82
136
  const address = _address.toLowerCase()
@@ -90,6 +144,7 @@ const getNames = async (
90
144
  parent {
91
145
  name
92
146
  }
147
+ createdAt
93
148
  `
94
149
 
95
150
  let queryVars: object = {}
@@ -114,7 +169,21 @@ const getNames = async (
114
169
  }
115
170
  domains(first: 1000) {
116
171
  ${domainQueryData}
117
- createdAt
172
+ registration {
173
+ registrationDate
174
+ expiryDate
175
+ }
176
+ }
177
+ wrappedDomains(first: 1000) {
178
+ expiryDate
179
+ fuses
180
+ domain {
181
+ ${domainQueryData}
182
+ registration {
183
+ registrationDate
184
+ expiryDate
185
+ }
186
+ }
118
187
  }
119
188
  }
120
189
  }
@@ -134,7 +203,10 @@ const getNames = async (
134
203
  account(id: $id) {
135
204
  domains(orderBy: $orderBy, orderDirection: $orderDirection) {
136
205
  ${domainQueryData}
137
- createdAt
206
+ registration {
207
+ registrationDate
208
+ expiryDate
209
+ }
138
210
  }
139
211
  }
140
212
  }
@@ -161,7 +233,6 @@ const getNames = async (
161
233
  orderDirection: $orderDirection
162
234
  ) {
163
235
  ${domainQueryData}
164
- createdAt
165
236
  }
166
237
  }
167
238
  }
@@ -175,9 +246,71 @@ const getNames = async (
175
246
  orderDirection,
176
247
  }
177
248
  }
178
- } else {
249
+ } else if (type === 'wrappedOwner') {
179
250
  if (typeof page !== 'number') {
180
251
  finalQuery = gqlInstance.gql`
252
+ query getNames(
253
+ $id: ID!
254
+ $orderBy: WrappedDomain_orderBy
255
+ $orderDirection: OrderDirection
256
+ $expiryDate: Int
257
+ ) {
258
+ account(id: $id) {
259
+ wrappedDomains(
260
+ orderBy: $orderBy
261
+ orderDirection: $orderDirection
262
+ where: { expiryDate_gt: $expiryDate }
263
+ ) {
264
+ expiryDate
265
+ fuses
266
+ domain {
267
+ ${domainQueryData}
268
+ }
269
+ }
270
+ }
271
+ }
272
+ `
273
+
274
+ queryVars = {
275
+ id: address,
276
+ expiryDate: Math.floor(Date.now() / 1000) - 90 * 24 * 60 * 60,
277
+ }
278
+ } else {
279
+ finalQuery = gqlInstance.gql`
280
+ query getNames(
281
+ $id: ID!
282
+ $first: Int
283
+ $skip: Int
284
+ $orderBy: WrappedDomain_orderBy
285
+ $orderDirection: OrderDirection
286
+ ) {
287
+ account(id: $id) {
288
+ wrappedDomains(
289
+ first: $first
290
+ skip: $skip
291
+ orderBy: $orderBy
292
+ orderDirection: $orderDirection
293
+ ) {
294
+ expiryDate
295
+ fuses
296
+ domain {
297
+ ${domainQueryData}
298
+ }
299
+ }
300
+ }
301
+ }
302
+ `
303
+
304
+ queryVars = {
305
+ id: address,
306
+ first: pageSize,
307
+ skip: (page || 0) * pageSize,
308
+ orderBy: orderBy === 'labelName' ? 'name' : orderBy,
309
+ orderDirection,
310
+ }
311
+ }
312
+ } else if (typeof page !== 'number') {
313
+ finalQuery = gqlInstance.gql`
181
314
  query getNames(
182
315
  $id: ID!
183
316
  $orderBy: Registration_orderBy
@@ -200,14 +333,14 @@ const getNames = async (
200
333
  }
201
334
  `
202
335
 
203
- queryVars = {
204
- id: address,
205
- orderBy,
206
- orderDirection,
207
- expiryDate: Math.floor(Date.now() / 1000) - 90 * 24 * 60 * 60,
208
- }
209
- } else {
210
- finalQuery = gqlInstance.gql`
336
+ queryVars = {
337
+ id: address,
338
+ orderBy,
339
+ orderDirection,
340
+ expiryDate: Math.floor(Date.now() / 1000) - 90 * 24 * 60 * 60,
341
+ }
342
+ } else {
343
+ finalQuery = gqlInstance.gql`
211
344
  query getNames(
212
345
  $id: ID!
213
346
  $first: Int
@@ -234,42 +367,46 @@ const getNames = async (
234
367
  }
235
368
  `
236
369
 
237
- queryVars = {
238
- id: address,
239
- first: pageSize,
240
- skip: (page || 0) * pageSize,
241
- orderBy: orderBy,
242
- orderDirection: orderDirection,
243
- expiryDate: Math.floor(Date.now() / 1000) - 90 * 24 * 60 * 60,
244
- }
370
+ queryVars = {
371
+ id: address,
372
+ first: pageSize,
373
+ skip: (page || 0) * pageSize,
374
+ orderBy,
375
+ orderDirection,
376
+ expiryDate: Math.floor(Date.now() / 1000) - 90 * 24 * 60 * 60,
245
377
  }
246
378
  }
247
379
 
248
- const { account } = await client.request(finalQuery, queryVars)
380
+ const response = await client.request(finalQuery, queryVars)
381
+ const account = response?.account
249
382
  if (type === 'all') {
250
383
  return [
251
- ...account.domains.map(mapDomain),
252
- ...account.registrations.map(mapRegistration),
384
+ ...(account?.domains.map(mapDomain) || []),
385
+ ...(account?.registrations.map(mapRegistration) || []),
386
+ ...(account?.wrappedDomains.map(mapWrappedDomain).filter((d: any) => d) ||
387
+ []),
253
388
  ].sort((a, b) => {
254
389
  if (orderDirection === 'desc') {
255
390
  if (orderBy === 'labelName') {
256
391
  return b.name.localeCompare(a.name)
257
- } else {
258
- return b.createdAt.getTime() - a.createdAt.getTime()
259
- }
260
- } else {
261
- if (orderBy === 'labelName') {
262
- return a.name.localeCompare(b.name)
263
- } else if (orderBy === 'creationDate') {
264
- return a.createdAt.getTime() - b.createdAt.getTime()
265
392
  }
393
+ return b.createdAt.getTime() - a.createdAt.getTime()
394
+ }
395
+ if (orderBy === 'labelName') {
396
+ return a.name.localeCompare(b.name)
266
397
  }
398
+ return a.createdAt.getTime() - b.createdAt.getTime()
267
399
  }) as Name[]
268
- } else if (type === 'owner') {
269
- return account.domains.map(mapDomain) as Name[]
270
- } else {
271
- return account.registrations.map(mapRegistration) as Name[]
272
400
  }
401
+ if (type === 'owner') {
402
+ return (account?.domains.map(mapDomain) || []) as Name[]
403
+ }
404
+ if (type === 'wrappedOwner') {
405
+ return (account?.wrappedDomains
406
+ .map(mapWrappedDomain)
407
+ .filter((d: any) => d) || []) as Name[]
408
+ }
409
+ return (account?.registrations.map(mapRegistration) || []) as Name[]
273
410
  }
274
411
 
275
412
  export default getNames
@@ -1,19 +1,15 @@
1
- import { ethers } from 'ethers'
1
+ import { JsonRpcProvider } from '@ethersproject/providers'
2
2
  import { ENS } from '..'
3
3
  import setup from '../tests/setup'
4
4
 
5
- let ENSInstance: ENS
5
+ let ensInstance: ENS
6
6
  let revert: Awaited<ReturnType<typeof setup>>['revert']
7
- let provider: ethers.providers.JsonRpcProvider
7
+ let provider: JsonRpcProvider
8
8
  let accounts: string[]
9
9
 
10
10
  beforeAll(async () => {
11
- ;({ ENSInstance, revert, provider } = await setup())
11
+ ;({ ensInstance, revert, provider } = await setup())
12
12
  accounts = await provider.listAccounts()
13
- const tx = await ENSInstance.wrapName('parthtejpal.eth', {
14
- wrappedOwner: accounts[0],
15
- })
16
- await tx.wait()
17
13
  })
18
14
 
19
15
  afterAll(async () => {
@@ -21,53 +17,63 @@ afterAll(async () => {
21
17
  })
22
18
 
23
19
  describe('getOwner', () => {
24
- it('should return null for an unregistered name', async () => {
25
- const result = await ENSInstance.getOwner('test123123cool.eth')
26
- expect(result).toBeUndefined()
20
+ it('should return correct ownership level and values for a wrapped .eth name', async () => {
21
+ const result = await ensInstance.getOwner('wrapped.eth')
22
+ expect(result).toEqual({
23
+ ownershipLevel: 'nameWrapper',
24
+ owner: accounts[1],
25
+ expired: false,
26
+ })
27
27
  })
28
- it('should return the owner, registrant, and ownership level for a registered name', async () => {
29
- const result = await ENSInstance.getOwner('jefflau.eth')
30
- expect(result).toMatchObject({
31
- owner: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
32
- registrant: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
33
- ownershipLevel: 'registrar',
28
+ it('should return correct ownership level and values for an expired wrapped .eth name', async () => {
29
+ const result = await ensInstance.getOwner('expired-wrapped.eth')
30
+ expect(result).toEqual({
31
+ ownershipLevel: 'nameWrapper',
32
+ owner: '0x0000000000000000000000000000000000000000',
33
+ expired: true,
34
34
  })
35
35
  })
36
- it('should return nameWrapper as the ownership level for a wrapped name', async () => {
37
- const result = await ENSInstance.getOwner('parthtejpal.eth')
38
- expect(result?.ownershipLevel).toBe('nameWrapper')
36
+ it('should return correct ownership level and values for an unwrapped .eth name', async () => {
37
+ const result = await ensInstance.getOwner('test123.eth')
38
+ expect(result).toEqual({
39
+ ownershipLevel: 'registrar',
40
+ owner: accounts[1],
41
+ registrant: accounts[1],
42
+ expired: false,
43
+ })
39
44
  })
40
- it('should return the owner at a specific level if specified', async () => {
41
- const result = await ENSInstance.getOwner('parthtejpal.eth', 'registrar')
42
- const nameWrapperAddress = (await ENSInstance.contracts!.getNameWrapper())
43
- .address
44
- expect(result?.ownershipLevel).toBe('registrar')
45
- expect(result?.registrant).toBe(nameWrapperAddress)
45
+ it('should return correct ownership level and values for an expired unwrapped .eth name', async () => {
46
+ const result = await ensInstance.getOwner('expired.eth')
47
+ expect(result).toEqual({
48
+ ownershipLevel: 'registrar',
49
+ owner: accounts[1],
50
+ registrant: accounts[1].toLowerCase(),
51
+ expired: true,
52
+ })
46
53
  })
47
- it('should return the owner of a TLD on the registry', async () => {
48
- const result = await ENSInstance.getOwner('eth')
49
- const baseRegistrarAddress = (
50
- await ENSInstance.contracts!.getBaseRegistrar()
51
- ).address
52
- expect(result?.ownershipLevel).toBe('registry')
53
- expect(result?.owner?.toLowerCase()).toBe(
54
- baseRegistrarAddress.toLowerCase(),
55
- )
54
+ describe('subname', () => {
55
+ it('should return correct ownership level and values for a unwrapped name', async () => {
56
+ const result = await ensInstance.getOwner('test.with-subnames.eth')
57
+ expect(result).toEqual({
58
+ ownershipLevel: 'registry',
59
+ owner: accounts[2],
60
+ })
61
+ })
62
+ it('should return correct ownership level and values for a wrapped name', async () => {
63
+ const result = await ensInstance.getOwner(
64
+ 'test.wrapped-with-subnames.eth',
65
+ )
66
+ expect(result).toEqual({
67
+ ownershipLevel: 'nameWrapper',
68
+ owner: accounts[2],
69
+ })
70
+ })
71
+ it('should return correct ownership level and values for an expired wrapped name', async () => {
72
+ const result = await ensInstance.getOwner('test.expired-wrapped.eth')
73
+ expect(result).toEqual({
74
+ ownershipLevel: 'nameWrapper',
75
+ owner: accounts[2],
76
+ })
77
+ })
56
78
  })
57
- // it('should return registry as the ownership level for an unwrapped subname', async () => {
58
- // const result0 = await ENSInstance.getOwner('fleek.eth')
59
- // console.log(result0?.owner, accounts[2])
60
-
61
- // const tx = await ENSInstance.createSubname({
62
- // name: 'test.fleek.eth',
63
- // contract: 'registry',
64
- // owner: accounts[0],
65
- // options: { addressOrIndex: accounts[1] },
66
- // })
67
-
68
- // await tx.wait()
69
-
70
- // const result = await ENSInstance.getOwner('test.fleek.eth')
71
- // expect(result?.ownershipLevel).toBe('registry')
72
- // })
73
79
  })
@@ -1,12 +1,16 @@
1
- import { ethers } from 'ethers'
1
+ import type { Result } from '@ethersproject/abi'
2
+ import { defaultAbiCoder } from '@ethersproject/abi'
3
+ import { hexStripZeros } from '@ethersproject/bytes'
2
4
  import { ENSArgs } from '..'
3
5
  import { labelhash } from '../utils/labels'
4
6
  import { namehash as makeNamehash } from '../utils/normalise'
7
+ import { checkIsDotEth } from '../utils/validation'
5
8
 
6
9
  type Owner = {
7
10
  registrant?: string
8
11
  owner?: string
9
12
  ownershipLevel: 'nameWrapper' | 'registry' | 'registrar'
13
+ expired?: boolean
10
14
  }
11
15
 
12
16
  const singleContractOwnerRaw = async (
@@ -42,6 +46,7 @@ const singleContractOwnerRaw = async (
42
46
  ]),
43
47
  }
44
48
  }
49
+ // no default
45
50
  }
46
51
  }
47
52
 
@@ -54,7 +59,7 @@ const raw = async (
54
59
  const labels = name.split('.')
55
60
 
56
61
  if (contract || labels.length === 1) {
57
- return await singleContractOwnerRaw(
62
+ return singleContractOwnerRaw(
58
63
  { contracts },
59
64
  contract || 'registry',
60
65
  namehash,
@@ -83,27 +88,43 @@ const raw = async (
83
88
 
84
89
  const data: { to: string; data: string }[] = [registryData, nameWrapperData]
85
90
 
86
- if (labels.length == 2 && labels[1] === 'eth') {
91
+ if (checkIsDotEth(labels)) {
87
92
  data.push(registrarData)
88
93
  }
89
94
 
90
95
  return multicallWrapper.raw(data)
91
96
  }
92
97
 
98
+ const registrantQuery = `
99
+ query GetRegistrant($namehash: String!) {
100
+ domain(id: $namehash) {
101
+ registration {
102
+ registrant {
103
+ id
104
+ }
105
+ }
106
+ }
107
+ }
108
+ `
109
+
93
110
  const singleContractOwnerDecode = (data: string) =>
94
- ethers.utils.defaultAbiCoder.decode(['address'], data)[0]
111
+ defaultAbiCoder.decode(['address'], data)[0]
95
112
 
96
113
  const decode = async (
97
- { contracts, multicallWrapper }: ENSArgs<'contracts' | 'multicallWrapper'>,
114
+ {
115
+ contracts,
116
+ multicallWrapper,
117
+ gqlInstance,
118
+ }: ENSArgs<'contracts' | 'multicallWrapper' | 'gqlInstance'>,
98
119
  data: string,
99
120
  name: string,
100
121
  contract?: 'nameWrapper' | 'registry' | 'registrar',
101
122
  ): Promise<Owner | undefined> => {
102
- if (data === null) return
123
+ if (!data) return
103
124
  const labels = name.split('.')
104
125
  if (contract || labels.length === 1) {
105
126
  const singleOwner = singleContractOwnerDecode(data)
106
- let obj = {
127
+ const obj = {
107
128
  ownershipLevel: contract || 'registry',
108
129
  }
109
130
  if (contract === 'registrar') {
@@ -111,38 +132,59 @@ const decode = async (
111
132
  ...obj,
112
133
  registrant: singleOwner as string,
113
134
  }
114
- } else {
115
- return {
116
- ...obj,
117
- owner: singleOwner as string,
118
- }
135
+ }
136
+ return {
137
+ ...obj,
138
+ owner: singleOwner as string,
119
139
  }
120
140
  }
121
141
  const result = await multicallWrapper.decode(data)
122
- if (result === null) return
142
+ if (!result) return
123
143
  const nameWrapper = await contracts?.getNameWrapper()!
124
144
 
125
145
  const decodedData = [result[0][1], result[1][1], result[2]?.[1]].map(
126
- (ret) =>
127
- ret &&
128
- ret !== '0x' &&
129
- ethers.utils.defaultAbiCoder.decode(['address'], ret),
146
+ (ret) => ret && ret !== '0x' && defaultAbiCoder.decode(['address'], ret),
130
147
  )
131
148
 
132
- const registryOwner = (decodedData[0] as ethers.utils.Result)[0]
133
- const nameWrapperOwner = (decodedData[1] as ethers.utils.Result)[0]
134
- const registrarOwner = (
135
- decodedData[2] as ethers.utils.Result | undefined
149
+ const registryOwner = (decodedData[0] as Result)[0]
150
+ const nameWrapperOwner = (decodedData[1] as Result)[0]
151
+ let registrarOwner: string | undefined = (
152
+ decodedData[2] as Result | undefined
136
153
  )?.[0]
154
+ let baseReturnObject: {
155
+ expired?: boolean
156
+ } = {}
137
157
 
138
158
  // check for only .eth names
139
159
  if (labels[labels.length - 1] === 'eth') {
160
+ // if there is no registrar owner, the name is expired
161
+ // but we still want to get the registrar owner prior to expiry
162
+ if (labels.length === 2) {
163
+ if (!registrarOwner) {
164
+ const graphRegistrantResult = await gqlInstance.client.request(
165
+ registrantQuery,
166
+ {
167
+ namehash: makeNamehash(name),
168
+ },
169
+ )
170
+ registrarOwner =
171
+ graphRegistrantResult.domain?.registration?.registrant?.id
172
+ baseReturnObject = {
173
+ expired: true,
174
+ }
175
+ } else {
176
+ baseReturnObject = {
177
+ expired: false,
178
+ }
179
+ }
180
+ }
140
181
  // if the owner on the registrar is the namewrapper, then the namewrapper owner is the owner
141
182
  // there is no "registrant" for wrapped names
142
- if (registrarOwner === nameWrapper.address) {
183
+ if (registrarOwner?.toLowerCase() === nameWrapper.address.toLowerCase()) {
143
184
  return {
144
185
  owner: nameWrapperOwner,
145
186
  ownershipLevel: 'nameWrapper',
187
+ ...baseReturnObject,
146
188
  }
147
189
  }
148
190
  // if there is a registrar owner, then it's not a subdomain but we have also passed the namewrapper clause
@@ -154,14 +196,26 @@ const decode = async (
154
196
  registrant: registrarOwner,
155
197
  owner: registryOwner,
156
198
  ownershipLevel: 'registrar',
199
+ ...baseReturnObject,
157
200
  }
158
201
  }
159
- if (
160
- labels.length > 2 &&
161
- ethers.utils.hexStripZeros(registryOwner) !== '0x'
162
- ) {
202
+ if (hexStripZeros(registryOwner) !== '0x') {
203
+ // if there is no registrar owner, but the label length is two, then the domain is an expired 2LD .eth
204
+ // so we still want to return the ownership values
205
+ if (labels.length === 2) {
206
+ return {
207
+ registrant: undefined,
208
+ owner: registryOwner,
209
+ ownershipLevel: 'registrar',
210
+ expired: true,
211
+ }
212
+ }
163
213
  // this means that the subname is wrapped
164
- if (registryOwner === nameWrapper.address) {
214
+ if (
215
+ registryOwner === nameWrapper.address &&
216
+ nameWrapperOwner &&
217
+ hexStripZeros(nameWrapperOwner) !== '0x'
218
+ ) {
165
219
  return {
166
220
  owner: nameWrapperOwner,
167
221
  ownershipLevel: 'nameWrapper',
@@ -181,7 +235,11 @@ const decode = async (
181
235
  // there will only ever be an owner for non .eth names, not a registrant
182
236
  // this is because for unwrapped names, there is no associated NFT
183
237
  // and for wrapped names, owner and registrant are the same thing
184
- if (registryOwner == nameWrapper.address) {
238
+ if (
239
+ registryOwner === nameWrapper.address &&
240
+ nameWrapperOwner &&
241
+ hexStripZeros(nameWrapperOwner) !== '0x'
242
+ ) {
185
243
  return {
186
244
  owner: nameWrapperOwner,
187
245
  ownershipLevel: 'nameWrapper',
@@ -189,7 +247,7 @@ const decode = async (
189
247
  }
190
248
 
191
249
  // for unwrapped non .eth names, the owner is the registry owner
192
- if (ethers.utils.hexStripZeros(registryOwner) !== '0x') {
250
+ if (hexStripZeros(registryOwner) !== '0x') {
193
251
  return {
194
252
  owner: registryOwner,
195
253
  ownershipLevel: 'registry',