@ensdomains/ensjs 2.0.1 → 3.0.0-alpha.10

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