@ensdomains/ensjs 3.0.0-alpha.21 → 3.0.0-alpha.23

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 (92) hide show
  1. package/dist/cjs/functions/burnFuses.js +1 -38
  2. package/dist/cjs/functions/commitName.js +2 -0
  3. package/dist/cjs/functions/createSubname.js +3 -2
  4. package/dist/cjs/functions/getHistory.js +19 -14
  5. package/dist/cjs/functions/getNames.js +1 -1
  6. package/dist/cjs/functions/{getFuses.js → getWrapperData.js} +10 -11
  7. package/dist/cjs/functions/registerName.js +2 -0
  8. package/dist/cjs/functions/renewNames.js +23 -3
  9. package/dist/cjs/functions/transferController.js +42 -0
  10. package/dist/cjs/functions/transferSubname.js +2 -2
  11. package/dist/cjs/functions/wrapName.js +3 -2
  12. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +137 -0
  13. package/dist/cjs/generated/factories/NameWrapper__factory.js +63 -39
  14. package/dist/cjs/generated/factories/PublicResolver__factory.js +69 -14
  15. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +13 -0
  16. package/dist/cjs/index.js +6 -3
  17. package/dist/cjs/utils/fuses.js +43 -1
  18. package/dist/cjs/utils/recordHelpers.js +5 -0
  19. package/dist/cjs/utils/registerHelpers.js +3 -1
  20. package/dist/cjs/utils/{wrapperExpiry.js → wrapper.js} +11 -4
  21. package/dist/esm/functions/burnFuses.mjs +2 -42
  22. package/dist/esm/functions/commitName.mjs +2 -0
  23. package/dist/esm/functions/createSubname.mjs +2 -1
  24. package/dist/esm/functions/getHistory.mjs +19 -14
  25. package/dist/esm/functions/getNames.mjs +1 -1
  26. package/dist/esm/functions/{getFuses.mjs → getWrapperData.mjs} +8 -9
  27. package/dist/esm/functions/registerName.mjs +2 -0
  28. package/dist/esm/functions/renewNames.mjs +23 -3
  29. package/dist/esm/functions/transferController.mjs +23 -0
  30. package/dist/esm/functions/transferSubname.mjs +1 -1
  31. package/dist/esm/functions/wrapName.mjs +2 -1
  32. package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +137 -0
  33. package/dist/esm/generated/factories/NameWrapper__factory.mjs +63 -39
  34. package/dist/esm/generated/factories/PublicResolver__factory.mjs +69 -14
  35. package/dist/esm/generated/factories/ReverseRegistrar__factory.mjs +13 -0
  36. package/dist/esm/index.mjs +6 -3
  37. package/dist/esm/utils/fuses.mjs +43 -1
  38. package/dist/esm/utils/recordHelpers.mjs +5 -0
  39. package/dist/esm/utils/registerHelpers.mjs +3 -1
  40. package/dist/esm/utils/{wrapperExpiry.mjs → wrapper.mjs} +9 -2
  41. package/dist/types/functions/burnFuses.d.ts +1 -11
  42. package/dist/types/functions/commitName.d.ts +1 -1
  43. package/dist/types/functions/createSubname.d.ts +1 -1
  44. package/dist/types/functions/{getFuses.d.ts → getWrapperData.d.ts} +1 -1
  45. package/dist/types/functions/registerName.d.ts +2 -5
  46. package/dist/types/functions/renewNames.d.ts +9 -2
  47. package/dist/types/functions/transferController.d.ts +6 -0
  48. package/dist/types/functions/transferSubname.d.ts +1 -1
  49. package/dist/types/functions/wrapName.d.ts +1 -1
  50. package/dist/types/generated/ETHRegistrarController.d.ts +42 -1
  51. package/dist/types/generated/NameWrapper.d.ts +66 -78
  52. package/dist/types/generated/PublicResolver.d.ts +51 -23
  53. package/dist/types/generated/ReverseRegistrar.d.ts +11 -0
  54. package/dist/types/generated/factories/ETHRegistrarController__factory.d.ts +12 -1
  55. package/dist/types/index.d.ts +5 -2
  56. package/dist/types/utils/fuses.d.ts +13 -0
  57. package/dist/types/utils/recordHelpers.d.ts +1 -0
  58. package/dist/types/utils/registerHelpers.d.ts +14 -9
  59. package/dist/types/utils/{wrapperExpiry.d.ts → wrapper.d.ts} +2 -1
  60. package/package.json +5 -4
  61. package/src/functions/burnFuses.test.ts +4 -4
  62. package/src/functions/burnFuses.ts +2 -65
  63. package/src/functions/commitName.ts +3 -0
  64. package/src/functions/createSubname.ts +2 -1
  65. package/src/functions/getHistory.ts +19 -13
  66. package/src/functions/getNames.test.ts +0 -1
  67. package/src/functions/getNames.ts +1 -1
  68. package/src/functions/getPrice.test.ts +9 -6
  69. package/src/functions/getProfile.test.ts +5 -6
  70. package/src/functions/getResolver.test.ts +2 -2
  71. package/src/functions/{getFuses.test.ts → getWrapperData.test.ts} +8 -6
  72. package/src/functions/{getFuses.ts → getWrapperData.ts} +6 -7
  73. package/src/functions/registerName.ts +5 -5
  74. package/src/functions/renewNames.test.ts +3 -3
  75. package/src/functions/renewNames.ts +36 -6
  76. package/src/functions/transferController.ts +28 -0
  77. package/src/functions/transferSubname.ts +1 -1
  78. package/src/functions/wrapName.test.ts +12 -3
  79. package/src/functions/wrapName.ts +3 -1
  80. package/src/generated/ETHRegistrarController.ts +104 -0
  81. package/src/generated/NameWrapper.ts +127 -90
  82. package/src/generated/PublicResolver.ts +114 -33
  83. package/src/generated/ReverseRegistrar.ts +20 -0
  84. package/src/generated/factories/ETHRegistrarController__factory.ts +137 -0
  85. package/src/generated/factories/NameWrapper__factory.ts +63 -39
  86. package/src/generated/factories/PublicResolver__factory.ts +69 -14
  87. package/src/generated/factories/ReverseRegistrar__factory.ts +13 -0
  88. package/src/index.ts +19 -5
  89. package/src/utils/fuses.ts +67 -1
  90. package/src/utils/recordHelpers.ts +7 -0
  91. package/src/utils/registerHelpers.ts +18 -9
  92. package/src/utils/{wrapperExpiry.ts → wrapper.ts} +8 -1
@@ -7,15 +7,17 @@ export interface PublicResolverInterface extends utils.Interface {
7
7
  "ABI(bytes32,uint256)": FunctionFragment;
8
8
  "addr(bytes32)": FunctionFragment;
9
9
  "addr(bytes32,uint256)": FunctionFragment;
10
- "clearDNSZone(bytes32)": FunctionFragment;
10
+ "clearRecords(bytes32)": FunctionFragment;
11
11
  "contenthash(bytes32)": FunctionFragment;
12
12
  "dnsRecord(bytes32,bytes32,uint16)": FunctionFragment;
13
13
  "hasDNSRecords(bytes32,bytes32)": FunctionFragment;
14
14
  "interfaceImplementer(bytes32,bytes4)": FunctionFragment;
15
15
  "isApprovedForAll(address,address)": FunctionFragment;
16
16
  "multicall(bytes[])": FunctionFragment;
17
+ "multicallWithNodeCheck(bytes32,bytes[])": FunctionFragment;
17
18
  "name(bytes32)": FunctionFragment;
18
19
  "pubkey(bytes32)": FunctionFragment;
20
+ "recordVersions(bytes32)": FunctionFragment;
19
21
  "setABI(bytes32,uint256,bytes)": FunctionFragment;
20
22
  "setAddr(bytes32,uint256,bytes)": FunctionFragment;
21
23
  "setAddr(bytes32,address)": FunctionFragment;
@@ -31,11 +33,11 @@ export interface PublicResolverInterface extends utils.Interface {
31
33
  "text(bytes32,string)": FunctionFragment;
32
34
  "zonehash(bytes32)": FunctionFragment;
33
35
  };
34
- getFunction(nameOrSignatureOrTopic: "ABI" | "addr(bytes32)" | "addr(bytes32,uint256)" | "clearDNSZone" | "contenthash" | "dnsRecord" | "hasDNSRecords" | "interfaceImplementer" | "isApprovedForAll" | "multicall" | "name" | "pubkey" | "setABI" | "setAddr(bytes32,uint256,bytes)" | "setAddr(bytes32,address)" | "setApprovalForAll" | "setContenthash" | "setDNSRecords" | "setInterface" | "setName" | "setPubkey" | "setText" | "setZonehash" | "supportsInterface" | "text" | "zonehash"): FunctionFragment;
36
+ getFunction(nameOrSignatureOrTopic: "ABI" | "addr(bytes32)" | "addr(bytes32,uint256)" | "clearRecords" | "contenthash" | "dnsRecord" | "hasDNSRecords" | "interfaceImplementer" | "isApprovedForAll" | "multicall" | "multicallWithNodeCheck" | "name" | "pubkey" | "recordVersions" | "setABI" | "setAddr(bytes32,uint256,bytes)" | "setAddr(bytes32,address)" | "setApprovalForAll" | "setContenthash" | "setDNSRecords" | "setInterface" | "setName" | "setPubkey" | "setText" | "setZonehash" | "supportsInterface" | "text" | "zonehash"): FunctionFragment;
35
37
  encodeFunctionData(functionFragment: "ABI", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
36
38
  encodeFunctionData(functionFragment: "addr(bytes32)", values: [PromiseOrValue<BytesLike>]): string;
37
39
  encodeFunctionData(functionFragment: "addr(bytes32,uint256)", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
38
- encodeFunctionData(functionFragment: "clearDNSZone", values: [PromiseOrValue<BytesLike>]): string;
40
+ encodeFunctionData(functionFragment: "clearRecords", values: [PromiseOrValue<BytesLike>]): string;
39
41
  encodeFunctionData(functionFragment: "contenthash", values: [PromiseOrValue<BytesLike>]): string;
40
42
  encodeFunctionData(functionFragment: "dnsRecord", values: [
41
43
  PromiseOrValue<BytesLike>,
@@ -46,8 +48,10 @@ export interface PublicResolverInterface extends utils.Interface {
46
48
  encodeFunctionData(functionFragment: "interfaceImplementer", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BytesLike>]): string;
47
49
  encodeFunctionData(functionFragment: "isApprovedForAll", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
48
50
  encodeFunctionData(functionFragment: "multicall", values: [PromiseOrValue<BytesLike>[]]): string;
51
+ encodeFunctionData(functionFragment: "multicallWithNodeCheck", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BytesLike>[]]): string;
49
52
  encodeFunctionData(functionFragment: "name", values: [PromiseOrValue<BytesLike>]): string;
50
53
  encodeFunctionData(functionFragment: "pubkey", values: [PromiseOrValue<BytesLike>]): string;
54
+ encodeFunctionData(functionFragment: "recordVersions", values: [PromiseOrValue<BytesLike>]): string;
51
55
  encodeFunctionData(functionFragment: "setABI", values: [
52
56
  PromiseOrValue<BytesLike>,
53
57
  PromiseOrValue<BigNumberish>,
@@ -85,15 +89,17 @@ export interface PublicResolverInterface extends utils.Interface {
85
89
  decodeFunctionResult(functionFragment: "ABI", data: BytesLike): Result;
86
90
  decodeFunctionResult(functionFragment: "addr(bytes32)", data: BytesLike): Result;
87
91
  decodeFunctionResult(functionFragment: "addr(bytes32,uint256)", data: BytesLike): Result;
88
- decodeFunctionResult(functionFragment: "clearDNSZone", data: BytesLike): Result;
92
+ decodeFunctionResult(functionFragment: "clearRecords", data: BytesLike): Result;
89
93
  decodeFunctionResult(functionFragment: "contenthash", data: BytesLike): Result;
90
94
  decodeFunctionResult(functionFragment: "dnsRecord", data: BytesLike): Result;
91
95
  decodeFunctionResult(functionFragment: "hasDNSRecords", data: BytesLike): Result;
92
96
  decodeFunctionResult(functionFragment: "interfaceImplementer", data: BytesLike): Result;
93
97
  decodeFunctionResult(functionFragment: "isApprovedForAll", data: BytesLike): Result;
94
98
  decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
99
+ decodeFunctionResult(functionFragment: "multicallWithNodeCheck", data: BytesLike): Result;
95
100
  decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
96
101
  decodeFunctionResult(functionFragment: "pubkey", data: BytesLike): Result;
102
+ decodeFunctionResult(functionFragment: "recordVersions", data: BytesLike): Result;
97
103
  decodeFunctionResult(functionFragment: "setABI", data: BytesLike): Result;
98
104
  decodeFunctionResult(functionFragment: "setAddr(bytes32,uint256,bytes)", data: BytesLike): Result;
99
105
  decodeFunctionResult(functionFragment: "setAddr(bytes32,address)", data: BytesLike): Result;
@@ -116,12 +122,12 @@ export interface PublicResolverInterface extends utils.Interface {
116
122
  "ContenthashChanged(bytes32,bytes)": EventFragment;
117
123
  "DNSRecordChanged(bytes32,bytes,uint16,bytes)": EventFragment;
118
124
  "DNSRecordDeleted(bytes32,bytes,uint16)": EventFragment;
119
- "DNSZoneCleared(bytes32)": EventFragment;
120
125
  "DNSZonehashChanged(bytes32,bytes,bytes)": EventFragment;
121
126
  "InterfaceChanged(bytes32,bytes4,address)": EventFragment;
122
127
  "NameChanged(bytes32,string)": EventFragment;
123
128
  "PubkeyChanged(bytes32,bytes32,bytes32)": EventFragment;
124
- "TextChanged(bytes32,string,string)": EventFragment;
129
+ "TextChanged(bytes32,string,string,string)": EventFragment;
130
+ "VersionChanged(bytes32,uint64)": EventFragment;
125
131
  };
126
132
  getEvent(nameOrSignatureOrTopic: "ABIChanged"): EventFragment;
127
133
  getEvent(nameOrSignatureOrTopic: "AddrChanged"): EventFragment;
@@ -130,12 +136,12 @@ export interface PublicResolverInterface extends utils.Interface {
130
136
  getEvent(nameOrSignatureOrTopic: "ContenthashChanged"): EventFragment;
131
137
  getEvent(nameOrSignatureOrTopic: "DNSRecordChanged"): EventFragment;
132
138
  getEvent(nameOrSignatureOrTopic: "DNSRecordDeleted"): EventFragment;
133
- getEvent(nameOrSignatureOrTopic: "DNSZoneCleared"): EventFragment;
134
139
  getEvent(nameOrSignatureOrTopic: "DNSZonehashChanged"): EventFragment;
135
140
  getEvent(nameOrSignatureOrTopic: "InterfaceChanged"): EventFragment;
136
141
  getEvent(nameOrSignatureOrTopic: "NameChanged"): EventFragment;
137
142
  getEvent(nameOrSignatureOrTopic: "PubkeyChanged"): EventFragment;
138
143
  getEvent(nameOrSignatureOrTopic: "TextChanged"): EventFragment;
144
+ getEvent(nameOrSignatureOrTopic: "VersionChanged"): EventFragment;
139
145
  }
140
146
  export interface ABIChangedEventObject {
141
147
  node: string;
@@ -210,13 +216,6 @@ export declare type DNSRecordDeletedEvent = TypedEvent<[
210
216
  number
211
217
  ], DNSRecordDeletedEventObject>;
212
218
  export declare type DNSRecordDeletedEventFilter = TypedEventFilter<DNSRecordDeletedEvent>;
213
- export interface DNSZoneClearedEventObject {
214
- node: string;
215
- }
216
- export declare type DNSZoneClearedEvent = TypedEvent<[
217
- string
218
- ], DNSZoneClearedEventObject>;
219
- export declare type DNSZoneClearedEventFilter = TypedEventFilter<DNSZoneClearedEvent>;
220
219
  export interface DNSZonehashChangedEventObject {
221
220
  node: string;
222
221
  lastzonehash: string;
@@ -263,13 +262,24 @@ export interface TextChangedEventObject {
263
262
  node: string;
264
263
  indexedKey: string;
265
264
  key: string;
265
+ value: string;
266
266
  }
267
267
  export declare type TextChangedEvent = TypedEvent<[
268
+ string,
268
269
  string,
269
270
  string,
270
271
  string
271
272
  ], TextChangedEventObject>;
272
273
  export declare type TextChangedEventFilter = TypedEventFilter<TextChangedEvent>;
274
+ export interface VersionChangedEventObject {
275
+ node: string;
276
+ newVersion: BigNumber;
277
+ }
278
+ export declare type VersionChangedEvent = TypedEvent<[
279
+ string,
280
+ BigNumber
281
+ ], VersionChangedEventObject>;
282
+ export declare type VersionChangedEventFilter = TypedEventFilter<VersionChangedEvent>;
273
283
  export interface PublicResolver extends BaseContract {
274
284
  connect(signerOrProvider: Signer | Provider | string): this;
275
285
  attach(addressOrName: string): this;
@@ -288,7 +298,7 @@ export interface PublicResolver extends BaseContract {
288
298
  ABI(node: PromiseOrValue<BytesLike>, contentTypes: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, string]>;
289
299
  "addr(bytes32)"(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
290
300
  "addr(bytes32,uint256)"(node: PromiseOrValue<BytesLike>, coinType: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
291
- clearDNSZone(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
301
+ clearRecords(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
292
302
  from?: PromiseOrValue<string>;
293
303
  }): Promise<ContractTransaction>;
294
304
  contenthash(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
@@ -299,11 +309,15 @@ export interface PublicResolver extends BaseContract {
299
309
  multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
300
310
  from?: PromiseOrValue<string>;
301
311
  }): Promise<ContractTransaction>;
312
+ multicallWithNodeCheck(nodehash: PromiseOrValue<BytesLike>, data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
313
+ from?: PromiseOrValue<string>;
314
+ }): Promise<ContractTransaction>;
302
315
  name(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
303
316
  pubkey(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string, string] & {
304
317
  x: string;
305
318
  y: string;
306
319
  }>;
320
+ recordVersions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[BigNumber]>;
307
321
  setABI(node: PromiseOrValue<BytesLike>, contentType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
308
322
  from?: PromiseOrValue<string>;
309
323
  }): Promise<ContractTransaction>;
@@ -344,7 +358,7 @@ export interface PublicResolver extends BaseContract {
344
358
  ABI(node: PromiseOrValue<BytesLike>, contentTypes: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, string]>;
345
359
  "addr(bytes32)"(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
346
360
  "addr(bytes32,uint256)"(node: PromiseOrValue<BytesLike>, coinType: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
347
- clearDNSZone(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
361
+ clearRecords(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
348
362
  from?: PromiseOrValue<string>;
349
363
  }): Promise<ContractTransaction>;
350
364
  contenthash(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
@@ -355,11 +369,15 @@ export interface PublicResolver extends BaseContract {
355
369
  multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
356
370
  from?: PromiseOrValue<string>;
357
371
  }): Promise<ContractTransaction>;
372
+ multicallWithNodeCheck(nodehash: PromiseOrValue<BytesLike>, data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
373
+ from?: PromiseOrValue<string>;
374
+ }): Promise<ContractTransaction>;
358
375
  name(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
359
376
  pubkey(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string, string] & {
360
377
  x: string;
361
378
  y: string;
362
379
  }>;
380
+ recordVersions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
363
381
  setABI(node: PromiseOrValue<BytesLike>, contentType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
364
382
  from?: PromiseOrValue<string>;
365
383
  }): Promise<ContractTransaction>;
@@ -400,18 +418,20 @@ export interface PublicResolver extends BaseContract {
400
418
  ABI(node: PromiseOrValue<BytesLike>, contentTypes: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, string]>;
401
419
  "addr(bytes32)"(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
402
420
  "addr(bytes32,uint256)"(node: PromiseOrValue<BytesLike>, coinType: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
403
- clearDNSZone(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
421
+ clearRecords(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
404
422
  contenthash(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
405
423
  dnsRecord(node: PromiseOrValue<BytesLike>, name: PromiseOrValue<BytesLike>, resource: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
406
424
  hasDNSRecords(node: PromiseOrValue<BytesLike>, name: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
407
425
  interfaceImplementer(node: PromiseOrValue<BytesLike>, interfaceID: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
408
426
  isApprovedForAll(account: PromiseOrValue<string>, operator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
409
427
  multicall(data: PromiseOrValue<BytesLike>[], overrides?: CallOverrides): Promise<string[]>;
428
+ multicallWithNodeCheck(nodehash: PromiseOrValue<BytesLike>, data: PromiseOrValue<BytesLike>[], overrides?: CallOverrides): Promise<string[]>;
410
429
  name(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
411
430
  pubkey(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string, string] & {
412
431
  x: string;
413
432
  y: string;
414
433
  }>;
434
+ recordVersions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
415
435
  setABI(node: PromiseOrValue<BytesLike>, contentType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
416
436
  "setAddr(bytes32,uint256,bytes)"(node: PromiseOrValue<BytesLike>, coinType: PromiseOrValue<BigNumberish>, a: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
417
437
  "setAddr(bytes32,address)"(node: PromiseOrValue<BytesLike>, a: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
@@ -442,8 +462,6 @@ export interface PublicResolver extends BaseContract {
442
462
  DNSRecordChanged(node?: PromiseOrValue<BytesLike> | null, name?: null, resource?: null, record?: null): DNSRecordChangedEventFilter;
443
463
  "DNSRecordDeleted(bytes32,bytes,uint16)"(node?: PromiseOrValue<BytesLike> | null, name?: null, resource?: null): DNSRecordDeletedEventFilter;
444
464
  DNSRecordDeleted(node?: PromiseOrValue<BytesLike> | null, name?: null, resource?: null): DNSRecordDeletedEventFilter;
445
- "DNSZoneCleared(bytes32)"(node?: PromiseOrValue<BytesLike> | null): DNSZoneClearedEventFilter;
446
- DNSZoneCleared(node?: PromiseOrValue<BytesLike> | null): DNSZoneClearedEventFilter;
447
465
  "DNSZonehashChanged(bytes32,bytes,bytes)"(node?: PromiseOrValue<BytesLike> | null, lastzonehash?: null, zonehash?: null): DNSZonehashChangedEventFilter;
448
466
  DNSZonehashChanged(node?: PromiseOrValue<BytesLike> | null, lastzonehash?: null, zonehash?: null): DNSZonehashChangedEventFilter;
449
467
  "InterfaceChanged(bytes32,bytes4,address)"(node?: PromiseOrValue<BytesLike> | null, interfaceID?: PromiseOrValue<BytesLike> | null, implementer?: null): InterfaceChangedEventFilter;
@@ -452,14 +470,16 @@ export interface PublicResolver extends BaseContract {
452
470
  NameChanged(node?: PromiseOrValue<BytesLike> | null, name?: null): NameChangedEventFilter;
453
471
  "PubkeyChanged(bytes32,bytes32,bytes32)"(node?: PromiseOrValue<BytesLike> | null, x?: null, y?: null): PubkeyChangedEventFilter;
454
472
  PubkeyChanged(node?: PromiseOrValue<BytesLike> | null, x?: null, y?: null): PubkeyChangedEventFilter;
455
- "TextChanged(bytes32,string,string)"(node?: PromiseOrValue<BytesLike> | null, indexedKey?: PromiseOrValue<string> | null, key?: null): TextChangedEventFilter;
456
- TextChanged(node?: PromiseOrValue<BytesLike> | null, indexedKey?: PromiseOrValue<string> | null, key?: null): TextChangedEventFilter;
473
+ "TextChanged(bytes32,string,string,string)"(node?: PromiseOrValue<BytesLike> | null, indexedKey?: PromiseOrValue<string> | null, key?: null, value?: null): TextChangedEventFilter;
474
+ TextChanged(node?: PromiseOrValue<BytesLike> | null, indexedKey?: PromiseOrValue<string> | null, key?: null, value?: null): TextChangedEventFilter;
475
+ "VersionChanged(bytes32,uint64)"(node?: PromiseOrValue<BytesLike> | null, newVersion?: null): VersionChangedEventFilter;
476
+ VersionChanged(node?: PromiseOrValue<BytesLike> | null, newVersion?: null): VersionChangedEventFilter;
457
477
  };
458
478
  estimateGas: {
459
479
  ABI(node: PromiseOrValue<BytesLike>, contentTypes: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
460
480
  "addr(bytes32)"(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
461
481
  "addr(bytes32,uint256)"(node: PromiseOrValue<BytesLike>, coinType: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
462
- clearDNSZone(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
482
+ clearRecords(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
463
483
  from?: PromiseOrValue<string>;
464
484
  }): Promise<BigNumber>;
465
485
  contenthash(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
@@ -470,8 +490,12 @@ export interface PublicResolver extends BaseContract {
470
490
  multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
471
491
  from?: PromiseOrValue<string>;
472
492
  }): Promise<BigNumber>;
493
+ multicallWithNodeCheck(nodehash: PromiseOrValue<BytesLike>, data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
494
+ from?: PromiseOrValue<string>;
495
+ }): Promise<BigNumber>;
473
496
  name(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
474
497
  pubkey(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
498
+ recordVersions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
475
499
  setABI(node: PromiseOrValue<BytesLike>, contentType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
476
500
  from?: PromiseOrValue<string>;
477
501
  }): Promise<BigNumber>;
@@ -513,7 +537,7 @@ export interface PublicResolver extends BaseContract {
513
537
  ABI(node: PromiseOrValue<BytesLike>, contentTypes: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
514
538
  "addr(bytes32)"(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
515
539
  "addr(bytes32,uint256)"(node: PromiseOrValue<BytesLike>, coinType: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
516
- clearDNSZone(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
540
+ clearRecords(node: PromiseOrValue<BytesLike>, overrides?: Overrides & {
517
541
  from?: PromiseOrValue<string>;
518
542
  }): Promise<PopulatedTransaction>;
519
543
  contenthash(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
@@ -524,8 +548,12 @@ export interface PublicResolver extends BaseContract {
524
548
  multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
525
549
  from?: PromiseOrValue<string>;
526
550
  }): Promise<PopulatedTransaction>;
551
+ multicallWithNodeCheck(nodehash: PromiseOrValue<BytesLike>, data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
552
+ from?: PromiseOrValue<string>;
553
+ }): Promise<PopulatedTransaction>;
527
554
  name(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
528
555
  pubkey(node: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
556
+ recordVersions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
529
557
  setABI(node: PromiseOrValue<BytesLike>, contentType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
530
558
  from?: PromiseOrValue<string>;
531
559
  }): Promise<PopulatedTransaction>;
@@ -59,10 +59,12 @@ export interface ReverseRegistrarInterface extends utils.Interface {
59
59
  decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
60
60
  events: {
61
61
  "ControllerChanged(address,bool)": EventFragment;
62
+ "DefaultResolverChanged(address)": EventFragment;
62
63
  "OwnershipTransferred(address,address)": EventFragment;
63
64
  "ReverseClaimed(address,bytes32)": EventFragment;
64
65
  };
65
66
  getEvent(nameOrSignatureOrTopic: "ControllerChanged"): EventFragment;
67
+ getEvent(nameOrSignatureOrTopic: "DefaultResolverChanged"): EventFragment;
66
68
  getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
67
69
  getEvent(nameOrSignatureOrTopic: "ReverseClaimed"): EventFragment;
68
70
  }
@@ -75,6 +77,13 @@ export declare type ControllerChangedEvent = TypedEvent<[
75
77
  boolean
76
78
  ], ControllerChangedEventObject>;
77
79
  export declare type ControllerChangedEventFilter = TypedEventFilter<ControllerChangedEvent>;
80
+ export interface DefaultResolverChangedEventObject {
81
+ resolver: string;
82
+ }
83
+ export declare type DefaultResolverChangedEvent = TypedEvent<[
84
+ string
85
+ ], DefaultResolverChangedEventObject>;
86
+ export declare type DefaultResolverChangedEventFilter = TypedEventFilter<DefaultResolverChangedEvent>;
78
87
  export interface OwnershipTransferredEventObject {
79
88
  previousOwner: string;
80
89
  newOwner: string;
@@ -192,6 +201,8 @@ export interface ReverseRegistrar extends BaseContract {
192
201
  filters: {
193
202
  "ControllerChanged(address,bool)"(controller?: PromiseOrValue<string> | null, enabled?: null): ControllerChangedEventFilter;
194
203
  ControllerChanged(controller?: PromiseOrValue<string> | null, enabled?: null): ControllerChangedEventFilter;
204
+ "DefaultResolverChanged(address)"(resolver?: PromiseOrValue<string> | null): DefaultResolverChangedEventFilter;
205
+ DefaultResolverChanged(resolver?: PromiseOrValue<string> | null): DefaultResolverChangedEventFilter;
195
206
  "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
196
207
  OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
197
208
  "ReverseClaimed(address,bytes32)"(addr?: PromiseOrValue<string> | null, node?: PromiseOrValue<BytesLike> | null): ReverseClaimedEventFilter;
@@ -10,8 +10,19 @@ export declare class ETHRegistrarController__factory {
10
10
  }[];
11
11
  stateMutability: string;
12
12
  type: string;
13
- anonymous?: undefined;
14
13
  name?: undefined;
14
+ anonymous?: undefined;
15
+ outputs?: undefined;
16
+ } | {
17
+ inputs: {
18
+ internalType: string;
19
+ name: string;
20
+ type: string;
21
+ }[];
22
+ name: string;
23
+ type: string;
24
+ stateMutability?: undefined;
25
+ anonymous?: undefined;
15
26
  outputs?: undefined;
16
27
  } | {
17
28
  anonymous: boolean;
@@ -8,12 +8,13 @@ import type commitName from './functions/commitName';
8
8
  import type createSubname from './functions/createSubname';
9
9
  import type deleteSubname from './functions/deleteSubname';
10
10
  import type registerName from './functions/registerName';
11
- import type renewNames from './functions/renewNames';
11
+ import type { default as renewNames, renewNameWithData } from './functions/renewNames';
12
12
  import type setName from './functions/setName';
13
13
  import type setRecord from './functions/setRecord';
14
14
  import type setRecords from './functions/setRecords';
15
15
  import type setResolver from './functions/setResolver';
16
16
  import type transferName from './functions/transferName';
17
+ import type transferController from './functions/transferController';
17
18
  import type transferSubname from './functions/transferSubname';
18
19
  import type unwrapName from './functions/unwrapName';
19
20
  import type wrapName from './functions/wrapName';
@@ -225,7 +226,7 @@ export declare class ENS {
225
226
  }>;
226
227
  decode: ({ contracts }: ENSArgs<"contracts">, data: string) => Promise<any>;
227
228
  }>;
228
- getFuses: GeneratedRawFunction<{
229
+ getWrapperData: GeneratedRawFunction<{
229
230
  raw: ({ contracts }: ENSArgs<"contracts">, name: string) => Promise<{
230
231
  to: string;
231
232
  data: string;
@@ -443,6 +444,7 @@ export declare class ENS {
443
444
  setRecord: WriteFunction<typeof setRecord>;
444
445
  setResolver: WriteFunction<typeof setResolver>;
445
446
  transferName: WriteFunction<typeof transferName>;
447
+ transferController: WriteFunction<typeof transferController>;
446
448
  wrapName: WriteFunction<typeof wrapName>;
447
449
  unwrapName: WriteFunction<typeof unwrapName>;
448
450
  burnFuses: WriteFunction<typeof burnFuses>;
@@ -452,4 +454,5 @@ export declare class ENS {
452
454
  commitName: WriteFunction<typeof commitName>;
453
455
  registerName: WriteFunction<typeof registerName>;
454
456
  renewNames: WriteFunction<typeof renewNames>;
457
+ renewNameWithData: WriteFunction<typeof renewNameWithData>;
455
458
  }
@@ -21,6 +21,8 @@ declare const fullFuseEnum: {
21
21
  export declare type FuseObj = typeof fuseEnum;
22
22
  export declare type CurrentFuses = {
23
23
  [f in keyof FuseObj]: boolean;
24
+ } & {
25
+ CAN_DO_EVERYTHING: boolean;
24
26
  };
25
27
  export declare type UnnamedFuseType = typeof unnamedFuses;
26
28
  export declare type Fuse = keyof FuseObj;
@@ -40,4 +42,15 @@ declare type FusesWithoutDuplicates<A, B = never> = A extends FuseArrayPossibili
40
42
  ] : A : [
41
43
  ];
42
44
  export declare type NamedFusesToBurn = FusesWithoutDuplicates<FuseArrayPossibilities>;
45
+ export declare type FusePropsNamedArray = {
46
+ namedFusesToBurn: NamedFusesToBurn;
47
+ };
48
+ export declare type FusePropsUnnamedArray = {
49
+ unnamedFusesToBurn: UnnamedFuseValues[];
50
+ };
51
+ export declare type FusePropsNumber = {
52
+ fuseNumberToBurn: number;
53
+ };
54
+ export declare type FuseProps = (Partial<FusePropsNamedArray> & FusePropsUnnamedArray) | (FusePropsNamedArray & Partial<FusePropsUnnamedArray>) | FusePropsNumber;
55
+ export declare const validateFuses: (fuses: FuseProps) => number;
43
56
  export default fullFuseEnum;
@@ -4,6 +4,7 @@ declare type RecordItem = {
4
4
  value: string;
5
5
  };
6
6
  export declare type RecordOptions = {
7
+ clearRecords?: boolean;
7
8
  contentHash?: string;
8
9
  texts?: RecordItem[];
9
10
  coinTypes?: RecordItem[];
@@ -1,20 +1,25 @@
1
+ import { BigNumberish } from 'ethers';
1
2
  import type { FuseOptions } from '../@types/FuseOptions';
2
3
  import type { PublicResolver } from '../generated';
3
4
  import { RecordOptions } from './recordHelpers';
4
- export declare type RegistrationParams = {
5
- name: string;
5
+ export declare const MAX_INT_64: bigint;
6
+ export declare type BaseRegistrationParams = {
6
7
  owner: string;
7
8
  duration: number;
8
9
  secret: string;
9
- resolver: PublicResolver;
10
+ resolverAddress?: string;
10
11
  records?: RecordOptions;
11
12
  reverseRecord?: boolean;
12
13
  fuses?: FuseOptions;
13
- wrapperExpiry: number;
14
+ wrapperExpiry?: BigNumberish;
15
+ };
16
+ export declare type RegistrationParams = Omit<BaseRegistrationParams, 'resolverAddress'> & {
17
+ name: string;
18
+ resolver: PublicResolver;
14
19
  };
15
20
  export declare type CommitmentParams = Omit<RegistrationParams, 'secret' | 'wrapperExpiry'> & {
16
21
  secret?: string;
17
- wrapperExpiry?: number;
22
+ wrapperExpiry?: BigNumberish;
18
23
  };
19
24
  export declare type RegistrationTuple = [
20
25
  name: string,
@@ -25,7 +30,7 @@ export declare type RegistrationTuple = [
25
30
  data: string[],
26
31
  reverseRecord: boolean,
27
32
  fuses: string,
28
- wrapperExpiry: number
33
+ wrapperExpiry: BigNumberish
29
34
  ];
30
35
  export declare type CommitmentTuple = [
31
36
  labelhash: string,
@@ -36,12 +41,12 @@ export declare type CommitmentTuple = [
36
41
  secret: string,
37
42
  reverseRecord: boolean,
38
43
  fuses: string,
39
- wrapperExpiry: number
44
+ wrapperExpiry: BigNumberish
40
45
  ];
41
46
  export declare const randomSecret: () => string;
42
47
  export declare const makeCommitmentData: ({ name, owner, duration, resolver, records, reverseRecord, fuses, wrapperExpiry, secret, }: Omit<RegistrationParams, "secret" | "wrapperExpiry"> & {
43
48
  secret?: string | undefined;
44
- wrapperExpiry?: number | undefined;
49
+ wrapperExpiry?: BigNumberish | undefined;
45
50
  } & {
46
51
  secret: string;
47
52
  }) => CommitmentTuple;
@@ -50,5 +55,5 @@ export declare const _makeCommitment: (params: CommitmentTuple) => string;
50
55
  export declare const makeCommitment: ({ secret, ...inputParams }: CommitmentParams) => {
51
56
  secret: string;
52
57
  commitment: string;
53
- wrapperExpiry: number;
58
+ wrapperExpiry: BigNumberish;
54
59
  };
@@ -1,5 +1,6 @@
1
1
  import { BigNumber } from 'ethers';
2
- import { ENSArgs } from '..';
2
+ import { ENSArgs } from '../index';
3
3
  export declare type Expiry = string | number | Date | BigNumber;
4
4
  export declare const MAX_EXPIRY: BigNumber;
5
5
  export declare const makeExpiry: ({ getExpiry }: ENSArgs<'getExpiry'>, name: string, expiry?: Expiry) => Promise<BigNumber>;
6
+ export declare const wrappedLabelLengthCheck: (label: string) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ensdomains/ensjs",
3
- "version": "3.0.0-alpha.21",
3
+ "version": "3.0.0-alpha.23",
4
4
  "description": "ENS javascript library for contract interaction",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.mjs",
@@ -63,12 +63,13 @@
63
63
  },
64
64
  "devDependencies": {
65
65
  "@ensdomains/buffer": "^0.0.13",
66
- "@ensdomains/ens-contracts": "^0.0.12",
67
- "@ensdomains/ens-test-env": "0.2.3",
66
+ "@ensdomains/ens-contracts": "^0.0.14",
67
+ "@ensdomains/ens-test-env": "0.3.0",
68
68
  "@ethersproject/abi": "^5.6.0",
69
69
  "@ethersproject/providers": "^5.6.2",
70
70
  "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers",
71
71
  "@openzeppelin/contracts": "^4.5.0",
72
+ "@openzeppelin/test-helpers": "^0.5.16",
72
73
  "@swc/core": "^1.2.162",
73
74
  "@swc/jest": "^0.2.20",
74
75
  "@typechain/ethers-v5": "^10.1.0",
@@ -101,7 +102,7 @@
101
102
  },
102
103
  "scripts": {
103
104
  "tenv": "ens-test-env -a",
104
- "denv": "pnpm tenv start -ns -nb",
105
+ "denv": "pnpm tenv start -ns -nb --extra-time 11368000",
105
106
  "generate-types": "ts-node scripts/runTypechain.ts",
106
107
  "generate-abis": "hardhat export-abi",
107
108
  "start": "ts-node --files src/index.test.ts",
@@ -35,7 +35,7 @@ describe('burnFuses', () => {
35
35
  await tx.wait()
36
36
 
37
37
  const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
38
- const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
38
+ const [, fuses] = await nameWrapper.getData(namehash('wrapped.eth'))
39
39
  expect(fuses).toBe(113)
40
40
  })
41
41
  it('should return a burnFuses transaction from an unnamed fuse array and succeed', async () => {
@@ -54,7 +54,7 @@ describe('burnFuses', () => {
54
54
  await tx.wait()
55
55
 
56
56
  const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
57
- const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
57
+ const [, fuses] = await nameWrapper.getData(namehash('wrapped.eth'))
58
58
  expect(fuses).toBe(961)
59
59
  })
60
60
  it('should return a burnFuses transaction from both an unnamed and named fuse array and succeed', async () => {
@@ -71,7 +71,7 @@ describe('burnFuses', () => {
71
71
  await tx.wait()
72
72
 
73
73
  const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
74
- const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
74
+ const [, fuses] = await nameWrapper.getData(namehash('wrapped.eth'))
75
75
  expect(fuses).toBe(1009)
76
76
  })
77
77
  it('should throw an error when trying to burn a named fuse in an unnamed fuse array', async () => {
@@ -107,7 +107,7 @@ describe('burnFuses', () => {
107
107
  await tx.wait()
108
108
 
109
109
  const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
110
- const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
110
+ const [, fuses] = await nameWrapper.getData(namehash('wrapped.eth'))
111
111
  expect(fuses).toBe(113)
112
112
  })
113
113
  it('should throw an error if the number is too high', async () => {
@@ -1,76 +1,13 @@
1
1
  import { ENSArgs } from '..'
2
- import {
3
- fuseEnum,
4
- NamedFusesToBurn,
5
- unnamedFuses,
6
- UnnamedFuseValues,
7
- } from '../utils/fuses'
2
+ import { FuseProps, validateFuses } from '../utils/fuses'
8
3
  import { namehash } from '../utils/normalise'
9
4
 
10
- export type FusePropsNamedArray = {
11
- namedFusesToBurn: NamedFusesToBurn
12
- }
13
-
14
- export type FusePropsUnnamedArray = {
15
- unnamedFusesToBurn: UnnamedFuseValues[]
16
- }
17
-
18
- export type FusePropsNumber = {
19
- fuseNumberToBurn: number
20
- }
21
-
22
- export type FuseProps =
23
- | (Partial<FusePropsNamedArray> & FusePropsUnnamedArray)
24
- | (FusePropsNamedArray & Partial<FusePropsUnnamedArray>)
25
- | FusePropsNumber
26
-
27
5
  export default async function (
28
6
  { contracts, signer }: ENSArgs<'contracts' | 'signer'>,
29
7
  name: string,
30
8
  props: FuseProps,
31
9
  ) {
32
- const isNumber = 'fuseNumberToBurn' in props
33
- const hasNamedArray = 'namedFusesToBurn' in props
34
- const hasUnnamedArray = 'unnamedFusesToBurn' in props
35
-
36
- let encodedFuses: number = 0
37
-
38
- if (isNumber) {
39
- if (props.fuseNumberToBurn > 2 ** 32 || props.fuseNumberToBurn < 1) {
40
- throw new Error(
41
- `Fuse number must be limited to uint32, ${
42
- props.fuseNumberToBurn
43
- } was too ${props.fuseNumberToBurn < 1 ? 'low' : 'high'}.`,
44
- )
45
- } else if (props.fuseNumberToBurn % 1 !== 0) {
46
- throw new Error(
47
- `Fuse number must be an integer, ${props.fuseNumberToBurn} was not.`,
48
- )
49
- }
50
- encodedFuses = props.fuseNumberToBurn
51
- } else {
52
- if (!hasNamedArray && !hasUnnamedArray) {
53
- throw new Error('Please provide fuses to burn')
54
- }
55
- if (hasNamedArray) {
56
- for (const fuse of props.namedFusesToBurn!) {
57
- if (!(fuse in fuseEnum)) {
58
- throw new Error(`${fuse} is not a valid named fuse.`)
59
- }
60
- encodedFuses |= fuseEnum[fuse]
61
- }
62
- }
63
- if (hasUnnamedArray) {
64
- for (const fuse of props.unnamedFusesToBurn!) {
65
- if (!unnamedFuses.includes(fuse)) {
66
- throw new Error(
67
- `${fuse} is not a valid unnamed fuse. If you are trying to burn a named fuse, use the namedFusesToBurn property.`,
68
- )
69
- }
70
- encodedFuses |= fuse
71
- }
72
- }
73
- }
10
+ const encodedFuses = validateFuses(props)
74
11
 
75
12
  const nameWrapper = (await contracts!.getNameWrapper()!).connect(signer)
76
13
  const hash = namehash(name)
@@ -1,5 +1,6 @@
1
1
  import { ENSArgs } from '..'
2
2
  import { CommitmentParams, makeCommitment } from '../utils/registerHelpers'
3
+ import { wrappedLabelLengthCheck } from '../utils/wrapper'
3
4
 
4
5
  type Params = Omit<CommitmentParams, 'resolver' | 'name'> & {
5
6
  resolverAddress?: string
@@ -14,6 +15,8 @@ export default async function (
14
15
  if (labels.length !== 2 || labels[1] !== 'eth')
15
16
  throw new Error('Currently only .eth TLD registrations are supported')
16
17
 
18
+ wrappedLabelLengthCheck(labels[0])
19
+
17
20
  const controller = await contracts!.getEthRegistrarController()
18
21
  const resolver = await contracts!.getPublicResolver(
19
22
  undefined,