@ensdomains/ensjs 3.0.0-alpha.10 → 3.0.0-alpha.11
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.
- package/dist/cjs/contracts/baseRegistrar.d.ts +1 -1
- package/dist/cjs/contracts/index.d.ts +3 -3
- package/dist/cjs/contracts/multicall.d.ts +1 -1
- package/dist/cjs/contracts/registry.d.ts +1 -1
- package/dist/cjs/functions/burnFuses.js +1 -1
- package/dist/cjs/functions/createSubname.d.ts +3 -1
- package/dist/cjs/functions/createSubname.js +4 -2
- package/dist/cjs/functions/deleteSubname.d.ts +1 -1
- package/dist/cjs/functions/deleteSubname.js +3 -2
- package/dist/cjs/functions/getExpiry.d.ts +9 -2
- package/dist/cjs/functions/getExpiry.js +52 -7
- package/dist/cjs/functions/getFuses.d.ts +2 -3
- package/dist/cjs/functions/getFuses.js +4 -13
- package/dist/cjs/functions/getSpecificRecord.js +8 -1
- package/dist/cjs/functions/getSubnames.d.ts +1 -1
- package/dist/cjs/functions/getSubnames.js +1 -1
- package/dist/cjs/functions/transferSubname.d.ts +12 -3
- package/dist/cjs/functions/transferSubname.js +5 -3
- package/dist/cjs/functions/wrapName.d.ts +3 -1
- package/dist/cjs/functions/wrapName.js +35 -29
- package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +222 -201
- package/dist/cjs/generated/DNSRegistrar.d.ts +68 -64
- package/dist/cjs/generated/DNSSECImpl.d.ts +111 -111
- package/dist/cjs/generated/DefaultReverseResolver.d.ts +17 -17
- package/dist/cjs/generated/ENSRegistry.d.ts +126 -111
- package/dist/cjs/generated/ETHRegistrarController.d.ts +111 -109
- package/dist/cjs/generated/Multicall.d.ts +60 -60
- package/dist/cjs/generated/NameWrapper.d.ts +493 -354
- package/dist/cjs/generated/P256SHA256Algorithm.d.ts +11 -7
- package/dist/cjs/generated/PublicResolver.d.ts +259 -235
- package/dist/cjs/generated/RSASHA1Algorithm.d.ts +11 -7
- package/dist/cjs/generated/RSASHA256Algorithm.d.ts +11 -7
- package/dist/cjs/generated/ReverseRegistrar.d.ts +112 -103
- package/dist/cjs/generated/Root.d.ts +77 -77
- package/dist/cjs/generated/SHA1Digest.d.ts +7 -7
- package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +11 -7
- package/dist/cjs/generated/SHA256Digest.d.ts +7 -7
- package/dist/cjs/generated/StaticMetadataService.d.ts +7 -7
- package/dist/cjs/generated/TLDPublicSuffixList.d.ts +7 -7
- package/dist/cjs/generated/UniversalResolver.d.ts +31 -31
- package/dist/cjs/generated/common.d.ts +1 -0
- package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/DNSRegistrar__factory.js +3 -26
- package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/DNSSECImpl__factory.js +3 -26
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +14 -4
- package/dist/cjs/generated/factories/NameWrapper__factory.js +210 -79
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +3 -26
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +3 -26
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +3 -26
- package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/SHA1Digest__factory.js +3 -26
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +3 -26
- package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/SHA256Digest__factory.js +3 -26
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +3 -26
- package/dist/cjs/generated/factories/index.d.ts +14 -0
- package/dist/cjs/generated/factories/index.js +29 -1
- package/dist/cjs/generated/index.d.ts +29 -1
- package/dist/cjs/generated/index.js +31 -3
- package/dist/cjs/index.d.ts +12 -6
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
- package/dist/cjs/utils/wrapperExpiry.js +30 -0
- package/dist/esm/contracts/baseRegistrar.d.ts +1 -1
- package/dist/esm/contracts/index.d.ts +3 -3
- package/dist/esm/contracts/multicall.d.ts +1 -1
- package/dist/esm/contracts/registry.d.ts +1 -1
- package/dist/esm/functions/burnFuses.js +1 -1
- package/dist/esm/functions/createSubname.d.ts +3 -1
- package/dist/esm/functions/createSubname.js +4 -2
- package/dist/esm/functions/deleteSubname.d.ts +1 -1
- package/dist/esm/functions/deleteSubname.js +3 -2
- package/dist/esm/functions/getExpiry.d.ts +9 -2
- package/dist/esm/functions/getExpiry.js +52 -7
- package/dist/esm/functions/getFuses.d.ts +2 -3
- package/dist/esm/functions/getFuses.js +5 -14
- package/dist/esm/functions/getSpecificRecord.js +8 -1
- package/dist/esm/functions/getSubnames.d.ts +1 -1
- package/dist/esm/functions/getSubnames.js +1 -1
- package/dist/esm/functions/transferSubname.d.ts +12 -3
- package/dist/esm/functions/transferSubname.js +5 -3
- package/dist/esm/functions/wrapName.d.ts +3 -1
- package/dist/esm/functions/wrapName.js +35 -29
- package/dist/esm/generated/BaseRegistrarImplementation.d.ts +222 -201
- package/dist/esm/generated/DNSRegistrar.d.ts +68 -64
- package/dist/esm/generated/DNSSECImpl.d.ts +111 -111
- package/dist/esm/generated/DefaultReverseResolver.d.ts +17 -17
- package/dist/esm/generated/ENSRegistry.d.ts +126 -111
- package/dist/esm/generated/ETHRegistrarController.d.ts +111 -109
- package/dist/esm/generated/Multicall.d.ts +60 -60
- package/dist/esm/generated/NameWrapper.d.ts +493 -354
- package/dist/esm/generated/P256SHA256Algorithm.d.ts +11 -7
- package/dist/esm/generated/PublicResolver.d.ts +259 -235
- package/dist/esm/generated/RSASHA1Algorithm.d.ts +11 -7
- package/dist/esm/generated/RSASHA256Algorithm.d.ts +11 -7
- package/dist/esm/generated/ReverseRegistrar.d.ts +112 -103
- package/dist/esm/generated/Root.d.ts +77 -77
- package/dist/esm/generated/SHA1Digest.d.ts +7 -7
- package/dist/esm/generated/SHA1NSEC3Digest.d.ts +11 -7
- package/dist/esm/generated/SHA256Digest.d.ts +7 -7
- package/dist/esm/generated/StaticMetadataService.d.ts +7 -7
- package/dist/esm/generated/TLDPublicSuffixList.d.ts +7 -7
- package/dist/esm/generated/UniversalResolver.d.ts +31 -31
- package/dist/esm/generated/common.d.ts +1 -0
- package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +3 -15
- package/dist/esm/generated/factories/DNSRegistrar__factory.js +2 -25
- package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +3 -15
- package/dist/esm/generated/factories/DNSSECImpl__factory.js +2 -25
- package/dist/esm/generated/factories/ETHRegistrarController__factory.js +14 -4
- package/dist/esm/generated/factories/NameWrapper__factory.js +210 -79
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +2 -25
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +2 -25
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +2 -25
- package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +3 -15
- package/dist/esm/generated/factories/SHA1Digest__factory.js +2 -25
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +2 -25
- package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +3 -15
- package/dist/esm/generated/factories/SHA256Digest__factory.js +2 -25
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +2 -25
- package/dist/esm/generated/factories/index.d.ts +14 -0
- package/dist/esm/generated/factories/index.js +14 -0
- package/dist/esm/generated/index.d.ts +29 -1
- package/dist/esm/generated/index.js +15 -1
- package/dist/esm/index.d.ts +12 -6
- package/dist/esm/index.js +3 -2
- package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
- package/dist/esm/utils/wrapperExpiry.js +26 -0
- package/package.json +12 -10
- package/src/ABIs/Multicall.json +452 -0
- package/src/contracts/index.ts +1 -1
- package/src/functions/batch.test.ts +6 -6
- package/src/functions/batchWrappers.test.ts +5 -5
- package/src/functions/burnFuses.test.ts +5 -10
- package/src/functions/burnFuses.ts +1 -1
- package/src/functions/createSubname.test.ts +6 -10
- package/src/functions/createSubname.ts +14 -2
- package/src/functions/deleteSubname.test.ts +9 -28
- package/src/functions/deleteSubname.ts +3 -2
- package/src/functions/getDNSOwner.test.ts +1 -5
- package/src/functions/getExpiry.test.ts +26 -4
- package/src/functions/getExpiry.ts +87 -9
- package/src/functions/getFuses.test.ts +10 -33
- package/src/functions/getFuses.ts +10 -16
- package/src/functions/getHistory.test.ts +23 -11
- package/src/functions/getName.test.ts +4 -4
- package/src/functions/getNames.test.ts +97 -68
- package/src/functions/getOwner.test.ts +10 -25
- package/src/functions/getProfile.test.ts +32 -24
- package/src/functions/getResolver.test.ts +2 -6
- package/src/functions/getSpecificRecord.test.ts +16 -13
- package/src/functions/getSpecificRecord.ts +10 -4
- package/src/functions/getSubnames.test.ts +21 -17
- package/src/functions/getSubnames.ts +9 -2
- package/src/functions/makeCommitment.test.ts +2 -2
- package/src/functions/setName.test.ts +10 -11
- package/src/functions/setRecord.test.ts +12 -9
- package/src/functions/setRecords.test.ts +6 -5
- package/src/functions/setResolver.test.ts +6 -9
- package/src/functions/transferName.test.ts +13 -27
- package/src/functions/transferSubname.test.ts +11 -30
- package/src/functions/transferSubname.ts +28 -10
- package/src/functions/unwrapName.test.ts +13 -28
- package/src/functions/wrapName.test.ts +109 -34
- package/src/functions/wrapName.ts +45 -29
- package/src/generated/BaseRegistrarImplementation.ts +382 -296
- package/src/generated/DNSRegistrar.ts +103 -89
- package/src/generated/DNSSECImpl.ts +180 -149
- package/src/generated/DefaultReverseResolver.ts +37 -21
- package/src/generated/ENSRegistry.ts +257 -184
- package/src/generated/ETHRegistrarController.ts +252 -191
- package/src/generated/Multicall.ts +73 -57
- package/src/generated/NameWrapper.ts +979 -649
- package/src/generated/P256SHA256Algorithm.ts +21 -16
- package/src/generated/PublicResolver.ts +452 -362
- package/src/generated/RSASHA1Algorithm.ts +21 -16
- package/src/generated/RSASHA256Algorithm.ts +21 -16
- package/src/generated/ReverseRegistrar.ts +193 -141
- package/src/generated/Root.ts +146 -86
- package/src/generated/SHA1Digest.ts +12 -11
- package/src/generated/SHA1NSEC3Digest.ts +21 -16
- package/src/generated/SHA256Digest.ts +12 -11
- package/src/generated/StaticMetadataService.ts +22 -6
- package/src/generated/TLDPublicSuffixList.ts +10 -6
- package/src/generated/UniversalResolver.ts +44 -40
- package/src/generated/common.ts +2 -0
- package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
- package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
- package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
- package/src/generated/factories/NameWrapper__factory.ts +210 -79
- package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
- package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
- package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
- package/src/generated/factories/SHA1Digest__factory.ts +4 -40
- package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
- package/src/generated/factories/SHA256Digest__factory.ts +4 -40
- package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
- package/src/generated/factories/index.ts +14 -0
- package/src/generated/index.ts +29 -1
- package/src/index.ts +3 -2
- package/src/tests/setup.ts +18 -13
- package/src/tests/withProvider.test.ts +2 -2
- package/src/utils/wrapperExpiry.ts +31 -0
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
- package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
- package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
- package/src/ABIs/ETHRegistrarController.json +0 -494
- package/src/ABIs/NameWrapper.json +0 -1183
- package/src/ABIs/PublicResolver.json +0 -875
- package/src/ABIs/ReverseRegistrar.json +0 -323
- package/src/ABIs/StaticMetadataService.json +0 -32
- package/src/ABIs/UniversalResolver.json +0 -187
- package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
- package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
- package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
|
@@ -23,16 +23,44 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.UniversalResolver__factory = exports.StaticMetadataService__factory = exports.ReverseRegistrar__factory = exports.PublicResolver__factory = exports.
|
|
26
|
+
exports.UniversalResolver__factory = exports.StaticMetadataService__factory = exports.NameWrapper__factory = exports.Multicall__factory = exports.TLDPublicSuffixList__factory = exports.SHA256Digest__factory = exports.SHA1NSEC3Digest__factory = exports.SHA1Digest__factory = exports.RSASHA256Algorithm__factory = exports.RSASHA1Algorithm__factory = exports.Root__factory = exports.ReverseRegistrar__factory = exports.PublicResolver__factory = exports.P256SHA256Algorithm__factory = exports.ETHRegistrarController__factory = exports.ENSRegistry__factory = exports.DNSSECImpl__factory = exports.DNSRegistrar__factory = exports.DefaultReverseResolver__factory = exports.BaseRegistrarImplementation__factory = exports.factories = void 0;
|
|
27
27
|
exports.factories = __importStar(require("./factories"));
|
|
28
|
+
var BaseRegistrarImplementation__factory_1 = require("./factories/BaseRegistrarImplementation__factory");
|
|
29
|
+
Object.defineProperty(exports, "BaseRegistrarImplementation__factory", { enumerable: true, get: function () { return BaseRegistrarImplementation__factory_1.BaseRegistrarImplementation__factory; } });
|
|
30
|
+
var DefaultReverseResolver__factory_1 = require("./factories/DefaultReverseResolver__factory");
|
|
31
|
+
Object.defineProperty(exports, "DefaultReverseResolver__factory", { enumerable: true, get: function () { return DefaultReverseResolver__factory_1.DefaultReverseResolver__factory; } });
|
|
32
|
+
var DNSRegistrar__factory_1 = require("./factories/DNSRegistrar__factory");
|
|
33
|
+
Object.defineProperty(exports, "DNSRegistrar__factory", { enumerable: true, get: function () { return DNSRegistrar__factory_1.DNSRegistrar__factory; } });
|
|
34
|
+
var DNSSECImpl__factory_1 = require("./factories/DNSSECImpl__factory");
|
|
35
|
+
Object.defineProperty(exports, "DNSSECImpl__factory", { enumerable: true, get: function () { return DNSSECImpl__factory_1.DNSSECImpl__factory; } });
|
|
36
|
+
var ENSRegistry__factory_1 = require("./factories/ENSRegistry__factory");
|
|
37
|
+
Object.defineProperty(exports, "ENSRegistry__factory", { enumerable: true, get: function () { return ENSRegistry__factory_1.ENSRegistry__factory; } });
|
|
28
38
|
var ETHRegistrarController__factory_1 = require("./factories/ETHRegistrarController__factory");
|
|
29
39
|
Object.defineProperty(exports, "ETHRegistrarController__factory", { enumerable: true, get: function () { return ETHRegistrarController__factory_1.ETHRegistrarController__factory; } });
|
|
30
|
-
var
|
|
31
|
-
Object.defineProperty(exports, "
|
|
40
|
+
var P256SHA256Algorithm__factory_1 = require("./factories/P256SHA256Algorithm__factory");
|
|
41
|
+
Object.defineProperty(exports, "P256SHA256Algorithm__factory", { enumerable: true, get: function () { return P256SHA256Algorithm__factory_1.P256SHA256Algorithm__factory; } });
|
|
32
42
|
var PublicResolver__factory_1 = require("./factories/PublicResolver__factory");
|
|
33
43
|
Object.defineProperty(exports, "PublicResolver__factory", { enumerable: true, get: function () { return PublicResolver__factory_1.PublicResolver__factory; } });
|
|
34
44
|
var ReverseRegistrar__factory_1 = require("./factories/ReverseRegistrar__factory");
|
|
35
45
|
Object.defineProperty(exports, "ReverseRegistrar__factory", { enumerable: true, get: function () { return ReverseRegistrar__factory_1.ReverseRegistrar__factory; } });
|
|
46
|
+
var Root__factory_1 = require("./factories/Root__factory");
|
|
47
|
+
Object.defineProperty(exports, "Root__factory", { enumerable: true, get: function () { return Root__factory_1.Root__factory; } });
|
|
48
|
+
var RSASHA1Algorithm__factory_1 = require("./factories/RSASHA1Algorithm__factory");
|
|
49
|
+
Object.defineProperty(exports, "RSASHA1Algorithm__factory", { enumerable: true, get: function () { return RSASHA1Algorithm__factory_1.RSASHA1Algorithm__factory; } });
|
|
50
|
+
var RSASHA256Algorithm__factory_1 = require("./factories/RSASHA256Algorithm__factory");
|
|
51
|
+
Object.defineProperty(exports, "RSASHA256Algorithm__factory", { enumerable: true, get: function () { return RSASHA256Algorithm__factory_1.RSASHA256Algorithm__factory; } });
|
|
52
|
+
var SHA1Digest__factory_1 = require("./factories/SHA1Digest__factory");
|
|
53
|
+
Object.defineProperty(exports, "SHA1Digest__factory", { enumerable: true, get: function () { return SHA1Digest__factory_1.SHA1Digest__factory; } });
|
|
54
|
+
var SHA1NSEC3Digest__factory_1 = require("./factories/SHA1NSEC3Digest__factory");
|
|
55
|
+
Object.defineProperty(exports, "SHA1NSEC3Digest__factory", { enumerable: true, get: function () { return SHA1NSEC3Digest__factory_1.SHA1NSEC3Digest__factory; } });
|
|
56
|
+
var SHA256Digest__factory_1 = require("./factories/SHA256Digest__factory");
|
|
57
|
+
Object.defineProperty(exports, "SHA256Digest__factory", { enumerable: true, get: function () { return SHA256Digest__factory_1.SHA256Digest__factory; } });
|
|
58
|
+
var TLDPublicSuffixList__factory_1 = require("./factories/TLDPublicSuffixList__factory");
|
|
59
|
+
Object.defineProperty(exports, "TLDPublicSuffixList__factory", { enumerable: true, get: function () { return TLDPublicSuffixList__factory_1.TLDPublicSuffixList__factory; } });
|
|
60
|
+
var Multicall__factory_1 = require("./factories/Multicall__factory");
|
|
61
|
+
Object.defineProperty(exports, "Multicall__factory", { enumerable: true, get: function () { return Multicall__factory_1.Multicall__factory; } });
|
|
62
|
+
var NameWrapper__factory_1 = require("./factories/NameWrapper__factory");
|
|
63
|
+
Object.defineProperty(exports, "NameWrapper__factory", { enumerable: true, get: function () { return NameWrapper__factory_1.NameWrapper__factory; } });
|
|
36
64
|
var StaticMetadataService__factory_1 = require("./factories/StaticMetadataService__factory");
|
|
37
65
|
Object.defineProperty(exports, "StaticMetadataService__factory", { enumerable: true, get: function () { return StaticMetadataService__factory_1.StaticMetadataService__factory; } });
|
|
38
66
|
var UniversalResolver__factory_1 = require("./factories/UniversalResolver__factory");
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -226,10 +226,9 @@ export declare class ENS {
|
|
|
226
226
|
}>;
|
|
227
227
|
decode: ({ contracts }: ENSArgs<"contracts">, data: string, name: string) => Promise<{
|
|
228
228
|
fuseObj: {
|
|
229
|
-
[k: string]:
|
|
229
|
+
[k: string]: boolean;
|
|
230
230
|
};
|
|
231
|
-
|
|
232
|
-
vulnerableNode: null;
|
|
231
|
+
expiryDate: Date;
|
|
233
232
|
rawFuses: ethers.BigNumber;
|
|
234
233
|
} | undefined>;
|
|
235
234
|
}>;
|
|
@@ -370,11 +369,18 @@ export declare class ENS {
|
|
|
370
369
|
} | undefined>;
|
|
371
370
|
}>;
|
|
372
371
|
getExpiry: GeneratedRawFunction<{
|
|
373
|
-
raw: (
|
|
372
|
+
raw: (ensArgs: ENSArgs<"contracts" | "multicallWrapper">, name: string, { contract }?: {
|
|
373
|
+
contract?: ("nameWrapper" | "registrar") | undefined;
|
|
374
|
+
}) => Promise<{
|
|
374
375
|
to: string;
|
|
375
376
|
data: string;
|
|
376
377
|
}>;
|
|
377
|
-
decode: (
|
|
378
|
+
decode: (ensArgs: ENSArgs<"contracts" | "multicallWrapper">, data: string, name: string, { contract }?: {
|
|
379
|
+
contract?: ("nameWrapper" | "registrar") | undefined;
|
|
380
|
+
}) => Promise<{
|
|
381
|
+
expiry: Date;
|
|
382
|
+
gracePeriod: null;
|
|
383
|
+
} | {
|
|
378
384
|
expiry: Date | null;
|
|
379
385
|
gracePeriod: number;
|
|
380
386
|
} | undefined>;
|
|
@@ -385,7 +391,7 @@ export declare class ENS {
|
|
|
385
391
|
pageSize?: number | undefined;
|
|
386
392
|
orderDirection?: "asc" | "desc" | undefined;
|
|
387
393
|
orderBy?: "labelName" | "createdAt" | undefined;
|
|
388
|
-
lastSubnames
|
|
394
|
+
lastSubnames?: any[] | undefined;
|
|
389
395
|
isLargeQuery?: boolean | undefined;
|
|
390
396
|
}) => Promise<{
|
|
391
397
|
subnames: {
|
package/dist/cjs/index.js
CHANGED
|
@@ -234,14 +234,15 @@ class ENS {
|
|
|
234
234
|
transferName = this.generateWriteFunction('transferName', ['contracts']);
|
|
235
235
|
wrapName = this.generateWriteFunction('wrapName', [
|
|
236
236
|
'contracts',
|
|
237
|
+
'getExpiry',
|
|
237
238
|
]);
|
|
238
239
|
unwrapName = this.generateWriteFunction('unwrapName', ['contracts']);
|
|
239
240
|
burnFuses = this.generateWriteFunction('burnFuses', [
|
|
240
241
|
'contracts',
|
|
241
242
|
]);
|
|
242
|
-
createSubname = this.generateWriteFunction('createSubname', ['contracts']);
|
|
243
|
+
createSubname = this.generateWriteFunction('createSubname', ['contracts', 'getExpiry']);
|
|
243
244
|
deleteSubname = this.generateWriteFunction('deleteSubname', ['transferSubname']);
|
|
244
|
-
transferSubname = this.generateWriteFunction('transferSubname', ['contracts']);
|
|
245
|
+
transferSubname = this.generateWriteFunction('transferSubname', ['contracts', 'getExpiry']);
|
|
245
246
|
getDNSOwner = this.generateFunction('getDNSOwner', []);
|
|
246
247
|
}
|
|
247
248
|
exports.ENS = ENS;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
import { ENSArgs } from '..';
|
|
3
|
+
export declare type Expiry = string | number | Date | BigNumber;
|
|
4
|
+
export declare const MAX_EXPIRY: BigNumber;
|
|
5
|
+
export declare const makeExpiry: ({ getExpiry }: ENSArgs<'getExpiry'>, name: string, expiry?: Expiry | undefined) => Promise<BigNumber>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeExpiry = exports.MAX_EXPIRY = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
exports.MAX_EXPIRY = ethers_1.BigNumber.from(2).pow(64).sub(1);
|
|
6
|
+
const makeExpiry = async ({ getExpiry }, name, expiry) => {
|
|
7
|
+
if (expiry) {
|
|
8
|
+
if (expiry instanceof Date) {
|
|
9
|
+
return ethers_1.BigNumber.from(expiry.getTime() / 1000);
|
|
10
|
+
}
|
|
11
|
+
else if (expiry instanceof ethers_1.BigNumber) {
|
|
12
|
+
return expiry;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return ethers_1.BigNumber.from(expiry);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
if (name.endsWith('.eth')) {
|
|
20
|
+
const expResponse = await getExpiry(name);
|
|
21
|
+
if (!expResponse?.expiry)
|
|
22
|
+
throw new Error("Couldn't get expiry for name, please provide one.");
|
|
23
|
+
return ethers_1.BigNumber.from(expResponse.expiry.getTime() / 1000);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return exports.MAX_EXPIRY;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.makeExpiry = makeExpiry;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
|
-
declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated
|
|
2
|
+
declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated").BaseRegistrarImplementation;
|
|
3
3
|
export default _default;
|
|
@@ -7,10 +7,10 @@ export default class ContractManager {
|
|
|
7
7
|
private generateContractGetter;
|
|
8
8
|
getPublicResolver: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").PublicResolver>;
|
|
9
9
|
getUniversalResolver: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").UniversalResolver>;
|
|
10
|
-
getRegistry: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated
|
|
10
|
+
getRegistry: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").ENSRegistry>;
|
|
11
11
|
getReverseRegistrar: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").ReverseRegistrar>;
|
|
12
12
|
getNameWrapper: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").NameWrapper>;
|
|
13
|
-
getBaseRegistrar: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated
|
|
13
|
+
getBaseRegistrar: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").BaseRegistrarImplementation>;
|
|
14
14
|
getEthRegistrarController: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").ETHRegistrarController>;
|
|
15
|
-
getMulticall: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated
|
|
15
|
+
getMulticall: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").Multicall>;
|
|
16
16
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
|
-
declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated
|
|
2
|
+
declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated").Multicall;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
|
-
declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated
|
|
2
|
+
declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated").ENSRegistry;
|
|
3
3
|
export default _default;
|
|
@@ -4,5 +4,5 @@ export default async function ({ contracts, signer }, name, { fusesToBurn, }) {
|
|
|
4
4
|
const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
|
|
5
5
|
const hash = namehash(name);
|
|
6
6
|
const encodedFuses = generateFuseInput(fusesToBurn);
|
|
7
|
-
return nameWrapper.populateTransaction.
|
|
7
|
+
return nameWrapper.populateTransaction.setFuses(hash, encodedFuses);
|
|
8
8
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { ENSArgs } from '..';
|
|
3
3
|
import { FuseOptions } from '../@types/FuseOptions';
|
|
4
|
+
import { Expiry } from '../utils/wrapperExpiry';
|
|
4
5
|
declare type BaseArgs = {
|
|
5
6
|
owner: string;
|
|
6
7
|
resolverAddress?: string;
|
|
@@ -9,7 +10,8 @@ declare type BaseArgs = {
|
|
|
9
10
|
declare type NameWrapperArgs = {
|
|
10
11
|
contract: 'nameWrapper';
|
|
11
12
|
fuses?: FuseOptions;
|
|
13
|
+
expiry?: Expiry;
|
|
12
14
|
} & BaseArgs;
|
|
13
15
|
declare type Args = BaseArgs | NameWrapperArgs;
|
|
14
|
-
export default function ({ contracts, signer }: ENSArgs<'contracts' | 'signer'>, name: string, { owner, resolverAddress, contract, ...wrapperArgs }: Args): Promise<ethers.PopulatedTransaction>;
|
|
16
|
+
export default function ({ contracts, signer, getExpiry, }: ENSArgs<'contracts' | 'signer' | 'getExpiry'>, name: string, { owner, resolverAddress, contract, ...wrapperArgs }: Args): Promise<ethers.PopulatedTransaction>;
|
|
15
17
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import generateFuseInput from '../utils/generateFuseInput';
|
|
3
3
|
import { namehash } from '../utils/normalise';
|
|
4
|
-
|
|
4
|
+
import { makeExpiry } from '../utils/wrapperExpiry';
|
|
5
|
+
export default async function ({ contracts, signer, getExpiry, }, name, { owner, resolverAddress, contract, ...wrapperArgs }) {
|
|
5
6
|
const labels = name.split('.');
|
|
6
7
|
if (labels.length === 1) {
|
|
7
8
|
throw new Error('Subnames in ENS.js can only be created for 2LDs, not TLDs');
|
|
@@ -22,10 +23,11 @@ export default async function ({ contracts, signer }, name, { owner, resolverAdd
|
|
|
22
23
|
}
|
|
23
24
|
case 'nameWrapper': {
|
|
24
25
|
const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
|
|
26
|
+
const expiry = await makeExpiry({ getExpiry }, name, 'expiry' in wrapperArgs ? wrapperArgs.expiry : undefined);
|
|
25
27
|
const generatedFuses = 'fuses' in wrapperArgs && wrapperArgs.fuses
|
|
26
28
|
? generateFuseInput(wrapperArgs.fuses)
|
|
27
29
|
: '0';
|
|
28
|
-
return nameWrapper.populateTransaction.setSubnodeRecord(parentNodehash, label, owner, resolverAddress, 0, generatedFuses);
|
|
30
|
+
return nameWrapper.populateTransaction.setSubnodeRecord(parentNodehash, label, owner, resolverAddress, 0, generatedFuses, expiry);
|
|
29
31
|
}
|
|
30
32
|
default: {
|
|
31
33
|
throw new Error(`Unknown contract: ${contract}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ENSArgs } from '..';
|
|
2
|
-
export default function ({ transferSubname }: ENSArgs<'transferSubname'>, name: string, { contract, }: {
|
|
2
|
+
export default function ({ transferSubname, signer }: ENSArgs<'transferSubname' | 'signer'>, name: string, { contract, }: {
|
|
3
3
|
contract: 'registry' | 'nameWrapper';
|
|
4
4
|
}): Promise<import("ethers").PopulatedTransaction>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export default async function ({ transferSubname }, name, { contract, }) {
|
|
1
|
+
export default async function ({ transferSubname, signer }, name, { contract, }) {
|
|
2
2
|
return transferSubname.populateTransaction(name, {
|
|
3
3
|
contract,
|
|
4
|
-
|
|
4
|
+
owner: '0x0000000000000000000000000000000000000000',
|
|
5
|
+
signer,
|
|
5
6
|
});
|
|
6
7
|
}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { ENSArgs } from '..';
|
|
2
|
+
declare type ContractOption = 'registrar' | 'nameWrapper';
|
|
3
|
+
declare type Args = {
|
|
4
|
+
contract?: ContractOption;
|
|
5
|
+
};
|
|
2
6
|
declare const _default: {
|
|
3
|
-
raw: (
|
|
7
|
+
raw: (ensArgs: ENSArgs<"contracts" | "multicallWrapper">, name: string, { contract }?: Args) => Promise<{
|
|
4
8
|
to: string;
|
|
5
9
|
data: string;
|
|
6
10
|
}>;
|
|
7
|
-
decode: (
|
|
11
|
+
decode: (ensArgs: ENSArgs<"contracts" | "multicallWrapper">, data: string, name: string, { contract }?: Args) => Promise<{
|
|
12
|
+
expiry: Date;
|
|
13
|
+
gracePeriod: null;
|
|
14
|
+
} | {
|
|
8
15
|
expiry: Date | null;
|
|
9
16
|
gracePeriod: number;
|
|
10
17
|
} | undefined>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { solidityKeccak256 } from 'ethers/lib/utils';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const labels = name.split('.');
|
|
2
|
+
import { namehash } from '../utils/normalise';
|
|
3
|
+
const getRegistrarExpiry = async ({ contracts, multicallWrapper }, labels) => {
|
|
5
4
|
if (labels.length > 2 || labels[1] !== 'eth') {
|
|
6
|
-
throw new Error('Only .eth names have expiry dates');
|
|
5
|
+
throw new Error('Only .eth names have expiry dates on the registrar');
|
|
7
6
|
}
|
|
7
|
+
const baseRegistrar = await contracts?.getBaseRegistrar();
|
|
8
8
|
const expiryCall = baseRegistrar.interface.encodeFunctionData('nameExpires', [
|
|
9
9
|
solidityKeccak256(['string'], [labels[0]]),
|
|
10
10
|
]);
|
|
@@ -20,9 +20,32 @@ const raw = async ({ contracts, multicallWrapper }, name) => {
|
|
|
20
20
|
},
|
|
21
21
|
]);
|
|
22
22
|
};
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const getWrapperExpiry = async ({ contracts }, labels) => {
|
|
24
|
+
const nameWrapper = await contracts?.getNameWrapper();
|
|
25
|
+
const expiryCall = nameWrapper.interface.encodeFunctionData('getData', [
|
|
26
|
+
namehash(labels.join('.')),
|
|
27
|
+
]);
|
|
28
|
+
return {
|
|
29
|
+
to: nameWrapper.address,
|
|
30
|
+
data: expiryCall,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const getContractToUse = (contract, labels) => {
|
|
34
|
+
if (contract)
|
|
35
|
+
return contract;
|
|
36
|
+
if (labels.length === 2 && labels[1] === 'eth') {
|
|
37
|
+
return 'registrar';
|
|
38
|
+
}
|
|
39
|
+
return 'nameWrapper';
|
|
40
|
+
};
|
|
41
|
+
const raw = async (ensArgs, name, { contract } = {}) => {
|
|
42
|
+
const labels = name.split('.');
|
|
43
|
+
const contractToUse = getContractToUse(contract, labels);
|
|
44
|
+
return contractToUse === 'nameWrapper'
|
|
45
|
+
? getWrapperExpiry(ensArgs, labels)
|
|
46
|
+
: getRegistrarExpiry(ensArgs, labels);
|
|
47
|
+
};
|
|
48
|
+
const decodeRegistrarExpiry = async ({ contracts, multicallWrapper }, data) => {
|
|
26
49
|
const result = await multicallWrapper.decode(data);
|
|
27
50
|
const baseRegistrar = await contracts?.getBaseRegistrar();
|
|
28
51
|
try {
|
|
@@ -37,6 +60,28 @@ const decode = async ({ contracts, multicallWrapper }, data) => {
|
|
|
37
60
|
return;
|
|
38
61
|
}
|
|
39
62
|
};
|
|
63
|
+
const decodeWrapperExpiry = async ({ contracts }, data) => {
|
|
64
|
+
const nameWrapper = await contracts?.getNameWrapper();
|
|
65
|
+
try {
|
|
66
|
+
const [_owner, _fuses, expiry] = nameWrapper.interface.decodeFunctionResult('getData', data);
|
|
67
|
+
return {
|
|
68
|
+
expiry: new Date(expiry * 1000),
|
|
69
|
+
gracePeriod: null,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const decode = async (ensArgs, data, name, { contract } = {}) => {
|
|
77
|
+
if (data === null)
|
|
78
|
+
return;
|
|
79
|
+
const labels = name.split('.');
|
|
80
|
+
const contractToUse = getContractToUse(contract, labels);
|
|
81
|
+
return contractToUse === 'nameWrapper'
|
|
82
|
+
? decodeWrapperExpiry(ensArgs, data)
|
|
83
|
+
: decodeRegistrarExpiry(ensArgs, data);
|
|
84
|
+
};
|
|
40
85
|
export default {
|
|
41
86
|
raw,
|
|
42
87
|
decode,
|
|
@@ -7,10 +7,9 @@ declare const _default: {
|
|
|
7
7
|
}>;
|
|
8
8
|
decode: ({ contracts }: ENSArgs<"contracts">, data: string, name: string) => Promise<{
|
|
9
9
|
fuseObj: {
|
|
10
|
-
[k: string]:
|
|
10
|
+
[k: string]: boolean;
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
vulnerableNode: null;
|
|
12
|
+
expiryDate: Date;
|
|
14
13
|
rawFuses: BigNumber;
|
|
15
14
|
} | undefined>;
|
|
16
15
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
2
|
import { testable as fuseEnums } from '../utils/fuses';
|
|
3
3
|
import { namehash } from '../utils/normalise';
|
|
4
4
|
const NameSafety = [
|
|
@@ -20,7 +20,8 @@ const raw = async ({ contracts }, name) => {
|
|
|
20
20
|
const decode = async ({ contracts }, data, name) => {
|
|
21
21
|
const nameWrapper = await contracts?.getNameWrapper();
|
|
22
22
|
try {
|
|
23
|
-
const [
|
|
23
|
+
const [_fuses, expiry] = nameWrapper.interface.decodeFunctionResult('getFuses', data);
|
|
24
|
+
const fuses = BigNumber.from(_fuses);
|
|
24
25
|
const fuseObj = Object.fromEntries(Object.keys(fuseEnums).map((fuseEnum) => [
|
|
25
26
|
fuseEnum
|
|
26
27
|
.toLowerCase()
|
|
@@ -33,20 +34,10 @@ const decode = async ({ contracts }, data, name) => {
|
|
|
33
34
|
else {
|
|
34
35
|
fuseObj.canDoEverything = false;
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
if (utils.hexStripZeros(vulnerableNode) !== '0x') {
|
|
38
|
-
name.split('.').forEach((label, index, arr) => {
|
|
39
|
-
const node = arr.slice(index).join('.');
|
|
40
|
-
const nodehash = namehash(node);
|
|
41
|
-
if (nodehash === vulnerableNode) {
|
|
42
|
-
returnVulnerableNode = node;
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
37
|
+
const expiryDate = new Date(expiry * 1000);
|
|
46
38
|
return {
|
|
47
39
|
fuseObj,
|
|
48
|
-
|
|
49
|
-
vulnerableNode: returnVulnerableNode,
|
|
40
|
+
expiryDate,
|
|
50
41
|
rawFuses: fuses,
|
|
51
42
|
};
|
|
52
43
|
}
|
|
@@ -13,8 +13,15 @@ export const _getContentHash = {
|
|
|
13
13
|
};
|
|
14
14
|
},
|
|
15
15
|
decode: async ({ contracts }, data) => {
|
|
16
|
+
let response;
|
|
16
17
|
const publicResolver = await contracts?.getPublicResolver();
|
|
17
|
-
|
|
18
|
+
try {
|
|
19
|
+
;
|
|
20
|
+
[response] = publicResolver.interface.decodeFunctionResult('contenthash', data);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
18
25
|
if (!response) {
|
|
19
26
|
return;
|
|
20
27
|
}
|
|
@@ -16,7 +16,7 @@ declare type Params = {
|
|
|
16
16
|
pageSize?: number;
|
|
17
17
|
orderDirection?: 'asc' | 'desc';
|
|
18
18
|
orderBy?: 'createdAt' | 'labelName';
|
|
19
|
-
lastSubnames
|
|
19
|
+
lastSubnames?: Array<any>;
|
|
20
20
|
isLargeQuery?: boolean;
|
|
21
21
|
};
|
|
22
22
|
declare const getSubnames: (injected: ENSArgs<'gqlInstance'>, functionArgs: Params) => Promise<{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { truncateFormat } from '../utils/format';
|
|
2
2
|
import { decryptName } from '../utils/labels';
|
|
3
3
|
import { namehash } from '../utils/normalise';
|
|
4
|
-
const largeQuery = async ({ gqlInstance }, { name, page, pageSize = 10, orderDirection, orderBy, lastSubnames }) => {
|
|
4
|
+
const largeQuery = async ({ gqlInstance }, { name, page, pageSize = 10, orderDirection, orderBy, lastSubnames = [], }) => {
|
|
5
5
|
const client = gqlInstance.client;
|
|
6
6
|
let finalQuery = gqlInstance.gql `
|
|
7
7
|
query getSubnames(
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { ENSArgs } from '..';
|
|
3
|
-
|
|
3
|
+
import { Expiry } from '../utils/wrapperExpiry';
|
|
4
|
+
declare type BaseArgs = {
|
|
5
|
+
owner: string;
|
|
6
|
+
resolverAddress?: string;
|
|
4
7
|
contract: 'registry' | 'nameWrapper';
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
};
|
|
9
|
+
declare type NameWrapperArgs = {
|
|
10
|
+
contract: 'nameWrapper';
|
|
11
|
+
expiry?: Expiry;
|
|
12
|
+
} & BaseArgs;
|
|
13
|
+
declare type Args = BaseArgs | NameWrapperArgs;
|
|
14
|
+
export default function ({ contracts, signer, getExpiry, }: ENSArgs<'contracts' | 'signer' | 'getExpiry'>, name: string, { contract, owner, resolverAddress, ...wrapperArgs }: Args): Promise<ethers.PopulatedTransaction>;
|
|
15
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { namehash } from '../utils/normalise';
|
|
3
|
-
|
|
3
|
+
import { makeExpiry } from '../utils/wrapperExpiry';
|
|
4
|
+
export default async function ({ contracts, signer, getExpiry, }, name, { contract, owner, resolverAddress, ...wrapperArgs }) {
|
|
4
5
|
const labels = name.split('.');
|
|
5
6
|
const label = labels.shift();
|
|
6
7
|
const labelhash = ethers.utils.solidityKeccak256(['string'], [label]);
|
|
@@ -8,11 +9,12 @@ export default async function ({ contracts, signer }, name, { contract, address,
|
|
|
8
9
|
switch (contract) {
|
|
9
10
|
case 'registry': {
|
|
10
11
|
const registry = (await contracts?.getRegistry()).connect(signer);
|
|
11
|
-
return registry.populateTransaction.setSubnodeOwner(parentNodehash, labelhash,
|
|
12
|
+
return registry.populateTransaction.setSubnodeOwner(parentNodehash, labelhash, owner);
|
|
12
13
|
}
|
|
13
14
|
case 'nameWrapper': {
|
|
14
15
|
const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
|
|
15
|
-
|
|
16
|
+
const expiry = await makeExpiry({ getExpiry }, labels.join('.'), 'expiry' in wrapperArgs ? wrapperArgs.expiry : undefined);
|
|
17
|
+
return nameWrapper.populateTransaction.setSubnodeOwner(parentNodehash, label, owner, '0', expiry);
|
|
16
18
|
}
|
|
17
19
|
default: {
|
|
18
20
|
throw new Error(`Unknown contract: ${contract}`);
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { ENSArgs } from '..';
|
|
3
3
|
import type { FuseOptions } from '../@types/FuseOptions';
|
|
4
|
-
|
|
4
|
+
import { Expiry } from '../utils/wrapperExpiry';
|
|
5
|
+
export default function ({ contracts, signer, getExpiry, }: ENSArgs<'contracts' | 'signer' | 'getExpiry'>, name: string, { wrappedOwner, fuseOptions, expiry, resolverAddress, }: {
|
|
5
6
|
wrappedOwner: string;
|
|
6
7
|
fuseOptions?: FuseOptions | string | number;
|
|
8
|
+
expiry?: Expiry;
|
|
7
9
|
resolverAddress?: string;
|
|
8
10
|
}): Promise<ethers.PopulatedTransaction>;
|
|
@@ -1,54 +1,60 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import generateFuseInput from '../utils/generateFuseInput';
|
|
3
3
|
import { hexEncodeName } from '../utils/hexEncodedName';
|
|
4
|
-
|
|
4
|
+
import { makeExpiry } from '../utils/wrapperExpiry';
|
|
5
|
+
async function wrapETH({ contracts }, labels, wrappedOwner, expiry, decodedFuses, resolverAddress, signer, address) {
|
|
5
6
|
const nameWrapper = await contracts?.getNameWrapper();
|
|
6
7
|
const baseRegistrar = (await contracts?.getBaseRegistrar()).connect(signer);
|
|
7
8
|
const labelhash = ethers.utils.solidityKeccak256(['string'], [labels[0]]);
|
|
8
|
-
const data = ethers.utils.defaultAbiCoder.encode(['string', 'address', 'uint32', 'uint64', 'address'], [labels[0], wrappedOwner,
|
|
9
|
+
const data = ethers.utils.defaultAbiCoder.encode(['string', 'address', 'uint32', 'uint64', 'address'], [labels[0], wrappedOwner, decodedFuses, expiry, resolverAddress]);
|
|
9
10
|
return baseRegistrar.populateTransaction['safeTransferFrom(address,address,uint256,bytes)'](address, nameWrapper.address, labelhash, data);
|
|
10
11
|
}
|
|
11
|
-
async function wrapOther({ contracts }, name, wrappedOwner,
|
|
12
|
+
async function wrapOther({ contracts }, name, wrappedOwner, resolverAddress, address, signer) {
|
|
12
13
|
const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
|
|
13
14
|
const registry = await contracts?.getRegistry();
|
|
14
15
|
const hasApproval = await registry.isApprovedForAll(address, nameWrapper.address);
|
|
15
16
|
if (!hasApproval) {
|
|
16
17
|
throw new Error('NameWrapper must have approval to wrap a name from this address.');
|
|
17
18
|
}
|
|
18
|
-
return nameWrapper.populateTransaction.wrap(hexEncodeName(name), wrappedOwner,
|
|
19
|
+
return nameWrapper.populateTransaction.wrap(hexEncodeName(name), wrappedOwner, resolverAddress);
|
|
19
20
|
}
|
|
20
|
-
export default async function ({ contracts, signer,
|
|
21
|
+
export default async function ({ contracts, signer, getExpiry, }, name, { wrappedOwner, fuseOptions, expiry, resolverAddress, }) {
|
|
21
22
|
const address = await signer.getAddress();
|
|
22
23
|
let decodedFuses;
|
|
23
|
-
switch (typeof fuseOptions) {
|
|
24
|
-
case 'object': {
|
|
25
|
-
decodedFuses = generateFuseInput(fuseOptions);
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
case 'number': {
|
|
29
|
-
decodedFuses = fuseOptions.toString(16);
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
case 'string': {
|
|
33
|
-
decodedFuses = fuseOptions;
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
case 'undefined': {
|
|
37
|
-
decodedFuses = '0';
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
default: {
|
|
41
|
-
throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
24
|
const publicResolver = await contracts?.getPublicResolver();
|
|
45
25
|
if (!resolverAddress)
|
|
46
26
|
resolverAddress = publicResolver.address;
|
|
47
27
|
const labels = name.split('.');
|
|
48
|
-
if (labels.length
|
|
49
|
-
|
|
28
|
+
if (labels.length === 2 && labels[1] === 'eth') {
|
|
29
|
+
switch (typeof fuseOptions) {
|
|
30
|
+
case 'object': {
|
|
31
|
+
decodedFuses = generateFuseInput(fuseOptions);
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'number': {
|
|
35
|
+
decodedFuses = fuseOptions.toString(16);
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
case 'string': {
|
|
39
|
+
decodedFuses = fuseOptions;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case 'undefined': {
|
|
43
|
+
decodedFuses = '0';
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
default: {
|
|
47
|
+
throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const expiryToUse = await makeExpiry({ getExpiry }, name, expiry);
|
|
51
|
+
return wrapETH({ contracts }, labels, wrappedOwner, expiryToUse, decodedFuses, resolverAddress, signer, address);
|
|
50
52
|
}
|
|
51
53
|
else {
|
|
52
|
-
|
|
54
|
+
if (fuseOptions)
|
|
55
|
+
throw new Error('Fuses can not be initially set when wrapping a non .eth name');
|
|
56
|
+
if (expiry)
|
|
57
|
+
throw new Error('Expiry can not be initially set when wrapping a non .eth name');
|
|
58
|
+
return wrapOther({ contracts }, name, wrappedOwner, resolverAddress, address, signer);
|
|
53
59
|
}
|
|
54
60
|
}
|