@ensdomains/ensjs 3.0.0-beta.1 → 3.0.0-beta.11

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 (534) hide show
  1. package/contracts/OldestResolver.json +170 -0
  2. package/contracts/UniversalResolverv2.json +628 -0
  3. package/dist/cjs/clients/decorators/subgraph.js.map +1 -1
  4. package/dist/cjs/clients/decorators/wallet.js +2 -0
  5. package/dist/cjs/clients/decorators/wallet.js.map +1 -1
  6. package/dist/cjs/clients/public.js.map +1 -1
  7. package/dist/cjs/clients/subgraph.js.map +1 -1
  8. package/dist/cjs/contracts/consts.js +53 -2
  9. package/dist/cjs/contracts/consts.js.map +1 -1
  10. package/dist/cjs/contracts/universalResolver.js +46 -1
  11. package/dist/cjs/contracts/universalResolver.js.map +1 -1
  12. package/dist/cjs/dns.js +3 -3
  13. package/dist/cjs/dns.js.map +1 -1
  14. package/dist/cjs/errors/subgraph.js.map +1 -1
  15. package/dist/cjs/errors/utils.js +27 -18
  16. package/dist/cjs/errors/utils.js.map +1 -1
  17. package/dist/cjs/errors/version.js +1 -1
  18. package/dist/cjs/errors/version.js.map +1 -1
  19. package/dist/cjs/functions/dns/{prepareDnsImport.js → getDnsImportData.js} +3 -3
  20. package/dist/cjs/functions/dns/{prepareDnsImport.js.map → getDnsImportData.js.map} +1 -1
  21. package/dist/cjs/functions/dns/importDnsName.js +7 -7
  22. package/dist/cjs/functions/dns/importDnsName.js.map +1 -1
  23. package/dist/cjs/functions/public/_getAbi.js +2 -2
  24. package/dist/cjs/functions/public/_getAbi.js.map +1 -1
  25. package/dist/cjs/functions/public/_getAddr.js +9 -19
  26. package/dist/cjs/functions/public/_getAddr.js.map +1 -1
  27. package/dist/cjs/functions/public/_getContentHash.js +1 -1
  28. package/dist/cjs/functions/public/batch.js.map +1 -1
  29. package/dist/cjs/functions/public/getAbiRecord.js.map +1 -1
  30. package/dist/cjs/functions/public/getAddressRecord.js.map +1 -1
  31. package/dist/cjs/functions/public/getAvailable.js.map +1 -1
  32. package/dist/cjs/functions/public/getContentHashRecord.js.map +1 -1
  33. package/dist/cjs/functions/public/getExpiry.js.map +1 -1
  34. package/dist/cjs/functions/public/getName.js.map +1 -1
  35. package/dist/cjs/functions/public/getOwner.js.map +1 -1
  36. package/dist/cjs/functions/public/getPrice.js.map +1 -1
  37. package/dist/cjs/functions/public/getRecords.js +56 -42
  38. package/dist/cjs/functions/public/getRecords.js.map +1 -1
  39. package/dist/cjs/functions/public/getResolver.js.map +1 -1
  40. package/dist/cjs/functions/public/getSupportedInterfaces.js +1 -1
  41. package/dist/cjs/functions/public/getSupportedInterfaces.js.map +1 -1
  42. package/dist/cjs/functions/public/getTextRecord.js.map +1 -1
  43. package/dist/cjs/functions/public/getWrapperData.js.map +1 -1
  44. package/dist/cjs/functions/public/getWrapperName.js.map +1 -1
  45. package/dist/cjs/functions/public/multicallWrapper.js.map +1 -1
  46. package/dist/cjs/functions/public/universalWrapper.js.map +1 -1
  47. package/dist/cjs/functions/subgraph/client.js.map +1 -1
  48. package/dist/cjs/functions/subgraph/filters.js +3 -0
  49. package/dist/cjs/functions/subgraph/filters.js.map +1 -0
  50. package/dist/cjs/functions/subgraph/getDecodedName.js.map +1 -1
  51. package/dist/cjs/functions/subgraph/getNameHistory.js +4 -3
  52. package/dist/cjs/functions/subgraph/getNameHistory.js.map +1 -1
  53. package/dist/cjs/functions/subgraph/getNamesForAddress.js +155 -190
  54. package/dist/cjs/functions/subgraph/getNamesForAddress.js.map +1 -1
  55. package/dist/cjs/functions/subgraph/getSubgraphRecords.js +34 -26
  56. package/dist/cjs/functions/subgraph/getSubgraphRecords.js.map +1 -1
  57. package/dist/cjs/functions/subgraph/getSubgraphRegistrant.js.map +1 -1
  58. package/dist/cjs/functions/subgraph/getSubnames.js +95 -108
  59. package/dist/cjs/functions/subgraph/getSubnames.js.map +1 -1
  60. package/dist/cjs/functions/subgraph/types.js +3 -0
  61. package/dist/cjs/functions/subgraph/types.js.map +1 -0
  62. package/dist/cjs/functions/subgraph/utils.js.map +1 -1
  63. package/dist/cjs/functions/wallet/clearRecords.js +26 -0
  64. package/dist/cjs/functions/wallet/clearRecords.js.map +1 -0
  65. package/dist/cjs/functions/wallet/commitName.js.map +1 -1
  66. package/dist/cjs/functions/wallet/createSubname.js +1 -1
  67. package/dist/cjs/functions/wallet/createSubname.js.map +1 -1
  68. package/dist/cjs/functions/wallet/deleteSubname.js.map +1 -1
  69. package/dist/cjs/functions/wallet/registerName.js.map +1 -1
  70. package/dist/cjs/functions/wallet/renewNames.js.map +1 -1
  71. package/dist/cjs/functions/wallet/setAbiRecord.js.map +1 -1
  72. package/dist/cjs/functions/wallet/setAddressRecord.js.map +1 -1
  73. package/dist/cjs/functions/wallet/setChildFuses.js +1 -1
  74. package/dist/cjs/functions/wallet/setChildFuses.js.map +1 -1
  75. package/dist/cjs/functions/wallet/setContentHashRecord.js.map +1 -1
  76. package/dist/cjs/functions/wallet/setFuses.js +1 -1
  77. package/dist/cjs/functions/wallet/setFuses.js.map +1 -1
  78. package/dist/cjs/functions/wallet/setPrimaryName.js.map +1 -1
  79. package/dist/cjs/functions/wallet/setRecords.js.map +1 -1
  80. package/dist/cjs/functions/wallet/setResolver.js.map +1 -1
  81. package/dist/cjs/functions/wallet/setTextRecord.js.map +1 -1
  82. package/dist/cjs/functions/wallet/transferName.js.map +1 -1
  83. package/dist/cjs/functions/wallet/unwrapName.js.map +1 -1
  84. package/dist/cjs/functions/wallet/wrapName.js +3 -1
  85. package/dist/cjs/functions/wallet/wrapName.js.map +1 -1
  86. package/dist/cjs/index.js +1 -2
  87. package/dist/cjs/index.js.map +1 -1
  88. package/dist/cjs/subgraph.js +4 -1
  89. package/dist/cjs/subgraph.js.map +1 -1
  90. package/dist/cjs/utils/contentHash.js +60 -131
  91. package/dist/cjs/utils/contentHash.js.map +1 -1
  92. package/dist/cjs/utils/encoders/encodeAbi.js +33 -3
  93. package/dist/cjs/utils/encoders/encodeAbi.js.map +1 -1
  94. package/dist/cjs/utils/encoders/encodeClearRecords.js +12 -0
  95. package/dist/cjs/utils/encoders/encodeClearRecords.js.map +1 -0
  96. package/dist/cjs/utils/encoders/encodeSetAddr.js +5 -16
  97. package/dist/cjs/utils/encoders/encodeSetAddr.js.map +1 -1
  98. package/dist/cjs/utils/encoders/encodeSetContentHash.js +1 -4
  99. package/dist/cjs/utils/encoders/encodeSetContentHash.js.map +1 -1
  100. package/dist/cjs/utils/format.js +1 -5
  101. package/dist/cjs/utils/format.js.map +1 -1
  102. package/dist/cjs/utils/fuses.js +184 -200
  103. package/dist/cjs/utils/fuses.js.map +1 -1
  104. package/dist/cjs/utils/generateRecordCallArray.js +6 -10
  105. package/dist/cjs/utils/generateRecordCallArray.js.map +1 -1
  106. package/dist/cjs/utils/getRevertErrorData.js +4 -1
  107. package/dist/cjs/utils/getRevertErrorData.js.map +1 -1
  108. package/dist/cjs/utils/index.js +31 -7
  109. package/dist/cjs/utils/index.js.map +1 -1
  110. package/dist/cjs/utils/normaliseCoinId.js +35 -0
  111. package/dist/cjs/utils/normaliseCoinId.js.map +1 -0
  112. package/dist/cjs/utils/registerHelpers.js +3 -1
  113. package/dist/cjs/utils/registerHelpers.js.map +1 -1
  114. package/dist/cjs/wallet.js +3 -1
  115. package/dist/cjs/wallet.js.map +1 -1
  116. package/dist/esm/clients/decorators/subgraph.js.map +1 -1
  117. package/dist/esm/clients/decorators/wallet.js +2 -0
  118. package/dist/esm/clients/decorators/wallet.js.map +1 -1
  119. package/dist/esm/clients/public.js.map +1 -1
  120. package/dist/esm/clients/subgraph.js.map +1 -1
  121. package/dist/esm/contracts/consts.js +53 -2
  122. package/dist/esm/contracts/consts.js.map +1 -1
  123. package/dist/esm/contracts/universalResolver.js +46 -1
  124. package/dist/esm/contracts/universalResolver.js.map +1 -1
  125. package/dist/esm/dns.js +1 -1
  126. package/dist/esm/dns.js.map +1 -1
  127. package/dist/esm/errors/subgraph.js.map +1 -1
  128. package/dist/esm/errors/utils.js +24 -16
  129. package/dist/esm/errors/utils.js.map +1 -1
  130. package/dist/esm/errors/version.js +1 -1
  131. package/dist/esm/errors/version.js.map +1 -1
  132. package/dist/esm/functions/dns/{prepareDnsImport.js → getDnsImportData.js} +10 -10
  133. package/dist/esm/functions/dns/{prepareDnsImport.js.map → getDnsImportData.js.map} +1 -1
  134. package/dist/esm/functions/dns/getDnsOwner.js +1 -1
  135. package/dist/esm/functions/dns/importDnsName.js +13 -12
  136. package/dist/esm/functions/dns/importDnsName.js.map +1 -1
  137. package/dist/esm/functions/public/_getAbi.js +2 -2
  138. package/dist/esm/functions/public/_getAbi.js.map +1 -1
  139. package/dist/esm/functions/public/_getAddr.js +10 -20
  140. package/dist/esm/functions/public/_getAddr.js.map +1 -1
  141. package/dist/esm/functions/public/_getContentHash.js +2 -2
  142. package/dist/esm/functions/public/batch.js +2 -1
  143. package/dist/esm/functions/public/batch.js.map +1 -1
  144. package/dist/esm/functions/public/getAbiRecord.js +2 -1
  145. package/dist/esm/functions/public/getAbiRecord.js.map +1 -1
  146. package/dist/esm/functions/public/getAddressRecord.js +2 -1
  147. package/dist/esm/functions/public/getAddressRecord.js.map +1 -1
  148. package/dist/esm/functions/public/getAvailable.js +2 -1
  149. package/dist/esm/functions/public/getAvailable.js.map +1 -1
  150. package/dist/esm/functions/public/getContentHashRecord.js +2 -1
  151. package/dist/esm/functions/public/getContentHashRecord.js.map +1 -1
  152. package/dist/esm/functions/public/getExpiry.js +2 -1
  153. package/dist/esm/functions/public/getExpiry.js.map +1 -1
  154. package/dist/esm/functions/public/getName.js +2 -1
  155. package/dist/esm/functions/public/getName.js.map +1 -1
  156. package/dist/esm/functions/public/getOwner.js +3 -2
  157. package/dist/esm/functions/public/getOwner.js.map +1 -1
  158. package/dist/esm/functions/public/getPrice.js +3 -2
  159. package/dist/esm/functions/public/getPrice.js.map +1 -1
  160. package/dist/esm/functions/public/getRecords.js +59 -48
  161. package/dist/esm/functions/public/getRecords.js.map +1 -1
  162. package/dist/esm/functions/public/getResolver.js +2 -1
  163. package/dist/esm/functions/public/getResolver.js.map +1 -1
  164. package/dist/esm/functions/public/getSupportedInterfaces.js +24 -2
  165. package/dist/esm/functions/public/getSupportedInterfaces.js.map +1 -1
  166. package/dist/esm/functions/public/getTextRecord.js +2 -1
  167. package/dist/esm/functions/public/getTextRecord.js.map +1 -1
  168. package/dist/esm/functions/public/getWrapperData.js +2 -1
  169. package/dist/esm/functions/public/getWrapperData.js.map +1 -1
  170. package/dist/esm/functions/public/getWrapperName.js +2 -1
  171. package/dist/esm/functions/public/getWrapperName.js.map +1 -1
  172. package/dist/esm/functions/public/multicallWrapper.js.map +1 -1
  173. package/dist/esm/functions/public/universalWrapper.js.map +1 -1
  174. package/dist/esm/functions/subgraph/client.js.map +1 -1
  175. package/dist/esm/functions/subgraph/filters.js +2 -0
  176. package/dist/esm/functions/subgraph/filters.js.map +1 -0
  177. package/dist/esm/functions/subgraph/getDecodedName.js +2 -1
  178. package/dist/esm/functions/subgraph/getDecodedName.js.map +1 -1
  179. package/dist/esm/functions/subgraph/getNameHistory.js +8 -6
  180. package/dist/esm/functions/subgraph/getNameHistory.js.map +1 -1
  181. package/dist/esm/functions/subgraph/getNamesForAddress.js +163 -192
  182. package/dist/esm/functions/subgraph/getNamesForAddress.js.map +1 -1
  183. package/dist/esm/functions/subgraph/getSubgraphRecords.js +36 -27
  184. package/dist/esm/functions/subgraph/getSubgraphRecords.js.map +1 -1
  185. package/dist/esm/functions/subgraph/getSubgraphRegistrant.js +2 -1
  186. package/dist/esm/functions/subgraph/getSubgraphRegistrant.js.map +1 -1
  187. package/dist/esm/functions/subgraph/getSubnames.js +103 -112
  188. package/dist/esm/functions/subgraph/getSubnames.js.map +1 -1
  189. package/dist/esm/functions/subgraph/types.js +2 -0
  190. package/dist/esm/functions/subgraph/types.js.map +1 -0
  191. package/dist/esm/functions/subgraph/utils.js.map +1 -1
  192. package/dist/esm/functions/wallet/clearRecords.js +44 -0
  193. package/dist/esm/functions/wallet/clearRecords.js.map +1 -0
  194. package/dist/esm/functions/wallet/commitName.js +3 -1
  195. package/dist/esm/functions/wallet/commitName.js.map +1 -1
  196. package/dist/esm/functions/wallet/createSubname.js +3 -2
  197. package/dist/esm/functions/wallet/createSubname.js.map +1 -1
  198. package/dist/esm/functions/wallet/deleteSubname.js +2 -1
  199. package/dist/esm/functions/wallet/deleteSubname.js.map +1 -1
  200. package/dist/esm/functions/wallet/registerName.js +4 -1
  201. package/dist/esm/functions/wallet/registerName.js.map +1 -1
  202. package/dist/esm/functions/wallet/renewNames.js +3 -1
  203. package/dist/esm/functions/wallet/renewNames.js.map +1 -1
  204. package/dist/esm/functions/wallet/setAbiRecord.js +3 -1
  205. package/dist/esm/functions/wallet/setAbiRecord.js.map +1 -1
  206. package/dist/esm/functions/wallet/setAddressRecord.js +2 -1
  207. package/dist/esm/functions/wallet/setAddressRecord.js.map +1 -1
  208. package/dist/esm/functions/wallet/setChildFuses.js +3 -2
  209. package/dist/esm/functions/wallet/setChildFuses.js.map +1 -1
  210. package/dist/esm/functions/wallet/setContentHashRecord.js +2 -1
  211. package/dist/esm/functions/wallet/setContentHashRecord.js.map +1 -1
  212. package/dist/esm/functions/wallet/setFuses.js +4 -3
  213. package/dist/esm/functions/wallet/setFuses.js.map +1 -1
  214. package/dist/esm/functions/wallet/setPrimaryName.js +2 -1
  215. package/dist/esm/functions/wallet/setPrimaryName.js.map +1 -1
  216. package/dist/esm/functions/wallet/setRecords.js +2 -1
  217. package/dist/esm/functions/wallet/setRecords.js.map +1 -1
  218. package/dist/esm/functions/wallet/setResolver.js +2 -1
  219. package/dist/esm/functions/wallet/setResolver.js.map +1 -1
  220. package/dist/esm/functions/wallet/setTextRecord.js +2 -1
  221. package/dist/esm/functions/wallet/setTextRecord.js.map +1 -1
  222. package/dist/esm/functions/wallet/transferName.js +2 -1
  223. package/dist/esm/functions/wallet/transferName.js.map +1 -1
  224. package/dist/esm/functions/wallet/unwrapName.js +2 -1
  225. package/dist/esm/functions/wallet/unwrapName.js.map +1 -1
  226. package/dist/esm/functions/wallet/wrapName.js +6 -3
  227. package/dist/esm/functions/wallet/wrapName.js.map +1 -1
  228. package/dist/esm/index.js +1 -1
  229. package/dist/esm/index.js.map +1 -1
  230. package/dist/esm/subgraph.js +1 -0
  231. package/dist/esm/subgraph.js.map +1 -1
  232. package/dist/esm/utils/contentHash.js +56 -128
  233. package/dist/esm/utils/contentHash.js.map +1 -1
  234. package/dist/esm/utils/encoders/encodeAbi.js +30 -2
  235. package/dist/esm/utils/encoders/encodeAbi.js.map +1 -1
  236. package/dist/esm/utils/encoders/encodeClearRecords.js +8 -0
  237. package/dist/esm/utils/encoders/encodeClearRecords.js.map +1 -0
  238. package/dist/esm/utils/encoders/encodeSetAddr.js +5 -16
  239. package/dist/esm/utils/encoders/encodeSetAddr.js.map +1 -1
  240. package/dist/esm/utils/encoders/encodeSetContentHash.js +2 -5
  241. package/dist/esm/utils/encoders/encodeSetContentHash.js.map +1 -1
  242. package/dist/esm/utils/format.js +0 -2
  243. package/dist/esm/utils/format.js.map +1 -1
  244. package/dist/esm/utils/fuses.js +183 -201
  245. package/dist/esm/utils/fuses.js.map +1 -1
  246. package/dist/esm/utils/generateRecordCallArray.js +7 -10
  247. package/dist/esm/utils/generateRecordCallArray.js.map +1 -1
  248. package/dist/esm/utils/getRevertErrorData.js +4 -1
  249. package/dist/esm/utils/getRevertErrorData.js.map +1 -1
  250. package/dist/esm/utils/index.js +5 -3
  251. package/dist/esm/utils/index.js.map +1 -1
  252. package/dist/esm/utils/normaliseCoinId.js +30 -0
  253. package/dist/esm/utils/normaliseCoinId.js.map +1 -0
  254. package/dist/esm/utils/registerHelpers.js +4 -2
  255. package/dist/esm/utils/registerHelpers.js.map +1 -1
  256. package/dist/esm/wallet.js +1 -0
  257. package/dist/esm/wallet.js.map +1 -1
  258. package/dist/types/clients/decorators/public.d.ts +1 -519
  259. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  260. package/dist/types/clients/decorators/subgraph.d.ts +2 -520
  261. package/dist/types/clients/decorators/subgraph.d.ts.map +1 -1
  262. package/dist/types/clients/decorators/wallet.d.ts +66 -47
  263. package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
  264. package/dist/types/clients/public.d.ts +24 -265
  265. package/dist/types/clients/public.d.ts.map +1 -1
  266. package/dist/types/clients/subgraph.d.ts +19 -260
  267. package/dist/types/clients/subgraph.d.ts.map +1 -1
  268. package/dist/types/clients/wallet.d.ts +60 -92
  269. package/dist/types/clients/wallet.d.ts.map +1 -1
  270. package/dist/types/contracts/consts.d.ts +52 -3
  271. package/dist/types/contracts/consts.d.ts.map +1 -1
  272. package/dist/types/contracts/universalResolver.d.ts +133 -1
  273. package/dist/types/contracts/universalResolver.d.ts.map +1 -1
  274. package/dist/types/dns.d.ts +2 -2
  275. package/dist/types/dns.d.ts.map +1 -1
  276. package/dist/types/errors/subgraph.d.ts +4 -4
  277. package/dist/types/errors/subgraph.d.ts.map +1 -1
  278. package/dist/types/errors/utils.d.ts +16 -13
  279. package/dist/types/errors/utils.d.ts.map +1 -1
  280. package/dist/types/errors/version.d.ts +1 -1
  281. package/dist/types/errors/version.d.ts.map +1 -1
  282. package/dist/types/functions/dns/getDnsImportData.d.ts +39 -0
  283. package/dist/types/functions/dns/{prepareDnsImport.d.ts.map → getDnsImportData.d.ts.map} +1 -1
  284. package/dist/types/functions/dns/getDnsOwner.d.ts +1 -1
  285. package/dist/types/functions/dns/importDnsName.d.ts +88 -102
  286. package/dist/types/functions/dns/importDnsName.d.ts.map +1 -1
  287. package/dist/types/functions/public/_getAddr.d.ts.map +1 -1
  288. package/dist/types/functions/public/batch.d.ts +2 -1
  289. package/dist/types/functions/public/batch.d.ts.map +1 -1
  290. package/dist/types/functions/public/getAbiRecord.d.ts +2 -1
  291. package/dist/types/functions/public/getAbiRecord.d.ts.map +1 -1
  292. package/dist/types/functions/public/getAddressRecord.d.ts +2 -1
  293. package/dist/types/functions/public/getAddressRecord.d.ts.map +1 -1
  294. package/dist/types/functions/public/getAvailable.d.ts +2 -1
  295. package/dist/types/functions/public/getAvailable.d.ts.map +1 -1
  296. package/dist/types/functions/public/getContentHashRecord.d.ts +2 -1
  297. package/dist/types/functions/public/getContentHashRecord.d.ts.map +1 -1
  298. package/dist/types/functions/public/getExpiry.d.ts +2 -1
  299. package/dist/types/functions/public/getExpiry.d.ts.map +1 -1
  300. package/dist/types/functions/public/getName.d.ts +2 -1
  301. package/dist/types/functions/public/getName.d.ts.map +1 -1
  302. package/dist/types/functions/public/getOwner.d.ts +19 -9
  303. package/dist/types/functions/public/getOwner.d.ts.map +1 -1
  304. package/dist/types/functions/public/getPrice.d.ts +3 -2
  305. package/dist/types/functions/public/getPrice.d.ts.map +1 -1
  306. package/dist/types/functions/public/getRecords.d.ts +3 -2
  307. package/dist/types/functions/public/getRecords.d.ts.map +1 -1
  308. package/dist/types/functions/public/getResolver.d.ts +2 -1
  309. package/dist/types/functions/public/getResolver.d.ts.map +1 -1
  310. package/dist/types/functions/public/getSupportedInterfaces.d.ts +41 -4
  311. package/dist/types/functions/public/getSupportedInterfaces.d.ts.map +1 -1
  312. package/dist/types/functions/public/getTextRecord.d.ts +2 -1
  313. package/dist/types/functions/public/getTextRecord.d.ts.map +1 -1
  314. package/dist/types/functions/public/getWrapperData.d.ts +4 -3
  315. package/dist/types/functions/public/getWrapperData.d.ts.map +1 -1
  316. package/dist/types/functions/public/getWrapperName.d.ts +2 -1
  317. package/dist/types/functions/public/getWrapperName.d.ts.map +1 -1
  318. package/dist/types/functions/subgraph/client.d.ts +2 -2
  319. package/dist/types/functions/subgraph/client.d.ts.map +1 -1
  320. package/dist/types/functions/subgraph/filters.d.ts +693 -0
  321. package/dist/types/functions/subgraph/filters.d.ts.map +1 -0
  322. package/dist/types/functions/subgraph/getDecodedName.d.ts +2 -1
  323. package/dist/types/functions/subgraph/getDecodedName.d.ts.map +1 -1
  324. package/dist/types/functions/subgraph/getNameHistory.d.ts +2 -1
  325. package/dist/types/functions/subgraph/getNameHistory.d.ts.map +1 -1
  326. package/dist/types/functions/subgraph/getNamesForAddress.d.ts +7 -2
  327. package/dist/types/functions/subgraph/getNamesForAddress.d.ts.map +1 -1
  328. package/dist/types/functions/subgraph/getSubgraphRecords.d.ts +2 -1
  329. package/dist/types/functions/subgraph/getSubgraphRecords.d.ts.map +1 -1
  330. package/dist/types/functions/subgraph/getSubgraphRegistrant.d.ts +2 -1
  331. package/dist/types/functions/subgraph/getSubgraphRegistrant.d.ts.map +1 -1
  332. package/dist/types/functions/subgraph/getSubnames.d.ts +5 -2
  333. package/dist/types/functions/subgraph/getSubnames.d.ts.map +1 -1
  334. package/dist/types/functions/subgraph/types.d.ts +13 -0
  335. package/dist/types/functions/subgraph/types.d.ts.map +1 -0
  336. package/dist/types/functions/subgraph/utils.d.ts +2 -2
  337. package/dist/types/functions/subgraph/utils.d.ts.map +1 -1
  338. package/dist/types/functions/wallet/clearRecords.d.ts +555 -0
  339. package/dist/types/functions/wallet/clearRecords.d.ts.map +1 -0
  340. package/dist/types/functions/wallet/commitName.d.ts +80 -93
  341. package/dist/types/functions/wallet/commitName.d.ts.map +1 -1
  342. package/dist/types/functions/wallet/createSubname.d.ts +82 -96
  343. package/dist/types/functions/wallet/createSubname.d.ts.map +1 -1
  344. package/dist/types/functions/wallet/deleteSubname.d.ts +79 -93
  345. package/dist/types/functions/wallet/deleteSubname.d.ts.map +1 -1
  346. package/dist/types/functions/wallet/registerName.d.ts +80 -89
  347. package/dist/types/functions/wallet/registerName.d.ts.map +1 -1
  348. package/dist/types/functions/wallet/renewNames.d.ts +79 -89
  349. package/dist/types/functions/wallet/renewNames.d.ts.map +1 -1
  350. package/dist/types/functions/wallet/setAbiRecord.d.ts +80 -93
  351. package/dist/types/functions/wallet/setAbiRecord.d.ts.map +1 -1
  352. package/dist/types/functions/wallet/setAddressRecord.d.ts +79 -93
  353. package/dist/types/functions/wallet/setAddressRecord.d.ts.map +1 -1
  354. package/dist/types/functions/wallet/setChildFuses.d.ts +81 -95
  355. package/dist/types/functions/wallet/setChildFuses.d.ts.map +1 -1
  356. package/dist/types/functions/wallet/setContentHashRecord.d.ts +79 -93
  357. package/dist/types/functions/wallet/setContentHashRecord.d.ts.map +1 -1
  358. package/dist/types/functions/wallet/setFuses.d.ts +81 -95
  359. package/dist/types/functions/wallet/setFuses.d.ts.map +1 -1
  360. package/dist/types/functions/wallet/setPrimaryName.d.ts +79 -93
  361. package/dist/types/functions/wallet/setPrimaryName.d.ts.map +1 -1
  362. package/dist/types/functions/wallet/setRecords.d.ts +79 -93
  363. package/dist/types/functions/wallet/setRecords.d.ts.map +1 -1
  364. package/dist/types/functions/wallet/setResolver.d.ts +79 -93
  365. package/dist/types/functions/wallet/setResolver.d.ts.map +1 -1
  366. package/dist/types/functions/wallet/setTextRecord.d.ts +79 -93
  367. package/dist/types/functions/wallet/setTextRecord.d.ts.map +1 -1
  368. package/dist/types/functions/wallet/transferName.d.ts +80 -94
  369. package/dist/types/functions/wallet/transferName.d.ts.map +1 -1
  370. package/dist/types/functions/wallet/unwrapName.d.ts +79 -93
  371. package/dist/types/functions/wallet/unwrapName.d.ts.map +1 -1
  372. package/dist/types/functions/wallet/wrapName.d.ts +81 -95
  373. package/dist/types/functions/wallet/wrapName.d.ts.map +1 -1
  374. package/dist/types/index.d.ts +1 -1
  375. package/dist/types/index.d.ts.map +1 -1
  376. package/dist/types/subgraph.d.ts +1 -0
  377. package/dist/types/subgraph.d.ts.map +1 -1
  378. package/dist/types/types.d.ts +3 -1
  379. package/dist/types/types.d.ts.map +1 -1
  380. package/dist/types/utils/contentHash.d.ts +10 -11
  381. package/dist/types/utils/contentHash.d.ts.map +1 -1
  382. package/dist/types/utils/encoders/encodeAbi.d.ts +8 -5
  383. package/dist/types/utils/encoders/encodeAbi.d.ts.map +1 -1
  384. package/dist/types/utils/encoders/encodeClearRecords.d.ts +3 -0
  385. package/dist/types/utils/encoders/encodeClearRecords.d.ts.map +1 -0
  386. package/dist/types/utils/encoders/encodeSetAddr.d.ts.map +1 -1
  387. package/dist/types/utils/encoders/encodeSetContentHash.d.ts.map +1 -1
  388. package/dist/types/utils/format.d.ts +0 -2
  389. package/dist/types/utils/format.d.ts.map +1 -1
  390. package/dist/types/utils/fuses.d.ts +164 -125
  391. package/dist/types/utils/fuses.d.ts.map +1 -1
  392. package/dist/types/utils/generateRecordCallArray.d.ts +5 -5
  393. package/dist/types/utils/generateRecordCallArray.d.ts.map +1 -1
  394. package/dist/types/utils/getRevertErrorData.d.ts.map +1 -1
  395. package/dist/types/utils/index.d.ts +5 -3
  396. package/dist/types/utils/index.d.ts.map +1 -1
  397. package/dist/types/utils/normaliseCoinId.d.ts +10 -0
  398. package/dist/types/utils/normaliseCoinId.d.ts.map +1 -0
  399. package/dist/types/utils/registerHelpers.d.ts +2 -2
  400. package/dist/types/utils/registerHelpers.d.ts.map +1 -1
  401. package/dist/types/wallet.d.ts +18 -17
  402. package/dist/types/wallet.d.ts.map +1 -1
  403. package/package.json +9 -9
  404. package/src/clients/decorators/subgraph.ts +1 -0
  405. package/src/clients/decorators/wallet.ts +41 -3
  406. package/src/clients/public.ts +3 -2
  407. package/src/clients/subgraph.ts +3 -2
  408. package/src/clients/wallet.ts +1 -1
  409. package/src/contracts/consts.ts +58 -13
  410. package/src/contracts/universalResolver.ts +46 -1
  411. package/src/dns.ts +7 -5
  412. package/src/errors/subgraph.ts +4 -4
  413. package/src/errors/utils.ts +29 -18
  414. package/src/errors/version.ts +1 -1
  415. package/src/functions/dns/{prepareDnsImport.ts → getDnsImportData.ts} +13 -13
  416. package/src/functions/dns/getDnsOwner.ts +1 -1
  417. package/src/functions/dns/importDnsName.ts +21 -15
  418. package/src/functions/public/_getAbi.ts +2 -2
  419. package/src/functions/public/_getAddr.ts +16 -23
  420. package/src/functions/public/_getContentHash.ts +2 -2
  421. package/src/functions/public/batch.ts +2 -1
  422. package/src/functions/public/getAbiRecord.ts +2 -1
  423. package/src/functions/public/getAddressRecord.ts +2 -1
  424. package/src/functions/public/getAvailable.ts +2 -1
  425. package/src/functions/public/getContentHashRecord.ts +2 -1
  426. package/src/functions/public/getExpiry.ts +2 -1
  427. package/src/functions/public/getName.ts +3 -2
  428. package/src/functions/public/getOwner.ts +54 -33
  429. package/src/functions/public/getPrice.ts +3 -2
  430. package/src/functions/public/getRecords.ts +130 -114
  431. package/src/functions/public/getResolver.ts +3 -2
  432. package/src/functions/public/getSupportedInterfaces.ts +70 -10
  433. package/src/functions/public/getTextRecord.ts +2 -1
  434. package/src/functions/public/getWrapperData.ts +5 -4
  435. package/src/functions/public/getWrapperName.ts +3 -2
  436. package/src/functions/public/multicallWrapper.ts +1 -1
  437. package/src/functions/public/universalWrapper.ts +1 -1
  438. package/src/functions/subgraph/client.ts +2 -2
  439. package/src/functions/subgraph/filters.ts +702 -0
  440. package/src/functions/subgraph/getDecodedName.ts +2 -1
  441. package/src/functions/subgraph/getNameHistory.ts +8 -6
  442. package/src/functions/subgraph/getNamesForAddress.ts +199 -195
  443. package/src/functions/subgraph/getSubgraphRecords.ts +65 -33
  444. package/src/functions/subgraph/getSubgraphRegistrant.ts +2 -1
  445. package/src/functions/subgraph/getSubnames.ts +123 -114
  446. package/src/functions/subgraph/types.ts +13 -0
  447. package/src/functions/subgraph/utils.ts +2 -2
  448. package/src/functions/wallet/clearRecords.ts +97 -0
  449. package/src/functions/wallet/commitName.ts +3 -1
  450. package/src/functions/wallet/createSubname.ts +6 -5
  451. package/src/functions/wallet/deleteSubname.ts +2 -1
  452. package/src/functions/wallet/registerName.ts +4 -1
  453. package/src/functions/wallet/renewNames.ts +3 -1
  454. package/src/functions/wallet/setAbiRecord.ts +3 -1
  455. package/src/functions/wallet/setAddressRecord.ts +2 -1
  456. package/src/functions/wallet/setChildFuses.ts +5 -4
  457. package/src/functions/wallet/setContentHashRecord.ts +2 -1
  458. package/src/functions/wallet/setFuses.ts +8 -4
  459. package/src/functions/wallet/setPrimaryName.ts +2 -1
  460. package/src/functions/wallet/setRecords.ts +2 -1
  461. package/src/functions/wallet/setResolver.ts +2 -1
  462. package/src/functions/wallet/setTextRecord.ts +2 -1
  463. package/src/functions/wallet/transferName.ts +3 -2
  464. package/src/functions/wallet/unwrapName.ts +2 -1
  465. package/src/functions/wallet/wrapName.ts +10 -4
  466. package/src/index.ts +0 -1
  467. package/src/subgraph.ts +5 -0
  468. package/src/types.ts +6 -3
  469. package/src/utils/contentHash.ts +65 -113
  470. package/src/utils/encoders/encodeAbi.ts +37 -8
  471. package/src/utils/encoders/encodeClearRecords.ts +9 -0
  472. package/src/utils/encoders/encodeSetAddr.ts +5 -16
  473. package/src/utils/encoders/encodeSetContentHash.ts +2 -4
  474. package/src/utils/format.ts +0 -6
  475. package/src/utils/fuses.ts +312 -308
  476. package/src/utils/generateRecordCallArray.ts +10 -14
  477. package/src/utils/getRevertErrorData.ts +3 -1
  478. package/src/utils/index.ts +37 -5
  479. package/src/utils/normaliseCoinId.ts +36 -0
  480. package/src/utils/registerHelpers.ts +5 -3
  481. package/src/wallet.ts +41 -0
  482. package/dist/types/functions/dns/prepareDnsImport.d.ts +0 -39
  483. package/src/@types/@ensdomains/content-hash.d.ts +0 -1
  484. package/src/functions/dns/getDnsOwner.test.ts +0 -195
  485. package/src/functions/dns/importDnsName.test.ts +0 -117
  486. package/src/functions/dns/prepareDnsImport.test.ts +0 -115
  487. package/src/functions/public/batch.test.ts +0 -67
  488. package/src/functions/public/ccip.test.ts +0 -78
  489. package/src/functions/public/getAbiRecord.test.ts +0 -174
  490. package/src/functions/public/getAddressRecord.test.ts +0 -83
  491. package/src/functions/public/getAvailable.test.ts +0 -17
  492. package/src/functions/public/getContentHashRecord.test.ts +0 -28
  493. package/src/functions/public/getExpiry.test.ts +0 -48
  494. package/src/functions/public/getName.test.ts +0 -66
  495. package/src/functions/public/getOwner.test.ts +0 -87
  496. package/src/functions/public/getPrice.test.ts +0 -45
  497. package/src/functions/public/getRecords.test.ts +0 -49
  498. package/src/functions/public/getResolver.test.ts +0 -12
  499. package/src/functions/public/getTextRecord.test.ts +0 -20
  500. package/src/functions/public/getWrapperData.test.ts +0 -79
  501. package/src/functions/public/getWrapperName.test.ts +0 -19
  502. package/src/functions/subgraph/client.test.ts +0 -170
  503. package/src/functions/subgraph/getDecodedName.test.ts +0 -31
  504. package/src/functions/subgraph/getNameHistory.test.ts +0 -39
  505. package/src/functions/subgraph/getNamesForAddress.test.ts +0 -244
  506. package/src/functions/subgraph/getSubgraphRecords.test.ts +0 -74
  507. package/src/functions/subgraph/getSubgraphRegistrant.test.ts +0 -34
  508. package/src/functions/subgraph/getSubnames.test.ts +0 -202
  509. package/src/functions/wallet/commitName.test.ts +0 -58
  510. package/src/functions/wallet/createSubname.test.ts +0 -73
  511. package/src/functions/wallet/deleteSubname.test.ts +0 -150
  512. package/src/functions/wallet/registerName.test.ts +0 -81
  513. package/src/functions/wallet/renewNames.test.ts +0 -92
  514. package/src/functions/wallet/setAbiRecord.test.ts +0 -156
  515. package/src/functions/wallet/setAddressRecord.test.ts +0 -121
  516. package/src/functions/wallet/setChildFuses.test.ts +0 -97
  517. package/src/functions/wallet/setContentHashRecord.test.ts +0 -69
  518. package/src/functions/wallet/setFuses.test.ts +0 -287
  519. package/src/functions/wallet/setPrimaryName.test.ts +0 -71
  520. package/src/functions/wallet/setRecords.test.ts +0 -127
  521. package/src/functions/wallet/setResolver.test.ts +0 -114
  522. package/src/functions/wallet/setTextRecord.test.ts +0 -67
  523. package/src/functions/wallet/transferName.test.ts +0 -201
  524. package/src/functions/wallet/unwrapName.test.ts +0 -93
  525. package/src/functions/wallet/wrapName.test.ts +0 -195
  526. package/src/utils/generateRecordCallArray.test.ts +0 -84
  527. package/src/utils/labels.test.ts +0 -163
  528. package/src/utils/makeLabelNodeAndParent.test.ts +0 -11
  529. package/src/utils/makeSafeSecondsDate.test.ts +0 -14
  530. package/src/utils/normalise.test.ts +0 -35
  531. package/src/utils/ownerFromContract.test.ts +0 -52
  532. package/src/utils/registerHelpers.test.ts +0 -159
  533. package/src/utils/validation.test.ts +0 -170
  534. package/src/utils/wrapper.test.ts +0 -46
@@ -1,381 +1,385 @@
1
+ /* eslint-disable @typescript-eslint/no-redeclare, @typescript-eslint/naming-convention */
1
2
  import {
2
- FusesFuseNotAllowedError,
3
3
  FusesInvalidFuseObjectError,
4
4
  FusesInvalidNamedFuseError,
5
5
  FusesInvalidUnnamedFuseError,
6
- FusesNonIntegerError,
7
6
  FusesOutOfRangeError,
8
7
  FusesRestrictionNotAllowedError,
9
- FusesValueRequiredError,
10
8
  } from '../errors/utils.js'
11
9
 
12
- // child named fuses
13
- const CANNOT_UNWRAP = 1
14
- const CANNOT_BURN_FUSES = 2
15
- const CANNOT_TRANSFER = 4
16
- const CANNOT_SET_RESOLVER = 8
17
- const CANNOT_SET_TTL = 16
18
- const CANNOT_CREATE_SUBDOMAIN = 32
19
- const CANNOT_APPROVE = 64
20
-
21
- // parent named fuses
22
- const PARENT_CANNOT_CONTROL = 0x10000
23
- const IS_DOT_ETH = 0x20000
24
- const CAN_EXTEND_EXPIRY = 0x40000
25
-
26
- // fuse ranges
27
- export const CHILD_CONTROLLED_FUSES = 0x0000ffff
28
- export const PARENT_CONTROLLED_FUSES = 0xffff0000
29
- export const USER_SETTABLE_FUSES = 0xfffdffff
30
-
31
- // empty fuse
32
- const CAN_DO_EVERYTHING = 0
33
-
34
- export const childFuseEnum = {
35
- CANNOT_UNWRAP,
36
- CANNOT_BURN_FUSES,
37
- CANNOT_TRANSFER,
38
- CANNOT_SET_RESOLVER,
39
- CANNOT_SET_TTL,
40
- CANNOT_CREATE_SUBDOMAIN,
41
- CANNOT_APPROVE,
10
+ export const ChildFuses = {
11
+ CANNOT_UNWRAP: 1n,
12
+ CANNOT_BURN_FUSES: 2n,
13
+ CANNOT_TRANSFER: 4n,
14
+ CANNOT_SET_RESOLVER: 8n,
15
+ CANNOT_SET_TTL: 16n,
16
+ CANNOT_CREATE_SUBDOMAIN: 32n,
17
+ CANNOT_APPROVE: 64n,
42
18
  } as const
19
+ export type ChildFuses = typeof ChildFuses
20
+ export const ChildFuseKeys = Object.keys(ChildFuses) as (keyof ChildFuses)[]
43
21
 
44
- export const parentFuseEnum = {
45
- PARENT_CANNOT_CONTROL,
46
- CAN_EXTEND_EXPIRY,
47
- }
48
-
49
- export const fullParentFuseEnum = {
50
- ...parentFuseEnum,
51
- IS_DOT_ETH,
22
+ export const ParentFuses = {
23
+ PARENT_CANNOT_CONTROL: 0x10000n,
24
+ CAN_EXTEND_EXPIRY: 0x40000n,
52
25
  } as const
26
+ export type ParentFuses = typeof ParentFuses
27
+ export const ParentFuseKeys = Object.keys(ParentFuses) as (keyof ParentFuses)[]
53
28
 
54
- export const userSettableFuseEnum = {
55
- ...childFuseEnum,
56
- ...parentFuseEnum,
29
+ export const UserSettableFuses = {
30
+ ...ChildFuses,
31
+ ...ParentFuses,
32
+ } as const
33
+ export type UserSettableFuses = typeof UserSettableFuses
34
+ export const UserSettableFuseKeys = Object.keys(
35
+ UserSettableFuses,
36
+ ) as (keyof UserSettableFuses)[]
37
+
38
+ export const FullParentFuses = {
39
+ ...ParentFuses,
40
+ IS_DOT_ETH: 0x20000n,
57
41
  } as const
42
+ export type FullParentFuses = typeof FullParentFuses
43
+ export const FullParentFuseKeys = Object.keys(
44
+ FullParentFuses,
45
+ ) as (keyof FullParentFuses)[]
46
+
47
+ export const UnnamedChildFuses = [
48
+ 0x80n,
49
+ 0x100n,
50
+ 0x200n,
51
+ 0x400n,
52
+ 0x800n,
53
+ 0x1000n,
54
+ 0x2000n,
55
+ 0x4000n,
56
+ 0x8000n,
57
+ ] as const
58
+ export type UnnamedChildFuses = typeof UnnamedChildFuses
59
+ export const UnnamedChildFuseKeys = [
60
+ '0x80',
61
+ '0x100',
62
+ '0x200',
63
+ '0x400',
64
+ '0x800',
65
+ '0x1000',
66
+ '0x2000',
67
+ '0x4000',
68
+ '0x8000',
69
+ ] as const
70
+ export type UnnamedChildFuseKeys = typeof UnnamedChildFuseKeys
71
+
72
+ export const UnnamedParentFuses = [
73
+ 0x80000n,
74
+ 0x100000n,
75
+ 0x200000n,
76
+ 0x400000n,
77
+ 0x800000n,
78
+ 0x1000000n,
79
+ 0x2000000n,
80
+ 0x4000000n,
81
+ 0x8000000n,
82
+ 0x10000000n,
83
+ 0x20000000n,
84
+ 0x40000000n,
85
+ 0x80000000n,
86
+ ] as const
87
+ export type UnnamedParentFuses = typeof UnnamedParentFuses
88
+ export const UnnamedParentFuseKeys = [
89
+ '0x80000',
90
+ '0x100000',
91
+ '0x200000',
92
+ '0x400000',
93
+ '0x800000',
94
+ '0x1000000',
95
+ ] as const
96
+ export type UnnamedParentFuseKeys = typeof UnnamedParentFuseKeys
58
97
 
59
- export const fullFuseEnum = {
60
- ...userSettableFuseEnum,
61
- ...fullParentFuseEnum,
62
- CAN_DO_EVERYTHING,
63
- }
98
+ export const FuseRanges = {
99
+ CHILD_CONTROLLED_FUSES: 0x0000ffffn,
100
+ PARENT_CONTROLLED_FUSES: 0xffff0000n,
101
+ USER_SETTABLE_FUSES: 0xfffdffffn,
102
+ } as const
64
103
 
65
- export const unnamedChildFuses = [
66
- 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768,
67
- ] as const
104
+ type FuseRestriction = 'parent' | 'child'
68
105
 
69
- export const unnamedParentFuses = [
70
- 0x80000, 0x100000, 0x200000, 0x400000, 0x800000, 0x1000000, 0x2000000,
71
- 0x4000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, 0x80000000,
72
- ] as const
106
+ type GenericFuseEnum<TGroupName extends FuseRestriction = FuseRestriction> = {
107
+ Name: TGroupName
108
+ Object: Record<string, bigint>
109
+ Keys: string[]
110
+ Range: bigint
111
+ Unnamed: readonly bigint[]
112
+ UnnamedKeys: readonly string[]
113
+ Minimum: bigint
114
+ Maximum: bigint
115
+ }
73
116
 
74
- export const unnamedUserSettableFuses = [
75
- ...unnamedChildFuses,
76
- ...unnamedParentFuses,
77
- ] as const
117
+ export const ChildFuseReference = {
118
+ Name: 'child',
119
+ Object: ChildFuses,
120
+ Keys: ChildFuseKeys,
121
+ Range: FuseRanges.CHILD_CONTROLLED_FUSES,
122
+ Unnamed: UnnamedChildFuses,
123
+ UnnamedKeys: UnnamedChildFuseKeys,
124
+ Minimum: 0n,
125
+ Maximum: 2n ** 16n - 1n,
126
+ } as const
127
+ export type ChildFuseReferenceType = typeof ChildFuseReference & {
128
+ Key: keyof ChildFuseReferenceType['Object']
129
+ UnnamedKey: ChildFuseReferenceType['Unnamed'][number]
130
+ }
78
131
 
79
- export const childFuseKeys = Object.keys(
80
- childFuseEnum,
81
- ) as (keyof typeof childFuseEnum)[]
82
- export const parentFuseKeys = Object.keys(
83
- parentFuseEnum,
84
- ) as (keyof typeof parentFuseEnum)[]
85
- export const fullParentFuseKeys = Object.keys(
86
- fullParentFuseEnum,
87
- ) as (keyof typeof fullParentFuseEnum)[]
88
- export const userSettableFuseKeys = Object.keys(
89
- userSettableFuseEnum,
90
- ) as (keyof typeof userSettableFuseEnum)[]
91
-
92
- type FuseType<
93
- Enum extends Record<string, number>,
94
- UnnamedTuple extends readonly number[],
95
- CustomFuses extends string = never,
96
- > = {
97
- fuse: keyof Enum
98
- options: { -readonly [K in keyof Enum]?: boolean }
99
- current: { [K in keyof Enum]: boolean } & {
100
- readonly [K in CustomFuses]: boolean
101
- }
102
- unnamed: UnnamedTuple
103
- unnamedValues: UnnamedTuple[number]
104
- unnamedObject: { [K in UnnamedTuple[number]]: boolean }
132
+ export const ParentFuseReference = {
133
+ Name: 'parent',
134
+ Object: ParentFuses,
135
+ Keys: ParentFuseKeys,
136
+ Range: FuseRanges.PARENT_CONTROLLED_FUSES,
137
+ Unnamed: UnnamedParentFuses,
138
+ UnnamedKeys: UnnamedParentFuseKeys,
139
+ Minimum: 2n ** 16n,
140
+ Maximum: 2n ** 32n,
141
+ } as const
142
+ export type ParentFuseReferenceType = typeof ParentFuseReference & {
143
+ Key: keyof ParentFuseReferenceType['Object']
144
+ UnnamedKey: ParentFuseReferenceType['Unnamed'][number]
105
145
  }
106
146
 
107
- export type ChildFuses = FuseType<
108
- typeof childFuseEnum,
109
- typeof unnamedChildFuses,
110
- 'CAN_DO_EVERYTHING'
111
- >
112
- export type ParentFuses = FuseType<
113
- typeof parentFuseEnum,
114
- typeof unnamedParentFuses
115
- >
116
- export type FullParentFuses = FuseType<
117
- typeof fullParentFuseEnum,
118
- typeof unnamedParentFuses
119
- >
120
- export type UserSettableFuses = FuseType<
121
- typeof userSettableFuseEnum,
122
- typeof unnamedUserSettableFuses
123
- >
147
+ export const FullParentFuseReference = {
148
+ Name: 'parent',
149
+ Object: FullParentFuses,
150
+ Keys: FullParentFuseKeys,
151
+ Range: FuseRanges.PARENT_CONTROLLED_FUSES,
152
+ Unnamed: UnnamedParentFuses,
153
+ UnnamedKeys: UnnamedParentFuseKeys,
154
+ Minimum: 2n ** 16n,
155
+ Maximum: 2n ** 32n,
156
+ } as const
157
+ export type FullParentFuseReferenceType = typeof FullParentFuseReference & {
158
+ Key: keyof FullParentFuseReferenceType['Object']
159
+ UnnamedKey: ParentFuseReferenceType['Unnamed'][number]
160
+ }
124
161
 
125
- type InputFuses<NamedFuse extends string, UnnamedFuse extends number> =
162
+ type InputFuses<NamedFuse extends string, UnnamedFuse extends bigint> =
126
163
  | {
127
164
  named: readonly NamedFuse[]
165
+ unnamed?: readonly UnnamedFuse[]
166
+ number?: never
128
167
  }
129
168
  | {
169
+ named?: readonly NamedFuse[]
130
170
  unnamed: readonly UnnamedFuse[]
171
+ number?: never
131
172
  }
132
173
  | {
133
- named: readonly NamedFuse[]
134
- unnamed: readonly UnnamedFuse[]
135
- }
136
- | {
137
- number: number
174
+ named?: never
175
+ unnamed?: never
176
+ number: bigint
138
177
  }
139
178
 
140
- export type CombinedFuseInput = {
141
- child: InputFuses<ChildFuses['fuse'], ChildFuses['unnamedValues']>
142
- parent: InputFuses<ParentFuses['fuse'], ParentFuses['unnamedValues']>
143
- }
179
+ export type EncodeChildFusesInputObject = InputFuses<
180
+ ChildFuseReferenceType['Key'],
181
+ ChildFuseReferenceType['UnnamedKey']
182
+ >
183
+ export type EncodeParentFusesInputObject = InputFuses<
184
+ ParentFuseReferenceType['Key'],
185
+ ParentFuseReferenceType['UnnamedKey']
186
+ >
144
187
 
145
- type FuseRestriction = 'parent' | 'child'
188
+ export type EncodeFusesInputObject =
189
+ | {
190
+ child: EncodeChildFusesInputObject
191
+ parent?: EncodeParentFusesInputObject
192
+ number?: never
193
+ }
194
+ | {
195
+ child?: EncodeChildFusesInputObject
196
+ parent: EncodeParentFusesInputObject
197
+ number?: never
198
+ }
199
+ | {
200
+ child?: never
201
+ parent?: never
202
+ number: bigint
203
+ }
146
204
 
147
- const checkNumber = (fuses: number) => {
148
- if (fuses > 2 ** 32 || fuses < 1)
205
+ const validateFuseNumber = (fuses: bigint) => {
206
+ if (fuses > 2n ** 32n || fuses < 0n)
149
207
  throw new FusesOutOfRangeError({
150
208
  fuses,
151
209
  details: `Fuse number must be limited to uint32, the supplied value was too ${
152
- fuses < 1 ? 'low' : 'high'
210
+ fuses < 0 ? 'low' : 'high'
153
211
  }`,
154
212
  })
155
- else if (fuses % 1 !== 0) throw new FusesNonIntegerError({ fuses })
156
- else if ((fuses & USER_SETTABLE_FUSES) !== fuses)
213
+ else if ((fuses & FuseRanges.USER_SETTABLE_FUSES) !== fuses)
157
214
  throw new FusesOutOfRangeError({
158
215
  fuses,
159
- maximum: 2 ** 16,
160
216
  details: `Fuse number must be limited to user settable fuses, the supplied value was not`,
161
217
  })
162
218
  }
163
219
 
164
- const testFuses = (fuses: any) => {
165
- if ('named' in fuses && fuses.named.length > 0) {
166
- return true
167
- }
168
- if ('unnamed' in fuses && fuses.unnamed.length > 0) {
169
- return true
220
+ const checkFuseObject = <TFuseReference extends GenericFuseEnum>({
221
+ reference,
222
+ object,
223
+ }: {
224
+ reference: TFuseReference
225
+ object: EncodeFusesInputObject[TFuseReference['Name']]
226
+ }): number => {
227
+ if (!object) return 0
228
+
229
+ if ('number' in object) {
230
+ if ('named' in object || 'unnamed' in object)
231
+ throw new FusesInvalidFuseObjectError({
232
+ fuses: object,
233
+ details: 'Cannot specify both a fuse number and named/unnamed fuses.',
234
+ })
235
+ validateFuseNumber(object.number)
236
+
237
+ if ((object.number & reference.Range) !== object.number)
238
+ throw new FusesOutOfRangeError({
239
+ fuses: object.number,
240
+ minimum: reference.Minimum,
241
+ maximum: reference.Maximum,
242
+ details: `Cannot specify a fuse value to set that is outside of the ${reference.Name}'s control.`,
243
+ })
244
+
245
+ return Number(object.number)
170
246
  }
171
- if ('number' in fuses && fuses.number !== 0) {
172
- return true
247
+
248
+ let fuseNumber = 0n
249
+
250
+ if ('named' in object && object.named) {
251
+ for (const fuse of object.named) {
252
+ if (!reference.Keys.includes(fuse))
253
+ throw new FusesInvalidNamedFuseError({ fuse })
254
+ fuseNumber |= reference.Object[fuse]
255
+ }
173
256
  }
174
- return false
175
- }
176
257
 
177
- export const hasFuses = (fuses: any) => {
178
- if (typeof fuses === 'number') {
179
- return fuses !== 0
258
+ if ('unnamed' in object && object.unnamed) {
259
+ for (const fuse of object.unnamed) {
260
+ if (!reference.Unnamed.includes(fuse))
261
+ throw new FusesInvalidUnnamedFuseError({ fuse })
262
+ fuseNumber |= fuse
263
+ }
180
264
  }
181
265
 
182
- if (typeof fuses === 'object') {
183
- if ('child' in fuses && testFuses(fuses.child)) {
184
- return true
266
+ return Number(fuseNumber)
267
+ }
268
+
269
+ type EncodeFusesParameters =
270
+ | {
271
+ restriction: 'child'
272
+ input: EncodeChildFusesInputObject
185
273
  }
186
- if ('parent' in fuses && testFuses(fuses.parent)) {
187
- return true
274
+ | {
275
+ restriction: 'parent'
276
+ input: EncodeParentFusesInputObject
188
277
  }
189
- if (testFuses(fuses)) {
190
- return true
278
+ | {
279
+ restriction?: never
280
+ input: EncodeFusesInputObject
191
281
  }
192
- }
193
- return false
194
- }
195
282
 
196
- export function encodeFuses(fuses: Partial<CombinedFuseInput> | number): number
197
- export function encodeFuses(
198
- fuses: CombinedFuseInput['child'],
199
- restrictTo: 'child',
200
- ): number
201
- export function encodeFuses(
202
- fuses: CombinedFuseInput['parent'],
203
- restrictTo: 'parent',
204
- ): number
205
- export function encodeFuses<T extends FuseRestriction>(
206
- fuses: CombinedFuseInput[T],
207
- restrictTo?: T,
208
- ) {
209
- let encodedFuses: number = 0
210
-
211
- if (typeof fuses === 'number') {
212
- if (restrictTo)
283
+ export const encodeFuses = ({
284
+ restriction,
285
+ input,
286
+ }: EncodeFusesParameters): number => {
287
+ if (restriction) {
288
+ if ('parent' in input || 'child' in input)
213
289
  throw new FusesRestrictionNotAllowedError({
214
- fuses,
290
+ fuses: input,
215
291
  details:
216
- 'Fuse restriction cannot be used when an exact value is specified',
292
+ 'Fuse restriction cannot be used when fuse category is specified',
217
293
  })
218
- checkNumber(fuses)
219
-
220
- encodedFuses = fuses
221
- } else {
222
- let fusesRef = fuses as unknown as CombinedFuseInput
223
- let allowedNamed: readonly UserSettableFuses['fuse'][] = []
224
- let allowedUnnamed: readonly UserSettableFuses['unnamedValues'][] = []
225
-
226
- let namedArray: readonly UserSettableFuses['fuse'][] = []
227
- let unnamedArray: readonly UserSettableFuses['unnamedValues'][] = []
228
-
229
- if (restrictTo) {
230
- if ('parent' in fuses || 'child' in fuses)
231
- throw new FusesRestrictionNotAllowedError({
232
- fuses,
233
- details:
234
- 'Fuse restriction cannot be used when fuse category is specified',
235
- })
236
- allowedNamed = restrictTo === 'child' ? childFuseKeys : parentFuseKeys
237
- allowedUnnamed =
238
- restrictTo === 'child' ? unnamedChildFuses : unnamedParentFuses
239
-
240
- fusesRef = { [restrictTo]: fuses } as unknown as CombinedFuseInput
241
- } else {
242
- allowedNamed = userSettableFuseKeys
243
- allowedUnnamed = unnamedUserSettableFuses
244
- }
245
- if ('parent' in fusesRef) {
246
- if ('named' in fusesRef.parent) namedArray = fusesRef.parent.named
247
- if ('unnamed' in fusesRef.parent) unnamedArray = fusesRef.parent.unnamed
248
- if ('number' in fusesRef.parent) {
249
- if ('named' in fusesRef.parent || 'unnamed' in fusesRef.parent)
250
- throw new FusesInvalidFuseObjectError({
251
- fuses,
252
- details:
253
- 'Cannot specify both a fuse number and named/unnamed fuses.',
254
- })
255
- checkNumber(fusesRef.parent.number)
256
-
257
- if (
258
- (fusesRef.parent.number & PARENT_CONTROLLED_FUSES) !==
259
- fusesRef.parent.number
260
- )
261
- throw new FusesOutOfRangeError({
262
- fuses: fusesRef.parent.number,
263
- minimum: 2 ** 17,
264
- details:
265
- "Cannot specify a fuse value to set that is outside of the parent's control.",
266
- })
267
-
268
- encodedFuses |= fusesRef.parent.number
269
- }
270
- }
271
- if ('child' in fusesRef) {
272
- if ('named' in fusesRef.child)
273
- namedArray = [...namedArray, ...fusesRef.child.named]
274
- if ('unnamed' in fusesRef.child)
275
- unnamedArray = [...unnamedArray, ...fusesRef.child.unnamed]
276
- if ('number' in fusesRef.child) {
277
- if ('named' in fusesRef.child || 'unnamed' in fusesRef.child)
278
- throw new FusesInvalidFuseObjectError({
279
- fuses,
280
- details:
281
- 'Cannot specify both a fuse number and named/unnamed fuses.',
282
- })
283
- checkNumber(fusesRef.child.number)
284
-
285
- if (
286
- (fusesRef.child.number & CHILD_CONTROLLED_FUSES) !==
287
- fusesRef.child.number
288
- )
289
- throw new FusesOutOfRangeError({
290
- fuses: fusesRef.child.number,
291
- maximum: 2 ** 16,
292
- details:
293
- "Cannot specify a fuse value to set that is outside of the owner's control.",
294
- })
295
-
296
- encodedFuses |= fusesRef.child.number
297
- }
298
- }
294
+ return checkFuseObject({
295
+ object: input,
296
+ reference:
297
+ restriction === 'child' ? ChildFuseReference : ParentFuseReference,
298
+ })
299
+ }
299
300
 
300
- if (!namedArray.length && !unnamedArray.length && !encodedFuses)
301
- throw new FusesValueRequiredError()
301
+ if ('number' in input) {
302
+ if ('parent' in input || 'child' in input)
303
+ throw new FusesInvalidFuseObjectError({
304
+ fuses: input,
305
+ details: 'Cannot specify both a fuse number and named/unnamed fuses.',
306
+ })
302
307
 
303
- for (const fuse of namedArray) {
304
- if (!allowedNamed.includes(fuse)) {
305
- if (!userSettableFuseKeys.includes(fuse))
306
- throw new FusesInvalidNamedFuseError({ fuse })
307
- throw new FusesFuseNotAllowedError({ fuse })
308
- }
309
- encodedFuses |= userSettableFuseEnum[fuse]
310
- }
311
- for (const fuse of unnamedArray) {
312
- if (!allowedUnnamed.includes(fuse)) {
313
- if (!unnamedUserSettableFuses.includes(fuse))
314
- throw new FusesInvalidUnnamedFuseError({ fuse })
315
- throw new FusesFuseNotAllowedError({ fuse })
316
- }
317
- encodedFuses |= fuse
318
- }
308
+ validateFuseNumber(input.number)
309
+ return Number(input.number)
319
310
  }
320
311
 
321
- return encodedFuses
322
- }
312
+ const childFuses =
313
+ 'child' in input
314
+ ? checkFuseObject({ object: input.child, reference: ChildFuseReference })
315
+ : 0
316
+ const parentFuses =
317
+ 'parent' in input
318
+ ? checkFuseObject({
319
+ object: input.parent,
320
+ reference: ParentFuseReference,
321
+ })
322
+ : 0
323
323
 
324
- const decodeNamedFuses = (fuses: number, arr: readonly string[]) => {
325
- const fuseObj = Object.fromEntries(
326
- arr.map((fuse) => [
327
- fuse,
328
- (fuses & fullFuseEnum[fuse as keyof typeof fullFuseEnum]) ===
329
- fullFuseEnum[fuse as keyof typeof fullFuseEnum],
330
- ]),
331
- )
324
+ return Number(childFuses | parentFuses)
325
+ }
332
326
 
333
- return fuseObj
327
+ type DecodedFuseGroup<TFuseReference extends GenericFuseEnum> = {
328
+ [key in TFuseReference['Keys'][number]]: boolean
329
+ } & {
330
+ unnamed: {
331
+ [key in TFuseReference['UnnamedKeys'][number]]: boolean
332
+ }
334
333
  }
335
334
 
336
- const decodeUnnamedFuses = (fuses: number, arr: readonly number[]) => {
337
- const fuseObj = Object.fromEntries(
338
- arr.map((fuse) => [fuse, (fuses & fuse) === fuse]),
339
- )
335
+ type DecodedChildFuses = DecodedFuseGroup<ChildFuseReferenceType> & {
336
+ CAN_DO_EVERYTHING: boolean
337
+ }
338
+ type DecodedParentFuses = DecodedFuseGroup<FullParentFuseReferenceType>
340
339
 
341
- return fuseObj
340
+ export type DecodedFuses = {
341
+ child: DecodedChildFuses
342
+ parent: DecodedParentFuses
342
343
  }
343
344
 
344
- export const decodeFuses = (fuses: number) => {
345
- const parentNamedFuses = decodeNamedFuses(
346
- fuses,
347
- fullParentFuseKeys,
348
- ) as FullParentFuses['current']
349
- const parentUnnamedFuses = decodeUnnamedFuses(
350
- fuses,
351
- unnamedParentFuses,
352
- ) as ParentFuses['unnamedObject']
353
-
354
- const childNamedFuses = decodeNamedFuses(
355
- fuses,
356
- childFuseKeys,
357
- ) as ChildFuses['current']
358
- const childUnnamedFuses = decodeUnnamedFuses(
359
- fuses,
360
- unnamedChildFuses,
361
- ) as ChildFuses['unnamedObject']
345
+ const decodeFusesFromReference = <TFuseReference extends GenericFuseEnum>({
346
+ input,
347
+ reference,
348
+ }: {
349
+ input: bigint
350
+ reference: TFuseReference
351
+ }): DecodedFuseGroup<TFuseReference> => ({
352
+ ...(Object.fromEntries(
353
+ reference.Keys.map((key) => [
354
+ key,
355
+ (input & reference.Object[key]) === reference.Object[key],
356
+ ]),
357
+ ) as Record<TFuseReference['Keys'][number], boolean>),
358
+ unnamed: Object.fromEntries(
359
+ reference.UnnamedKeys.map((key) => [
360
+ key,
361
+ (input & BigInt(key)) === BigInt(key),
362
+ ]),
363
+ ) as Record<TFuseReference['UnnamedKeys'][number], boolean>,
364
+ })
362
365
 
366
+ export const decodeFuses = (fuses: number): DecodedFuses => {
367
+ const fusesBigInt = BigInt(fuses)
363
368
  return {
364
- parent: {
365
- ...parentNamedFuses,
366
- unnamed: parentUnnamedFuses,
367
- },
369
+ parent: decodeFusesFromReference({
370
+ input: fusesBigInt,
371
+ reference: FullParentFuseReference,
372
+ }),
368
373
  child: {
369
- ...childNamedFuses,
370
- CAN_DO_EVERYTHING: (fuses & CHILD_CONTROLLED_FUSES) === 0,
371
- unnamed: childUnnamedFuses,
374
+ ...decodeFusesFromReference({
375
+ input: fusesBigInt,
376
+ reference: ChildFuseReference,
377
+ }),
378
+ CAN_DO_EVERYTHING:
379
+ (fusesBigInt & FuseRanges.CHILD_CONTROLLED_FUSES) === 0n,
372
380
  },
373
381
  }
374
382
  }
375
383
 
376
- export const checkPCCBurned = (fuses: number) =>
377
- (fuses & PARENT_CANNOT_CONTROL) === PARENT_CANNOT_CONTROL
378
-
379
- export type AllCurrentFuses = ReturnType<typeof decodeFuses>
380
-
381
- export default fullFuseEnum
384
+ export const checkPccBurned = (fuses: bigint) =>
385
+ (fuses & ParentFuses.PARENT_CANNOT_CONTROL) === 0n