@ensdomains/ensjs 2.0.0 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +651 -97
  3. package/dist/cjs/GqlManager.d.ts +6 -0
  4. package/dist/cjs/GqlManager.js +42 -0
  5. package/dist/cjs/contracts/baseRegistrar.d.ts +3 -0
  6. package/dist/cjs/contracts/baseRegistrar.js +4 -0
  7. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
  8. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +4 -0
  9. package/dist/cjs/contracts/ethRegistrarController.d.ts +3 -0
  10. package/dist/cjs/contracts/ethRegistrarController.js +4 -0
  11. package/dist/cjs/contracts/getContractAddress.d.ts +3 -0
  12. package/dist/cjs/contracts/getContractAddress.js +46 -0
  13. package/dist/cjs/contracts/index.d.ts +16 -0
  14. package/dist/cjs/contracts/index.js +37 -0
  15. package/dist/cjs/contracts/multicall.d.ts +3 -0
  16. package/dist/cjs/contracts/multicall.js +22 -0
  17. package/dist/cjs/contracts/nameWrapper.d.ts +3 -0
  18. package/dist/cjs/contracts/nameWrapper.js +4 -0
  19. package/dist/cjs/contracts/publicResolver.d.ts +3 -0
  20. package/dist/cjs/contracts/publicResolver.js +4 -0
  21. package/dist/cjs/contracts/registry.d.ts +3 -0
  22. package/dist/cjs/contracts/registry.js +4 -0
  23. package/dist/cjs/contracts/reverseRegistrar.d.ts +3 -0
  24. package/dist/cjs/contracts/reverseRegistrar.js +4 -0
  25. package/dist/cjs/contracts/types.d.ts +2 -0
  26. package/dist/cjs/contracts/types.js +2 -0
  27. package/dist/cjs/contracts/universalResolver.d.ts +3 -0
  28. package/dist/cjs/contracts/universalResolver.js +4 -0
  29. package/dist/cjs/functions/batch.d.ts +9 -0
  30. package/dist/cjs/functions/batch.js +21 -0
  31. package/dist/cjs/functions/batchWrappers.d.ts +29 -0
  32. package/dist/cjs/functions/batchWrappers.js +71 -0
  33. package/dist/cjs/functions/burnFuses.d.ts +4 -0
  34. package/dist/cjs/functions/burnFuses.js +18 -0
  35. package/dist/cjs/functions/createSubname.d.ts +19 -0
  36. package/dist/cjs/functions/createSubname.js +43 -0
  37. package/dist/cjs/functions/deleteSubname.d.ts +4 -0
  38. package/dist/cjs/functions/deleteSubname.js +6 -0
  39. package/dist/cjs/functions/getExpiry.d.ts +12 -0
  40. package/dist/cjs/functions/getExpiry.js +45 -0
  41. package/dist/cjs/functions/getFuses.d.ts +17 -0
  42. package/dist/cjs/functions/getFuses.js +61 -0
  43. package/dist/cjs/functions/getHistory.d.ts +54 -0
  44. package/dist/cjs/functions/getHistory.js +279 -0
  45. package/dist/cjs/functions/getName.d.ts +19 -0
  46. package/dist/cjs/functions/getName.js +34 -0
  47. package/dist/cjs/functions/getNames.d.ts +40 -0
  48. package/dist/cjs/functions/getNames.js +222 -0
  49. package/dist/cjs/functions/getOwner.d.ts +14 -0
  50. package/dist/cjs/functions/getOwner.js +139 -0
  51. package/dist/cjs/functions/getPrice.d.ts +13 -0
  52. package/dist/cjs/functions/getPrice.js +50 -0
  53. package/dist/cjs/functions/getProfile.d.ts +30 -0
  54. package/dist/cjs/functions/getProfile.js +268 -0
  55. package/dist/cjs/functions/getRecords.d.ts +32 -0
  56. package/dist/cjs/functions/getRecords.js +11 -0
  57. package/dist/cjs/functions/getResolver.d.ts +9 -0
  58. package/dist/cjs/functions/getResolver.js +24 -0
  59. package/dist/cjs/functions/getSpecificRecord.d.ts +73 -0
  60. package/dist/cjs/functions/getSpecificRecord.js +251 -0
  61. package/dist/cjs/functions/getSubnames.d.ts +26 -0
  62. package/dist/cjs/functions/getSubnames.js +154 -0
  63. package/dist/cjs/functions/initialGetters.d.ts +11 -0
  64. package/dist/cjs/functions/initialGetters.js +40 -0
  65. package/dist/cjs/functions/setName.d.ts +4 -0
  66. package/dist/cjs/functions/setName.js +17 -0
  67. package/dist/cjs/functions/setRecords.d.ts +4 -0
  68. package/dist/cjs/functions/setRecords.js +22 -0
  69. package/dist/cjs/functions/setResolver.d.ts +5 -0
  70. package/dist/cjs/functions/setResolver.js +28 -0
  71. package/dist/cjs/functions/transferName.d.ts +5 -0
  72. package/dist/cjs/functions/transferName.js +33 -0
  73. package/dist/cjs/functions/transferSubname.d.ts +5 -0
  74. package/dist/cjs/functions/transferSubname.js +27 -0
  75. package/dist/cjs/functions/unwrapName.d.ts +4 -0
  76. package/dist/cjs/functions/unwrapName.js +27 -0
  77. package/dist/cjs/functions/wrapName.d.ts +6 -0
  78. package/dist/cjs/functions/wrapName.js +64 -0
  79. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +487 -0
  80. package/dist/cjs/generated/BaseRegistrarImplementation.js +2 -0
  81. package/dist/cjs/generated/DNSRegistrar.d.ts +220 -0
  82. package/dist/cjs/generated/DNSRegistrar.js +2 -0
  83. package/dist/cjs/generated/DNSSECImpl.d.ts +402 -0
  84. package/dist/cjs/generated/DNSSECImpl.js +2 -0
  85. package/dist/cjs/generated/DefaultReverseResolver.d.ts +66 -0
  86. package/dist/cjs/generated/DefaultReverseResolver.js +2 -0
  87. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
  88. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +2 -0
  89. package/dist/cjs/generated/ENSRegistry.d.ts +259 -0
  90. package/dist/cjs/generated/ENSRegistry.js +2 -0
  91. package/dist/cjs/generated/ETHRegistrarController.d.ts +319 -0
  92. package/dist/cjs/generated/ETHRegistrarController.js +2 -0
  93. package/dist/cjs/generated/Multicall.d.ts +292 -0
  94. package/dist/cjs/generated/Multicall.js +2 -0
  95. package/dist/cjs/generated/NameWrapper.d.ts +675 -0
  96. package/dist/cjs/generated/NameWrapper.js +2 -0
  97. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +72 -0
  98. package/dist/cjs/generated/P256SHA256Algorithm.js +2 -0
  99. package/dist/cjs/generated/PublicResolver.d.ts +542 -0
  100. package/dist/cjs/generated/PublicResolver.js +2 -0
  101. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +42 -0
  102. package/dist/cjs/generated/RSASHA1Algorithm.js +2 -0
  103. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +42 -0
  104. package/dist/cjs/generated/RSASHA256Algorithm.js +2 -0
  105. package/dist/cjs/generated/ReverseRegistrar.d.ts +259 -0
  106. package/dist/cjs/generated/ReverseRegistrar.js +2 -0
  107. package/dist/cjs/generated/Root.d.ts +173 -0
  108. package/dist/cjs/generated/Root.js +2 -0
  109. package/dist/cjs/generated/SHA1Digest.d.ts +67 -0
  110. package/dist/cjs/generated/SHA1Digest.js +2 -0
  111. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +72 -0
  112. package/dist/cjs/generated/SHA1NSEC3Digest.js +2 -0
  113. package/dist/cjs/generated/SHA256Digest.d.ts +67 -0
  114. package/dist/cjs/generated/SHA256Digest.js +2 -0
  115. package/dist/cjs/generated/StaticMetadataService.d.ts +42 -0
  116. package/dist/cjs/generated/StaticMetadataService.js +2 -0
  117. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +42 -0
  118. package/dist/cjs/generated/TLDPublicSuffixList.js +2 -0
  119. package/dist/cjs/generated/UniversalResolver.d.ts +82 -0
  120. package/dist/cjs/generated/UniversalResolver.js +2 -0
  121. package/dist/cjs/generated/common.d.ts +21 -0
  122. package/dist/cjs/generated/common.js +2 -0
  123. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
  124. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +770 -0
  125. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +79 -0
  126. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +296 -0
  127. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +68 -0
  128. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +501 -0
  129. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
  130. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +87 -0
  131. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
  132. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +171 -0
  133. package/dist/cjs/generated/factories/ENSRegistry__factory.d.ts +52 -0
  134. package/dist/cjs/generated/factories/ENSRegistry__factory.js +439 -0
  135. package/dist/cjs/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
  136. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +511 -0
  137. package/dist/cjs/generated/factories/Multicall__factory.d.ts +42 -0
  138. package/dist/cjs/generated/factories/Multicall__factory.js +457 -0
  139. package/dist/cjs/generated/factories/NameWrapper__factory.d.ts +57 -0
  140. package/dist/cjs/generated/factories/NameWrapper__factory.js +1200 -0
  141. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
  142. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +71 -0
  143. package/dist/cjs/generated/factories/PublicResolver__factory.d.ts +46 -0
  144. package/dist/cjs/generated/factories/PublicResolver__factory.js +892 -0
  145. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +34 -0
  146. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +71 -0
  147. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
  148. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +71 -0
  149. package/dist/cjs/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
  150. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +340 -0
  151. package/dist/cjs/generated/factories/Root__factory.d.ts +52 -0
  152. package/dist/cjs/generated/factories/Root__factory.js +243 -0
  153. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +34 -0
  154. package/dist/cjs/generated/factories/SHA1Digest__factory.js +66 -0
  155. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
  156. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +71 -0
  157. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +34 -0
  158. package/dist/cjs/generated/factories/SHA256Digest__factory.js +66 -0
  159. package/dist/cjs/generated/factories/StaticMetadataService__factory.d.ts +32 -0
  160. package/dist/cjs/generated/factories/StaticMetadataService__factory.js +49 -0
  161. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +34 -0
  162. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +61 -0
  163. package/dist/cjs/generated/factories/UniversalResolver__factory.d.ts +42 -0
  164. package/dist/cjs/generated/factories/UniversalResolver__factory.js +204 -0
  165. package/dist/cjs/generated/factories/index.d.ts +6 -0
  166. package/dist/cjs/generated/factories/index.js +18 -0
  167. package/dist/cjs/generated/index.d.ts +13 -0
  168. package/dist/cjs/generated/index.js +39 -0
  169. package/dist/cjs/index.d.ts +470 -0
  170. package/dist/cjs/index.js +223 -0
  171. package/dist/cjs/utils/contentHash.d.ts +28 -0
  172. package/dist/cjs/utils/contentHash.js +164 -0
  173. package/dist/cjs/utils/createReverseNode.d.ts +2 -0
  174. package/dist/cjs/utils/createReverseNode.js +3 -0
  175. package/dist/cjs/utils/format.d.ts +3 -0
  176. package/dist/cjs/utils/format.js +9 -0
  177. package/dist/cjs/utils/fuses.d.ts +20 -0
  178. package/dist/cjs/utils/fuses.js +24 -0
  179. package/dist/cjs/utils/generateFuseInput.d.ts +3 -0
  180. package/dist/cjs/utils/generateFuseInput.js +19 -0
  181. package/dist/cjs/utils/hexEncodedName.d.ts +1 -0
  182. package/dist/cjs/utils/hexEncodedName.js +9 -0
  183. package/dist/cjs/utils/labels.d.ts +14 -0
  184. package/dist/cjs/utils/labels.js +112 -0
  185. package/dist/cjs/utils/makeHashIndexes.d.ts +2 -0
  186. package/dist/cjs/utils/makeHashIndexes.js +8 -0
  187. package/dist/cjs/utils/normalise.d.ts +1 -0
  188. package/dist/cjs/utils/normalise.js +9 -0
  189. package/dist/cjs/utils/recordHelpers.d.ts +13 -0
  190. package/dist/cjs/utils/recordHelpers.js +44 -0
  191. package/dist/cjs/utils/registerHelpers.d.ts +26 -0
  192. package/dist/cjs/utils/registerHelpers.js +53 -0
  193. package/dist/cjs/utils/singleCall.d.ts +9 -0
  194. package/dist/cjs/utils/singleCall.js +7 -0
  195. package/dist/cjs/utils/validation.d.ts +8 -0
  196. package/dist/cjs/utils/validation.js +73 -0
  197. package/dist/esm/GqlManager.d.ts +6 -0
  198. package/dist/esm/GqlManager.js +18 -0
  199. package/dist/esm/contracts/baseRegistrar.d.ts +3 -0
  200. package/dist/esm/contracts/baseRegistrar.js +2 -0
  201. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
  202. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +2 -0
  203. package/dist/esm/contracts/ethRegistrarController.d.ts +3 -0
  204. package/dist/esm/contracts/ethRegistrarController.js +2 -0
  205. package/dist/esm/contracts/getContractAddress.d.ts +3 -0
  206. package/dist/esm/contracts/getContractAddress.js +42 -0
  207. package/dist/esm/contracts/index.d.ts +16 -0
  208. package/dist/esm/contracts/index.js +29 -0
  209. package/dist/esm/contracts/multicall.d.ts +3 -0
  210. package/dist/esm/contracts/multicall.js +20 -0
  211. package/dist/esm/contracts/nameWrapper.d.ts +3 -0
  212. package/dist/esm/contracts/nameWrapper.js +2 -0
  213. package/dist/esm/contracts/publicResolver.d.ts +3 -0
  214. package/dist/esm/contracts/publicResolver.js +2 -0
  215. package/dist/esm/contracts/registry.d.ts +3 -0
  216. package/dist/esm/contracts/registry.js +2 -0
  217. package/dist/esm/contracts/reverseRegistrar.d.ts +3 -0
  218. package/dist/esm/contracts/reverseRegistrar.js +2 -0
  219. package/dist/esm/contracts/types.d.ts +2 -0
  220. package/dist/esm/contracts/types.js +1 -0
  221. package/dist/esm/contracts/universalResolver.d.ts +3 -0
  222. package/dist/esm/contracts/universalResolver.js +2 -0
  223. package/dist/esm/functions/batch.d.ts +9 -0
  224. package/dist/esm/functions/batch.js +19 -0
  225. package/dist/esm/functions/batchWrappers.d.ts +29 -0
  226. package/dist/esm/functions/batchWrappers.js +68 -0
  227. package/dist/esm/functions/burnFuses.d.ts +4 -0
  228. package/dist/esm/functions/burnFuses.js +12 -0
  229. package/dist/esm/functions/createSubname.d.ts +19 -0
  230. package/dist/esm/functions/createSubname.js +37 -0
  231. package/dist/esm/functions/deleteSubname.d.ts +4 -0
  232. package/dist/esm/functions/deleteSubname.js +3 -0
  233. package/dist/esm/functions/getExpiry.d.ts +12 -0
  234. package/dist/esm/functions/getExpiry.js +43 -0
  235. package/dist/esm/functions/getFuses.d.ts +17 -0
  236. package/dist/esm/functions/getFuses.js +59 -0
  237. package/dist/esm/functions/getHistory.d.ts +54 -0
  238. package/dist/esm/functions/getHistory.js +273 -0
  239. package/dist/esm/functions/getName.d.ts +19 -0
  240. package/dist/esm/functions/getName.js +32 -0
  241. package/dist/esm/functions/getNames.d.ts +40 -0
  242. package/dist/esm/functions/getNames.js +220 -0
  243. package/dist/esm/functions/getOwner.d.ts +14 -0
  244. package/dist/esm/functions/getOwner.js +137 -0
  245. package/dist/esm/functions/getPrice.d.ts +13 -0
  246. package/dist/esm/functions/getPrice.js +48 -0
  247. package/dist/esm/functions/getProfile.d.ts +30 -0
  248. package/dist/esm/functions/getProfile.js +265 -0
  249. package/dist/esm/functions/getRecords.d.ts +32 -0
  250. package/dist/esm/functions/getRecords.js +8 -0
  251. package/dist/esm/functions/getResolver.d.ts +9 -0
  252. package/dist/esm/functions/getResolver.js +22 -0
  253. package/dist/esm/functions/getSpecificRecord.d.ts +73 -0
  254. package/dist/esm/functions/getSpecificRecord.js +248 -0
  255. package/dist/esm/functions/getSubnames.d.ts +26 -0
  256. package/dist/esm/functions/getSubnames.js +152 -0
  257. package/dist/esm/functions/initialGetters.d.ts +11 -0
  258. package/dist/esm/functions/initialGetters.js +11 -0
  259. package/dist/esm/functions/setName.d.ts +4 -0
  260. package/dist/esm/functions/setName.js +14 -0
  261. package/dist/esm/functions/setRecords.d.ts +4 -0
  262. package/dist/esm/functions/setRecords.js +19 -0
  263. package/dist/esm/functions/setResolver.d.ts +5 -0
  264. package/dist/esm/functions/setResolver.js +25 -0
  265. package/dist/esm/functions/transferName.d.ts +5 -0
  266. package/dist/esm/functions/transferName.js +30 -0
  267. package/dist/esm/functions/transferSubname.d.ts +5 -0
  268. package/dist/esm/functions/transferSubname.js +24 -0
  269. package/dist/esm/functions/unwrapName.d.ts +4 -0
  270. package/dist/esm/functions/unwrapName.js +24 -0
  271. package/dist/esm/functions/wrapName.d.ts +6 -0
  272. package/dist/esm/functions/wrapName.js +58 -0
  273. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +487 -0
  274. package/dist/esm/generated/BaseRegistrarImplementation.js +1 -0
  275. package/dist/esm/generated/DNSRegistrar.d.ts +220 -0
  276. package/dist/esm/generated/DNSRegistrar.js +1 -0
  277. package/dist/esm/generated/DNSSECImpl.d.ts +402 -0
  278. package/dist/esm/generated/DNSSECImpl.js +1 -0
  279. package/dist/esm/generated/DefaultReverseResolver.d.ts +66 -0
  280. package/dist/esm/generated/DefaultReverseResolver.js +1 -0
  281. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
  282. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +1 -0
  283. package/dist/esm/generated/ENSRegistry.d.ts +259 -0
  284. package/dist/esm/generated/ENSRegistry.js +1 -0
  285. package/dist/esm/generated/ETHRegistrarController.d.ts +319 -0
  286. package/dist/esm/generated/ETHRegistrarController.js +1 -0
  287. package/dist/esm/generated/Multicall.d.ts +292 -0
  288. package/dist/esm/generated/Multicall.js +1 -0
  289. package/dist/esm/generated/NameWrapper.d.ts +675 -0
  290. package/dist/esm/generated/NameWrapper.js +1 -0
  291. package/dist/esm/generated/P256SHA256Algorithm.d.ts +72 -0
  292. package/dist/esm/generated/P256SHA256Algorithm.js +1 -0
  293. package/dist/esm/generated/PublicResolver.d.ts +542 -0
  294. package/dist/esm/generated/PublicResolver.js +1 -0
  295. package/dist/esm/generated/RSASHA1Algorithm.d.ts +42 -0
  296. package/dist/esm/generated/RSASHA1Algorithm.js +1 -0
  297. package/dist/esm/generated/RSASHA256Algorithm.d.ts +42 -0
  298. package/dist/esm/generated/RSASHA256Algorithm.js +1 -0
  299. package/dist/esm/generated/ReverseRegistrar.d.ts +259 -0
  300. package/dist/esm/generated/ReverseRegistrar.js +1 -0
  301. package/dist/esm/generated/Root.d.ts +173 -0
  302. package/dist/esm/generated/Root.js +1 -0
  303. package/dist/esm/generated/SHA1Digest.d.ts +67 -0
  304. package/dist/esm/generated/SHA1Digest.js +1 -0
  305. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +72 -0
  306. package/dist/esm/generated/SHA1NSEC3Digest.js +1 -0
  307. package/dist/esm/generated/SHA256Digest.d.ts +67 -0
  308. package/dist/esm/generated/SHA256Digest.js +1 -0
  309. package/dist/esm/generated/StaticMetadataService.d.ts +42 -0
  310. package/dist/esm/generated/StaticMetadataService.js +1 -0
  311. package/dist/esm/generated/TLDPublicSuffixList.d.ts +42 -0
  312. package/dist/esm/generated/TLDPublicSuffixList.js +1 -0
  313. package/dist/esm/generated/UniversalResolver.d.ts +82 -0
  314. package/dist/esm/generated/UniversalResolver.js +1 -0
  315. package/dist/esm/generated/common.d.ts +21 -0
  316. package/dist/esm/generated/common.js +1 -0
  317. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
  318. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +766 -0
  319. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +79 -0
  320. package/dist/esm/generated/factories/DNSRegistrar__factory.js +292 -0
  321. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +68 -0
  322. package/dist/esm/generated/factories/DNSSECImpl__factory.js +497 -0
  323. package/dist/esm/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
  324. package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +83 -0
  325. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
  326. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +167 -0
  327. package/dist/esm/generated/factories/ENSRegistry__factory.d.ts +52 -0
  328. package/dist/esm/generated/factories/ENSRegistry__factory.js +435 -0
  329. package/dist/esm/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
  330. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +507 -0
  331. package/dist/esm/generated/factories/Multicall__factory.d.ts +42 -0
  332. package/dist/esm/generated/factories/Multicall__factory.js +453 -0
  333. package/dist/esm/generated/factories/NameWrapper__factory.d.ts +57 -0
  334. package/dist/esm/generated/factories/NameWrapper__factory.js +1196 -0
  335. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
  336. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +67 -0
  337. package/dist/esm/generated/factories/PublicResolver__factory.d.ts +46 -0
  338. package/dist/esm/generated/factories/PublicResolver__factory.js +888 -0
  339. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +34 -0
  340. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +67 -0
  341. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
  342. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +67 -0
  343. package/dist/esm/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
  344. package/dist/esm/generated/factories/ReverseRegistrar__factory.js +336 -0
  345. package/dist/esm/generated/factories/Root__factory.d.ts +52 -0
  346. package/dist/esm/generated/factories/Root__factory.js +239 -0
  347. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +34 -0
  348. package/dist/esm/generated/factories/SHA1Digest__factory.js +62 -0
  349. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
  350. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +67 -0
  351. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +34 -0
  352. package/dist/esm/generated/factories/SHA256Digest__factory.js +62 -0
  353. package/dist/esm/generated/factories/StaticMetadataService__factory.d.ts +32 -0
  354. package/dist/esm/generated/factories/StaticMetadataService__factory.js +45 -0
  355. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +34 -0
  356. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +57 -0
  357. package/dist/esm/generated/factories/UniversalResolver__factory.d.ts +42 -0
  358. package/dist/esm/generated/factories/UniversalResolver__factory.js +200 -0
  359. package/dist/esm/generated/factories/index.d.ts +6 -0
  360. package/dist/esm/generated/factories/index.js +9 -0
  361. package/dist/esm/generated/index.d.ts +13 -0
  362. package/dist/esm/generated/index.js +7 -0
  363. package/dist/esm/index.d.ts +470 -0
  364. package/dist/esm/index.js +188 -0
  365. package/dist/esm/utils/contentHash.d.ts +28 -0
  366. package/dist/esm/utils/contentHash.js +153 -0
  367. package/dist/esm/utils/createReverseNode.d.ts +2 -0
  368. package/dist/esm/utils/createReverseNode.js +1 -0
  369. package/dist/esm/utils/format.d.ts +3 -0
  370. package/dist/esm/utils/format.js +3 -0
  371. package/dist/esm/utils/fuses.d.ts +20 -0
  372. package/dist/esm/utils/fuses.js +21 -0
  373. package/dist/esm/utils/generateFuseInput.d.ts +3 -0
  374. package/dist/esm/utils/generateFuseInput.js +14 -0
  375. package/dist/esm/utils/hexEncodedName.d.ts +1 -0
  376. package/dist/esm/utils/hexEncodedName.js +2 -0
  377. package/dist/esm/utils/labels.d.ts +14 -0
  378. package/dist/esm/utils/labels.js +95 -0
  379. package/dist/esm/utils/makeHashIndexes.d.ts +2 -0
  380. package/dist/esm/utils/makeHashIndexes.js +3 -0
  381. package/dist/esm/utils/normalise.d.ts +1 -0
  382. package/dist/esm/utils/normalise.js +2 -0
  383. package/dist/esm/utils/recordHelpers.d.ts +13 -0
  384. package/dist/esm/utils/recordHelpers.js +39 -0
  385. package/dist/esm/utils/registerHelpers.d.ts +26 -0
  386. package/dist/esm/utils/registerHelpers.js +44 -0
  387. package/dist/esm/utils/singleCall.d.ts +9 -0
  388. package/dist/esm/utils/singleCall.js +5 -0
  389. package/dist/esm/utils/validation.d.ts +8 -0
  390. package/dist/esm/utils/validation.js +67 -0
  391. package/package.json +70 -48
  392. package/src/@types/@ensdomains/content-hash.d.ts +1 -0
  393. package/src/@types/@ensdomains/ens-contracts.d.ts +1 -0
  394. package/src/@types/FuseOptions.d.ts +9 -0
  395. package/src/@types/dns-packet.d.ts +1 -0
  396. package/src/@types/idna-uts46-hx.d.ts +1 -0
  397. package/src/ABIs/ETHRegistrarController.json +494 -0
  398. package/src/ABIs/NameWrapper.json +1183 -0
  399. package/src/ABIs/PublicResolver.json +875 -0
  400. package/src/ABIs/ReverseRegistrar.json +323 -0
  401. package/src/ABIs/StaticMetadataService.json +32 -0
  402. package/src/ABIs/UniversalResolver.json +187 -0
  403. package/src/GqlManager.ts +18 -0
  404. package/src/contracts/baseRegistrar.ts +5 -0
  405. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +5 -0
  406. package/src/contracts/ethRegistrarController.ts +5 -0
  407. package/src/contracts/getContractAddress.ts +52 -0
  408. package/src/contracts/index.ts +68 -0
  409. package/src/contracts/multicall.ts +24 -0
  410. package/src/contracts/nameWrapper.ts +5 -0
  411. package/src/contracts/publicResolver.ts +5 -0
  412. package/src/contracts/registry.ts +5 -0
  413. package/src/contracts/reverseRegistrar.ts +5 -0
  414. package/src/contracts/types.ts +11 -0
  415. package/src/contracts/universalResolver.ts +5 -0
  416. package/src/functions/batch.ts +36 -0
  417. package/src/functions/batchWrappers.ts +91 -0
  418. package/src/functions/burnFuses.ts +23 -0
  419. package/src/functions/createSubname.ts +82 -0
  420. package/src/functions/deleteSubname.ts +19 -0
  421. package/src/functions/getExpiry.ts +63 -0
  422. package/src/functions/getFuses.ts +75 -0
  423. package/src/functions/getHistory.ts +347 -0
  424. package/src/functions/getName.ts +41 -0
  425. package/src/functions/getNames.ts +275 -0
  426. package/src/functions/getOwner.ts +202 -0
  427. package/src/functions/getPrice.ts +71 -0
  428. package/src/functions/getProfile.ts +479 -0
  429. package/src/functions/getRecords.ts +22 -0
  430. package/src/functions/getResolver.ts +32 -0
  431. package/src/functions/getSpecificRecord.ts +345 -0
  432. package/src/functions/getSubnames.ts +188 -0
  433. package/src/functions/initialGetters.ts +11 -0
  434. package/src/functions/setName.ts +34 -0
  435. package/src/functions/setRecords.ts +38 -0
  436. package/src/functions/setResolver.ts +40 -0
  437. package/src/functions/transferName.ts +56 -0
  438. package/src/functions/transferSubname.ts +37 -0
  439. package/src/functions/unwrapName.ts +38 -0
  440. package/src/functions/wrapName.ts +128 -0
  441. package/src/generated/BaseRegistrarImplementation.ts +1122 -0
  442. package/src/generated/DNSRegistrar.ts +445 -0
  443. package/src/generated/DNSSECImpl.ts +770 -0
  444. package/src/generated/DefaultReverseResolver.ts +137 -0
  445. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +285 -0
  446. package/src/generated/ENSRegistry.ts +618 -0
  447. package/src/generated/ETHRegistrarController.ts +743 -0
  448. package/src/generated/Multicall.ts +582 -0
  449. package/src/generated/NameWrapper.ts +1694 -0
  450. package/src/generated/P256SHA256Algorithm.ts +139 -0
  451. package/src/generated/PublicResolver.ts +1326 -0
  452. package/src/generated/RSASHA1Algorithm.ts +109 -0
  453. package/src/generated/RSASHA256Algorithm.ts +109 -0
  454. package/src/generated/ReverseRegistrar.ts +556 -0
  455. package/src/generated/Root.ts +377 -0
  456. package/src/generated/SHA1Digest.ts +129 -0
  457. package/src/generated/SHA1NSEC3Digest.ts +140 -0
  458. package/src/generated/SHA256Digest.ts +129 -0
  459. package/src/generated/StaticMetadataService.ts +85 -0
  460. package/src/generated/TLDPublicSuffixList.ts +99 -0
  461. package/src/generated/UniversalResolver.ts +260 -0
  462. package/src/generated/common.ts +44 -0
  463. package/src/generated/factories/BaseRegistrarImplementation__factory.ts +781 -0
  464. package/src/generated/factories/DNSRegistrar__factory.ts +329 -0
  465. package/src/generated/factories/DNSSECImpl__factory.ts +527 -0
  466. package/src/generated/factories/DefaultReverseResolver__factory.ts +98 -0
  467. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +186 -0
  468. package/src/generated/factories/ENSRegistry__factory.ts +443 -0
  469. package/src/generated/factories/ETHRegistrarController__factory.ts +522 -0
  470. package/src/generated/factories/Multicall__factory.ts +461 -0
  471. package/src/generated/factories/NameWrapper__factory.ts +1204 -0
  472. package/src/generated/factories/P256SHA256Algorithm__factory.ts +91 -0
  473. package/src/generated/factories/PublicResolver__factory.ts +899 -0
  474. package/src/generated/factories/RSASHA1Algorithm__factory.ts +91 -0
  475. package/src/generated/factories/RSASHA256Algorithm__factory.ts +91 -0
  476. package/src/generated/factories/ReverseRegistrar__factory.ts +347 -0
  477. package/src/generated/factories/Root__factory.ts +244 -0
  478. package/src/generated/factories/SHA1Digest__factory.ts +83 -0
  479. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +91 -0
  480. package/src/generated/factories/SHA256Digest__factory.ts +83 -0
  481. package/src/generated/factories/StaticMetadataService__factory.ts +60 -0
  482. package/src/generated/factories/TLDPublicSuffixList__factory.ts +81 -0
  483. package/src/generated/factories/UniversalResolver__factory.ts +211 -0
  484. package/src/generated/factories/index.ts +9 -0
  485. package/src/generated/index.ts +16 -0
  486. package/src/index.ts +506 -0
  487. package/src/tests/batch.test.ts +36 -0
  488. package/src/tests/batchWrappers.test.ts +31 -0
  489. package/src/tests/burnFuses.test.ts +43 -0
  490. package/src/tests/createSubname.test.ts +59 -0
  491. package/src/tests/deleteSubname.test.ts +72 -0
  492. package/src/tests/getExpiry.test.ts +37 -0
  493. package/src/tests/getFuses.test.ts +103 -0
  494. package/src/tests/getHistory.test.ts +101 -0
  495. package/src/tests/getName.test.ts +47 -0
  496. package/src/tests/getNames.test.ts +247 -0
  497. package/src/tests/getOwner.test.ts +61 -0
  498. package/src/tests/getProfile.test.ts +102 -0
  499. package/src/tests/getResolver.test.ts +19 -0
  500. package/src/tests/getSpecificRecord.test.ts +76 -0
  501. package/src/tests/getSubnames.test.ts +31 -0
  502. package/src/tests/makeCommitment.test.ts +23 -0
  503. package/src/tests/setName.test.ts +58 -0
  504. package/src/tests/setRecords.test.ts +58 -0
  505. package/src/tests/setResolver.test.ts +60 -0
  506. package/src/tests/setup.ts +53 -0
  507. package/src/tests/transferName.test.ts +80 -0
  508. package/src/tests/transferSubname.test.ts +74 -0
  509. package/src/tests/unwrapName.test.ts +67 -0
  510. package/src/tests/withProvider.test.ts +28 -0
  511. package/src/tests/wrapName.test.ts +67 -0
  512. package/src/utils/contentHash.ts +151 -0
  513. package/src/utils/createReverseNode.ts +2 -0
  514. package/src/utils/format.ts +8 -0
  515. package/src/utils/fuses.ts +23 -0
  516. package/src/utils/generateFuseInput.ts +18 -0
  517. package/src/utils/hexEncodedName.ts +4 -0
  518. package/src/utils/labels.ts +119 -0
  519. package/src/utils/makeHashIndexes.ts +9 -0
  520. package/src/utils/normalise.ts +4 -0
  521. package/src/utils/recordHelpers.ts +72 -0
  522. package/src/utils/registerHelpers.ts +88 -0
  523. package/src/utils/singleCall.ts +16 -0
  524. package/src/utils/validation.ts +73 -0
  525. package/dist/constants/interfaces.js +0 -13
  526. package/dist/index.js +0 -1135
  527. package/dist/utils/contents.js +0 -126
  528. package/dist/utils/index.js +0 -189
  529. package/dist/utils/labelhash.js +0 -55
  530. package/dist/utils/namehash.js +0 -39
  531. package/dist/utils/records.js +0 -56
package/README.md CHANGED
@@ -1,160 +1,714 @@
1
- # ENS.js V2
1
+ # ![ENSjs](https://user-images.githubusercontent.com/11844316/161689061-98ea01ee-b119-40ac-a512-5370eb8b4107.svg)
2
2
 
3
- This is the rewrite of `ensjs`. If you are looking for the previous version, look for [ethereum-ens](https://www.npmjs.com/package/ethereum-ens)
3
+ The ultimate ENS javascript library, with [ethers.js](https://github.com/ethers-io/ethers.js) under the hood.
4
4
 
5
- ## Overview of the API
5
+ ## NOTE!!!
6
6
 
7
- ### Setup
7
+ ENSjs v3 is currently in the early development stage, meaning that the APIs are subject to change.
8
+ We also use undeployed contracts under the hood, so this **will not** work on any mainnet/testnet where the contracts are not deployed.
8
9
 
9
- ```
10
- import ENS, { getEnsAddress } from '@ensdomains/ensjs'
10
+ Given the current development status, we're actively seeking feedback so feel free to create an issue or PR if you notice something!
11
+
12
+ ## Features
11
13
 
14
+ - Dynamically load **everything**
15
+ - Super fast response times (1 call for most RPC calls)
16
+ - Easy call batchability
17
+ - Written in TypeScript
18
+ - Supports the most cutting edge ENS features
19
+ - - More
12
20
 
21
+ ## Installation
13
22
 
14
- const ens = new ENS({ provider, ensAddress: getEnsAddress('1') })
23
+ Install @ensdomains/ensjs, alongside [ethers](https://github.com/ethers-io/ethers.js).
15
24
 
16
- ens.name('resolver.eth').getAddress() // 0x123
25
+ ```sh
26
+ npm install @ensdomains/ensjs ethers
17
27
  ```
18
28
 
19
- ### exports
29
+ ## Getting Started
20
30
 
21
- ```
22
- default - ENS
23
- getEnsAddress
24
- getResolverContract
25
- getENSContract
26
- namehash
27
- labelhash
28
- ```
31
+ All that's needed to get started is an ethers provider instance.
32
+ Once you create a new ENS instance, you can pass it in using setProvider.
33
+
34
+ ```js
35
+ import { ENS } from '@ensdomains/ensjs'
36
+ import { ethers } from 'ethers'
29
37
 
30
- ### ENS Interface
38
+ const provider = new ethers.providers.JsonRpcProvider(providerUrl)
31
39
 
40
+ const ENSInstance = new ENS()
41
+ await ENSInstance.setProvider(provider)
32
42
  ```
33
- name(name: String) => Name
43
+
44
+ ## Batching Calls
45
+
46
+ The batch function is a large part of this library, and there are plenty of situations where you might want to use it.
47
+ **Note that only functions with the `GeneratedRawFunction` type can be batched together.**
48
+
49
+ ```js
50
+ /* Batch functions can be called like so, with the function as the first item in an array, with the following items being the function's arguments */
51
+ const batched = await batch(
52
+ ENSInstance.getText.batch('test.eth', 'foo'),
53
+ ENSInstance.getAddr.batch('test.eth'),
54
+ ENSInstance.getOwner.batch('test.eth'),
55
+ )
56
+
57
+ /* The response is formatted like so:
58
+ [
59
+ response1,
60
+ response2,
61
+ response3,
62
+ ...etc,
63
+ ]
64
+ */
34
65
  ```
35
66
 
36
- Returns a Name Object, that allows you to make record queries.
67
+ ## Using Custom Graph Node URIs
37
68
 
38
- ```
39
- resolver(address: EthereumAddress) => Resolver
40
- ```
69
+ If you want to use your own graph-node URI, such as a local graph-node URI, you can pass it through when creating a new ENS instance.
70
+ Alternatively, if you don't want to use The Graph at all you can pass through `null`.
41
71
 
42
- Returns a Resolver Object, allowing you to query names from this specific resolver. Most useful when querying a different resolver that is different than is currently recorded on the registry. E.g. migrating to a new resolver
72
+ ```js
73
+ import { ENS } from '@ensdomains/ensjs'
43
74
 
44
- ```
45
- async getName(address: EthereumAddress) => Promise<Name>
75
+ /* If you want to use a custom URI */
76
+ const ENSInstance = new ENS({
77
+ graphURI: 'http://localhost:8000/subgraphs/name/graphprotocol/ens',
78
+ })
79
+
80
+ /* If you want to disable The Graph queries */
81
+ const ENSInstance = new ENS({ graphURI: null })
46
82
  ```
47
83
 
48
- Returns the reverse record for a particular Ethereum address.
84
+ ## Single-use Providers
49
85
 
50
- ```
51
- async setReverseRecord(name: Name) => Promise<EthersTxObject>
52
- ```
86
+ If you want to use a specific provider to make a single call occasionally, you can easily do so.
53
87
 
54
- Sets the reverse record for the current Ethereum address
88
+ ```js
89
+ import { ENS } from '@ensdomains/ensjs'
55
90
 
56
- ### Name Interface
91
+ const ENSInstance = new ENS()
57
92
 
58
- ```ts
59
- async getOwner() => Promise<EthereumAddress>
93
+ const callWithProvider = await ENSInstance.withProvider(otherProvider).getText(
94
+ 'test.eth',
95
+ 'foo',
96
+ )
60
97
  ```
61
98
 
62
- Returns the owner/controller for the current ENS name.
99
+ ## Profiles
100
+
101
+ You can fetch almost all information about an ENS name (or address) using getProfile.
102
+ If an address is used as the first argument, it will fetch the primary name and give the same response as a name would.
103
+ It will automatically get all the records for a name, as well as get the resolver address for the name.
104
+ Specific records can also be used as an input, if you only want to get certain ones. If an address is used as an input alongside this,
105
+ you also save 1 RPC call.
106
+
107
+ **NOTE:**
108
+ The profile function will always request an ETH addr record.
109
+ For names, this means the address will always at the top level of the returned object.
110
+ For addresses, this means the "match" property (a boolean value for matching reverse/forward resolution) will always be at the top level of the returned object.
111
+
112
+ ```js
113
+ /* Normal profile fetching */
114
+ const profile = await ENSInstance.getProfile('test.eth')
115
+
116
+ /* Profile fetching from an address */
117
+ const profile = await ENSInstance.getProfile(
118
+ '0xeefB13C7D42eFCc655E528dA6d6F7bBcf9A2251d',
119
+ )
120
+
121
+ /* Get all records of a specific type (or multiple) */
122
+ const profile = await ENSInstance.getProfile('test.eth', {
123
+ texts: true,
124
+ coinTypes: true,
125
+ contentHash: true,
126
+ })
127
+
128
+ /* Get specific records */
129
+ const profile = await ENSInstance.getProfile('test.eth', {
130
+ texts: ['foo'],
131
+ coinTypes: ['ETH'],
132
+ })
133
+ ```
63
134
 
64
- ```ts
65
- async setOwner(address: EthereumAddress) => Promise<Ethers>
135
+ Returns:
136
+
137
+ ```typescript
138
+ type RecordItem = {
139
+ key: string | number
140
+ type: 'addr' | 'text' | 'contentHash'
141
+ coin?: string
142
+ addr?: string
143
+ value?: string
144
+ }
145
+
146
+ type ProfileReturn = {
147
+ address?: string // ONLY RETURNED AT TOP-LEVEL FOR NAME QUERIES
148
+ name?: string // ONLY RETURNED AT TOP-LEVEL FOR ADDRESS QUERIES
149
+ records: {
150
+ contentHash?: ContentHashObject | null
151
+ texts?: RecordItem[]
152
+ coinTypes?: RecordItem[]
153
+ }
154
+ resolverAddress: string
155
+ }
66
156
  ```
67
157
 
68
- Sets the owner/controller for the current ENS name.
158
+ ## Name History
69
159
 
70
- ```ts
71
- async getResolver() => Promise<EthereumAddress>
72
- ```
160
+ Getting the history for a name is very simple and can be done in two ways.
161
+ Not all data can be immediately fetched for the history of an ENS name, which is why there is multiple methods for doing so.
162
+ Text records do not contain the string value of the changed record, only the key. The value needs to be derived from fetching
163
+ the individual transaction hash. This can potentially be very slow if the name has a long history.
73
164
 
74
- Returns the resolver for the current ENS name.
165
+ ```js
166
+ /* Normal Fetching, requires a second function for more details */
167
+ const history = await ENSInstance.getHistory('test.eth')
75
168
 
76
- ```ts
77
- async setResolver(address: EthereumAddress) => Promise<EthereumAddress>
169
+ /* Details helper for history */
170
+ /* You'll need to implement custom logic to get the index if you want to use that parameter, it's not currently done in the function */
171
+ const detail = await ENSInstance.getHistoryDetailForTransactionHash(
172
+ transactionHash,
173
+ optionalIndex,
174
+ )
175
+
176
+ /* Fetching with all details upfront */
177
+ const historyWithDetail = await ENSInstance.getHistoryWithDetail('test.eth')
78
178
  ```
79
179
 
80
- Sets the resolver for the current ENS name.
180
+ ## Ownership Levels
81
181
 
82
- ```ts
83
- async getTTL() => Promise<Number>
84
- ```
182
+ The `getOwner` function returns not only an owner (and potentially a registrant), but also a ownershipLevel value.
183
+ This value essentially means the contract for the "real owner" of any given name. In most cases it means the NFT contract
184
+ of the name, but if there is no NFT then it's just the registry. This value is useful for input into the `transferName`
185
+ function, where a contract needs to be specified.
85
186
 
86
- Returns the TTL for the current ENS name.
187
+ ## Wrapping Names
87
188
 
88
- ```ts
89
- async getAddress(coinId: String) => Promise<EthereumAddress>
90
- ```
189
+ Wrapping names is very simple, you can wrap any name from the same function, with the exact contract to use being inferred.
190
+ You can specify both the fuses and resolver address to use with the wrapped name, but it's entirely optional.
91
191
 
92
- Returns the address for the current ENS name for the coinId provided.
192
+ ```js
193
+ /* wrap a .eth name */
194
+ const tx = await ENSInstance.wrapName(
195
+ 'test.eth', // Name to wrap
196
+ '0xeefB13C7D42eFCc655E528dA6d6F7bBcf9A2251d', // New owner of wrapped name
197
+ )
93
198
 
94
- ```ts
95
- async setAddress(coinId: String, address: EthereumAddress) => Promise<EthersTxObject>
199
+ /* wrap any other name (e.g. a subname) */
200
+ const tx = await ENSInstance.wrapName(
201
+ 'sub.test.eth',
202
+ '0xeefB13C7D42eFCc655E528dA6d6F7bBcf9A2251d',
203
+ )
96
204
  ```
97
205
 
98
- Sets the address for the current ENS name for the coinId provided.
206
+ ## Write Transaction Options
99
207
 
100
- ```ts
101
- async getContent() => Promise<ContentHash>
102
- ```
208
+ Currently, some write functions have an `options` argument. While this may expand over time,
209
+ it currently just allows you to pass an address or index for an account array to ethers for specifying the signer of the transaction.
103
210
 
104
- Returns the contentHash for the current ENS name.
211
+ ## Internal Structure
105
212
 
106
- ```ts
107
- async setContenthash(content: ContentHash) => Promise<EthersTxObject>
108
- ```
213
+ ### Raw Functions
109
214
 
110
- Sets the contentHash for the current ENS name.
215
+ Raw functions are a crucial part of how ENSjs works. In the function file itself
216
+ a `raw` and `decode` function both need to be defined, with the export being an object with those properties.
217
+ This allows for the encoding and decoding of contract calls to be split, meaning that multiple calls can be batched together.
218
+ For calling a raw function by itself, the raw and decode functions are stitched together with a provider call. This is done
219
+ using `importGenerator` which is explained below.
111
220
 
112
- ```ts
113
- async getText(key: String) => Promise<String>
114
- ```
221
+ ### importGenerator
115
222
 
116
- Returns the text record for a given key for the current ENS name.
223
+ The importGenerator function generates a wrapped function for any given input.
224
+ The result of the wrapped function obfuscates the processing that ENSjs does, and exposes a cleaner API to the user/developer.
225
+ The reason we do this is to:
117
226
 
118
- ```ts
119
- async setText(key: String, recordValue: String) => Promise<EthersTxObject>
120
- ```
227
+ 1. Pass through all the required variables for the function
228
+ 2. Split individual functions from the main class
229
+ 3. Dynamically load functions and their dependencies
230
+ 4. Allow each function's dependencies to be imported regularly
231
+ 5. Remove duplicate code
232
+ 6. Make it easier to isolate errors
233
+ 7. Stitch `raw` and `decode` functions together
121
234
 
122
- Sets the text record for a given key for the current ENS name.
235
+ ### ContractManager
123
236
 
124
- ```ts
125
- async setSubnodeOwner(label: String, newOwner: EthereumAddress) => Promise<EthersTxObject>
126
- ```
237
+ The contract manager is where all the contracts are dynamically loaded in and resolved based on the network.
238
+ A new instance of ContractManager is created every time you switch providers.
127
239
 
128
- Sets the subnode owner for a subdomain of the current ENS name.
240
+ ### GqlManager
129
241
 
130
- ```ts
131
- async setSubnodeRecord(label: String, newOwner: EthereumAddress, resolver: EthereumAddress, ttl: ?Number) => Promise<EthersTxObject>
132
- ```
242
+ The GQL manager is used as to separate the reliance of ENSjs from GQL.
243
+ It only loads in GQL when it is needed, or not at all if specified in the constructor of the ENS class.
244
+ Very simply, it just exposes the core functions needed for ENSjs which can then be accessed.
133
245
 
134
- Sets the subnode owner, resolver, ttl for a subdomain of the current ENS name in one transaction.
246
+ ### initialProvider
135
247
 
136
- ```ts
137
- async createSubdomain(label: String) => Promise<EthersTxObject>
138
- ```
248
+ The `initialProvider`, and similarly `checkInitialProvider` are used when creating single-use class instances with `withProvider`.
249
+ It allows `withProvider` to act as a new ENS instance without having to await a promise, which simplifies the API.
250
+ `checkInitialProvider` is run on every function call given that it's extremely lightweight.
139
251
 
140
- Creates a subdomain for the current ENS name. Automatically sets the owner to the signing account.
252
+ ## Individual Functions
141
253
 
142
- ```ts
143
- async deleteSubdomain(label: String) => Promise<EthersTxObject>
144
- ```
254
+ ### getFuses
145
255
 
146
- Deletes a subdomain for the current ENS name. Automatically sets the owner to "0x0..."
256
+ Gets the fuses for a specified wrapped name.
147
257
 
148
- ## Resolver Interface
258
+ Input:
149
259
 
150
- ```ts
151
- address
152
- ```
260
+ - `name`: string
261
+ - Target name
153
262
 
154
- Static property that returns current resolver address
263
+ Output:
155
264
 
156
- ```ts
157
- name(name) => Name
158
- ```
265
+ - `fuseObj`: object
266
+ - Decoded known fuses
267
+ - `vulnerability`: string
268
+ - Vulnerability for name
269
+ - Will be "Safe" if no vulnerability
270
+ - `vulnerableNode`: string | null
271
+ - Node that is vulnerable in chain
272
+ - `rawFuses`: BigNumber
273
+ - Unformatted fuse result
274
+
275
+ ### getHistory
276
+
277
+ Gets the history for a specified name.
278
+
279
+ Input:
280
+
281
+ - `name`: string
282
+ - Target name
283
+
284
+ Output:
285
+
286
+ - `domain`: array
287
+ - Domain event item
288
+ - `registration`: array
289
+ - Registration event item
290
+ - `resolver`: array
291
+ - Resolver event item
292
+
293
+ ### getHistoryWithDetail
294
+
295
+ Gets the history for a specified name with details.
296
+
297
+ Input:
298
+
299
+ - `name`: string
300
+ - Target name
301
+
302
+ Output:
303
+
304
+ - `domain`: array
305
+ - Domain event item
306
+ - `registration`: array
307
+ - Registration event item
308
+ - `resolver`: array
309
+ - Resolver event item
310
+
311
+ ### getHistoryDetailForTransactionHash
312
+
313
+ Gets the history details for a specified transaction hash.
314
+
315
+ Input:
316
+
317
+ - `hash`: string
318
+ - Target transaction hash
319
+ - `indexInTransaction`: number?
320
+ - Index of transaction out of same transaction type
321
+
322
+ Output:
323
+
324
+ - object | array
325
+ - `key`: string
326
+ - Key for detail
327
+ - `value`: string
328
+ - Value for detail
329
+
330
+ ### getName
331
+
332
+ Gets the primary name for a specified address.
333
+
334
+ Input:
335
+
336
+ - `address`: string
337
+ - Target address
338
+
339
+ Output:
340
+
341
+ - `name`: string | null
342
+ - Resolved name
343
+ - `match`: boolean
344
+ - Forward resolved match check value
345
+
346
+ ### getOwner
347
+
348
+ Gets the owner of a specified name. See _ownership levels_ for more details about the output.
349
+
350
+ Input:
351
+
352
+ - `name`: string
353
+ - Target name
354
+
355
+ Output:
356
+
357
+ - `owner`: string
358
+ - Controller of records for name
359
+ - `registrant`: string?
360
+ - NFT Owner
361
+ - `ownershipLevel`: string
362
+ - Level at which the ownership data is being read
363
+
364
+ ### getProfile
365
+
366
+ Gets the profile of a specified name or address, or just certain records if specified.
367
+
368
+ Input:
369
+
370
+ - `nameOrAddress`: string
371
+ - Target name or address
372
+ - `options`: object?
373
+ - `contentHash`: boolean?
374
+ - `texts`: boolean? | string[]?
375
+ - Array of keys, or true for all keys
376
+ - `coinTypes`: boolean? | string[]?
377
+ - Array of keys, or true for all keys
378
+
379
+ Output:
380
+
381
+ - `resolverAddress`: string
382
+ - Address of resolver
383
+ - `records`: object
384
+ - matching records from input
385
+ - `contentHash`: object? | null?
386
+ - Decoded content hash
387
+ - `texts`: array?
388
+ - `key`: string
389
+ - `value`: string
390
+ - `coinTypes`: array?
391
+ - `key`: number
392
+ - `coin`: string
393
+ - Coin name
394
+ - `value`: string
395
+ - Decoded address
396
+ - `name`: string?
397
+ - _Only applicable for address inputs_
398
+ - Resolved name
399
+ - `address`: string?
400
+ - _Only applicable for name inputs_
401
+ - Resolved address
402
+ - `match`: boolean?
403
+ - _Only applicable for address inputs_
404
+ - Forward resolved match check value
405
+
406
+ ### getRecords
407
+
408
+ Gets all the records of a specified name, or just certain records if specified.
409
+
410
+ Input:
411
+
412
+ - `name`: string
413
+ - `options`: object?
414
+ - `contentHash`: boolean?
415
+ - `texts`: boolean? | string[]?
416
+ - Array of keys, or true for all keys
417
+ - `coinTypes`: boolean? | string[]?
418
+ - Array of keys, or true for all keys
419
+
420
+ Output: **see getProfile**
421
+
422
+ ### getResolver
423
+
424
+ Gets the resolver for a specified name.
425
+
426
+ Input:
427
+
428
+ - `name`: string
429
+ - Target name
430
+
431
+ Output:
432
+
433
+ - string
434
+ - Resolver address
435
+
436
+ ### getContentHash
437
+
438
+ Gets the content hash record for a specified name.
439
+
440
+ Input:
441
+
442
+ - `name`: string
443
+ - Target name
444
+
445
+ Output:
446
+
447
+ - object | null
448
+ - Decoded content hash
449
+
450
+ ### getText
451
+
452
+ Gets a text record for a specified name.
453
+
454
+ Input:
455
+
456
+ - `name`: string
457
+ - Target name
458
+ - `key`: string
459
+ - Target key
460
+
461
+ Output:
462
+
463
+ - string | null
464
+ - Text record value
465
+
466
+ ### getAddr
467
+
468
+ Gets an address record for a specified name.
469
+
470
+ Input:
471
+
472
+ - `name`: string
473
+ - Target name
474
+ - `coinType`: string? | number?
475
+ - Target coin
476
+ - Defaults to 60 (ETH) if undefined
477
+
478
+ Output:
479
+
480
+ - string | null
481
+ - Address record value
482
+
483
+ ### burnFuses
484
+
485
+ Creates a transaction to burn fuses on a specified wrapped name.
486
+
487
+ Input:
488
+
489
+ - `name`: string
490
+ - Target name
491
+ - `fusesToBurn`: object
492
+ - Object of fuses intended to be burned.
493
+
494
+ Output:
495
+
496
+ - transaction
497
+
498
+ ### createSubname
499
+
500
+ Creates a subname using the specified contract.
501
+
502
+ Input:
503
+
504
+ - object
505
+ - `name`: string
506
+ - Target name
507
+ - `owner`: string
508
+ - New owner of subname
509
+ - `contract`: `registry` | `nameWrapper`
510
+ - Target contract
511
+ - `resolverAddress`: string?
512
+ - Resolver address for name
513
+ - `shouldWrap`: boolean?
514
+ - _Only valid with NameWrapper contract_
515
+ - Initial name wrapped state
516
+ - `fuses`: object?
517
+ - _Only valid with NameWrapper contract_
518
+ - Initial fuses to be burned
519
+
520
+ Output:
521
+
522
+ - transaction
523
+
524
+ ### deleteSubname
525
+
526
+ Deletes a subname using the specified contract.
527
+
528
+ Input:
529
+
530
+ - `name`: string
531
+ - Target name
532
+ - `contract`: `registry` | `nameWrapper`
533
+ - Target contract
534
+
535
+ Output:
536
+
537
+ - transaction
538
+
539
+ ### transferSubname
540
+
541
+ Transfers a subname using the specified contract.
542
+ **Please note that transferring a wrapped name using this method will unwrap the name.**
543
+
544
+ Input:
545
+
546
+ - `name`: string
547
+ - Target name
548
+ - `contract`: `registry` | `nameWrapper`
549
+ - Target contract
550
+ - `address`: string
551
+ - Address to transfer name to
552
+
553
+ Output:
554
+
555
+ - transaction
556
+
557
+ ### setName
558
+
559
+ Sets the primary name for a specified address.
560
+
561
+ Input:
562
+
563
+ - `name`: string
564
+ - Name to set
565
+ - `address`: string?
566
+ - _Setting other primary names requires authorisation_
567
+ - Address to set name for
568
+ - `resolver`: string?
569
+ - _Setting other primary names requires authorisation_
570
+ - Target resolver
571
+
572
+ Output:
573
+
574
+ - transaction
575
+
576
+ ### setRecords
577
+
578
+ Sets multiple records at once for the specified name.
579
+
580
+ Input:
581
+
582
+ - `name`: string
583
+ - Target name
584
+ - `records`: object
585
+ - `contentHash`: string?
586
+ - Formatted and encoded content hash
587
+ - `texts`: array?
588
+ - object
589
+ - `key`: string
590
+ - Text key
591
+ - `value`: string
592
+ - Text value
593
+ - `coinTypes`: array?
594
+ - object
595
+ - `key`: string
596
+ - Coin name or ID
597
+ - `value`: string
598
+ - Coin address
599
+
600
+ Output:
601
+
602
+ - transaction
603
+
604
+ ### setResolver
605
+
606
+ Sets the resolver for the specified name, using the specified contract.
607
+
608
+ Input:
609
+
610
+ - `name`: string
611
+ - Target Name
612
+ - `contract`: `registry` | `nameWrapper`
613
+ - Target contract
614
+ - `resolver`: string?
615
+ - _Leaving this undefined will use the default public resolver_
616
+
617
+ Output:
618
+
619
+ - transaction
620
+
621
+ ### transferName
622
+
623
+ Transfers a name, using the specified contract.
624
+
625
+ Input:
626
+
627
+ - `name`: string
628
+ - Target name
629
+ - `newOwner`: string
630
+ - Address to transfer name to
631
+ - `contract`: `registry` | `nameWrapper` | `baseRegistrar`
632
+ - Target contract
633
+
634
+ Output:
635
+
636
+ - transaction
637
+
638
+ ### wrapName
639
+
640
+ Wraps a name.
641
+
642
+ Input:
643
+
644
+ - `name`: string
645
+ - Target name
646
+ - `wrappedOwner`: string
647
+ - New owner of wrapped name
648
+ - `fuseOptions`: object?
649
+ - Initial fuses to burn
650
+ - `resolverAddress`: string?
651
+ - Initial resolver address
652
+
653
+ Output:
654
+
655
+ - transaction
656
+
657
+ ### unwrapName
658
+
659
+ Unwraps a name.
660
+
661
+ Input:
662
+
663
+ - `name`: string
664
+ - Target name
665
+ - `newController`: string
666
+ - New controller for name
667
+ - `newRegistrant`: string?
668
+ - New registrant for name
669
+
670
+ Output:
671
+
672
+ - transaction
673
+
674
+ ### universalWrapper
675
+
676
+ Wraps a function so it is directed to the universal resolver instead of the default public resolver.
677
+
678
+ Input:
679
+
680
+ - `name`: string
681
+ - Name to resolve
682
+ - `data`: string
683
+ - Hex encoded function data
684
+
685
+ Output:
686
+
687
+ - object
688
+ - `data`: string
689
+ - Hex encoded function result
690
+ - `resolver`: string
691
+ - Used resolver address
692
+
693
+ Examples for universalWrapper can be found in `getSpecificRecord`.
694
+
695
+ ### resolverMulticallWrapper
696
+
697
+ Wraps multiple resolver calls so they are made into a single resolver multicall.
698
+
699
+ Input:
700
+
701
+ - array
702
+ - object
703
+ - `to`: string
704
+ - Placeholder for standard function calls, ignore this.
705
+ - `data`: string
706
+ - Hex encoded function data
707
+
708
+ Output:
709
+
710
+ - array
711
+ - string
712
+ - Hex encoded function result
159
713
 
160
- Returns a Name Object that hardcodes the resolver
714
+ Examples for resolverMulticallWrapper can be found in `getProfile`.