@ensdomains/ensjs 3.0.0-alpha.41 → 3.0.0-alpha.43

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 (190) hide show
  1. package/dist/cjs/contracts/getContractAddress.js +4 -4
  2. package/dist/cjs/functions/commitName.js +2 -3
  3. package/dist/cjs/functions/createSubname.js +2 -8
  4. package/dist/cjs/functions/getDecryptedName.js +111 -0
  5. package/dist/cjs/functions/getHistory.js +14 -7
  6. package/dist/cjs/functions/getNames.js +10 -6
  7. package/dist/cjs/functions/getOwner.js +28 -15
  8. package/dist/cjs/functions/getPrice.js +6 -6
  9. package/dist/cjs/functions/getProfile.js +11 -5
  10. package/dist/cjs/functions/getWrapperData.js +4 -5
  11. package/dist/cjs/functions/renewNames.js +13 -20
  12. package/dist/cjs/functions/{burnFuses.js → setFuses.js} +24 -6
  13. package/dist/cjs/functions/wrapName.js +9 -25
  14. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +2 -2
  15. package/dist/cjs/generated/factories/BulkRenewal__factory.js +2 -2
  16. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +2 -2
  17. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +2 -2
  18. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +2 -2
  19. package/dist/cjs/generated/factories/ENSRegistry__factory.js +2 -2
  20. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +8 -57
  21. package/dist/cjs/generated/factories/Multicall__factory.js +2 -2
  22. package/dist/cjs/generated/factories/NameWrapper__factory.js +92 -71
  23. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +2 -2
  24. package/dist/cjs/generated/factories/PublicResolver__factory.js +85 -2
  25. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +2 -2
  26. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +2 -2
  27. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +2 -2
  28. package/dist/cjs/generated/factories/Root__factory.js +2 -2
  29. package/dist/cjs/generated/factories/SHA1Digest__factory.js +2 -2
  30. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +2 -2
  31. package/dist/cjs/generated/factories/SHA256Digest__factory.js +2 -2
  32. package/dist/cjs/generated/factories/StaticMetadataService__factory.js +2 -2
  33. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +2 -2
  34. package/dist/cjs/generated/factories/UniversalResolver__factory.js +69 -4
  35. package/dist/cjs/index.js +6 -4
  36. package/dist/cjs/utils/ccip.js +3 -3
  37. package/dist/cjs/utils/consts.js +3 -1
  38. package/dist/cjs/utils/fuses.js +218 -53
  39. package/dist/cjs/utils/hexEncodedName.js +2 -0
  40. package/dist/cjs/utils/labels.js +14 -8
  41. package/dist/cjs/utils/normalise.js +2 -2
  42. package/dist/cjs/utils/recordHelpers.js +4 -3
  43. package/dist/cjs/utils/registerHelpers.js +11 -25
  44. package/dist/cjs/utils/subgraph-types.js +16 -0
  45. package/dist/cjs/utils/wrapper.js +3 -3
  46. package/dist/esm/contracts/getContractAddress.mjs +4 -4
  47. package/dist/esm/functions/commitName.mjs +2 -3
  48. package/dist/esm/functions/createSubname.mjs +2 -2
  49. package/dist/esm/functions/getDecryptedName.mjs +96 -0
  50. package/dist/esm/functions/getHistory.mjs +14 -7
  51. package/dist/esm/functions/getNames.mjs +10 -6
  52. package/dist/esm/functions/getOwner.mjs +26 -13
  53. package/dist/esm/functions/getPrice.mjs +2 -2
  54. package/dist/esm/functions/getProfile.mjs +10 -4
  55. package/dist/esm/functions/getWrapperData.mjs +4 -5
  56. package/dist/esm/functions/renewNames.mjs +13 -20
  57. package/dist/esm/functions/setFuses.mjs +30 -0
  58. package/dist/esm/functions/wrapName.mjs +9 -19
  59. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.mjs +1 -1
  60. package/dist/esm/generated/factories/BulkRenewal__factory.mjs +1 -1
  61. package/dist/esm/generated/factories/DNSRegistrar__factory.mjs +1 -1
  62. package/dist/esm/generated/factories/DNSSECImpl__factory.mjs +1 -1
  63. package/dist/esm/generated/factories/DefaultReverseResolver__factory.mjs +1 -1
  64. package/dist/esm/generated/factories/ENSRegistry__factory.mjs +1 -1
  65. package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +7 -56
  66. package/dist/esm/generated/factories/Multicall__factory.mjs +1 -1
  67. package/dist/esm/generated/factories/NameWrapper__factory.mjs +91 -70
  68. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.mjs +1 -1
  69. package/dist/esm/generated/factories/PublicResolver__factory.mjs +84 -1
  70. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.mjs +1 -1
  71. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.mjs +1 -1
  72. package/dist/esm/generated/factories/ReverseRegistrar__factory.mjs +1 -1
  73. package/dist/esm/generated/factories/Root__factory.mjs +1 -1
  74. package/dist/esm/generated/factories/SHA1Digest__factory.mjs +1 -1
  75. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.mjs +1 -1
  76. package/dist/esm/generated/factories/SHA256Digest__factory.mjs +1 -1
  77. package/dist/esm/generated/factories/StaticMetadataService__factory.mjs +1 -1
  78. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.mjs +1 -1
  79. package/dist/esm/generated/factories/UniversalResolver__factory.mjs +68 -3
  80. package/dist/esm/index.mjs +6 -4
  81. package/dist/esm/utils/ccip.mjs +2 -2
  82. package/dist/esm/utils/consts.mjs +3 -1
  83. package/dist/esm/utils/fuses.mjs +218 -53
  84. package/dist/esm/utils/hexEncodedName.mjs +2 -0
  85. package/dist/esm/utils/labels.mjs +11 -8
  86. package/dist/esm/utils/normalise.mjs +1 -1
  87. package/dist/esm/utils/recordHelpers.mjs +2 -1
  88. package/dist/esm/utils/registerHelpers.mjs +10 -18
  89. package/dist/esm/utils/subgraph-types.mjs +0 -0
  90. package/dist/esm/utils/wrapper.mjs +2 -2
  91. package/dist/types/functions/commitName.d.ts +0 -1
  92. package/dist/types/functions/createSubname.d.ts +2 -2
  93. package/dist/types/functions/getDecryptedName.d.ts +9 -0
  94. package/dist/types/functions/getHistory.d.ts +1 -1
  95. package/dist/types/functions/getNames.d.ts +3 -3
  96. package/dist/types/functions/getOwner.d.ts +1 -0
  97. package/dist/types/functions/getPrice.d.ts +1 -1
  98. package/dist/types/functions/getProfile.d.ts +1 -0
  99. package/dist/types/functions/getRecords.d.ts +1 -0
  100. package/dist/types/functions/getWrapperData.d.ts +44 -5
  101. package/dist/types/functions/registerName.d.ts +1 -1
  102. package/dist/types/functions/renewNames.d.ts +5 -6
  103. package/dist/types/functions/setFuses.d.ts +7 -0
  104. package/dist/types/functions/types.d.ts +8 -4
  105. package/dist/types/functions/wrapName.d.ts +3 -3
  106. package/dist/types/generated/ETHRegistrarController.d.ts +13 -36
  107. package/dist/types/generated/NameWrapper.d.ts +97 -52
  108. package/dist/types/generated/PublicResolver.d.ts +50 -1
  109. package/dist/types/generated/UniversalResolver.d.ts +79 -32
  110. package/dist/types/generated/factories/UniversalResolver__factory.d.ts +15 -0
  111. package/dist/types/index.d.ts +60 -9
  112. package/dist/types/static.d.ts +1 -1
  113. package/dist/types/utils/consts.d.ts +1 -0
  114. package/dist/types/utils/fuses.d.ts +115 -45
  115. package/dist/types/utils/hexEncodedName.d.ts +1 -0
  116. package/dist/types/utils/labels.d.ts +2 -1
  117. package/dist/types/utils/registerHelpers.d.ts +7 -25
  118. package/dist/types/utils/subgraph-types.d.ts +284 -0
  119. package/dist/types/utils/wrapper.d.ts +1 -1
  120. package/package.json +5 -5
  121. package/src/contracts/getContractAddress.ts +4 -4
  122. package/src/functions/commitName.test.ts +0 -3
  123. package/src/functions/commitName.ts +1 -2
  124. package/src/functions/createSubname.ts +5 -6
  125. package/src/functions/getDecryptedName.test.ts +49 -0
  126. package/src/functions/getDecryptedName.ts +119 -0
  127. package/src/functions/getExpiry.ts +1 -1
  128. package/src/functions/getHistory.ts +59 -25
  129. package/src/functions/getNames.test.ts +2 -2
  130. package/src/functions/getNames.ts +26 -13
  131. package/src/functions/getOwner.test.ts +62 -3
  132. package/src/functions/getOwner.ts +33 -13
  133. package/src/functions/getPrice.ts +2 -2
  134. package/src/functions/getProfile.test.ts +7 -0
  135. package/src/functions/getProfile.ts +13 -4
  136. package/src/functions/getWrapperData.test.ts +11 -45
  137. package/src/functions/getWrapperData.ts +8 -6
  138. package/src/functions/registerName.test.ts +3 -3
  139. package/src/functions/registerName.ts +1 -1
  140. package/src/functions/renewNames.ts +18 -24
  141. package/src/functions/setFuses.test.ts +240 -0
  142. package/src/functions/setFuses.ts +44 -0
  143. package/src/functions/types.ts +8 -4
  144. package/src/functions/wrapName.test.ts +8 -7
  145. package/src/functions/wrapName.ts +11 -25
  146. package/src/generated/ETHRegistrarController.ts +12 -79
  147. package/src/generated/NameWrapper.ts +155 -99
  148. package/src/generated/PublicResolver.ts +123 -0
  149. package/src/generated/UniversalResolver.ts +157 -16
  150. package/src/generated/factories/BaseRegistrarImplementation__factory.ts +1 -1
  151. package/src/generated/factories/BulkRenewal__factory.ts +1 -1
  152. package/src/generated/factories/DNSRegistrar__factory.ts +1 -1
  153. package/src/generated/factories/DNSSECImpl__factory.ts +1 -1
  154. package/src/generated/factories/DefaultReverseResolver__factory.ts +1 -1
  155. package/src/generated/factories/ENSRegistry__factory.ts +1 -1
  156. package/src/generated/factories/ETHRegistrarController__factory.ts +7 -56
  157. package/src/generated/factories/Multicall__factory.ts +1 -1
  158. package/src/generated/factories/NameWrapper__factory.ts +91 -70
  159. package/src/generated/factories/P256SHA256Algorithm__factory.ts +1 -1
  160. package/src/generated/factories/PublicResolver__factory.ts +84 -1
  161. package/src/generated/factories/RSASHA1Algorithm__factory.ts +1 -1
  162. package/src/generated/factories/RSASHA256Algorithm__factory.ts +1 -1
  163. package/src/generated/factories/ReverseRegistrar__factory.ts +1 -1
  164. package/src/generated/factories/Root__factory.ts +1 -1
  165. package/src/generated/factories/SHA1Digest__factory.ts +1 -1
  166. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +1 -1
  167. package/src/generated/factories/SHA256Digest__factory.ts +1 -1
  168. package/src/generated/factories/StaticMetadataService__factory.ts +1 -1
  169. package/src/generated/factories/TLDPublicSuffixList__factory.ts +1 -1
  170. package/src/generated/factories/UniversalResolver__factory.ts +68 -3
  171. package/src/index.ts +15 -14
  172. package/src/static.ts +1 -1
  173. package/src/utils/ccip.ts +2 -2
  174. package/src/utils/consts.ts +1 -0
  175. package/src/utils/fuses.ts +299 -102
  176. package/src/utils/hexEncodedName.ts +3 -0
  177. package/src/utils/labels.ts +13 -11
  178. package/src/utils/normalise.ts +1 -1
  179. package/src/utils/recordHelpers.ts +2 -1
  180. package/src/utils/registerHelpers.ts +14 -42
  181. package/src/utils/subgraph-types.ts +312 -0
  182. package/src/utils/wrapper.ts +2 -2
  183. package/dist/cjs/utils/generateFuseInput.js +0 -40
  184. package/dist/esm/functions/burnFuses.mjs +0 -12
  185. package/dist/esm/utils/generateFuseInput.mjs +0 -15
  186. package/dist/types/functions/burnFuses.d.ts +0 -3
  187. package/dist/types/utils/generateFuseInput.d.ts +0 -3
  188. package/src/functions/burnFuses.test.ts +0 -148
  189. package/src/functions/burnFuses.ts +0 -16
  190. package/src/utils/generateFuseInput.ts +0 -13
@@ -0,0 +1,96 @@
1
+ // src/functions/getDecryptedName.ts
2
+ import { hexStripZeros } from "@ethersproject/bytes";
3
+ import { hexDecodeName } from "../utils/hexEncodedName.mjs";
4
+ import {
5
+ checkIsDecrypted,
6
+ decodeLabelhash,
7
+ getEncryptedLabelAmount,
8
+ isEncodedLabelhash
9
+ } from "../utils/labels.mjs";
10
+ import { namehash } from "../utils/normalise.mjs";
11
+ var raw = async ({ contracts }, name, allowIncomplete) => {
12
+ const nameWrapper = await contracts?.getNameWrapper();
13
+ return {
14
+ to: nameWrapper.address,
15
+ data: nameWrapper.interface.encodeFunctionData("names", [namehash(name)])
16
+ };
17
+ };
18
+ var generateNameQuery = (labels) => {
19
+ let query = "";
20
+ for (let i = 0; i < labels.length; i += 1) {
21
+ const label = labels[i];
22
+ if (isEncodedLabelhash(label)) {
23
+ query += `
24
+ label${i}: domains(where: { labelhash: "${decodeLabelhash(
25
+ label
26
+ ).toLowerCase()}", labelName_not: null }) {
27
+ labelName
28
+ }
29
+ `;
30
+ }
31
+ }
32
+ return query;
33
+ };
34
+ var decode = async ({ contracts, gqlInstance }, data, name, allowIncomplete = false) => {
35
+ if (data !== null) {
36
+ const nameWrapper = await contracts?.getNameWrapper();
37
+ try {
38
+ const result = nameWrapper.interface.decodeFunctionResult("names", data);
39
+ if (hexStripZeros(result["0"]) !== "0x") {
40
+ const decoded = hexDecodeName(result["0"]);
41
+ if (decoded && decoded !== ".")
42
+ return decoded;
43
+ }
44
+ } catch (e) {
45
+ console.error("Error decoding name: ", e);
46
+ return;
47
+ }
48
+ }
49
+ if (checkIsDecrypted(name))
50
+ return name;
51
+ const labels = name.split(".");
52
+ const decryptedNameQuery = gqlInstance.gql`
53
+ query decodedName($id: String!) {
54
+ namehashLookup: domains(where: { id: $id }) {
55
+ name
56
+ }
57
+ ${generateNameQuery(labels)}
58
+ }
59
+ `;
60
+ const decryptedNameResult = await gqlInstance.client.request(
61
+ decryptedNameQuery,
62
+ {
63
+ id: namehash(name)
64
+ }
65
+ );
66
+ if (!decryptedNameResult)
67
+ return;
68
+ const namehashLookupResult = decryptedNameResult?.namehashLookup[0]?.name;
69
+ let bestResult = namehashLookupResult;
70
+ if (namehashLookupResult && checkIsDecrypted(namehashLookupResult)) {
71
+ return namehashLookupResult;
72
+ }
73
+ const { namehashLookup: _, ...labelNames } = decryptedNameResult;
74
+ if (Object.keys(labelNames).length !== 0) {
75
+ for (const [key, value] of Object.entries(
76
+ labelNames
77
+ )) {
78
+ if (value.length && value[0].labelName) {
79
+ labels[parseInt(key.replace("label", ""))] = value[0].labelName;
80
+ }
81
+ }
82
+ const labelLookupResult = labels.join(".");
83
+ if (!namehashLookupResult || getEncryptedLabelAmount(namehashLookupResult) > getEncryptedLabelAmount(labelLookupResult))
84
+ bestResult = labelLookupResult;
85
+ }
86
+ if (!bestResult || !allowIncomplete && !checkIsDecrypted(bestResult))
87
+ return;
88
+ return bestResult;
89
+ };
90
+ var getDecryptedName_default = {
91
+ raw,
92
+ decode
93
+ };
94
+ export {
95
+ getDecryptedName_default as default
96
+ };
@@ -7,17 +7,20 @@ import { namehash } from "../utils/normalise.mjs";
7
7
  var eventFormat = {
8
8
  Domain: {
9
9
  NewOwner: (args) => ({ owner: args.owner.id }),
10
- NewResolver: (args) => ({ resolver: args.resolver.id.split("-")[0] }),
10
+ NewResolver: (args) => ({
11
+ resolver: args.resolver.id.split("-")[0]
12
+ }),
11
13
  Transfer: (args) => ({ owner: args.owner.id }),
12
14
  NewTTL: (args) => ({ ttl: args.ttl }),
13
15
  WrappedTransfer: (args) => ({ owner: args.owner.id }),
14
16
  NameWrapped: (args) => ({
15
17
  fuses: args.fuses,
16
18
  owner: args.owner.id,
17
- expiry: args.expiry
19
+ expiryDate: args.expiryDate
18
20
  }),
19
21
  NameUnwrapped: (args) => ({ owner: args.owner.id }),
20
- FusesSet: (args) => ({ fuses: args.fuses, expiry: args.expiry })
22
+ FusesSet: (args) => ({ fuses: args.fuses }),
23
+ ExpiryExtended: (args) => ({ expiryDate: args.expiryDate })
21
24
  },
22
25
  Registration: {
23
26
  NameRegistered: (args) => ({
@@ -54,9 +57,11 @@ var eventFormat = {
54
57
  AbiChanged: (args) => ({ contentType: args.contentType }),
55
58
  PubkeyChanged: (args) => ({ x: args.x, y: args.y }),
56
59
  TextChanged: (args) => ({ key: args.key, value: args.value }),
57
- ContenthashChanged: (args) => ({ hash: decodeContenthash(args.hash) }),
60
+ ContenthashChanged: (args) => ({
61
+ hash: decodeContenthash(args.hash)
62
+ }),
58
63
  InterfaceChanged: (args) => ({
59
- interfaceId: args.interfaceId,
64
+ interfaceId: args.interfaceID,
60
65
  implementer: args.implementer
61
66
  }),
62
67
  AuthorisationChanged: (args) => ({
@@ -111,7 +116,7 @@ async function getHistory({ gqlInstance }, name) {
111
116
  }
112
117
  ...on NameWrapped {
113
118
  fuses
114
- expiry
119
+ expiryDate
115
120
  owner {
116
121
  id
117
122
  }
@@ -123,7 +128,9 @@ async function getHistory({ gqlInstance }, name) {
123
128
  }
124
129
  ...on FusesSet {
125
130
  fuses
126
- expiry
131
+ }
132
+ ...on ExpiryExtended {
133
+ expiryDate
127
134
  }
128
135
  }
129
136
  registration {
@@ -2,12 +2,12 @@
2
2
  import { truncateFormat } from "../utils/format.mjs";
3
3
  import { decodeFuses } from "../utils/fuses.mjs";
4
4
  import { decryptName } from "../utils/labels.mjs";
5
- var mapDomain = (domain) => {
6
- const decrypted = decryptName(domain.name);
5
+ var mapDomain = ({ name, ...domain }) => {
6
+ const decrypted = name ? decryptName(name) : void 0;
7
7
  return {
8
8
  ...domain,
9
9
  name: decrypted,
10
- truncatedName: truncateFormat(decrypted),
10
+ truncatedName: decrypted ? truncateFormat(decrypted) : void 0,
11
11
  createdAt: new Date(parseInt(domain.createdAt) * 1e3),
12
12
  type: "domain"
13
13
  };
@@ -16,8 +16,12 @@ var mapWrappedDomain = (wrappedDomain) => {
16
16
  const domain = mapDomain(wrappedDomain.domain);
17
17
  if (domain.registration) {
18
18
  domain.registration = {
19
- expiryDate: new Date(parseInt(domain.registration.expiryDate) * 1e3),
20
- registrationDate: new Date(domain.registration.registrationDate * 1e3)
19
+ expiryDate: new Date(
20
+ parseInt(domain.registration.expiryDate) * 1e3
21
+ ),
22
+ registrationDate: new Date(
23
+ parseInt(domain.registration.registrationDate) * 1e3
24
+ )
21
25
  };
22
26
  }
23
27
  return {
@@ -209,7 +213,7 @@ var getNames = async ({ gqlInstance }, {
209
213
  id: address,
210
214
  first: pageSize,
211
215
  skip: (page || 0) * pageSize,
212
- orderBy,
216
+ orderBy: orderBy === "labelName" ? "name" : orderBy,
213
217
  orderDirection
214
218
  };
215
219
  }
@@ -1,5 +1,5 @@
1
1
  // src/functions/getOwner.ts
2
- import { defaultAbiCoder } from "@ethersproject/abi/lib.esm/abi-coder.js";
2
+ import { defaultAbiCoder } from "@ethersproject/abi";
3
3
  import { hexStripZeros } from "@ethersproject/bytes";
4
4
  import { labelhash } from "../utils/labels.mjs";
5
5
  import { namehash as makeNamehash } from "../utils/normalise.mjs";
@@ -111,27 +111,39 @@ var decode = async ({
111
111
  const registryOwner = decodedData[0][0];
112
112
  const nameWrapperOwner = decodedData[1][0];
113
113
  let registrarOwner = decodedData[2]?.[0];
114
+ let baseReturnObject = {};
114
115
  if (labels[labels.length - 1] === "eth") {
115
- if (!registrarOwner && labels.length === 2) {
116
- const graphRegistrantResult = await gqlInstance.client.request(
117
- registrantQuery,
118
- {
119
- namehash: makeNamehash(name)
120
- }
121
- );
122
- registrarOwner = graphRegistrantResult.domain?.registration?.registrant?.id;
116
+ if (labels.length === 2) {
117
+ if (!registrarOwner) {
118
+ const graphRegistrantResult = await gqlInstance.client.request(
119
+ registrantQuery,
120
+ {
121
+ namehash: makeNamehash(name)
122
+ }
123
+ );
124
+ registrarOwner = graphRegistrantResult.domain?.registration?.registrant?.id;
125
+ baseReturnObject = {
126
+ expired: true
127
+ };
128
+ } else {
129
+ baseReturnObject = {
130
+ expired: false
131
+ };
132
+ }
123
133
  }
124
- if (registrarOwner === nameWrapper.address) {
134
+ if (registrarOwner?.toLowerCase() === nameWrapper.address.toLowerCase()) {
125
135
  return {
126
136
  owner: nameWrapperOwner,
127
- ownershipLevel: "nameWrapper"
137
+ ownershipLevel: "nameWrapper",
138
+ ...baseReturnObject
128
139
  };
129
140
  }
130
141
  if (registrarOwner) {
131
142
  return {
132
143
  registrant: registrarOwner,
133
144
  owner: registryOwner,
134
- ownershipLevel: "registrar"
145
+ ownershipLevel: "registrar",
146
+ ...baseReturnObject
135
147
  };
136
148
  }
137
149
  if (hexStripZeros(registryOwner) !== "0x") {
@@ -139,7 +151,8 @@ var decode = async ({
139
151
  return {
140
152
  registrant: void 0,
141
153
  owner: registryOwner,
142
- ownershipLevel: "registrar"
154
+ ownershipLevel: "registrar",
155
+ expired: true
143
156
  };
144
157
  }
145
158
  if (registryOwner === nameWrapper.address && nameWrapperOwner && hexStripZeros(nameWrapperOwner) !== "0x") {
@@ -1,6 +1,6 @@
1
1
  // src/functions/getPrice.ts
2
- import { defaultAbiCoder } from "@ethersproject/abi/lib.esm/abi-coder.js";
3
- import { BigNumber } from "@ethersproject/bignumber/lib.esm/bignumber.js";
2
+ import { defaultAbiCoder } from "@ethersproject/abi";
3
+ import { BigNumber } from "@ethersproject/bignumber";
4
4
  var raw = async ({ contracts, multicallWrapper }, nameOrNames, duration, legacy) => {
5
5
  const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];
6
6
  if (names.length > 1) {
@@ -1,6 +1,6 @@
1
1
  // src/functions/getProfile.ts
2
2
  import { formatsByName } from "@ensdomains/address-encoder";
3
- import { defaultAbiCoder } from "@ethersproject/abi/lib.esm/abi-coder.js";
3
+ import { defaultAbiCoder } from "@ethersproject/abi";
4
4
  import { hexStripZeros, isBytesLike } from "@ethersproject/bytes";
5
5
  import { decodeContenthash } from "../utils/contentHash.mjs";
6
6
  import { hexEncodeName } from "../utils/hexEncodedName.mjs";
@@ -229,6 +229,7 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
229
229
  const query = gqlInstance.gql`
230
230
  query getRecords($id: String!) {
231
231
  domain(id: $id) {
232
+ name
232
233
  isMigrated
233
234
  createdAt
234
235
  resolver {
@@ -245,6 +246,7 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
245
246
  const customResolverQuery = gqlInstance.gql`
246
247
  query getRecordsWithCustomResolver($id: String!, $resolverId: String!) {
247
248
  domain(id: $id) {
249
+ name
248
250
  isMigrated
249
251
  createdAt
250
252
  }
@@ -277,10 +279,10 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
277
279
  }
278
280
  if (!domain)
279
281
  return;
280
- const { isMigrated, createdAt } = domain;
282
+ const { isMigrated, createdAt, name: decryptedName } = domain;
281
283
  const returnedRecords = {};
282
284
  if (!resolverResponse || !wantedRecords)
283
- return { isMigrated, createdAt };
285
+ return { isMigrated, createdAt, decryptedName };
284
286
  Object.keys(wantedRecords).forEach((key) => {
285
287
  const data = wantedRecords[key];
286
288
  if (typeof data === "boolean" && data) {
@@ -293,6 +295,7 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
293
295
  });
294
296
  return {
295
297
  ...returnedRecords,
298
+ decryptedName,
296
299
  isMigrated,
297
300
  createdAt
298
301
  };
@@ -323,6 +326,7 @@ var getProfileFromName = async ({
323
326
  );
324
327
  let isMigrated = null;
325
328
  let createdAt = null;
329
+ let decryptedName = null;
326
330
  let result = null;
327
331
  if (!graphResult) {
328
332
  if (!fallback)
@@ -344,10 +348,12 @@ var getProfileFromName = async ({
344
348
  const {
345
349
  isMigrated: _isMigrated,
346
350
  createdAt: _createdAt,
351
+ decryptedName: _decryptedName,
347
352
  ...wantedRecords
348
353
  } = graphResult;
349
354
  isMigrated = _isMigrated;
350
355
  createdAt = _createdAt;
356
+ decryptedName = _decryptedName;
351
357
  let recordsWithFallback = usingOptions ? wantedRecords : _options;
352
358
  if ((Object.keys(recordsWithFallback).length === 0 || !recordsWithFallback.coinTypes && !recordsWithFallback.texts && Object.keys(recordsWithFallback.contentHash || {}).length === 0) && fallback) {
353
359
  recordsWithFallback = fallback;
@@ -372,7 +378,7 @@ var getProfileFromName = async ({
372
378
  createdAt,
373
379
  message: !result ? "Records fetch didn't complete" : "Name doesn't have a resolver"
374
380
  };
375
- return { ...result, isMigrated, createdAt, message: void 0 };
381
+ return { ...result, isMigrated, createdAt, decryptedName, message: void 0 };
376
382
  };
377
383
  var getProfileFromAddress = async ({
378
384
  contracts,
@@ -1,5 +1,5 @@
1
1
  // src/functions/getWrapperData.ts
2
- import { BigNumber } from "@ethersproject/bignumber/lib.esm/bignumber.js";
2
+ import { BigNumber } from "@ethersproject/bignumber";
3
3
  import { decodeFuses } from "../utils/fuses.mjs";
4
4
  import { namehash } from "../utils/normalise.mjs";
5
5
  var raw = async ({ contracts }, name) => {
@@ -12,15 +12,14 @@ var raw = async ({ contracts }, name) => {
12
12
  var decode = async ({ contracts }, data) => {
13
13
  const nameWrapper = await contracts?.getNameWrapper();
14
14
  try {
15
- const [owner, _fuses, expiry] = nameWrapper.interface.decodeFunctionResult(
15
+ const [owner, fuses, expiry] = nameWrapper.interface.decodeFunctionResult(
16
16
  "getData",
17
17
  data
18
18
  );
19
- const fuses = BigNumber.from(_fuses);
20
19
  const fuseObj = decodeFuses(fuses);
21
- const expiryDate = new Date(expiry * 1e3);
20
+ const expiryDate = expiry.gt(0) && expiry.lt(BigNumber.from(2).pow(32)) ? new Date(expiry.mul(1e3).toString()) : void 0;
22
21
  return {
23
- fuseObj,
22
+ ...fuseObj,
24
23
  expiryDate,
25
24
  rawFuses: fuses,
26
25
  owner
@@ -1,24 +1,17 @@
1
1
  // src/functions/renewNames.ts
2
- import { validateFuses } from "../utils/fuses.mjs";
3
- import { MAX_INT_64 } from "../utils/registerHelpers.mjs";
4
- async function renewNameWithData({ contracts }, name, {
5
- duration,
6
- value,
7
- fuses,
8
- wrapperExpiry = MAX_INT_64
9
- }) {
2
+ import { MAX_INT_64 } from "../utils/consts.mjs";
3
+ import { labelhash } from "../utils/labels.mjs";
4
+ import { namehash } from "../utils/normalise.mjs";
5
+ async function extendWrappedName({ contracts }, name, options) {
6
+ const expiry = options?.duration || MAX_INT_64;
10
7
  const labels = name.split(".");
11
- if (labels.length !== 2 || labels[1] !== "eth") {
12
- throw new Error("Currently only .eth TLD renewals are supported");
13
- }
14
- const encodedFuses = fuses ? validateFuses(fuses) : 0;
15
- const controller = await contracts.getEthRegistrarController();
16
- return controller.populateTransaction.renewWithFuses(
17
- labels[0],
18
- duration,
19
- encodedFuses,
20
- wrapperExpiry,
21
- { value }
8
+ const labelHash = labelhash(labels.shift());
9
+ const parentNode = namehash(labels.join("."));
10
+ const nameWrapper = await contracts.getNameWrapper();
11
+ return nameWrapper.populateTransaction.extendExpiry(
12
+ parentNode,
13
+ labelHash,
14
+ expiry
22
15
  );
23
16
  }
24
17
  async function renewNames_default({ contracts }, nameOrNames, { duration, value }) {
@@ -39,5 +32,5 @@ async function renewNames_default({ contracts }, nameOrNames, { duration, value
39
32
  }
40
33
  export {
41
34
  renewNames_default as default,
42
- renewNameWithData
35
+ extendWrappedName
43
36
  };
@@ -0,0 +1,30 @@
1
+ // src/functions/setFuses.ts
2
+ import { encodeFuses } from "../utils/fuses.mjs";
3
+ import { labelhash } from "../utils/labels.mjs";
4
+ import { namehash } from "../utils/normalise.mjs";
5
+ async function setChildFuses({ contracts, signer }, name, {
6
+ fuses,
7
+ expiry = 0
8
+ }) {
9
+ const encodedFuses = encodeFuses(fuses);
10
+ const labels = name.split(".");
11
+ const labelHash = labelhash(labels.shift());
12
+ const parentNode = namehash(labels.join("."));
13
+ const nameWrapper = (await contracts.getNameWrapper()).connect(signer);
14
+ return nameWrapper.populateTransaction.setChildFuses(
15
+ parentNode,
16
+ labelHash,
17
+ encodedFuses,
18
+ expiry
19
+ );
20
+ }
21
+ async function setFuses_default({ contracts, signer }, name, props) {
22
+ const encodedFuses = encodeFuses(props, "child");
23
+ const nameWrapper = (await contracts.getNameWrapper()).connect(signer);
24
+ const hash = namehash(name);
25
+ return nameWrapper.populateTransaction.setFuses(hash, encodedFuses);
26
+ }
27
+ export {
28
+ setFuses_default as default,
29
+ setChildFuses
30
+ };
@@ -1,16 +1,16 @@
1
1
  // src/functions/wrapName.ts
2
- import { defaultAbiCoder } from "@ethersproject/abi/lib.esm/abi-coder.js";
2
+ import { defaultAbiCoder } from "@ethersproject/abi";
3
3
  import { keccak256 as solidityKeccak256 } from "@ethersproject/solidity";
4
- import generateFuseInput from "../utils/generateFuseInput.mjs";
4
+ import { encodeFuses } from "../utils/fuses.mjs";
5
5
  import { hexEncodeName } from "../utils/hexEncodedName.mjs";
6
- import { makeExpiry, wrappedLabelLengthCheck } from "../utils/wrapper.mjs";
7
- async function wrapETH({ contracts }, labels, wrappedOwner, expiry, decodedFuses, resolverAddress, signer, address) {
6
+ import { wrappedLabelLengthCheck } from "../utils/wrapper.mjs";
7
+ async function wrapETH({ contracts }, labels, wrappedOwner, decodedFuses, resolverAddress, signer, address) {
8
8
  const nameWrapper = await contracts?.getNameWrapper();
9
9
  const baseRegistrar = (await contracts.getBaseRegistrar()).connect(signer);
10
10
  const labelhash = solidityKeccak256(["string"], [labels[0]]);
11
11
  const data = defaultAbiCoder.encode(
12
- ["string", "address", "uint32", "uint64", "address"],
13
- [labels[0], wrappedOwner, decodedFuses, expiry, resolverAddress]
12
+ ["string", "address", "uint16", "address"],
13
+ [labels[0], wrappedOwner, decodedFuses, resolverAddress]
14
14
  );
15
15
  return baseRegistrar.populateTransaction["safeTransferFrom(address,address,uint256,bytes)"](address, nameWrapper.address, labelhash, data);
16
16
  }
@@ -32,11 +32,7 @@ async function wrapOther({ contracts }, name, wrappedOwner, resolverAddress, add
32
32
  resolverAddress
33
33
  );
34
34
  }
35
- async function wrapName_default({
36
- contracts,
37
- signer,
38
- getExpiry
39
- }, name, {
35
+ async function wrapName_default({ contracts, signer }, name, {
40
36
  wrappedOwner,
41
37
  fuseOptions,
42
38
  expiry,
@@ -52,31 +48,25 @@ async function wrapName_default({
52
48
  if (labels.length === 2 && labels[1] === "eth") {
53
49
  switch (typeof fuseOptions) {
54
50
  case "object": {
55
- decodedFuses = generateFuseInput(fuseOptions);
51
+ decodedFuses = encodeFuses(fuseOptions);
56
52
  break;
57
53
  }
58
54
  case "number": {
59
- decodedFuses = fuseOptions.toString(16);
60
- break;
61
- }
62
- case "string": {
63
55
  decodedFuses = fuseOptions;
64
56
  break;
65
57
  }
66
58
  case "undefined": {
67
- decodedFuses = "0";
59
+ decodedFuses = 0;
68
60
  break;
69
61
  }
70
62
  default: {
71
63
  throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`);
72
64
  }
73
65
  }
74
- const expiryToUse = await makeExpiry({ getExpiry }, name, expiry);
75
66
  return wrapETH(
76
67
  { contracts },
77
68
  labels,
78
69
  wrappedOwner,
79
- expiryToUse,
80
70
  decodedFuses,
81
71
  resolverAddress,
82
72
  signer,
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
 
8
8
  // src/generated/factories/BaseRegistrarImplementation__factory.ts
9
- import { Interface } from "@ethersproject/abi/lib.esm/interface.js";
9
+ import { Interface } from "@ethersproject/abi";
10
10
  import { Contract } from "@ethersproject/contracts";
11
11
  var _abi = [
12
12
  {
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
 
8
8
  // src/generated/factories/BulkRenewal__factory.ts
9
- import { Interface } from "@ethersproject/abi/lib.esm/interface.js";
9
+ import { Interface } from "@ethersproject/abi";
10
10
  import { Contract } from "@ethersproject/contracts";
11
11
  var _abi = [
12
12
  {
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
 
8
8
  // src/generated/factories/DNSRegistrar__factory.ts
9
- import { Interface } from "@ethersproject/abi/lib.esm/interface.js";
9
+ import { Interface } from "@ethersproject/abi";
10
10
  import { Contract } from "@ethersproject/contracts";
11
11
  var _abi = [
12
12
  {
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
 
8
8
  // src/generated/factories/DNSSECImpl__factory.ts
9
- import { Interface } from "@ethersproject/abi/lib.esm/interface.js";
9
+ import { Interface } from "@ethersproject/abi";
10
10
  import { Contract } from "@ethersproject/contracts";
11
11
  var _abi = [
12
12
  {
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
 
8
8
  // src/generated/factories/DefaultReverseResolver__factory.ts
9
- import { Interface } from "@ethersproject/abi/lib.esm/interface.js";
9
+ import { Interface } from "@ethersproject/abi";
10
10
  import { Contract } from "@ethersproject/contracts";
11
11
  var _abi = [
12
12
  {
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
 
8
8
  // src/generated/factories/ENSRegistry__factory.ts
9
- import { Interface } from "@ethersproject/abi/lib.esm/interface.js";
9
+ import { Interface } from "@ethersproject/abi";
10
10
  import { Contract } from "@ethersproject/contracts";
11
11
  var _abi = [
12
12
  {
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
 
8
8
  // src/generated/factories/ETHRegistrarController__factory.ts
9
- import { Interface } from "@ethersproject/abi/lib.esm/interface.js";
9
+ import { Interface } from "@ethersproject/abi";
10
10
  import { Contract } from "@ethersproject/contracts";
11
11
  var _abi = [
12
12
  {
@@ -109,17 +109,6 @@ var _abi = [
109
109
  name: "ResolverRequiredWhenDataSupplied",
110
110
  type: "error"
111
111
  },
112
- {
113
- inputs: [
114
- {
115
- internalType: "bytes32",
116
- name: "node",
117
- type: "bytes32"
118
- }
119
- ],
120
- name: "Unauthorised",
121
- type: "error"
122
- },
123
112
  {
124
113
  inputs: [
125
114
  {
@@ -326,14 +315,9 @@ var _abi = [
326
315
  type: "bool"
327
316
  },
328
317
  {
329
- internalType: "uint32",
330
- name: "fuses",
331
- type: "uint32"
332
- },
333
- {
334
- internalType: "uint64",
335
- name: "wrapperExpiry",
336
- type: "uint64"
318
+ internalType: "uint16",
319
+ name: "ownerControlledFuses",
320
+ type: "uint16"
337
321
  }
338
322
  ],
339
323
  name: "makeCommitment",
@@ -473,14 +457,9 @@ var _abi = [
473
457
  type: "bool"
474
458
  },
475
459
  {
476
- internalType: "uint32",
477
- name: "fuses",
478
- type: "uint32"
479
- },
480
- {
481
- internalType: "uint64",
482
- name: "wrapperExpiry",
483
- type: "uint64"
460
+ internalType: "uint16",
461
+ name: "ownerControlledFuses",
462
+ type: "uint16"
484
463
  }
485
464
  ],
486
465
  name: "register",
@@ -506,34 +485,6 @@ var _abi = [
506
485
  stateMutability: "payable",
507
486
  type: "function"
508
487
  },
509
- {
510
- inputs: [
511
- {
512
- internalType: "string",
513
- name: "name",
514
- type: "string"
515
- },
516
- {
517
- internalType: "uint256",
518
- name: "duration",
519
- type: "uint256"
520
- },
521
- {
522
- internalType: "uint32",
523
- name: "fuses",
524
- type: "uint32"
525
- },
526
- {
527
- internalType: "uint64",
528
- name: "wrapperExpiry",
529
- type: "uint64"
530
- }
531
- ],
532
- name: "renewWithFuses",
533
- outputs: [],
534
- stateMutability: "payable",
535
- type: "function"
536
- },
537
488
  {
538
489
  inputs: [],
539
490
  name: "renounceOwnership",