@ensdomains/ensjs 3.0.0-alpha.24 → 3.0.0-alpha.25

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.
@@ -0,0 +1,25 @@
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 dnsRegistrar_exports = {};
20
+ __export(dnsRegistrar_exports, {
21
+ default: () => dnsRegistrar_default
22
+ });
23
+ module.exports = __toCommonJS(dnsRegistrar_exports);
24
+ var import_DNSRegistrar_factory = require("../generated/factories/DNSRegistrar__factory");
25
+ var dnsRegistrar_default = (provider, address) => import_DNSRegistrar_factory.DNSRegistrar__factory.connect(address, provider);
@@ -28,6 +28,11 @@ const addresses = {
28
28
  "4": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85",
29
29
  "5": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85"
30
30
  },
31
+ DNSRegistrar: {
32
+ "1": "0x58774Bb8acD458A640aF0B88238369A167546ef2",
33
+ "3": "0xdB328BA5FEcb432AF325Ca59E3778441eF5aa14F",
34
+ "5": "0x8edc487D26F6c8Fa76e032066A3D4F87E273515d"
35
+ },
31
36
  ETHRegistrarController: {
32
37
  "1": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
33
38
  "3": "0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8",
@@ -31,6 +31,7 @@ var import_baseRegistrar = __toESM(require("./baseRegistrar"));
31
31
  var import_ethRegistrarController = __toESM(require("./ethRegistrarController"));
32
32
  var import_multicall = __toESM(require("./multicall"));
33
33
  var import_nameWrapper = __toESM(require("./nameWrapper"));
34
+ var import_dnsRegistrar = __toESM(require("./dnsRegistrar"));
34
35
  var import_publicResolver = __toESM(require("./publicResolver"));
35
36
  var import_registry = __toESM(require("./registry"));
36
37
  var import_reverseRegistrar = __toESM(require("./reverseRegistrar"));
@@ -70,6 +71,10 @@ class ContractManager {
70
71
  "NameWrapper",
71
72
  import_nameWrapper.default
72
73
  );
74
+ getDNSRegistrar = this.generateContractGetter(
75
+ "DNSRegistrar",
76
+ import_dnsRegistrar.default
77
+ );
73
78
  getBaseRegistrar = this.generateContractGetter(
74
79
  "BaseRegistrarImplementation",
75
80
  import_baseRegistrar.default
@@ -94,8 +94,8 @@ const multicallWrapper = {
94
94
  data
95
95
  );
96
96
  return result;
97
- } catch {
98
- return;
97
+ } catch (e) {
98
+ return e;
99
99
  }
100
100
  }
101
101
  };
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var importDNSSECName_exports = {};
26
+ __export(importDNSSECName_exports, {
27
+ DNS_OVER_HTTP_ENDPOINT: () => DNS_OVER_HTTP_ENDPOINT,
28
+ default: () => importDNSSECName_default
29
+ });
30
+ module.exports = __toCommonJS(importDNSSECName_exports);
31
+ var import_dnssecoraclejs = require("@ensdomains/dnssecoraclejs");
32
+ var import_dns_packet = __toESM(require("dns-packet"));
33
+ var import_consts = require("../utils/consts");
34
+ const DNS_OVER_HTTP_ENDPOINT = "https://1.1.1.1/dns-query";
35
+ async function importDNSSECName_default({ contracts, provider }, name, { address, proverResult }) {
36
+ const dnsRegistrarContract = await contracts?.getDNSRegistrar();
37
+ const resolverContract = await contracts?.getPublicResolver();
38
+ const registrarOracle = await dnsRegistrarContract?.oracle();
39
+ if (!registrarOracle) {
40
+ throw new Error("No oracle found");
41
+ }
42
+ const oracle = new import_dnssecoraclejs.Oracle(registrarOracle, provider);
43
+ const proofData = await oracle.getProofData(proverResult);
44
+ const encodedName = `0x${import_dns_packet.default.name.encode(name).toString("hex")}`;
45
+ const data = proofData.rrsets.map(
46
+ (x) => Object.values(x)
47
+ );
48
+ const { proof } = proofData;
49
+ if (address === import_consts.EMPTY_ADDRESS) {
50
+ return dnsRegistrarContract?.populateTransaction.proveAndClaim(
51
+ encodedName,
52
+ data,
53
+ proof
54
+ );
55
+ }
56
+ if (address) {
57
+ return dnsRegistrarContract?.populateTransaction.proveAndClaimWithResolver(
58
+ encodedName,
59
+ data,
60
+ proof,
61
+ resolverContract.address,
62
+ address
63
+ );
64
+ }
65
+ }
package/dist/cjs/index.js CHANGED
@@ -304,6 +304,10 @@ class ENS {
304
304
  burnFuses = this.generateWriteFunction("burnFuses", [
305
305
  "contracts"
306
306
  ]);
307
+ importDNSSECName = this.generateWriteFunction(
308
+ "importDNSSECName",
309
+ ["contracts", "provider", "signer"]
310
+ );
307
311
  createSubname = this.generateWriteFunction(
308
312
  "createSubname",
309
313
  ["contracts", "getExpiry"]
@@ -0,0 +1,24 @@
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 consts_exports = {};
20
+ __export(consts_exports, {
21
+ EMPTY_ADDRESS: () => EMPTY_ADDRESS
22
+ });
23
+ module.exports = __toCommonJS(consts_exports);
24
+ const EMPTY_ADDRESS = "0x0000000000000000000000000000000000000000";
@@ -0,0 +1,6 @@
1
+ // src/contracts/dnsRegistrar.ts
2
+ import { DNSRegistrar__factory } from "../generated/factories/DNSRegistrar__factory.mjs";
3
+ var dnsRegistrar_default = (provider, address) => DNSRegistrar__factory.connect(address, provider);
4
+ export {
5
+ dnsRegistrar_default as default
6
+ };
@@ -6,6 +6,11 @@ var addresses = {
6
6
  "4": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85",
7
7
  "5": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85"
8
8
  },
9
+ DNSRegistrar: {
10
+ "1": "0x58774Bb8acD458A640aF0B88238369A167546ef2",
11
+ "3": "0xdB328BA5FEcb432AF325Ca59E3778441eF5aa14F",
12
+ "5": "0x8edc487D26F6c8Fa76e032066A3D4F87E273515d"
13
+ },
9
14
  ETHRegistrarController: {
10
15
  "1": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
11
16
  "3": "0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8",
@@ -3,6 +3,7 @@ import getBaseRegistrar from "./baseRegistrar.mjs";
3
3
  import getEthRegistrarController from "./ethRegistrarController.mjs";
4
4
  import getMulticall from "./multicall.mjs";
5
5
  import getNameWrapper from "./nameWrapper.mjs";
6
+ import getDNSRegistrar from "./dnsRegistrar.mjs";
6
7
  import getPublicResolver from "./publicResolver.mjs";
7
8
  import getRegistry from "./registry.mjs";
8
9
  import getReverseRegistrar from "./reverseRegistrar.mjs";
@@ -42,6 +43,10 @@ var ContractManager = class {
42
43
  "NameWrapper",
43
44
  getNameWrapper
44
45
  );
46
+ getDNSRegistrar = this.generateContractGetter(
47
+ "DNSRegistrar",
48
+ getDNSRegistrar
49
+ );
45
50
  getBaseRegistrar = this.generateContractGetter(
46
51
  "BaseRegistrarImplementation",
47
52
  getBaseRegistrar
@@ -70,8 +70,8 @@ var multicallWrapper = {
70
70
  data
71
71
  );
72
72
  return result;
73
- } catch {
74
- return;
73
+ } catch (e) {
74
+ return e;
75
75
  }
76
76
  }
77
77
  };
@@ -0,0 +1,40 @@
1
+ // src/functions/importDNSSECName.ts
2
+ import { Oracle as NewOracle } from "@ensdomains/dnssecoraclejs";
3
+ import packet from "dns-packet";
4
+ import { EMPTY_ADDRESS } from "../utils/consts.mjs";
5
+ var DNS_OVER_HTTP_ENDPOINT = "https://1.1.1.1/dns-query";
6
+ async function importDNSSECName_default({ contracts, provider }, name, { address, proverResult }) {
7
+ const dnsRegistrarContract = await contracts?.getDNSRegistrar();
8
+ const resolverContract = await contracts?.getPublicResolver();
9
+ const registrarOracle = await dnsRegistrarContract?.oracle();
10
+ if (!registrarOracle) {
11
+ throw new Error("No oracle found");
12
+ }
13
+ const oracle = new NewOracle(registrarOracle, provider);
14
+ const proofData = await oracle.getProofData(proverResult);
15
+ const encodedName = `0x${packet.name.encode(name).toString("hex")}`;
16
+ const data = proofData.rrsets.map(
17
+ (x) => Object.values(x)
18
+ );
19
+ const { proof } = proofData;
20
+ if (address === EMPTY_ADDRESS) {
21
+ return dnsRegistrarContract?.populateTransaction.proveAndClaim(
22
+ encodedName,
23
+ data,
24
+ proof
25
+ );
26
+ }
27
+ if (address) {
28
+ return dnsRegistrarContract?.populateTransaction.proveAndClaimWithResolver(
29
+ encodedName,
30
+ data,
31
+ proof,
32
+ resolverContract.address,
33
+ address
34
+ );
35
+ }
36
+ }
37
+ export {
38
+ DNS_OVER_HTTP_ENDPOINT,
39
+ importDNSSECName_default as default
40
+ };
@@ -276,6 +276,10 @@ var ENS = class {
276
276
  burnFuses = this.generateWriteFunction("burnFuses", [
277
277
  "contracts"
278
278
  ]);
279
+ importDNSSECName = this.generateWriteFunction(
280
+ "importDNSSECName",
281
+ ["contracts", "provider", "signer"]
282
+ );
279
283
  createSubname = this.generateWriteFunction(
280
284
  "createSubname",
281
285
  ["contracts", "getExpiry"]
@@ -0,0 +1,5 @@
1
+ // src/utils/consts.ts
2
+ var EMPTY_ADDRESS = "0x0000000000000000000000000000000000000000";
3
+ export {
4
+ EMPTY_ADDRESS
5
+ };
@@ -0,0 +1,3 @@
1
+ import { ethers } from 'ethers';
2
+ declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated/DNSRegistrar").DNSRegistrar;
3
+ export default _default;
@@ -10,6 +10,7 @@ export default class ContractManager {
10
10
  getRegistry: (passedProvider?: any, address?: string) => Promise<import("../generated/ENSRegistry").ENSRegistry>;
11
11
  getReverseRegistrar: (passedProvider?: any, address?: string) => Promise<import("../generated/ReverseRegistrar").ReverseRegistrar>;
12
12
  getNameWrapper: (passedProvider?: any, address?: string) => Promise<import("../generated/NameWrapper").NameWrapper>;
13
+ getDNSRegistrar: (passedProvider?: any, address?: string) => Promise<import("../generated/DNSRegistrar").DNSRegistrar>;
13
14
  getBaseRegistrar: (passedProvider?: any, address?: string) => Promise<import("../generated/BaseRegistrarImplementation").BaseRegistrarImplementation>;
14
15
  getEthRegistrarController: (passedProvider?: any, address?: string) => Promise<import("../generated/ETHRegistrarController").ETHRegistrarController>;
15
16
  getMulticall: (passedProvider?: any, address?: string) => Promise<import("../generated/Multicall").Multicall>;
@@ -1,2 +1,2 @@
1
1
  export declare type SupportedNetworkId = '1' | '3' | '4' | '5' | '1337';
2
- export declare type ContractName = 'BaseRegistrarImplementation' | 'ETHRegistrarController' | 'Multicall' | 'NameWrapper' | 'PublicResolver' | 'ENSRegistryWithFallback' | 'ReverseRegistrar' | 'UniversalResolver' | 'BulkRenewal';
2
+ export declare type ContractName = 'BaseRegistrarImplementation' | 'ETHRegistrarController' | 'Multicall' | 'NameWrapper' | 'DNSRegistrar' | 'PublicResolver' | 'ENSRegistryWithFallback' | 'ReverseRegistrar' | 'UniversalResolver' | 'BulkRenewal';
@@ -0,0 +1,7 @@
1
+ import type { ENSArgs } from '..';
2
+ export declare const DNS_OVER_HTTP_ENDPOINT = "https://1.1.1.1/dns-query";
3
+ export declare type ImportDNSSECNameProps = {
4
+ address: string;
5
+ proverResult: any;
6
+ };
7
+ export default function ({ contracts, provider }: ENSArgs<'contracts' | 'signer' | 'provider'>, name: string, { address, proverResult }: ImportDNSSECNameProps): Promise<import("ethers").PopulatedTransaction | undefined>;
@@ -19,6 +19,7 @@ import type transferSubname from './functions/transferSubname';
19
19
  import type unwrapName from './functions/unwrapName';
20
20
  import type wrapName from './functions/wrapName';
21
21
  import GqlManager from './GqlManager';
22
+ import importDNSSECName from './functions/importDNSSECName';
22
23
  export type { Fuse, FuseArrayPossibilities, FuseObj, NamedFusesToBurn, UnnamedFuseType, UnnamedFuseValues, } from './utils/fuses';
23
24
  declare type ENSOptions = {
24
25
  graphURI?: string | null;
@@ -448,6 +449,7 @@ export declare class ENS {
448
449
  wrapName: WriteFunction<typeof wrapName>;
449
450
  unwrapName: WriteFunction<typeof unwrapName>;
450
451
  burnFuses: WriteFunction<typeof burnFuses>;
452
+ importDNSSECName: WriteFunction<typeof importDNSSECName>;
451
453
  createSubname: WriteFunction<typeof createSubname>;
452
454
  deleteSubname: WriteFunction<typeof deleteSubname>;
453
455
  transferSubname: WriteFunction<typeof transferSubname>;
@@ -0,0 +1 @@
1
+ export declare const EMPTY_ADDRESS = "0x0000000000000000000000000000000000000000";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ensdomains/ensjs",
3
- "version": "3.0.0-alpha.24",
3
+ "version": "3.0.0-alpha.25",
4
4
  "description": "ENS javascript library for contract interaction",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.mjs",
@@ -54,6 +54,8 @@
54
54
  "dependencies": {
55
55
  "@ensdomains/address-encoder": "0.2.16",
56
56
  "@ensdomains/content-hash": "^2.5.7",
57
+ "@ensdomains/dnsprovejs": "^0.4.1",
58
+ "@ensdomains/dnssecoraclejs": "^0.2.7",
57
59
  "dns-packet": "^5.3.1",
58
60
  "ethers": "^5.6.1",
59
61
  "graphql": "^16.3.0",
@@ -114,7 +116,7 @@
114
116
  "build:types": "tsc --emitDeclarationOnly --project tsconfig.build.json",
115
117
  "build": "pnpm clean && pnpm lint && pnpm build:types && pnpm node esbuild.js",
116
118
  "prepublish": "pnpm build && cp ../../README.md ../../LICENSE ./",
117
- "enode": "ganache --wallet.mnemonic=\"test test test test test test test test test test test junk\" --chain.chainId 1337 --chain.networkId 1337 --chain.time 1659500634000",
119
+ "enode": "ganache --wallet.mnemonic=\"test test test test test test test test test test test junk\" --chain.chainId 1337 --chain.networkId 1337 --chain.time 1663311099000",
118
120
  "ver": "pnpm version --no-workspaces-update"
119
121
  }
120
122
  }
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers'
2
+ import { DNSRegistrar__factory } from '../generated/factories/DNSRegistrar__factory'
3
+
4
+ export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
5
+ DNSRegistrar__factory.connect(address, provider)
@@ -11,6 +11,11 @@ const addresses: Record<
11
11
  '4': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
12
12
  '5': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
13
13
  },
14
+ DNSRegistrar: {
15
+ '1': '0x58774Bb8acD458A640aF0B88238369A167546ef2',
16
+ '3': '0xdB328BA5FEcb432AF325Ca59E3778441eF5aa14F',
17
+ '5': '0x8edc487D26F6c8Fa76e032066A3D4F87E273515d',
18
+ },
14
19
  ETHRegistrarController: {
15
20
  '1': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
16
21
  '3': '0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8',
@@ -4,6 +4,7 @@ import getEthRegistrarController from './ethRegistrarController'
4
4
  import { ContractAddressFetch } from './getContractAddress'
5
5
  import getMulticall from './multicall'
6
6
  import getNameWrapper from './nameWrapper'
7
+ import getDNSRegistrar from './dnsRegistrar'
7
8
  import getPublicResolver from './publicResolver'
8
9
  import getRegistry from './registry'
9
10
  import getReverseRegistrar from './reverseRegistrar'
@@ -63,6 +64,11 @@ export default class ContractManager {
63
64
  getNameWrapper,
64
65
  )
65
66
 
67
+ public getDNSRegistrar = this.generateContractGetter(
68
+ 'DNSRegistrar',
69
+ getDNSRegistrar,
70
+ )
71
+
66
72
  public getBaseRegistrar = this.generateContractGetter(
67
73
  'BaseRegistrarImplementation',
68
74
  getBaseRegistrar,
@@ -5,6 +5,7 @@ export type ContractName =
5
5
  | 'ETHRegistrarController'
6
6
  | 'Multicall'
7
7
  | 'NameWrapper'
8
+ | 'DNSRegistrar'
8
9
  | 'PublicResolver'
9
10
  | 'ENSRegistryWithFallback'
10
11
  | 'ReverseRegistrar'
@@ -84,8 +84,8 @@ export const multicallWrapper = {
84
84
  data,
85
85
  )
86
86
  return result
87
- } catch {
88
- return
87
+ } catch (e) {
88
+ return e
89
89
  }
90
90
  },
91
91
  }
@@ -0,0 +1,54 @@
1
+ import { Oracle as NewOracle } from '@ensdomains/dnssecoraclejs'
2
+ import packet from 'dns-packet'
3
+ import type { ENSArgs } from '..'
4
+ import { EMPTY_ADDRESS } from '../utils/consts'
5
+
6
+ export const DNS_OVER_HTTP_ENDPOINT = 'https://1.1.1.1/dns-query'
7
+
8
+ export type ImportDNSSECNameProps = {
9
+ address: string
10
+ proverResult: any
11
+ }
12
+
13
+ export default async function (
14
+ { contracts, provider }: ENSArgs<'contracts' | 'signer' | 'provider'>,
15
+ name: string,
16
+ { address, proverResult }: ImportDNSSECNameProps,
17
+ ) {
18
+ const dnsRegistrarContract = await contracts?.getDNSRegistrar()
19
+ const resolverContract = await contracts?.getPublicResolver()
20
+ const registrarOracle = await dnsRegistrarContract?.oracle()
21
+
22
+ if (!registrarOracle) {
23
+ throw new Error('No oracle found')
24
+ }
25
+
26
+ const oracle = new NewOracle(registrarOracle, provider!)
27
+ const proofData = await oracle.getProofData(proverResult)
28
+ const encodedName = `0x${packet.name.encode(name).toString('hex')}`
29
+ const data = proofData.rrsets.map((x) =>
30
+ Object.values(x),
31
+ ) as unknown as Array<{
32
+ rrset: string
33
+ sig: string
34
+ }>
35
+ const { proof } = proofData
36
+
37
+ if (address === EMPTY_ADDRESS) {
38
+ return dnsRegistrarContract?.populateTransaction.proveAndClaim(
39
+ encodedName,
40
+ data,
41
+ proof,
42
+ )
43
+ }
44
+
45
+ if (address) {
46
+ return dnsRegistrarContract?.populateTransaction.proveAndClaimWithResolver(
47
+ encodedName,
48
+ data,
49
+ proof,
50
+ resolverContract!.address,
51
+ address,
52
+ )
53
+ }
54
+ }
package/src/index.ts CHANGED
@@ -51,6 +51,7 @@ import type wrapName from './functions/wrapName'
51
51
  import GqlManager from './GqlManager'
52
52
  import singleCall from './utils/singleCall'
53
53
  import writeTx from './utils/writeTx'
54
+ import importDNSSECName from './functions/importDNSSECName'
54
55
 
55
56
  export type {
56
57
  Fuse,
@@ -591,6 +592,11 @@ export class ENS {
591
592
  'contracts',
592
593
  ])
593
594
 
595
+ public importDNSSECName = this.generateWriteFunction<typeof importDNSSECName>(
596
+ 'importDNSSECName',
597
+ ['contracts', 'provider', 'signer'],
598
+ )
599
+
594
600
  public createSubname = this.generateWriteFunction<typeof createSubname>(
595
601
  'createSubname',
596
602
  ['contracts', 'getExpiry'],
@@ -0,0 +1 @@
1
+ export const EMPTY_ADDRESS = '0x0000000000000000000000000000000000000000'