@ensdomains/ensjs 3.0.0-alpha.1 → 3.0.0-alpha.12

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 (333) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/GqlManager.d.ts +3 -0
  3. package/dist/cjs/GqlManager.js +62 -2
  4. package/dist/cjs/contracts/baseRegistrar.d.ts +1 -1
  5. package/dist/cjs/contracts/index.d.ts +3 -3
  6. package/dist/cjs/contracts/multicall.d.ts +1 -1
  7. package/dist/cjs/contracts/registry.d.ts +1 -1
  8. package/dist/cjs/functions/burnFuses.d.ts +3 -2
  9. package/dist/cjs/functions/burnFuses.js +4 -8
  10. package/dist/cjs/functions/createSubname.d.ts +3 -5
  11. package/dist/cjs/functions/createSubname.js +7 -8
  12. package/dist/cjs/functions/deleteSubname.d.ts +3 -3
  13. package/dist/cjs/functions/deleteSubname.js +6 -2
  14. package/dist/cjs/functions/getDNSOwner.d.ts +7 -0
  15. package/dist/cjs/functions/getDNSOwner.js +81 -0
  16. package/dist/cjs/functions/getExpiry.d.ts +9 -2
  17. package/dist/cjs/functions/getExpiry.js +52 -7
  18. package/dist/cjs/functions/getFuses.d.ts +2 -3
  19. package/dist/cjs/functions/getFuses.js +6 -14
  20. package/dist/cjs/functions/getHistory.d.ts +0 -30
  21. package/dist/cjs/functions/getHistory.js +3 -99
  22. package/dist/cjs/functions/getName.d.ts +2 -2
  23. package/dist/cjs/functions/getName.js +1 -1
  24. package/dist/cjs/functions/getOwner.js +7 -6
  25. package/dist/cjs/functions/getProfile.d.ts +4 -1
  26. package/dist/cjs/functions/getProfile.js +102 -24
  27. package/dist/cjs/functions/getRecords.d.ts +1 -0
  28. package/dist/cjs/functions/getSpecificRecord.js +30 -6
  29. package/dist/cjs/functions/getSubnames.d.ts +1 -1
  30. package/dist/cjs/functions/getSubnames.js +7 -7
  31. package/dist/cjs/functions/setName.d.ts +4 -3
  32. package/dist/cjs/functions/setName.js +5 -10
  33. package/dist/cjs/functions/setRecord.d.ts +18 -0
  34. package/dist/cjs/functions/setRecord.js +27 -0
  35. package/dist/cjs/functions/setRecords.d.ts +4 -2
  36. package/dist/cjs/functions/setRecords.js +14 -12
  37. package/dist/cjs/functions/setResolver.d.ts +4 -4
  38. package/dist/cjs/functions/setResolver.js +6 -12
  39. package/dist/cjs/functions/transferName.d.ts +4 -3
  40. package/dist/cjs/functions/transferName.js +9 -13
  41. package/dist/cjs/functions/transferSubname.d.ts +13 -3
  42. package/dist/cjs/functions/transferSubname.js +7 -8
  43. package/dist/cjs/functions/unwrapName.d.ts +4 -3
  44. package/dist/cjs/functions/unwrapName.js +5 -9
  45. package/dist/cjs/functions/wrapName.d.ts +7 -3
  46. package/dist/cjs/functions/wrapName.js +38 -36
  47. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +222 -201
  48. package/dist/cjs/generated/DNSRegistrar.d.ts +68 -64
  49. package/dist/cjs/generated/DNSSECImpl.d.ts +111 -111
  50. package/dist/cjs/generated/DefaultReverseResolver.d.ts +17 -17
  51. package/dist/cjs/generated/ENSRegistry.d.ts +126 -111
  52. package/dist/cjs/generated/ETHRegistrarController.d.ts +111 -109
  53. package/dist/cjs/generated/Multicall.d.ts +60 -60
  54. package/dist/cjs/generated/NameWrapper.d.ts +493 -354
  55. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +11 -7
  56. package/dist/cjs/generated/PublicResolver.d.ts +259 -235
  57. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +11 -7
  58. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +11 -7
  59. package/dist/cjs/generated/ReverseRegistrar.d.ts +112 -103
  60. package/dist/cjs/generated/Root.d.ts +77 -77
  61. package/dist/cjs/generated/SHA1Digest.d.ts +7 -7
  62. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +11 -7
  63. package/dist/cjs/generated/SHA256Digest.d.ts +7 -7
  64. package/dist/cjs/generated/StaticMetadataService.d.ts +7 -7
  65. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +7 -7
  66. package/dist/cjs/generated/UniversalResolver.d.ts +31 -31
  67. package/dist/cjs/generated/common.d.ts +1 -0
  68. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  69. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +3 -26
  70. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  71. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +3 -26
  72. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +14 -4
  73. package/dist/cjs/generated/factories/NameWrapper__factory.js +210 -79
  74. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  75. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +3 -26
  76. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  77. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +3 -26
  78. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  79. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +3 -26
  80. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +3 -15
  81. package/dist/cjs/generated/factories/SHA1Digest__factory.js +3 -26
  82. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  83. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +3 -26
  84. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +3 -15
  85. package/dist/cjs/generated/factories/SHA256Digest__factory.js +3 -26
  86. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  87. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +3 -26
  88. package/dist/cjs/generated/factories/index.d.ts +14 -0
  89. package/dist/cjs/generated/factories/index.js +29 -1
  90. package/dist/cjs/generated/index.d.ts +29 -1
  91. package/dist/cjs/generated/index.js +31 -3
  92. package/dist/cjs/index.d.ts +62 -84
  93. package/dist/cjs/index.js +44 -21
  94. package/dist/cjs/utils/labels.js +5 -4
  95. package/dist/cjs/utils/makeHashIndexes.js +2 -2
  96. package/dist/cjs/utils/normalise.d.ts +1 -0
  97. package/dist/cjs/utils/normalise.js +27 -1
  98. package/dist/cjs/utils/recordHelpers.d.ts +3 -0
  99. package/dist/cjs/utils/recordHelpers.js +42 -15
  100. package/dist/cjs/utils/registerHelpers.js +3 -4
  101. package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
  102. package/dist/cjs/utils/wrapperExpiry.js +30 -0
  103. package/dist/cjs/utils/writeTx.d.ts +4 -0
  104. package/dist/cjs/utils/writeTx.js +3 -0
  105. package/dist/esm/GqlManager.d.ts +3 -0
  106. package/dist/esm/GqlManager.js +58 -2
  107. package/dist/esm/contracts/baseRegistrar.d.ts +1 -1
  108. package/dist/esm/contracts/index.d.ts +3 -3
  109. package/dist/esm/contracts/multicall.d.ts +1 -1
  110. package/dist/esm/contracts/registry.d.ts +1 -1
  111. package/dist/esm/functions/burnFuses.d.ts +3 -2
  112. package/dist/esm/functions/burnFuses.js +4 -8
  113. package/dist/esm/functions/createSubname.d.ts +3 -5
  114. package/dist/esm/functions/createSubname.js +7 -8
  115. package/dist/esm/functions/deleteSubname.d.ts +3 -3
  116. package/dist/esm/functions/deleteSubname.js +6 -2
  117. package/dist/esm/functions/getDNSOwner.d.ts +7 -0
  118. package/dist/esm/functions/getDNSOwner.js +51 -0
  119. package/dist/esm/functions/getExpiry.d.ts +9 -2
  120. package/dist/esm/functions/getExpiry.js +52 -7
  121. package/dist/esm/functions/getFuses.d.ts +2 -3
  122. package/dist/esm/functions/getFuses.js +7 -15
  123. package/dist/esm/functions/getHistory.d.ts +0 -30
  124. package/dist/esm/functions/getHistory.js +2 -96
  125. package/dist/esm/functions/getName.d.ts +2 -2
  126. package/dist/esm/functions/getName.js +1 -1
  127. package/dist/esm/functions/getOwner.js +7 -6
  128. package/dist/esm/functions/getProfile.d.ts +4 -1
  129. package/dist/esm/functions/getProfile.js +102 -24
  130. package/dist/esm/functions/getRecords.d.ts +1 -0
  131. package/dist/esm/functions/getSpecificRecord.js +30 -6
  132. package/dist/esm/functions/getSubnames.d.ts +1 -1
  133. package/dist/esm/functions/getSubnames.js +4 -4
  134. package/dist/esm/functions/setName.d.ts +4 -3
  135. package/dist/esm/functions/setName.js +5 -10
  136. package/dist/esm/functions/setRecord.d.ts +18 -0
  137. package/dist/esm/functions/setRecord.js +24 -0
  138. package/dist/esm/functions/setRecords.d.ts +4 -2
  139. package/dist/esm/functions/setRecords.js +14 -12
  140. package/dist/esm/functions/setResolver.d.ts +4 -4
  141. package/dist/esm/functions/setResolver.js +6 -12
  142. package/dist/esm/functions/transferName.d.ts +4 -3
  143. package/dist/esm/functions/transferName.js +9 -13
  144. package/dist/esm/functions/transferSubname.d.ts +13 -3
  145. package/dist/esm/functions/transferSubname.js +7 -8
  146. package/dist/esm/functions/unwrapName.d.ts +4 -3
  147. package/dist/esm/functions/unwrapName.js +5 -9
  148. package/dist/esm/functions/wrapName.d.ts +7 -3
  149. package/dist/esm/functions/wrapName.js +38 -36
  150. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +222 -201
  151. package/dist/esm/generated/DNSRegistrar.d.ts +68 -64
  152. package/dist/esm/generated/DNSSECImpl.d.ts +111 -111
  153. package/dist/esm/generated/DefaultReverseResolver.d.ts +17 -17
  154. package/dist/esm/generated/ENSRegistry.d.ts +126 -111
  155. package/dist/esm/generated/ETHRegistrarController.d.ts +111 -109
  156. package/dist/esm/generated/Multicall.d.ts +60 -60
  157. package/dist/esm/generated/NameWrapper.d.ts +493 -354
  158. package/dist/esm/generated/P256SHA256Algorithm.d.ts +11 -7
  159. package/dist/esm/generated/PublicResolver.d.ts +259 -235
  160. package/dist/esm/generated/RSASHA1Algorithm.d.ts +11 -7
  161. package/dist/esm/generated/RSASHA256Algorithm.d.ts +11 -7
  162. package/dist/esm/generated/ReverseRegistrar.d.ts +112 -103
  163. package/dist/esm/generated/Root.d.ts +77 -77
  164. package/dist/esm/generated/SHA1Digest.d.ts +7 -7
  165. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +11 -7
  166. package/dist/esm/generated/SHA256Digest.d.ts +7 -7
  167. package/dist/esm/generated/StaticMetadataService.d.ts +7 -7
  168. package/dist/esm/generated/TLDPublicSuffixList.d.ts +7 -7
  169. package/dist/esm/generated/UniversalResolver.d.ts +31 -31
  170. package/dist/esm/generated/common.d.ts +1 -0
  171. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  172. package/dist/esm/generated/factories/DNSRegistrar__factory.js +2 -25
  173. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  174. package/dist/esm/generated/factories/DNSSECImpl__factory.js +2 -25
  175. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +14 -4
  176. package/dist/esm/generated/factories/NameWrapper__factory.js +210 -79
  177. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  178. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +2 -25
  179. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  180. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +2 -25
  181. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  182. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +2 -25
  183. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +3 -15
  184. package/dist/esm/generated/factories/SHA1Digest__factory.js +2 -25
  185. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  186. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +2 -25
  187. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +3 -15
  188. package/dist/esm/generated/factories/SHA256Digest__factory.js +2 -25
  189. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  190. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +2 -25
  191. package/dist/esm/generated/factories/index.d.ts +14 -0
  192. package/dist/esm/generated/factories/index.js +14 -0
  193. package/dist/esm/generated/index.d.ts +29 -1
  194. package/dist/esm/generated/index.js +15 -1
  195. package/dist/esm/index.d.ts +62 -84
  196. package/dist/esm/index.js +44 -21
  197. package/dist/esm/utils/labels.js +5 -4
  198. package/dist/esm/utils/makeHashIndexes.js +2 -2
  199. package/dist/esm/utils/normalise.d.ts +1 -0
  200. package/dist/esm/utils/normalise.js +25 -0
  201. package/dist/esm/utils/recordHelpers.d.ts +3 -0
  202. package/dist/esm/utils/recordHelpers.js +40 -14
  203. package/dist/esm/utils/registerHelpers.js +3 -4
  204. package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
  205. package/dist/esm/utils/wrapperExpiry.js +26 -0
  206. package/dist/esm/utils/writeTx.d.ts +4 -0
  207. package/dist/esm/utils/writeTx.js +1 -0
  208. package/package.json +24 -14
  209. package/src/@types/dns-packet/index.d.ts +114 -0
  210. package/src/ABIs/Multicall.json +452 -0
  211. package/src/GqlManager.test.ts +170 -0
  212. package/src/GqlManager.ts +67 -2
  213. package/src/contracts/index.ts +1 -1
  214. package/src/{tests → functions}/batch.test.ts +7 -7
  215. package/src/{tests → functions}/batchWrappers.test.ts +6 -6
  216. package/src/{tests → functions}/burnFuses.test.ts +12 -15
  217. package/src/functions/burnFuses.ts +9 -11
  218. package/src/{tests → functions}/createSubname.test.ts +9 -17
  219. package/src/functions/createSubname.ts +20 -14
  220. package/src/{tests → functions}/deleteSubname.test.ts +12 -31
  221. package/src/functions/deleteSubname.ts +10 -12
  222. package/src/functions/getDNSOwner.test.ts +118 -0
  223. package/src/functions/getDNSOwner.ts +61 -0
  224. package/src/functions/getExpiry.test.ts +59 -0
  225. package/src/functions/getExpiry.ts +87 -9
  226. package/src/{tests → functions}/getFuses.test.ts +16 -37
  227. package/src/functions/getFuses.ts +12 -17
  228. package/src/functions/getHistory.test.ts +29 -0
  229. package/src/functions/getHistory.ts +2 -127
  230. package/src/{tests → functions}/getName.test.ts +6 -6
  231. package/src/functions/getName.ts +1 -1
  232. package/src/{tests → functions}/getNames.test.ts +98 -69
  233. package/src/{tests → functions}/getOwner.test.ts +21 -24
  234. package/src/functions/getOwner.ts +7 -7
  235. package/src/functions/getProfile.test.ts +143 -0
  236. package/src/functions/getProfile.ts +151 -24
  237. package/src/functions/getRecords.ts +1 -0
  238. package/src/functions/getResolver.test.ts +15 -0
  239. package/src/{tests → functions}/getSpecificRecord.test.ts +17 -14
  240. package/src/functions/getSpecificRecord.ts +38 -12
  241. package/src/functions/getSubnames.test.ts +35 -0
  242. package/src/functions/getSubnames.ts +76 -67
  243. package/src/{tests → functions}/makeCommitment.test.ts +2 -2
  244. package/src/functions/normalise.test.ts +22 -0
  245. package/src/{tests → functions}/setName.test.ts +11 -11
  246. package/src/functions/setName.ts +15 -17
  247. package/src/functions/setRecord.test.ts +103 -0
  248. package/src/functions/setRecord.ts +63 -0
  249. package/src/{tests → functions}/setRecords.test.ts +16 -13
  250. package/src/functions/setRecords.ts +22 -16
  251. package/src/{tests → functions}/setResolver.test.ts +13 -19
  252. package/src/functions/setResolver.ts +15 -20
  253. package/src/{tests → functions}/transferName.test.ts +20 -35
  254. package/src/functions/transferName.ts +19 -22
  255. package/src/{tests → functions}/transferSubname.test.ts +14 -33
  256. package/src/functions/transferSubname.ts +39 -13
  257. package/src/{tests → functions}/unwrapName.test.ts +16 -30
  258. package/src/functions/unwrapName.ts +20 -15
  259. package/src/functions/wrapName.test.ts +142 -0
  260. package/src/functions/wrapName.ts +63 -49
  261. package/src/generated/BaseRegistrarImplementation.ts +382 -296
  262. package/src/generated/DNSRegistrar.ts +103 -89
  263. package/src/generated/DNSSECImpl.ts +180 -149
  264. package/src/generated/DefaultReverseResolver.ts +37 -21
  265. package/src/generated/ENSRegistry.ts +257 -184
  266. package/src/generated/ETHRegistrarController.ts +252 -191
  267. package/src/generated/Multicall.ts +73 -57
  268. package/src/generated/NameWrapper.ts +979 -649
  269. package/src/generated/P256SHA256Algorithm.ts +21 -16
  270. package/src/generated/PublicResolver.ts +452 -362
  271. package/src/generated/RSASHA1Algorithm.ts +21 -16
  272. package/src/generated/RSASHA256Algorithm.ts +21 -16
  273. package/src/generated/ReverseRegistrar.ts +193 -141
  274. package/src/generated/Root.ts +146 -86
  275. package/src/generated/SHA1Digest.ts +12 -11
  276. package/src/generated/SHA1NSEC3Digest.ts +21 -16
  277. package/src/generated/SHA256Digest.ts +12 -11
  278. package/src/generated/StaticMetadataService.ts +22 -6
  279. package/src/generated/TLDPublicSuffixList.ts +10 -6
  280. package/src/generated/UniversalResolver.ts +44 -40
  281. package/src/generated/common.ts +2 -0
  282. package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
  283. package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
  284. package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
  285. package/src/generated/factories/NameWrapper__factory.ts +210 -79
  286. package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
  287. package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
  288. package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
  289. package/src/generated/factories/SHA1Digest__factory.ts +4 -40
  290. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
  291. package/src/generated/factories/SHA256Digest__factory.ts +4 -40
  292. package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
  293. package/src/generated/factories/index.ts +14 -0
  294. package/src/generated/index.ts +29 -1
  295. package/src/index.ts +117 -47
  296. package/src/tests/populateTransaction.test.ts +40 -0
  297. package/src/tests/setup.ts +17 -13
  298. package/src/tests/signerInjection.test.ts +46 -0
  299. package/src/tests/withProvider.test.ts +3 -3
  300. package/src/utils/labels.ts +6 -4
  301. package/src/utils/makeHashIndexes.ts +4 -4
  302. package/src/utils/normalise.ts +29 -0
  303. package/src/utils/recordHelpers.ts +52 -18
  304. package/src/utils/registerHelpers.ts +3 -4
  305. package/src/utils/wrapperExpiry.ts +31 -0
  306. package/src/utils/writeTx.ts +6 -0
  307. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  308. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
  309. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  310. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
  311. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  312. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
  313. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  314. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
  315. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  316. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
  317. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  318. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
  319. package/src/ABIs/ETHRegistrarController.json +0 -494
  320. package/src/ABIs/NameWrapper.json +0 -1183
  321. package/src/ABIs/PublicResolver.json +0 -875
  322. package/src/ABIs/ReverseRegistrar.json +0 -323
  323. package/src/ABIs/StaticMetadataService.json +0 -32
  324. package/src/ABIs/UniversalResolver.json +0 -187
  325. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
  326. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
  327. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
  328. package/src/tests/getExpiry.test.ts +0 -37
  329. package/src/tests/getHistory.test.ts +0 -101
  330. package/src/tests/getProfile.test.ts +0 -102
  331. package/src/tests/getResolver.test.ts +0 -19
  332. package/src/tests/getSubnames.test.ts +0 -31
  333. package/src/tests/wrapName.test.ts +0 -67
@@ -0,0 +1,142 @@
1
+ import { ethers } from 'ethers'
2
+ import { ENS } from '..'
3
+ import setup from '../tests/setup'
4
+ import { hexEncodeName } from '../utils/hexEncodedName'
5
+ import { namehash } from '../utils/normalise'
6
+
7
+ let ENSInstance: ENS
8
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
9
+ let createSnapshot: Awaited<ReturnType<typeof setup>>['createSnapshot']
10
+ let provider: ethers.providers.JsonRpcProvider
11
+ let accounts: string[]
12
+
13
+ beforeAll(async () => {
14
+ ;({ ENSInstance, revert, createSnapshot, provider } = await setup())
15
+ accounts = await provider.listAccounts()
16
+ })
17
+
18
+ afterAll(async () => {
19
+ await revert()
20
+ })
21
+
22
+ const approve = async () => {
23
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
24
+ const registry = (await ENSInstance.contracts!.getRegistry()!).connect(
25
+ provider.getSigner(2),
26
+ )
27
+ const setApprovedForAllTx = await registry.setApprovalForAll(
28
+ nameWrapper.address,
29
+ true,
30
+ )
31
+ await setApprovedForAllTx?.wait()
32
+ }
33
+
34
+ describe('wrapName', () => {
35
+ beforeEach(async () => {
36
+ await revert()
37
+ })
38
+ describe('.eth', () => {
39
+ it('should return a wrap name transaction and succeed', async () => {
40
+ const tx = await ENSInstance.wrapName('test123.eth', {
41
+ wrappedOwner: accounts[2],
42
+ addressOrIndex: 1,
43
+ })
44
+ expect(tx).toBeTruthy()
45
+ await tx.wait()
46
+
47
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
48
+ const [fuses] = await nameWrapper.getFuses(namehash('test123.eth'))
49
+
50
+ // parent cannot control
51
+ expect(fuses).toBe(64)
52
+ })
53
+ it('should allow initial fuses', async () => {
54
+ const tx = await ENSInstance.wrapName('test123.eth', {
55
+ wrappedOwner: accounts[2],
56
+ fuseOptions: {
57
+ cannotUnwrap: true,
58
+ cannotSetTtl: true,
59
+ },
60
+ addressOrIndex: 1,
61
+ })
62
+ expect(tx).toBeTruthy()
63
+ await tx.wait()
64
+
65
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
66
+ const [fuses] = await nameWrapper.getFuses(namehash('test123.eth'))
67
+ expect(fuses).toBe(81)
68
+ })
69
+ it('should allow an initial resolver address', async () => {
70
+ const tx = await ENSInstance.wrapName('test123.eth', {
71
+ wrappedOwner: accounts[2],
72
+ resolverAddress: '0x42D63ae25990889E35F215bC95884039Ba354115',
73
+ addressOrIndex: 1,
74
+ })
75
+ expect(tx).toBeTruthy()
76
+ await tx.wait()
77
+
78
+ const universalResolver =
79
+ await ENSInstance.contracts!.getUniversalResolver()!
80
+ const [result] = await universalResolver.findResolver(
81
+ hexEncodeName('test123.eth'),
82
+ )
83
+ expect(result).toBe('0x42D63ae25990889E35F215bC95884039Ba354115')
84
+ })
85
+ })
86
+ describe('other', () => {
87
+ it('should return a wrap name transaction and succeed', async () => {
88
+ await approve()
89
+
90
+ const tx = await ENSInstance.wrapName('test.with-subnames.eth', {
91
+ wrappedOwner: accounts[2],
92
+ addressOrIndex: 2,
93
+ })
94
+ expect(tx).toBeTruthy()
95
+ await tx.wait()
96
+
97
+ const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
98
+ const [fuses] = await nameWrapper.getFuses(
99
+ namehash('test.with-subnames.eth'),
100
+ )
101
+
102
+ expect(fuses).toBe(0)
103
+ })
104
+ it('should allow an initial resolver address', async () => {
105
+ await approve()
106
+ const tx = await ENSInstance.wrapName('test.with-subnames.eth', {
107
+ wrappedOwner: accounts[2],
108
+ resolverAddress: '0x42D63ae25990889E35F215bC95884039Ba354115',
109
+ addressOrIndex: 2,
110
+ })
111
+ expect(tx).toBeTruthy()
112
+ await tx.wait()
113
+
114
+ const universalResolver =
115
+ await ENSInstance.contracts!.getUniversalResolver()!
116
+ const [result] = await universalResolver.findResolver(
117
+ hexEncodeName('test.with-subnames.eth'),
118
+ )
119
+ expect(result).toBe('0x42D63ae25990889E35F215bC95884039Ba354115')
120
+ })
121
+ it('should throw an error if contract does not have approval', async () => {
122
+ await expect(
123
+ ENSInstance.wrapName('test.with-subnames.eth', {
124
+ wrappedOwner: accounts[2],
125
+ addressOrIndex: 2,
126
+ }),
127
+ ).rejects.toThrow()
128
+ })
129
+ it('should throw an error if initial fuses are provided', async () => {
130
+ await expect(
131
+ ENSInstance.wrapName('test.with-subnames.eth', {
132
+ wrappedOwner: accounts[2],
133
+ fuseOptions: {
134
+ cannotUnwrap: true,
135
+ cannotSetTtl: true,
136
+ },
137
+ addressOrIndex: 1,
138
+ }),
139
+ ).rejects.toThrow()
140
+ })
141
+ })
142
+ })
@@ -1,13 +1,15 @@
1
- import { ethers } from 'ethers'
1
+ import { BigNumber, ethers } from 'ethers'
2
2
  import { ENSArgs } from '..'
3
3
  import type { FuseOptions } from '../@types/FuseOptions'
4
4
  import generateFuseInput from '../utils/generateFuseInput'
5
5
  import { hexEncodeName } from '../utils/hexEncodedName'
6
+ import { Expiry, makeExpiry } from '../utils/wrapperExpiry'
6
7
 
7
8
  async function wrapETH(
8
9
  { contracts }: ENSArgs<'contracts'>,
9
10
  labels: string[],
10
11
  wrappedOwner: string,
12
+ expiry: BigNumber,
11
13
  decodedFuses: string,
12
14
  resolverAddress: string,
13
15
  signer: ethers.Signer,
@@ -19,27 +21,24 @@ async function wrapETH(
19
21
  const labelhash = ethers.utils.solidityKeccak256(['string'], [labels[0]])
20
22
 
21
23
  const data = ethers.utils.defaultAbiCoder.encode(
22
- ['string', 'address', 'uint96', 'address'],
23
- [labels[0], wrappedOwner, decodedFuses, resolverAddress],
24
+ ['string', 'address', 'uint32', 'uint64', 'address'],
25
+ [labels[0], wrappedOwner, decodedFuses, expiry, resolverAddress],
24
26
  )
25
27
 
26
- return baseRegistrar['safeTransferFrom(address,address,uint256,bytes)'](
27
- address,
28
- nameWrapper.address,
29
- labelhash,
30
- data,
31
- )
28
+ return baseRegistrar.populateTransaction[
29
+ 'safeTransferFrom(address,address,uint256,bytes)'
30
+ ](address, nameWrapper.address, labelhash, data)
32
31
  }
33
32
 
34
33
  async function wrapOther(
35
34
  { contracts }: ENSArgs<'contracts'>,
36
35
  name: string,
37
36
  wrappedOwner: string,
38
- decodedFuses: string,
39
37
  resolverAddress: string,
40
38
  address: string,
39
+ signer: ethers.Signer,
41
40
  ) {
42
- const nameWrapper = await contracts?.getNameWrapper()!
41
+ const nameWrapper = (await contracts?.getNameWrapper()!).connect(signer)
43
42
  const registry = await contracts?.getRegistry()!
44
43
 
45
44
  const hasApproval = await registry.isApprovedForAll(
@@ -53,76 +52,91 @@ async function wrapOther(
53
52
  )
54
53
  }
55
54
 
56
- return nameWrapper.wrap(
55
+ return nameWrapper.populateTransaction.wrap(
57
56
  hexEncodeName(name),
58
57
  wrappedOwner,
59
- decodedFuses,
60
58
  resolverAddress,
61
59
  )
62
60
  }
63
61
 
64
62
  export default async function (
65
- { contracts, provider }: ENSArgs<'contracts' | 'provider'>,
63
+ {
64
+ contracts,
65
+ signer,
66
+ getExpiry,
67
+ }: ENSArgs<'contracts' | 'signer' | 'getExpiry'>,
66
68
  name: string,
67
- wrappedOwner: string,
68
- fuseOptions?: FuseOptions | string | number,
69
- resolverAddress?: string,
70
- options?: { addressOrIndex?: string | number },
69
+ {
70
+ wrappedOwner,
71
+ fuseOptions,
72
+ expiry,
73
+ resolverAddress,
74
+ }: {
75
+ wrappedOwner: string
76
+ fuseOptions?: FuseOptions | string | number
77
+ expiry?: Expiry
78
+ resolverAddress?: string
79
+ },
71
80
  ) {
72
- const signer = provider?.getSigner(options?.addressOrIndex)
73
-
74
- const address = await signer?.getAddress()
75
-
76
- if (!signer || !address) {
77
- throw new Error('No signer found')
78
- }
81
+ const address = await signer.getAddress()
79
82
 
80
83
  let decodedFuses: string
81
84
 
82
- switch (typeof fuseOptions) {
83
- case 'object': {
84
- decodedFuses = generateFuseInput(fuseOptions)
85
- break
86
- }
87
- case 'number': {
88
- decodedFuses = fuseOptions.toString(16)
89
- break
90
- }
91
- case 'string': {
92
- decodedFuses = fuseOptions
93
- break
94
- }
95
- case 'undefined': {
96
- decodedFuses = '0'
97
- break
98
- }
99
- default: {
100
- throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`)
101
- }
102
- }
103
-
104
85
  const publicResolver = await contracts?.getPublicResolver()!
105
86
  if (!resolverAddress) resolverAddress = publicResolver.address
106
87
 
107
88
  const labels = name.split('.')
108
- if (labels.length < 3 && labels[labels.length - 1] === 'eth') {
89
+ if (labels.length === 2 && labels[1] === 'eth') {
90
+ switch (typeof fuseOptions) {
91
+ case 'object': {
92
+ decodedFuses = generateFuseInput(fuseOptions)
93
+ break
94
+ }
95
+ case 'number': {
96
+ decodedFuses = fuseOptions.toString(16)
97
+ break
98
+ }
99
+ case 'string': {
100
+ decodedFuses = fuseOptions
101
+ break
102
+ }
103
+ case 'undefined': {
104
+ decodedFuses = '0'
105
+ break
106
+ }
107
+ default: {
108
+ throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`)
109
+ }
110
+ }
111
+
112
+ const expiryToUse = await makeExpiry({ getExpiry }, name, expiry)
113
+
109
114
  return wrapETH(
110
115
  { contracts },
111
116
  labels,
112
117
  wrappedOwner,
118
+ expiryToUse,
113
119
  decodedFuses,
114
120
  resolverAddress,
115
121
  signer,
116
122
  address,
117
123
  )
118
124
  } else {
125
+ if (fuseOptions)
126
+ throw new Error(
127
+ 'Fuses can not be initially set when wrapping a non .eth name',
128
+ )
129
+ if (expiry)
130
+ throw new Error(
131
+ 'Expiry can not be initially set when wrapping a non .eth name',
132
+ )
119
133
  return wrapOther(
120
134
  { contracts },
121
135
  name,
122
136
  wrappedOwner,
123
- decodedFuses,
124
137
  resolverAddress,
125
138
  address,
139
+ signer,
126
140
  )
127
141
  }
128
142
  }