@ensdomains/ensjs 3.0.0-alpha.20 → 3.0.0-alpha.22

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 (66) hide show
  1. package/dist/cjs/{functions/renewName.js → contracts/bulkRenewal.js} +6 -14
  2. package/dist/cjs/contracts/getContractAddress.js +2 -1
  3. package/dist/cjs/contracts/index.js +5 -0
  4. package/dist/cjs/functions/deleteSubname.js +40 -8
  5. package/dist/cjs/functions/getPrice.js +55 -8
  6. package/dist/cjs/functions/getSubnames.js +30 -94
  7. package/dist/cjs/functions/renewNames.js +42 -0
  8. package/dist/cjs/generated/BulkRenewal.js +16 -0
  9. package/dist/cjs/generated/factories/BulkRenewal__factory.js +120 -0
  10. package/dist/cjs/generated/factories/index.js +2 -0
  11. package/dist/cjs/generated/index.js +2 -0
  12. package/dist/cjs/index.js +5 -4
  13. package/dist/cjs/utils/registerHelpers.js +2 -1
  14. package/dist/esm/contracts/bulkRenewal.mjs +6 -0
  15. package/dist/esm/contracts/getContractAddress.mjs +2 -1
  16. package/dist/esm/contracts/index.mjs +5 -0
  17. package/dist/esm/functions/deleteSubname.mjs +40 -8
  18. package/dist/esm/functions/getPrice.mjs +56 -9
  19. package/dist/esm/functions/getSubnames.mjs +30 -94
  20. package/dist/esm/functions/renewNames.mjs +23 -0
  21. package/dist/esm/generated/BulkRenewal.mjs +0 -0
  22. package/dist/esm/generated/factories/BulkRenewal__factory.mjs +108 -0
  23. package/dist/esm/generated/factories/index.mjs +2 -0
  24. package/dist/esm/generated/index.mjs +2 -0
  25. package/dist/esm/index.mjs +5 -4
  26. package/dist/esm/utils/registerHelpers.mjs +2 -1
  27. package/dist/types/contracts/bulkRenewal.d.ts +3 -0
  28. package/dist/types/contracts/index.d.ts +1 -0
  29. package/dist/types/contracts/types.d.ts +1 -1
  30. package/dist/types/functions/commitName.d.ts +1 -1
  31. package/dist/types/functions/deleteSubname.d.ts +5 -2
  32. package/dist/types/functions/getPrice.d.ts +2 -2
  33. package/dist/types/functions/getSubnames.d.ts +1 -1
  34. package/dist/types/functions/registerName.d.ts +2 -5
  35. package/dist/types/functions/{renewName.d.ts → renewNames.d.ts} +2 -2
  36. package/dist/types/generated/BulkRenewal.d.ts +76 -0
  37. package/dist/types/generated/factories/BulkRenewal__factory.d.ts +32 -0
  38. package/dist/types/generated/factories/index.d.ts +1 -0
  39. package/dist/types/generated/index.d.ts +2 -0
  40. package/dist/types/index.d.ts +5 -5
  41. package/dist/types/utils/fuses.d.ts +2 -0
  42. package/dist/types/utils/registerHelpers.d.ts +13 -9
  43. package/package.json +1 -1
  44. package/src/contracts/bulkRenewal.ts +6 -0
  45. package/src/contracts/getContractAddress.ts +1 -0
  46. package/src/contracts/index.ts +6 -0
  47. package/src/contracts/types.ts +1 -0
  48. package/src/functions/deleteSubname.ts +51 -11
  49. package/src/functions/getNames.test.ts +10 -1
  50. package/src/functions/getPrice.test.ts +52 -0
  51. package/src/functions/getPrice.ts +61 -9
  52. package/src/functions/getProfile.test.ts +5 -1
  53. package/src/functions/getSubnames.test.ts +669 -29
  54. package/src/functions/getSubnames.ts +39 -98
  55. package/src/functions/registerName.ts +2 -5
  56. package/src/functions/{renewName.test.ts → renewNames.test.ts} +22 -2
  57. package/src/functions/renewNames.ts +30 -0
  58. package/src/generated/BulkRenewal.ts +197 -0
  59. package/src/generated/factories/BulkRenewal__factory.ts +108 -0
  60. package/src/generated/factories/index.ts +1 -0
  61. package/src/generated/index.ts +2 -0
  62. package/src/index.ts +6 -5
  63. package/src/utils/fuses.ts +3 -1
  64. package/src/utils/registerHelpers.ts +18 -9
  65. package/dist/esm/functions/renewName.mjs +0 -14
  66. package/src/functions/renewName.ts +0 -22
@@ -16,18 +16,10 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var renewName_exports = {};
20
- __export(renewName_exports, {
21
- default: () => renewName_default
19
+ var bulkRenewal_exports = {};
20
+ __export(bulkRenewal_exports, {
21
+ default: () => bulkRenewal_default
22
22
  });
23
- module.exports = __toCommonJS(renewName_exports);
24
- async function renewName_default({ contracts }, name, {
25
- duration,
26
- value
27
- }) {
28
- const labels = name.split(".");
29
- if (labels.length !== 2 || labels[1] !== "eth")
30
- throw new Error("Currently only .eth TLD renewals are supported");
31
- const controller = await contracts.getEthRegistrarController();
32
- return controller.populateTransaction.renew(labels[0], duration, { value });
33
- }
23
+ module.exports = __toCommonJS(bulkRenewal_exports);
24
+ var import_BulkRenewal_factory = require("../generated/factories/BulkRenewal__factory");
25
+ var bulkRenewal_default = (provider, address) => import_BulkRenewal_factory.BulkRenewal__factory.connect(address, provider);
@@ -51,7 +51,8 @@ const addresses = {
51
51
  UniversalResolver: {
52
52
  "1": "0x580AF46E06DaaD47eb5940526FD64d95b815Cb70",
53
53
  "4": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376"
54
- }
54
+ },
55
+ BulkRenewal: "0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035"
55
56
  };
56
57
  const getContractAddress = (networkId) => (contractName) => {
57
58
  try {
@@ -35,6 +35,7 @@ var import_publicResolver = __toESM(require("./publicResolver"));
35
35
  var import_registry = __toESM(require("./registry"));
36
36
  var import_reverseRegistrar = __toESM(require("./reverseRegistrar"));
37
37
  var import_universalResolver = __toESM(require("./universalResolver"));
38
+ var import_bulkRenewal = __toESM(require("./bulkRenewal"));
38
39
  class ContractManager {
39
40
  provider;
40
41
  fetchAddress;
@@ -78,4 +79,8 @@ class ContractManager {
78
79
  import_ethRegistrarController.default
79
80
  );
80
81
  getMulticall = this.generateContractGetter("Multicall", import_multicall.default);
82
+ getBulkRenewal = this.generateContractGetter(
83
+ "BulkRenewal",
84
+ import_bulkRenewal.default
85
+ );
81
86
  }
@@ -21,12 +21,44 @@ __export(deleteSubname_exports, {
21
21
  default: () => deleteSubname_default
22
22
  });
23
23
  module.exports = __toCommonJS(deleteSubname_exports);
24
- async function deleteSubname_default({ transferSubname, signer }, name, {
25
- contract
26
- }) {
27
- return transferSubname.populateTransaction(name, {
28
- contract,
29
- owner: "0x0000000000000000000000000000000000000000",
30
- signer
31
- });
24
+ var import_ethers = require("ethers");
25
+ var import_normalise = require("../utils/normalise");
26
+ async function deleteSubname_default({ contracts, signer }, name, { contract }) {
27
+ const labels = name.split(".");
28
+ if (labels.length !== 3) {
29
+ throw new Error("ENS.js currently only supports deleting 2LDs, not TLDs");
30
+ }
31
+ if (labels[2] !== "eth") {
32
+ throw new Error("ENS.js currently only supports deleting .eth 2LDs");
33
+ }
34
+ const label = labels.shift();
35
+ const labelhash = import_ethers.ethers.utils.solidityKeccak256(["string"], [label]);
36
+ const parentNodehash = (0, import_normalise.namehash)(labels.join("."));
37
+ switch (contract) {
38
+ case "registry": {
39
+ const registry = (await contracts.getRegistry()).connect(signer);
40
+ return registry.populateTransaction.setSubnodeRecord(
41
+ parentNodehash,
42
+ labelhash,
43
+ "0x0000000000000000000000000000000000000000",
44
+ "0x0000000000000000000000000000000000000000",
45
+ 0
46
+ );
47
+ }
48
+ case "nameWrapper": {
49
+ const nameWrapper = (await contracts.getNameWrapper()).connect(signer);
50
+ return nameWrapper.populateTransaction.setSubnodeRecord(
51
+ parentNodehash,
52
+ label,
53
+ "0x0000000000000000000000000000000000000000",
54
+ "0x0000000000000000000000000000000000000000",
55
+ 0,
56
+ 0,
57
+ 0
58
+ );
59
+ }
60
+ default: {
61
+ throw new Error(`Unknown contract: ${contract}`);
62
+ }
63
+ }
32
64
  }
@@ -22,12 +22,36 @@ __export(getPrice_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(getPrice_exports);
24
24
  var import_ethers = require("ethers");
25
- const raw = async ({ contracts, multicallWrapper }, name, duration, legacy) => {
25
+ const raw = async ({ contracts, multicallWrapper }, nameOrNames, duration, legacy) => {
26
+ const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];
27
+ if (names.length > 1) {
28
+ const bulkRenewal = await contracts?.getBulkRenewal();
29
+ const baseCall2 = {
30
+ to: bulkRenewal.address,
31
+ data: bulkRenewal.interface.encodeFunctionData("rentPrice", [
32
+ names,
33
+ duration
34
+ ])
35
+ };
36
+ if (legacy) {
37
+ return multicallWrapper.raw([
38
+ baseCall2,
39
+ {
40
+ to: bulkRenewal.address,
41
+ data: bulkRenewal.interface.encodeFunctionData("rentPrice", [
42
+ names,
43
+ 0
44
+ ])
45
+ }
46
+ ]);
47
+ }
48
+ return baseCall2;
49
+ }
26
50
  const controller = await contracts?.getEthRegistrarController();
27
51
  const baseCall = {
28
52
  to: controller.address,
29
53
  data: controller.interface.encodeFunctionData("rentPrice", [
30
- name,
54
+ names[0],
31
55
  duration
32
56
  ])
33
57
  };
@@ -36,20 +60,42 @@ const raw = async ({ contracts, multicallWrapper }, name, duration, legacy) => {
36
60
  baseCall,
37
61
  {
38
62
  to: controller.address,
39
- data: controller.interface.encodeFunctionData("rentPrice", [name, 0])
63
+ data: controller.interface.encodeFunctionData("rentPrice", [
64
+ names[0],
65
+ 0
66
+ ])
40
67
  }
41
68
  ]);
42
69
  }
43
70
  return baseCall;
44
71
  };
45
- const decode = async ({ contracts, multicallWrapper }, data, _name, _number, legacy) => {
72
+ const decode = async ({ contracts, multicallWrapper }, data, _nameOrNames, _duration, legacy) => {
46
73
  if (data === null)
47
74
  return;
48
- const controller = await contracts?.getEthRegistrarController();
49
75
  try {
50
76
  let base;
51
77
  let premium;
52
- if (legacy) {
78
+ const isBulkRenewal = Array.isArray(_nameOrNames) && _nameOrNames.length > 1;
79
+ if (isBulkRenewal && legacy) {
80
+ const result = await multicallWrapper.decode(data);
81
+ const [price] = import_ethers.utils.defaultAbiCoder.decode(
82
+ ["uint256"],
83
+ result[0].returnData
84
+ );
85
+ [premium] = import_ethers.utils.defaultAbiCoder.decode(
86
+ ["uint256"],
87
+ result[1].returnData
88
+ );
89
+ base = price.sub(premium);
90
+ } else if (isBulkRenewal) {
91
+ const bulkRenewal = await contracts?.getBulkRenewal();
92
+ const result = bulkRenewal.interface.decodeFunctionResult(
93
+ "rentPrice",
94
+ data
95
+ );
96
+ [base] = result;
97
+ premium = import_ethers.BigNumber.from(0);
98
+ } else if (!isBulkRenewal && legacy) {
53
99
  const result = await multicallWrapper.decode(data);
54
100
  const [price] = import_ethers.utils.defaultAbiCoder.decode(
55
101
  ["uint256"],
@@ -61,11 +107,12 @@ const decode = async ({ contracts, multicallWrapper }, data, _name, _number, leg
61
107
  );
62
108
  base = price.sub(premium);
63
109
  } else {
64
- ;
65
- [[base, premium]] = controller.interface.decodeFunctionResult(
110
+ const controller = await contracts?.getEthRegistrarController();
111
+ const result = controller.interface.decodeFunctionResult(
66
112
  "rentPrice",
67
113
  data
68
114
  );
115
+ [base, premium] = result[0];
69
116
  }
70
117
  return {
71
118
  base,
@@ -24,15 +24,36 @@ module.exports = __toCommonJS(getSubnames_exports);
24
24
  var import_format = require("../utils/format");
25
25
  var import_labels = require("../utils/labels");
26
26
  var import_normalise = require("../utils/normalise");
27
- const largeQuery = async ({ gqlInstance }, { name, pageSize = 10, orderDirection, orderBy, lastSubnames = [] }) => {
27
+ const largeQuery = async ({ gqlInstance }, {
28
+ name,
29
+ pageSize = 10,
30
+ orderDirection,
31
+ orderBy,
32
+ lastSubnames = [],
33
+ search = ""
34
+ }) => {
28
35
  const { client } = gqlInstance;
36
+ const lastSubname = lastSubnames?.[lastSubnames.length - 1];
37
+ const lastCreatedAt = lastSubname?.createdAt;
38
+ const lastLabelName = lastSubname?.labelName;
39
+ let whereFilter = "";
40
+ if (orderBy === "createdAt" && lastCreatedAt) {
41
+ whereFilter += orderDirection === "asc" ? "createdAt_gt: $lastCreatedAt" : "createdAt_lt: $lastCreatedAt";
42
+ } else if (orderBy === "labelName" && lastLabelName) {
43
+ whereFilter += orderDirection === "asc" ? "labelName_gt: $lastLabelName" : "labelName_lt: $lastLabelName";
44
+ }
45
+ if (search) {
46
+ whereFilter += " labelName_contains: $search";
47
+ }
29
48
  const finalQuery = gqlInstance.gql`
30
49
  query getSubnames(
31
50
  $id: ID!
32
51
  $first: Int
33
52
  $lastCreatedAt: BigInt
53
+ $lastLabelName: String
34
54
  $orderBy: Domain_orderBy
35
55
  $orderDirection: OrderDirection
56
+ $search: String
36
57
  ) {
37
58
  domain(
38
59
  id: $id
@@ -42,7 +63,9 @@ const largeQuery = async ({ gqlInstance }, { name, pageSize = 10, orderDirection
42
63
  first: $first
43
64
  orderBy: $orderBy
44
65
  orderDirection: $orderDirection
45
- where: { createdAt_lt: $lastCreatedAt }
66
+ where: {
67
+ ${whereFilter}
68
+ }
46
69
  ) {
47
70
  id
48
71
  labelName
@@ -61,9 +84,11 @@ const largeQuery = async ({ gqlInstance }, { name, pageSize = 10, orderDirection
61
84
  const queryVars = {
62
85
  id: (0, import_normalise.namehash)(name),
63
86
  first: pageSize,
64
- lastCreatedAt: lastSubnames[lastSubnames.length - 1]?.createdAt,
87
+ lastCreatedAt,
88
+ lastLabelName,
65
89
  orderBy,
66
- orderDirection
90
+ orderDirection,
91
+ search: search?.toLowerCase()
67
92
  };
68
93
  const { domain } = await client.request(finalQuery, queryVars);
69
94
  const subdomains = domain.subdomains.map((subname) => {
@@ -79,96 +104,7 @@ const largeQuery = async ({ gqlInstance }, { name, pageSize = 10, orderDirection
79
104
  subnameCount: domain.subdomainCount
80
105
  };
81
106
  };
82
- const smallQuery = async ({ gqlInstance }, { name, page, pageSize = 10, orderDirection, orderBy }) => {
83
- const { client } = gqlInstance;
84
- const subdomainsGql = `
85
- id
86
- labelName
87
- labelhash
88
- isMigrated
89
- name
90
- subdomainCount
91
- createdAt
92
- owner {
93
- id
94
- }
95
- `;
96
- let queryVars = {};
97
- let finalQuery = "";
98
- if (typeof page !== "number") {
99
- finalQuery = gqlInstance.gql`
100
- query getSubnames(
101
- $id: ID!
102
- $orderBy: Domain_orderBy
103
- $orderDirection: OrderDirection
104
- ) {
105
- domain(
106
- id: $id
107
- ) {
108
- subdomains(
109
- orderBy: $orderBy
110
- orderDirection: $orderDirection
111
- ) {
112
- ${subdomainsGql}
113
- }
114
- }
115
- }
116
- `;
117
- queryVars = {
118
- id: (0, import_normalise.namehash)(name),
119
- orderBy,
120
- orderDirection
121
- };
122
- } else {
123
- finalQuery = gqlInstance.gql`
124
- query getSubnames(
125
- $id: ID!
126
- $first: Int
127
- $skip: Int
128
- $orderBy: Domain_orderBy
129
- $orderDirection: OrderDirection
130
- ) {
131
- domain(
132
- id: $id
133
- ) {
134
- subdomainCount
135
- subdomains(
136
- first: $first
137
- skip: $skip
138
- orderBy: $orderBy
139
- orderDirection: $orderDirection
140
- ) {
141
- ${subdomainsGql}
142
- }
143
- }
144
- }
145
- `;
146
- queryVars = {
147
- id: (0, import_normalise.namehash)(name),
148
- first: pageSize,
149
- skip: (page || 0) * pageSize,
150
- orderBy,
151
- orderDirection
152
- };
153
- }
154
- const { domain } = await client.request(finalQuery, queryVars);
155
- const subdomains = domain.subdomains.map((subname) => {
156
- const decrypted = (0, import_labels.decryptName)(subname.name);
157
- return {
158
- ...subname,
159
- name: decrypted,
160
- truncatedName: (0, import_format.truncateFormat)(decrypted)
161
- };
162
- });
163
- return {
164
- subnames: subdomains,
165
- subnameCount: domain.subdomainCount
166
- };
167
- };
168
107
  const getSubnames = (injected, functionArgs) => {
169
- if (functionArgs.isLargeQuery) {
170
- return largeQuery(injected, functionArgs);
171
- }
172
- return smallQuery(injected, functionArgs);
108
+ return largeQuery(injected, functionArgs);
173
109
  };
174
110
  var getSubnames_default = getSubnames;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var renewNames_exports = {};
20
+ __export(renewNames_exports, {
21
+ default: () => renewNames_default
22
+ });
23
+ module.exports = __toCommonJS(renewNames_exports);
24
+ async function renewNames_default({ contracts }, nameOrNames, {
25
+ duration,
26
+ value
27
+ }) {
28
+ const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];
29
+ const labels = names.map((name) => {
30
+ const label = name.split(".");
31
+ if (label.length !== 2 || label[1] !== "eth") {
32
+ throw new Error("Currently only .eth TLD renewals are supported");
33
+ }
34
+ return label[0];
35
+ });
36
+ if (labels.length === 1) {
37
+ const controller = await contracts.getEthRegistrarController();
38
+ return controller.populateTransaction.renew(labels[0], duration, { value });
39
+ }
40
+ const bulkRenewal = await contracts.getBulkRenewal();
41
+ return bulkRenewal.populateTransaction.renewAll(labels, duration, { value });
42
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var BulkRenewal_exports = {};
16
+ module.exports = __toCommonJS(BulkRenewal_exports);
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var BulkRenewal_factory_exports = {};
20
+ __export(BulkRenewal_factory_exports, {
21
+ BulkRenewal__factory: () => BulkRenewal__factory
22
+ });
23
+ module.exports = __toCommonJS(BulkRenewal_factory_exports);
24
+ var import_ethers = require("ethers");
25
+ const _abi = [
26
+ {
27
+ inputs: [
28
+ {
29
+ internalType: "contract ENS",
30
+ name: "_ens",
31
+ type: "address"
32
+ }
33
+ ],
34
+ stateMutability: "nonpayable",
35
+ type: "constructor"
36
+ },
37
+ {
38
+ inputs: [],
39
+ name: "ens",
40
+ outputs: [
41
+ {
42
+ internalType: "contract ENS",
43
+ name: "",
44
+ type: "address"
45
+ }
46
+ ],
47
+ stateMutability: "view",
48
+ type: "function"
49
+ },
50
+ {
51
+ inputs: [
52
+ {
53
+ internalType: "string[]",
54
+ name: "names",
55
+ type: "string[]"
56
+ },
57
+ {
58
+ internalType: "uint256",
59
+ name: "duration",
60
+ type: "uint256"
61
+ }
62
+ ],
63
+ name: "renewAll",
64
+ outputs: [],
65
+ stateMutability: "payable",
66
+ type: "function"
67
+ },
68
+ {
69
+ inputs: [
70
+ {
71
+ internalType: "string[]",
72
+ name: "names",
73
+ type: "string[]"
74
+ },
75
+ {
76
+ internalType: "uint256",
77
+ name: "duration",
78
+ type: "uint256"
79
+ }
80
+ ],
81
+ name: "rentPrice",
82
+ outputs: [
83
+ {
84
+ internalType: "uint256",
85
+ name: "total",
86
+ type: "uint256"
87
+ }
88
+ ],
89
+ stateMutability: "view",
90
+ type: "function"
91
+ },
92
+ {
93
+ inputs: [
94
+ {
95
+ internalType: "bytes4",
96
+ name: "interfaceID",
97
+ type: "bytes4"
98
+ }
99
+ ],
100
+ name: "supportsInterface",
101
+ outputs: [
102
+ {
103
+ internalType: "bool",
104
+ name: "",
105
+ type: "bool"
106
+ }
107
+ ],
108
+ stateMutability: "pure",
109
+ type: "function"
110
+ }
111
+ ];
112
+ class BulkRenewal__factory {
113
+ static abi = _abi;
114
+ static createInterface() {
115
+ return new import_ethers.utils.Interface(_abi);
116
+ }
117
+ static connect(address, signerOrProvider) {
118
+ return new import_ethers.Contract(address, _abi, signerOrProvider);
119
+ }
120
+ }
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var factories_exports = {};
20
20
  __export(factories_exports, {
21
21
  BaseRegistrarImplementation__factory: () => import_BaseRegistrarImplementation_factory.BaseRegistrarImplementation__factory,
22
+ BulkRenewal__factory: () => import_BulkRenewal_factory.BulkRenewal__factory,
22
23
  DNSRegistrar__factory: () => import_DNSRegistrar_factory.DNSRegistrar__factory,
23
24
  DNSSECImpl__factory: () => import_DNSSECImpl_factory.DNSSECImpl__factory,
24
25
  DefaultReverseResolver__factory: () => import_DefaultReverseResolver_factory.DefaultReverseResolver__factory,
@@ -41,6 +42,7 @@ __export(factories_exports, {
41
42
  });
42
43
  module.exports = __toCommonJS(factories_exports);
43
44
  var import_BaseRegistrarImplementation_factory = require("./BaseRegistrarImplementation__factory");
45
+ var import_BulkRenewal_factory = require("./BulkRenewal__factory");
44
46
  var import_DNSRegistrar_factory = require("./DNSRegistrar__factory");
45
47
  var import_DNSSECImpl_factory = require("./DNSSECImpl__factory");
46
48
  var import_DefaultReverseResolver_factory = require("./DefaultReverseResolver__factory");
@@ -25,6 +25,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
25
25
  var generated_exports = {};
26
26
  __export(generated_exports, {
27
27
  BaseRegistrarImplementation__factory: () => import_BaseRegistrarImplementation_factory.BaseRegistrarImplementation__factory,
28
+ BulkRenewal__factory: () => import_BulkRenewal_factory.BulkRenewal__factory,
28
29
  DNSRegistrar__factory: () => import_DNSRegistrar_factory.DNSRegistrar__factory,
29
30
  DNSSECImpl__factory: () => import_DNSSECImpl_factory.DNSSECImpl__factory,
30
31
  DefaultReverseResolver__factory: () => import_DefaultReverseResolver_factory.DefaultReverseResolver__factory,
@@ -68,3 +69,4 @@ var import_Multicall_factory = require("./factories/Multicall__factory");
68
69
  var import_NameWrapper_factory = require("./factories/NameWrapper__factory");
69
70
  var import_StaticMetadataService_factory = require("./factories/StaticMetadataService__factory");
70
71
  var import_UniversalResolver_factory = require("./factories/UniversalResolver__factory");
72
+ var import_BulkRenewal_factory = require("./factories/BulkRenewal__factory");
package/dist/cjs/index.js CHANGED
@@ -308,7 +308,7 @@ class ENS {
308
308
  );
309
309
  deleteSubname = this.generateWriteFunction(
310
310
  "deleteSubname",
311
- ["transferSubname"]
311
+ ["contracts"]
312
312
  );
313
313
  transferSubname = this.generateWriteFunction(
314
314
  "transferSubname",
@@ -322,7 +322,8 @@ class ENS {
322
322
  "registerName",
323
323
  ["contracts"]
324
324
  );
325
- renewName = this.generateWriteFunction("renewName", [
326
- "contracts"
327
- ]);
325
+ renewNames = this.generateWriteFunction(
326
+ "renewNames",
327
+ ["contracts"]
328
+ );
328
329
  }
@@ -36,6 +36,7 @@ var import_generateFuseInput = __toESM(require("./generateFuseInput"));
36
36
  var import_labels = require("./labels");
37
37
  var import_normalise = require("./normalise");
38
38
  var import_recordHelpers = require("./recordHelpers");
39
+ const MAX_INT_64 = 2n ** 64n - 1n;
39
40
  const randomSecret = () => {
40
41
  const bytes = Buffer.allocUnsafe(32);
41
42
  return `0x${crypto.getRandomValues(bytes).toString("hex")}`;
@@ -74,7 +75,7 @@ const makeCommitmentData = ({
74
75
  secret,
75
76
  !!reverseRecord,
76
77
  fuseData,
77
- wrapperExpiry || Math.floor(Date.now() / 1e3) + duration
78
+ wrapperExpiry || MAX_INT_64
78
79
  ];
79
80
  };
80
81
  const makeRegistrationData = (params) => {
@@ -0,0 +1,6 @@
1
+ // src/contracts/bulkRenewal.ts
2
+ import { BulkRenewal__factory } from "../generated/factories/BulkRenewal__factory.mjs";
3
+ var bulkRenewal_default = (provider, address) => BulkRenewal__factory.connect(address, provider);
4
+ export {
5
+ bulkRenewal_default as default
6
+ };
@@ -29,7 +29,8 @@ var addresses = {
29
29
  UniversalResolver: {
30
30
  "1": "0x580AF46E06DaaD47eb5940526FD64d95b815Cb70",
31
31
  "4": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376"
32
- }
32
+ },
33
+ BulkRenewal: "0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035"
33
34
  };
34
35
  var getContractAddress = (networkId) => (contractName) => {
35
36
  try {
@@ -7,6 +7,7 @@ import getPublicResolver from "./publicResolver.mjs";
7
7
  import getRegistry from "./registry.mjs";
8
8
  import getReverseRegistrar from "./reverseRegistrar.mjs";
9
9
  import getUniversalResolver from "./universalResolver.mjs";
10
+ import getBulkRenewal from "./bulkRenewal.mjs";
10
11
  var ContractManager = class {
11
12
  provider;
12
13
  fetchAddress;
@@ -50,6 +51,10 @@ var ContractManager = class {
50
51
  getEthRegistrarController
51
52
  );
52
53
  getMulticall = this.generateContractGetter("Multicall", getMulticall);
54
+ getBulkRenewal = this.generateContractGetter(
55
+ "BulkRenewal",
56
+ getBulkRenewal
57
+ );
53
58
  };
54
59
  export {
55
60
  ContractManager as default