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

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 (107) 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/getHistory.js +14 -7
  5. package/dist/cjs/functions/getNames.js +10 -6
  6. package/dist/cjs/functions/getOwner.js +25 -12
  7. package/dist/cjs/functions/getWrapperData.js +3 -4
  8. package/dist/cjs/functions/renewNames.js +13 -20
  9. package/dist/cjs/functions/{burnFuses.js → setFuses.js} +24 -6
  10. package/dist/cjs/functions/wrapName.js +7 -23
  11. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +6 -55
  12. package/dist/cjs/generated/factories/NameWrapper__factory.js +90 -69
  13. package/dist/cjs/generated/factories/PublicResolver__factory.js +83 -0
  14. package/dist/cjs/generated/factories/UniversalResolver__factory.js +67 -2
  15. package/dist/cjs/index.js +5 -4
  16. package/dist/cjs/utils/consts.js +3 -1
  17. package/dist/cjs/utils/fuses.js +218 -53
  18. package/dist/cjs/utils/normalise.js +2 -2
  19. package/dist/cjs/utils/recordHelpers.js +4 -3
  20. package/dist/cjs/utils/registerHelpers.js +9 -23
  21. package/dist/cjs/utils/subgraph-types.js +16 -0
  22. package/dist/cjs/utils/wrapper.js +2 -2
  23. package/dist/esm/contracts/getContractAddress.mjs +4 -4
  24. package/dist/esm/functions/commitName.mjs +2 -3
  25. package/dist/esm/functions/createSubname.mjs +2 -2
  26. package/dist/esm/functions/getHistory.mjs +14 -7
  27. package/dist/esm/functions/getNames.mjs +10 -6
  28. package/dist/esm/functions/getOwner.mjs +25 -12
  29. package/dist/esm/functions/getWrapperData.mjs +3 -4
  30. package/dist/esm/functions/renewNames.mjs +13 -20
  31. package/dist/esm/functions/setFuses.mjs +30 -0
  32. package/dist/esm/functions/wrapName.mjs +8 -18
  33. package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +6 -55
  34. package/dist/esm/generated/factories/NameWrapper__factory.mjs +90 -69
  35. package/dist/esm/generated/factories/PublicResolver__factory.mjs +83 -0
  36. package/dist/esm/generated/factories/UniversalResolver__factory.mjs +67 -2
  37. package/dist/esm/index.mjs +5 -4
  38. package/dist/esm/utils/consts.mjs +3 -1
  39. package/dist/esm/utils/fuses.mjs +218 -53
  40. package/dist/esm/utils/normalise.mjs +1 -1
  41. package/dist/esm/utils/recordHelpers.mjs +2 -1
  42. package/dist/esm/utils/registerHelpers.mjs +9 -17
  43. package/dist/esm/utils/subgraph-types.mjs +0 -0
  44. package/dist/esm/utils/wrapper.mjs +1 -1
  45. package/dist/types/functions/commitName.d.ts +0 -1
  46. package/dist/types/functions/createSubname.d.ts +2 -2
  47. package/dist/types/functions/getHistory.d.ts +1 -1
  48. package/dist/types/functions/getNames.d.ts +3 -3
  49. package/dist/types/functions/getOwner.d.ts +1 -0
  50. package/dist/types/functions/getWrapperData.d.ts +44 -5
  51. package/dist/types/functions/renewNames.d.ts +4 -5
  52. package/dist/types/functions/setFuses.d.ts +7 -0
  53. package/dist/types/functions/types.d.ts +6 -4
  54. package/dist/types/functions/wrapName.d.ts +3 -3
  55. package/dist/types/generated/ETHRegistrarController.d.ts +13 -36
  56. package/dist/types/generated/NameWrapper.d.ts +97 -52
  57. package/dist/types/generated/PublicResolver.d.ts +50 -1
  58. package/dist/types/generated/UniversalResolver.d.ts +79 -32
  59. package/dist/types/generated/factories/UniversalResolver__factory.d.ts +15 -0
  60. package/dist/types/index.d.ts +51 -9
  61. package/dist/types/utils/consts.d.ts +1 -0
  62. package/dist/types/utils/fuses.d.ts +115 -45
  63. package/dist/types/utils/registerHelpers.d.ts +7 -25
  64. package/dist/types/utils/subgraph-types.d.ts +284 -0
  65. package/package.json +5 -5
  66. package/src/contracts/getContractAddress.ts +4 -4
  67. package/src/functions/commitName.test.ts +0 -3
  68. package/src/functions/commitName.ts +1 -2
  69. package/src/functions/createSubname.ts +4 -5
  70. package/src/functions/getHistory.ts +59 -25
  71. package/src/functions/getNames.test.ts +1 -1
  72. package/src/functions/getNames.ts +26 -13
  73. package/src/functions/getOwner.test.ts +62 -3
  74. package/src/functions/getOwner.ts +31 -11
  75. package/src/functions/getWrapperData.test.ts +11 -45
  76. package/src/functions/getWrapperData.ts +7 -5
  77. package/src/functions/registerName.test.ts +3 -3
  78. package/src/functions/renewNames.ts +17 -23
  79. package/src/functions/setFuses.test.ts +240 -0
  80. package/src/functions/setFuses.ts +44 -0
  81. package/src/functions/types.ts +6 -4
  82. package/src/functions/wrapName.test.ts +8 -7
  83. package/src/functions/wrapName.ts +10 -24
  84. package/src/generated/ETHRegistrarController.ts +12 -79
  85. package/src/generated/NameWrapper.ts +155 -99
  86. package/src/generated/PublicResolver.ts +123 -0
  87. package/src/generated/UniversalResolver.ts +157 -16
  88. package/src/generated/factories/ETHRegistrarController__factory.ts +6 -55
  89. package/src/generated/factories/NameWrapper__factory.ts +90 -69
  90. package/src/generated/factories/PublicResolver__factory.ts +83 -0
  91. package/src/generated/factories/UniversalResolver__factory.ts +67 -2
  92. package/src/index.ts +11 -14
  93. package/src/utils/consts.ts +1 -0
  94. package/src/utils/fuses.ts +299 -102
  95. package/src/utils/normalise.ts +1 -1
  96. package/src/utils/recordHelpers.ts +2 -1
  97. package/src/utils/registerHelpers.ts +13 -41
  98. package/src/utils/subgraph-types.ts +312 -0
  99. package/src/utils/wrapper.ts +1 -1
  100. package/dist/cjs/utils/generateFuseInput.js +0 -40
  101. package/dist/esm/functions/burnFuses.mjs +0 -12
  102. package/dist/esm/utils/generateFuseInput.mjs +0 -15
  103. package/dist/types/functions/burnFuses.d.ts +0 -3
  104. package/dist/types/utils/generateFuseInput.d.ts +0 -3
  105. package/src/functions/burnFuses.test.ts +0 -148
  106. package/src/functions/burnFuses.ts +0 -16
  107. package/src/utils/generateFuseInput.ts +0 -13
@@ -56,6 +56,25 @@ var _abi = [
56
56
  name: "OffchainLookup",
57
57
  type: "error"
58
58
  },
59
+ {
60
+ anonymous: false,
61
+ inputs: [
62
+ {
63
+ indexed: true,
64
+ internalType: "address",
65
+ name: "previousOwner",
66
+ type: "address"
67
+ },
68
+ {
69
+ indexed: true,
70
+ internalType: "address",
71
+ name: "newOwner",
72
+ type: "address"
73
+ }
74
+ ],
75
+ name: "OwnershipTransferred",
76
+ type: "event"
77
+ },
59
78
  {
60
79
  inputs: [
61
80
  {
@@ -143,6 +162,19 @@ var _abi = [
143
162
  stateMutability: "view",
144
163
  type: "function"
145
164
  },
165
+ {
166
+ inputs: [],
167
+ name: "owner",
168
+ outputs: [
169
+ {
170
+ internalType: "address",
171
+ name: "",
172
+ type: "address"
173
+ }
174
+ ],
175
+ stateMutability: "view",
176
+ type: "function"
177
+ },
146
178
  {
147
179
  inputs: [],
148
180
  name: "registry",
@@ -156,6 +188,13 @@ var _abi = [
156
188
  stateMutability: "view",
157
189
  type: "function"
158
190
  },
191
+ {
192
+ inputs: [],
193
+ name: "renounceOwnership",
194
+ outputs: [],
195
+ stateMutability: "nonpayable",
196
+ type: "function"
197
+ },
159
198
  {
160
199
  inputs: [
161
200
  {
@@ -308,7 +347,7 @@ var _abi = [
308
347
  type: "address"
309
348
  }
310
349
  ],
311
- stateMutability: "nonpayable",
350
+ stateMutability: "view",
312
351
  type: "function"
313
352
  },
314
353
  {
@@ -337,7 +376,7 @@ var _abi = [
337
376
  type: "address"
338
377
  }
339
378
  ],
340
- stateMutability: "nonpayable",
379
+ stateMutability: "view",
341
380
  type: "function"
342
381
  },
343
382
  {
@@ -449,6 +488,19 @@ var _abi = [
449
488
  type: "address"
450
489
  }
451
490
  ],
491
+ stateMutability: "view",
492
+ type: "function"
493
+ },
494
+ {
495
+ inputs: [
496
+ {
497
+ internalType: "string[]",
498
+ name: "_urls",
499
+ type: "string[]"
500
+ }
501
+ ],
502
+ name: "setGatewayURLs",
503
+ outputs: [],
452
504
  stateMutability: "nonpayable",
453
505
  type: "function"
454
506
  },
@@ -470,6 +522,19 @@ var _abi = [
470
522
  ],
471
523
  stateMutability: "view",
472
524
  type: "function"
525
+ },
526
+ {
527
+ inputs: [
528
+ {
529
+ internalType: "address",
530
+ name: "newOwner",
531
+ type: "address"
532
+ }
533
+ ],
534
+ name: "transferOwnership",
535
+ outputs: [],
536
+ stateMutability: "nonpayable",
537
+ type: "function"
473
538
  }
474
539
  ];
475
540
  var UniversalResolver__factory = class {
@@ -278,16 +278,17 @@ var ENS = class {
278
278
  transferController = this.generateWriteFunction("transferController", ["contracts"]);
279
279
  wrapName = this.generateWriteFunction(
280
280
  "wrapName",
281
- ["contracts", "getExpiry"]
281
+ ["contracts"]
282
282
  );
283
283
  unwrapName = this.generateWriteFunction(
284
284
  "unwrapName",
285
285
  ["contracts"]
286
286
  );
287
- burnFuses = this.generateWriteFunction(
288
- "burnFuses",
287
+ setFuses = this.generateWriteFunction(
288
+ "setFuses",
289
289
  ["contracts"]
290
290
  );
291
+ setChildFuses = this.generateWriteFunction("setFuses", ["contracts"], "setChildFuses");
291
292
  importDNSSECName = this.generateWriteFunction("importDNSSECName", ["contracts", "provider", "signer"]);
292
293
  createSubname = this.generateWriteFunction("createSubname", ["contracts", "getExpiry"]);
293
294
  deleteSubname = this.generateWriteFunction("deleteSubname", ["contracts"]);
@@ -301,7 +302,7 @@ var ENS = class {
301
302
  "renewNames",
302
303
  ["contracts"]
303
304
  );
304
- renewNameWithData = this.generateWriteFunction("renewNames", ["contracts"], "renewNameWithData");
305
+ extendWrappedName = this.generateWriteFunction("renewNames", ["contracts"], "extendWrappedName");
305
306
  };
306
307
  export {
307
308
  ENS,
@@ -1,5 +1,7 @@
1
1
  // src/utils/consts.ts
2
2
  var EMPTY_ADDRESS = "0x0000000000000000000000000000000000000000";
3
+ var MAX_INT_64 = 2n ** 64n - 1n;
3
4
  export {
4
- EMPTY_ADDRESS
5
+ EMPTY_ADDRESS,
6
+ MAX_INT_64
5
7
  };
@@ -1,23 +1,43 @@
1
1
  // src/utils/fuses.ts
2
- import { BigNumber } from "@ethersproject/bignumber/lib.esm/bignumber.js";
3
2
  var CANNOT_UNWRAP = 1;
4
3
  var CANNOT_BURN_FUSES = 2;
5
4
  var CANNOT_TRANSFER = 4;
6
5
  var CANNOT_SET_RESOLVER = 8;
7
6
  var CANNOT_SET_TTL = 16;
8
7
  var CANNOT_CREATE_SUBDOMAIN = 32;
9
- var PARENT_CANNOT_CONTROL = 64;
8
+ var PARENT_CANNOT_CONTROL = 65536;
9
+ var IS_DOT_ETH = 131072;
10
+ var CAN_EXTEND_EXPIRY = 262144;
11
+ var CHILD_CONTROLLED_FUSES = 65535;
12
+ var PARENT_CONTROLLED_FUSES = 4294901760;
13
+ var USER_SETTABLE_FUSES = 4294836223;
10
14
  var CAN_DO_EVERYTHING = 0;
11
- var fuseEnum = {
15
+ var childFuseEnum = {
12
16
  CANNOT_UNWRAP,
13
17
  CANNOT_BURN_FUSES,
14
18
  CANNOT_TRANSFER,
15
19
  CANNOT_SET_RESOLVER,
16
20
  CANNOT_SET_TTL,
17
- CANNOT_CREATE_SUBDOMAIN,
18
- PARENT_CANNOT_CONTROL
21
+ CANNOT_CREATE_SUBDOMAIN
19
22
  };
20
- var unnamedFuses = [
23
+ var parentFuseEnum = {
24
+ PARENT_CANNOT_CONTROL,
25
+ CAN_EXTEND_EXPIRY
26
+ };
27
+ var fullParentFuseEnum = {
28
+ ...parentFuseEnum,
29
+ IS_DOT_ETH
30
+ };
31
+ var userSettableFuseEnum = {
32
+ ...childFuseEnum,
33
+ ...parentFuseEnum
34
+ };
35
+ var fullFuseEnum = {
36
+ ...userSettableFuseEnum,
37
+ CAN_DO_EVERYTHING
38
+ };
39
+ var unnamedChildFuses = [
40
+ 64,
21
41
  128,
22
42
  256,
23
43
  512,
@@ -26,10 +46,9 @@ var unnamedFuses = [
26
46
  4096,
27
47
  8192,
28
48
  16384,
29
- 32768,
30
- 65536,
31
- 131072,
32
- 262144,
49
+ 32768
50
+ ];
51
+ var unnamedParentFuses = [
33
52
  524288,
34
53
  1048576,
35
54
  2097152,
@@ -42,74 +61,220 @@ var unnamedFuses = [
42
61
  268435456,
43
62
  536870912,
44
63
  1073741824,
45
- 2147483648,
46
- 4294967296
64
+ 2147483648
47
65
  ];
48
- var fullFuseEnum = {
49
- ...fuseEnum,
50
- CAN_DO_EVERYTHING
66
+ var unnamedUserSettableFuses = [
67
+ ...unnamedChildFuses,
68
+ ...unnamedParentFuses
69
+ ];
70
+ var childFuseKeys = Object.keys(
71
+ childFuseEnum
72
+ );
73
+ var parentFuseKeys = Object.keys(
74
+ parentFuseEnum
75
+ );
76
+ var fullParentFuseKeys = Object.keys(
77
+ fullParentFuseEnum
78
+ );
79
+ var userSettableFuseKeys = Object.keys(
80
+ userSettableFuseEnum
81
+ );
82
+ var checkNumber = (fuses) => {
83
+ if (fuses > 2 ** 32 || fuses < 1) {
84
+ throw new Error(
85
+ `Fuse number must be limited to uint32, ${fuses} was too ${fuses < 1 ? "low" : "high"}.`
86
+ );
87
+ } else if (fuses % 1 !== 0) {
88
+ throw new Error(`Fuse number must be an integer, ${fuses} was not.`);
89
+ } else if ((fuses & USER_SETTABLE_FUSES) !== fuses) {
90
+ throw new Error(
91
+ `Fuse number must be limited to user settable fuses, ${fuses} was not.`
92
+ );
93
+ }
51
94
  };
52
- var validateFuses = (fuses) => {
53
- const isNumber = "fuseNumberToBurn" in fuses;
54
- const hasNamedArray = "namedFusesToBurn" in fuses;
55
- const hasUnnamedArray = "unnamedFusesToBurn" in fuses;
95
+ var testFuses = (fuses) => {
96
+ if ("named" in fuses && fuses.named.length > 0) {
97
+ return true;
98
+ }
99
+ if ("unnamed" in fuses && fuses.unnamed.length > 0) {
100
+ return true;
101
+ }
102
+ if ("number" in fuses && fuses.number !== 0) {
103
+ return true;
104
+ }
105
+ return false;
106
+ };
107
+ var hasFuses = (fuses) => {
108
+ if (typeof fuses === "number") {
109
+ return fuses !== 0;
110
+ }
111
+ if (typeof fuses === "object") {
112
+ if ("child" in fuses && testFuses(fuses.child)) {
113
+ return true;
114
+ }
115
+ if ("parent" in fuses && testFuses(fuses.parent)) {
116
+ return true;
117
+ }
118
+ if (testFuses(fuses)) {
119
+ return true;
120
+ }
121
+ }
122
+ return false;
123
+ };
124
+ function encodeFuses(fuses, restrictTo) {
56
125
  let encodedFuses = 0;
57
- if (isNumber) {
58
- if (fuses.fuseNumberToBurn > 2 ** 32 || fuses.fuseNumberToBurn < 1) {
59
- throw new Error(
60
- `Fuse number must be limited to uint32, ${fuses.fuseNumberToBurn} was too ${fuses.fuseNumberToBurn < 1 ? "low" : "high"}.`
61
- );
62
- } else if (fuses.fuseNumberToBurn % 1 !== 0) {
63
- throw new Error(
64
- `Fuse number must be an integer, ${fuses.fuseNumberToBurn} was not.`
65
- );
126
+ if (typeof fuses === "number") {
127
+ if (restrictTo) {
128
+ throw new Error("Cannot specify an exact fuse value when restricted.");
66
129
  }
67
- encodedFuses = fuses.fuseNumberToBurn;
130
+ checkNumber(fuses);
131
+ encodedFuses = fuses;
68
132
  } else {
69
- if (!hasNamedArray && !hasUnnamedArray) {
70
- throw new Error("Please provide fuses to burn");
133
+ let fusesRef = fuses;
134
+ let allowedNamed = [];
135
+ let allowedUnnamed = [];
136
+ let namedArray = [];
137
+ let unnamedArray = [];
138
+ if (restrictTo) {
139
+ if ("parent" in fuses || "child" in fuses) {
140
+ throw new Error("Can't specify fuse category when restricted.");
141
+ }
142
+ allowedNamed = restrictTo === "child" ? childFuseKeys : parentFuseKeys;
143
+ allowedUnnamed = restrictTo === "child" ? unnamedChildFuses : unnamedParentFuses;
144
+ fusesRef = { [restrictTo]: fuses };
145
+ } else {
146
+ allowedNamed = userSettableFuseKeys;
147
+ allowedUnnamed = unnamedUserSettableFuses;
148
+ }
149
+ if ("parent" in fusesRef) {
150
+ if ("named" in fusesRef.parent)
151
+ namedArray = fusesRef.parent.named;
152
+ if ("unnamed" in fusesRef.parent)
153
+ unnamedArray = fusesRef.parent.unnamed;
154
+ if ("number" in fusesRef.parent) {
155
+ if ("named" in fusesRef.parent || "unnamed" in fusesRef.parent) {
156
+ throw new Error(
157
+ "Cannot specify both a fuse number and named/unnamed fuses."
158
+ );
159
+ }
160
+ checkNumber(fusesRef.parent.number);
161
+ if ((fusesRef.parent.number & PARENT_CONTROLLED_FUSES) !== fusesRef.parent.number) {
162
+ throw new Error(
163
+ "Cannot specify a fuse value to set that is outside of the parent's control."
164
+ );
165
+ }
166
+ encodedFuses |= fusesRef.parent.number;
167
+ }
168
+ }
169
+ if ("child" in fusesRef) {
170
+ if ("named" in fusesRef.child)
171
+ namedArray = [...namedArray, ...fusesRef.child.named];
172
+ if ("unnamed" in fusesRef.child)
173
+ unnamedArray = [...unnamedArray, ...fusesRef.child.unnamed];
174
+ if ("number" in fusesRef.child) {
175
+ if ("named" in fusesRef.child || "unnamed" in fusesRef.child) {
176
+ throw new Error(
177
+ "Cannot specify both a fuse number and named/unnamed fuses."
178
+ );
179
+ }
180
+ checkNumber(fusesRef.child.number);
181
+ if ((fusesRef.child.number & CHILD_CONTROLLED_FUSES) !== fusesRef.child.number) {
182
+ throw new Error(
183
+ "Cannot specify a fuse value to set that is outside of the owner's control."
184
+ );
185
+ }
186
+ encodedFuses |= fusesRef.child.number;
187
+ }
71
188
  }
72
- if (hasNamedArray) {
73
- for (const fuse of fuses.namedFusesToBurn) {
74
- if (!(fuse in fuseEnum)) {
189
+ if (!namedArray.length && !unnamedArray.length && !encodedFuses) {
190
+ throw new Error("Must specify at least one fuse.");
191
+ }
192
+ for (const fuse of namedArray) {
193
+ if (!allowedNamed.includes(fuse)) {
194
+ if (!userSettableFuseKeys.includes(fuse)) {
75
195
  throw new Error(`${fuse} is not a valid named fuse.`);
76
196
  }
77
- encodedFuses |= fuseEnum[fuse];
197
+ throw new Error(`Fuse ${fuse} is not allowed for this operation.`);
78
198
  }
199
+ encodedFuses |= userSettableFuseEnum[fuse];
79
200
  }
80
- if (hasUnnamedArray) {
81
- for (const fuse of fuses.unnamedFusesToBurn) {
82
- if (!unnamedFuses.includes(fuse)) {
201
+ for (const fuse of unnamedArray) {
202
+ if (!allowedUnnamed.includes(fuse)) {
203
+ if (!unnamedUserSettableFuses.includes(fuse)) {
83
204
  throw new Error(
84
- `${fuse} is not a valid unnamed fuse. If you are trying to burn a named fuse, use the namedFusesToBurn property.`
205
+ `${fuse} is not a valid unnamed fuse. If you are trying to set a named fuse, use the named property.`
85
206
  );
86
207
  }
87
- encodedFuses |= fuse;
208
+ throw new Error(`Fuse ${fuse} is not allowed for this operation.`);
88
209
  }
210
+ encodedFuses |= fuse;
89
211
  }
90
212
  }
91
213
  return encodedFuses;
92
- };
93
- var decodeFuses = (fuses) => {
94
- const bnFuses = BigNumber.from(fuses);
214
+ }
215
+ var decodeNamedFuses = (fuses, arr) => {
95
216
  const fuseObj = Object.fromEntries(
96
- Object.keys(fuseEnum).map((fuse) => [
217
+ arr.map((fuse) => [
97
218
  fuse,
98
- bnFuses.and(fuseEnum[fuse]).gt(0)
219
+ (fuses & userSettableFuseEnum[fuse]) > 0
99
220
  ])
100
221
  );
101
- if (bnFuses.eq(0)) {
102
- fuseObj.CAN_DO_EVERYTHING = true;
103
- } else {
104
- fuseObj.CAN_DO_EVERYTHING = false;
105
- }
106
222
  return fuseObj;
107
223
  };
224
+ var decodeUnnamedFuses = (fuses, arr) => {
225
+ const fuseObj = Object.fromEntries(
226
+ arr.map((fuse) => [fuse, (fuses & fuse) > 0])
227
+ );
228
+ return fuseObj;
229
+ };
230
+ var decodeFuses = (fuses) => {
231
+ const parentNamedFuses = decodeNamedFuses(
232
+ fuses,
233
+ fullParentFuseKeys
234
+ );
235
+ const parentUnnamedFuses = decodeUnnamedFuses(
236
+ fuses,
237
+ unnamedParentFuses
238
+ );
239
+ const childNamedFuses = decodeNamedFuses(
240
+ fuses,
241
+ childFuseKeys
242
+ );
243
+ const childUnnamedFuses = decodeUnnamedFuses(
244
+ fuses,
245
+ unnamedChildFuses
246
+ );
247
+ return {
248
+ parent: {
249
+ ...parentNamedFuses,
250
+ unnamed: parentUnnamedFuses
251
+ },
252
+ child: {
253
+ ...childNamedFuses,
254
+ CAN_DO_EVERYTHING: (fuses & CHILD_CONTROLLED_FUSES) === 0,
255
+ unnamed: childUnnamedFuses
256
+ }
257
+ };
258
+ };
108
259
  var fuses_default = fullFuseEnum;
109
260
  export {
261
+ CHILD_CONTROLLED_FUSES,
262
+ PARENT_CONTROLLED_FUSES,
263
+ USER_SETTABLE_FUSES,
264
+ childFuseEnum,
265
+ childFuseKeys,
110
266
  decodeFuses,
111
267
  fuses_default as default,
112
- fuseEnum,
113
- unnamedFuses,
114
- validateFuses
268
+ encodeFuses,
269
+ fullFuseEnum,
270
+ fullParentFuseEnum,
271
+ fullParentFuseKeys,
272
+ hasFuses,
273
+ parentFuseEnum,
274
+ parentFuseKeys,
275
+ unnamedChildFuses,
276
+ unnamedParentFuses,
277
+ unnamedUserSettableFuses,
278
+ userSettableFuseEnum,
279
+ userSettableFuseKeys
115
280
  };
@@ -1,7 +1,7 @@
1
1
  // src/utils/normalise.ts
2
2
  import { concat, hexlify } from "@ethersproject/bytes";
3
3
  import { keccak256 } from "@ethersproject/keccak256";
4
- import { toUtf8Bytes } from "@ethersproject/strings/lib.esm/utf8.js";
4
+ import { toUtf8Bytes } from "@ethersproject/strings";
5
5
  import uts46 from "idna-uts46-hx/uts46bundle.js";
6
6
  import { decodeLabelhash, isEncodedLabelhash } from "./labels.mjs";
7
7
  var zeros = new Uint8Array(32);
@@ -1,6 +1,7 @@
1
1
  // src/utils/recordHelpers.ts
2
2
  import { formatsByCoinType, formatsByName } from "@ensdomains/address-encoder";
3
- import { isBytesLike, toUtf8Bytes } from "ethers/lib/utils";
3
+ import { isBytesLike } from "@ethersproject/bytes";
4
+ import { toUtf8Bytes } from "@ethersproject/strings";
4
5
  import { encodeContenthash } from "./contentHash.mjs";
5
6
  var generateSetAddr = (namehash, coinType, address, resolver) => {
6
7
  let coinTypeInstance;
@@ -1,11 +1,10 @@
1
1
  // src/utils/registerHelpers.ts
2
2
  import { defaultAbiCoder } from "@ethersproject/abi/lib.esm/abi-coder.js";
3
3
  import { keccak256 } from "@ethersproject/keccak256";
4
- import generateFuseInput from "./generateFuseInput.mjs";
4
+ import { encodeFuses, hasFuses } from "./fuses.mjs";
5
5
  import { labelhash } from "./labels.mjs";
6
6
  import { namehash } from "./normalise.mjs";
7
7
  import { generateRecordCallArray } from "./recordHelpers.mjs";
8
- var MAX_INT_64 = 2n ** 64n - 1n;
9
8
  var randomSecret = () => {
10
9
  const bytes = Buffer.allocUnsafe(32);
11
10
  return `0x${crypto.getRandomValues(bytes).toString("hex")}`;
@@ -18,13 +17,12 @@ var makeCommitmentData = ({
18
17
  records,
19
18
  reverseRecord,
20
19
  fuses,
21
- wrapperExpiry,
22
20
  secret
23
21
  }) => {
24
- const label = labelhash(name.split(".")[0]);
22
+ const labelHash = labelhash(name.split(".")[0]);
25
23
  const hash = namehash(name);
26
24
  const resolverAddress = resolver.address;
27
- const fuseData = fuses ? generateFuseInput(fuses) : "0";
25
+ const fuseData = hasFuses(fuses) ? encodeFuses(fuses, "child") : 0;
28
26
  if (reverseRecord) {
29
27
  if (!records) {
30
28
  records = { coinTypes: [{ key: "ETH", value: owner }] };
@@ -36,23 +34,20 @@ var makeCommitmentData = ({
36
34
  }
37
35
  const data = records ? generateRecordCallArray(hash, records, resolver) : [];
38
36
  return [
39
- label,
37
+ labelHash,
40
38
  owner,
41
39
  duration,
40
+ secret,
42
41
  resolverAddress,
43
42
  data,
44
- secret,
45
43
  !!reverseRecord,
46
- fuseData,
47
- wrapperExpiry || MAX_INT_64
44
+ fuseData
48
45
  ];
49
46
  };
50
47
  var makeRegistrationData = (params) => {
51
48
  const commitmentData = makeCommitmentData(params);
52
49
  const label = params.name.split(".")[0];
53
50
  commitmentData[0] = label;
54
- const secret = commitmentData.splice(5, 1)[0];
55
- commitmentData.splice(3, 0, secret);
56
51
  return commitmentData;
57
52
  };
58
53
  var _makeCommitment = (params) => {
@@ -62,12 +57,11 @@ var _makeCommitment = (params) => {
62
57
  "bytes32",
63
58
  "address",
64
59
  "uint256",
60
+ "bytes32",
65
61
  "address",
66
62
  "bytes[]",
67
- "bytes32",
68
63
  "bool",
69
- "uint32",
70
- "uint64"
64
+ "uint16"
71
65
  ],
72
66
  params
73
67
  )
@@ -84,12 +78,10 @@ var makeCommitment = ({
84
78
  const commitment = _makeCommitment(generatedParams);
85
79
  return {
86
80
  secret,
87
- commitment,
88
- wrapperExpiry: generatedParams[8]
81
+ commitment
89
82
  };
90
83
  };
91
84
  export {
92
- MAX_INT_64,
93
85
  _makeCommitment,
94
86
  makeCommitment,
95
87
  makeCommitmentData,
File without changes
@@ -1,6 +1,6 @@
1
1
  // src/utils/wrapper.ts
2
2
  import { BigNumber } from "@ethersproject/bignumber/lib.esm/bignumber.js";
3
- import { toUtf8Bytes } from "@ethersproject/strings/lib.esm/utf8.js";
3
+ import { toUtf8Bytes } from "@ethersproject/strings";
4
4
  var MAX_EXPIRY = BigNumber.from(2).pow(64).sub(1);
5
5
  var makeExpiry = async ({ getExpiry }, name, expiry) => {
6
6
  if (expiry) {
@@ -7,7 +7,6 @@ export default function ({ contracts }: ENSArgs<'contracts'>, name: string, { re
7
7
  customData: {
8
8
  secret: string;
9
9
  commitment: string;
10
- wrapperExpiry: import("ethers").BigNumberish;
11
10
  };
12
11
  to?: string | undefined;
13
12
  from?: string | undefined;
@@ -1,5 +1,5 @@
1
1
  import { ENSArgs } from '..';
2
- import { FuseOptions } from '../utils/fuses';
2
+ import { CombinedFuseInput } from '../utils/fuses';
3
3
  import { Expiry } from '../utils/wrapper';
4
4
  declare type BaseArgs = {
5
5
  owner: string;
@@ -8,7 +8,7 @@ declare type BaseArgs = {
8
8
  };
9
9
  declare type NameWrapperArgs = {
10
10
  contract: 'nameWrapper';
11
- fuses?: FuseOptions;
11
+ fuses?: CombinedFuseInput;
12
12
  expiry?: Expiry;
13
13
  } & BaseArgs;
14
14
  declare type Args = BaseArgs | NameWrapperArgs;
@@ -1,5 +1,5 @@
1
1
  import { ENSArgs } from '..';
2
- declare type DomainEvent = 'NewOwner' | 'NewResolver' | 'Transfer' | 'NewTTL' | 'WrappedTransfer' | 'NameWrapped' | 'NameUnwrapped' | 'FusesSet';
2
+ declare type DomainEvent = 'NewOwner' | 'NewResolver' | 'Transfer' | 'NewTTL' | 'WrappedTransfer' | 'NameWrapped' | 'NameUnwrapped' | 'FusesSet' | 'ExpiryExtended';
3
3
  declare type RegistrationEvent = 'NameRegistered' | 'NameRenewed' | 'NameTransferred';
4
4
  declare type ResolverEvent = 'AddrChanged' | 'MulticoinAddrChanged' | 'NameChanged' | 'AbiChanged' | 'PubkeyChanged' | 'TextChanged' | 'ContenthashChanged' | 'InterfaceChanged' | 'AuthorisationChanged' | 'VersionChanged';
5
5
  export declare function getHistory({ gqlInstance }: ENSArgs<'gqlInstance'>, name: string): Promise<{
@@ -1,5 +1,5 @@
1
1
  import { ENSArgs } from '..';
2
- import { CurrentFuses } from '../utils/fuses';
2
+ import { AllCurrentFuses } from '../utils/fuses';
3
3
  export declare type Name = {
4
4
  id: string;
5
5
  labelName: string | null;
@@ -13,7 +13,7 @@ export declare type Name = {
13
13
  createdAt?: Date;
14
14
  registrationDate?: Date;
15
15
  expiryDate?: Date;
16
- fuses?: CurrentFuses;
16
+ fuses?: AllCurrentFuses;
17
17
  registration?: {
18
18
  expiryDate: Date;
19
19
  registrationDate: Date;
@@ -37,7 +37,7 @@ declare type OwnerParams = {
37
37
  };
38
38
  declare type WrappedOwnerParams = {
39
39
  type: 'wrappedOwner';
40
- orderBy?: 'expiryDate' | 'labelName';
40
+ orderBy?: 'expiryDate' | 'name';
41
41
  };
42
42
  declare type AllParams = {
43
43
  type: 'all';
@@ -3,6 +3,7 @@ declare type Owner = {
3
3
  registrant?: string;
4
4
  owner?: string;
5
5
  ownershipLevel: 'nameWrapper' | 'registry' | 'registrar';
6
+ expired?: boolean;
6
7
  };
7
8
  declare const _default: {
8
9
  raw: ({ contracts, multicallWrapper }: ENSArgs<"contracts" | "multicallWrapper">, name: string, contract?: "nameWrapper" | "registrar" | "registry" | undefined) => Promise<{