@ensdomains/ensjs 3.0.0-alpha.10 → 3.0.0-alpha.13
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/commitName.d.ts +26 -0
- package/dist/cjs/functions/commitName.js +24 -0
- 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/getHistory.d.ts +0 -30
- package/dist/cjs/functions/getHistory.js +3 -99
- package/dist/cjs/functions/getName.d.ts +2 -2
- package/dist/cjs/functions/getName.js +1 -1
- package/dist/cjs/functions/getProfile.js +1 -1
- 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/registerName.d.ts +11 -0
- package/dist/cjs/functions/registerName.js +19 -0
- package/dist/cjs/functions/renewName.d.ts +6 -0
- package/dist/cjs/functions/renewName.js +10 -0
- 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 +24 -40
- package/dist/cjs/index.js +9 -5
- package/dist/cjs/utils/registerHelpers.d.ts +44 -16
- package/dist/cjs/utils/registerHelpers.js +43 -15
- package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
- package/dist/cjs/utils/wrapperExpiry.js +30 -0
- package/dist/cjs/utils/writeTx.d.ts +18 -1
- package/dist/cjs/utils/writeTx.js +4 -1
- 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/commitName.d.ts +26 -0
- package/dist/esm/functions/commitName.js +21 -0
- 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/getHistory.d.ts +0 -30
- package/dist/esm/functions/getHistory.js +2 -96
- package/dist/esm/functions/getName.d.ts +2 -2
- package/dist/esm/functions/getName.js +1 -1
- package/dist/esm/functions/getProfile.js +1 -1
- 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/registerName.d.ts +11 -0
- package/dist/esm/functions/registerName.js +16 -0
- package/dist/esm/functions/renewName.d.ts +6 -0
- package/dist/esm/functions/renewName.js +7 -0
- 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 +24 -40
- package/dist/esm/index.js +9 -5
- package/dist/esm/utils/registerHelpers.d.ts +44 -16
- package/dist/esm/utils/registerHelpers.js +40 -14
- package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
- package/dist/esm/utils/wrapperExpiry.js +26 -0
- package/dist/esm/utils/writeTx.d.ts +18 -1
- package/dist/esm/utils/writeTx.js +4 -1
- package/package.json +27 -28
- 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/commitName.test.ts +61 -0
- package/src/functions/commitName.ts +36 -0
- 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 +7 -79
- package/src/functions/getHistory.ts +2 -127
- package/src/functions/getName.test.ts +5 -5
- package/src/functions/getName.ts +1 -1
- 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/getProfile.ts +1 -1
- 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/registerName.test.ts +59 -0
- package/src/functions/registerName.ts +38 -0
- package/src/functions/renewName.test.ts +44 -0
- package/src/functions/renewName.ts +22 -0
- 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 +28 -26
- package/src/utils/registerHelpers.ts +107 -49
- package/src/utils/wrapperExpiry.ts +31 -0
- package/src/utils/writeTx.ts +12 -2
- 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
- package/src/tests/populateTransaction.test.ts +0 -40
- package/src/tests/setup.ts +0 -53
- package/src/tests/signerInjection.test.ts +0 -46
- package/src/tests/withProvider.test.ts +0 -28
|
@@ -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
|
}
|
|
@@ -22,33 +22,3 @@ export declare function getHistory({ gqlInstance }: ENSArgs<'gqlInstance'>, name
|
|
|
22
22
|
data: Record<string, any>;
|
|
23
23
|
}[];
|
|
24
24
|
} | undefined>;
|
|
25
|
-
export declare function getHistoryWithDetail({ contracts, gqlInstance, provider, }: ENSArgs<'contracts' | 'gqlInstance' | 'provider'>, name: string): Promise<{
|
|
26
|
-
domain: {
|
|
27
|
-
type: any;
|
|
28
|
-
blockNumber: any;
|
|
29
|
-
transactionHash: any;
|
|
30
|
-
id: any;
|
|
31
|
-
data: Record<string, any>;
|
|
32
|
-
}[];
|
|
33
|
-
registration: {
|
|
34
|
-
type: any;
|
|
35
|
-
blockNumber: any;
|
|
36
|
-
transactionHash: any;
|
|
37
|
-
id: any;
|
|
38
|
-
data: Record<string, any>;
|
|
39
|
-
}[];
|
|
40
|
-
resolver: {
|
|
41
|
-
type: any;
|
|
42
|
-
blockNumber: any;
|
|
43
|
-
transactionHash: any;
|
|
44
|
-
id: any;
|
|
45
|
-
data: Record<string, any>;
|
|
46
|
-
}[];
|
|
47
|
-
} | undefined>;
|
|
48
|
-
export declare function getHistoryDetailForTransactionHash({ contracts, provider }: ENSArgs<'contracts' | 'provider'>, hash: string, indexInTransaction?: number): Promise<({
|
|
49
|
-
key: any;
|
|
50
|
-
value: any;
|
|
51
|
-
} | undefined)[] | {
|
|
52
|
-
key: any;
|
|
53
|
-
value: any;
|
|
54
|
-
} | undefined>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { formatsByCoinType } from '@ensdomains/address-encoder';
|
|
2
2
|
import { ethers } from 'ethers';
|
|
3
3
|
import { decodeContenthash } from '../utils/contentHash';
|
|
4
|
-
import { makeOtherIndexes } from '../utils/makeHashIndexes';
|
|
5
4
|
const eventFormat = {
|
|
6
5
|
Domain: {
|
|
7
6
|
NewOwner: (args) => ({ owner: args.owner.id }),
|
|
@@ -43,7 +42,7 @@ const eventFormat = {
|
|
|
43
42
|
NameChanged: (args) => ({ name: args.name }),
|
|
44
43
|
AbiChanged: (args) => ({ contentType: args.contentType }),
|
|
45
44
|
PubkeyChanged: (args) => ({ x: args.x, y: args.y }),
|
|
46
|
-
TextChanged: (args) => ({ key: args.key }),
|
|
45
|
+
TextChanged: (args) => ({ key: args.key, value: args.value }),
|
|
47
46
|
ContenthashChanged: (args) => ({ hash: decodeContenthash(args.hash) }),
|
|
48
47
|
InterfaceChanged: (args) => ({
|
|
49
48
|
interfaceId: args.interfaceId,
|
|
@@ -63,31 +62,6 @@ const mapEvents = (eventArray, type) => eventArray.map((event) => ({
|
|
|
63
62
|
id: event.id,
|
|
64
63
|
data: eventFormat[type][event.__typename](event),
|
|
65
64
|
}));
|
|
66
|
-
const mapResultDetailDecode = (publicResolver) => (result) => {
|
|
67
|
-
const hashIndexes = makeOtherIndexes(result.input, '10f13a8c');
|
|
68
|
-
const abiLengths = hashIndexes.map((x) => ({
|
|
69
|
-
index: x,
|
|
70
|
-
length: x === 0
|
|
71
|
-
? ethers.utils.hexDataLength(result.input)
|
|
72
|
-
: parseInt(ethers.utils.hexDataSlice(result.input, x - 32, x), 16),
|
|
73
|
-
}));
|
|
74
|
-
const ABIs = abiLengths.map(({ index, length }) => ethers.utils.hexDataSlice(result.input, index, index + length));
|
|
75
|
-
return ABIs.map((abi) => {
|
|
76
|
-
try {
|
|
77
|
-
return publicResolver.interface.decodeFunctionData('setText(bytes32,string,string)', abi);
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
|
-
const expandDecode = (prev, curr) => {
|
|
85
|
-
if (!curr)
|
|
86
|
-
return [...prev, { value: null }];
|
|
87
|
-
if (!curr.length)
|
|
88
|
-
return [...prev, curr];
|
|
89
|
-
return [...prev, ...curr];
|
|
90
|
-
};
|
|
91
65
|
export async function getHistory({ gqlInstance }, name) {
|
|
92
66
|
const client = gqlInstance.client;
|
|
93
67
|
const query = gqlInstance.gql `
|
|
@@ -168,6 +142,7 @@ export async function getHistory({ gqlInstance }, name) {
|
|
|
168
142
|
}
|
|
169
143
|
...on TextChanged {
|
|
170
144
|
key
|
|
145
|
+
value
|
|
171
146
|
}
|
|
172
147
|
...on ContenthashChanged {
|
|
173
148
|
hash
|
|
@@ -202,72 +177,3 @@ export async function getHistory({ gqlInstance }, name) {
|
|
|
202
177
|
resolver: resolverHistory,
|
|
203
178
|
};
|
|
204
179
|
}
|
|
205
|
-
export async function getHistoryWithDetail({ contracts, gqlInstance, provider, }, name) {
|
|
206
|
-
const historyRes = await getHistory({ gqlInstance }, name);
|
|
207
|
-
if (!historyRes)
|
|
208
|
-
return;
|
|
209
|
-
const { domain, registration, resolver: resolverHistory } = historyRes;
|
|
210
|
-
const textEvents = resolverHistory.filter((event) => event.type === 'TextChanged');
|
|
211
|
-
const transactions = textEvents.reduce((prev, curr) => {
|
|
212
|
-
if (prev.includes(curr.transactionHash)) {
|
|
213
|
-
return prev;
|
|
214
|
-
}
|
|
215
|
-
return [...prev, curr.transactionHash];
|
|
216
|
-
}, []);
|
|
217
|
-
const publicResolver = await contracts?.getPublicResolver();
|
|
218
|
-
const fetchResult = (await ethers.utils.fetchJson(provider.connection, JSON.stringify(transactions.map((tx, i) => ({
|
|
219
|
-
jsonrpc: '2.0',
|
|
220
|
-
id: i,
|
|
221
|
-
method: 'eth_getTransactionByHash',
|
|
222
|
-
params: [tx],
|
|
223
|
-
})))))
|
|
224
|
-
.map((result) => result.result)
|
|
225
|
-
.map(mapResultDetailDecode(publicResolver))
|
|
226
|
-
.reduce(expandDecode, []);
|
|
227
|
-
const detailedResolverHistory = resolverHistory.map((event) => {
|
|
228
|
-
if (event.type !== 'TextChanged')
|
|
229
|
-
return event;
|
|
230
|
-
const { id } = event;
|
|
231
|
-
const matchedTextInx = textEvents.findIndex((x) => x.id === id);
|
|
232
|
-
return {
|
|
233
|
-
...event,
|
|
234
|
-
data: {
|
|
235
|
-
...event.data,
|
|
236
|
-
value: fetchResult[matchedTextInx] && fetchResult[matchedTextInx].value,
|
|
237
|
-
},
|
|
238
|
-
};
|
|
239
|
-
});
|
|
240
|
-
return {
|
|
241
|
-
domain,
|
|
242
|
-
registration,
|
|
243
|
-
resolver: detailedResolverHistory,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
export async function getHistoryDetailForTransactionHash({ contracts, provider }, hash, indexInTransaction) {
|
|
247
|
-
const publicResolver = await contracts?.getPublicResolver();
|
|
248
|
-
const transaction = await provider.getTransaction(hash);
|
|
249
|
-
if (!transaction)
|
|
250
|
-
return;
|
|
251
|
-
const result = mapResultDetailDecode(publicResolver)({
|
|
252
|
-
input: transaction.data,
|
|
253
|
-
});
|
|
254
|
-
if (!result || !result.length)
|
|
255
|
-
return;
|
|
256
|
-
if (typeof indexInTransaction === 'number') {
|
|
257
|
-
if (indexInTransaction + 1 > result.length)
|
|
258
|
-
return;
|
|
259
|
-
const resultItem = result[indexInTransaction];
|
|
260
|
-
if (!resultItem ||
|
|
261
|
-
!resultItem.key ||
|
|
262
|
-
(!resultItem.value && resultItem.value !== ''))
|
|
263
|
-
return;
|
|
264
|
-
return { key: resultItem.key, value: resultItem.value };
|
|
265
|
-
}
|
|
266
|
-
return result.map((item) => {
|
|
267
|
-
if (!item.key)
|
|
268
|
-
return;
|
|
269
|
-
if (!item.value && item.value !== '')
|
|
270
|
-
return { key: item.key, value: null };
|
|
271
|
-
return { key: item.key, value: item.value };
|
|
272
|
-
});
|
|
273
|
-
}
|
|
@@ -10,8 +10,8 @@ declare const _default: {
|
|
|
10
10
|
reverseResolverAddress: any;
|
|
11
11
|
resolverAddress: any;
|
|
12
12
|
} | {
|
|
13
|
-
name:
|
|
14
|
-
match
|
|
13
|
+
name: undefined;
|
|
14
|
+
match?: undefined;
|
|
15
15
|
reverseResolverAddress?: undefined;
|
|
16
16
|
resolverAddress?: undefined;
|
|
17
17
|
} | undefined>;
|
|
@@ -215,7 +215,7 @@ const graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress)
|
|
|
215
215
|
resolverResponse = domain?.resolver;
|
|
216
216
|
}
|
|
217
217
|
else {
|
|
218
|
-
const resolverId = `${resolverAddress}-${id}`;
|
|
218
|
+
const resolverId = `${resolverAddress.toLowerCase()}-${id}`;
|
|
219
219
|
({ resolver: resolverResponse, domain } = await client.request(customResolverQuery, { id, resolverId }));
|
|
220
220
|
}
|
|
221
221
|
if (!domain)
|
|
@@ -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(
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
import { ENSArgs } from '..';
|
|
3
|
+
import { CommitmentParams } from '../utils/registerHelpers';
|
|
4
|
+
declare type Params = Omit<CommitmentParams, 'name' | 'resolver'> & {
|
|
5
|
+
resolverAddress?: string;
|
|
6
|
+
secret: string;
|
|
7
|
+
wrapperExpiry: number;
|
|
8
|
+
value: BigNumber;
|
|
9
|
+
};
|
|
10
|
+
export default function ({ contracts }: ENSArgs<'contracts'>, name: string, { resolverAddress, value, ...params }: Params): Promise<import("ethers").PopulatedTransaction>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { makeRegistrationData, } from '../utils/registerHelpers';
|
|
2
|
+
export default async function ({ contracts }, name, { resolverAddress, value, ...params }) {
|
|
3
|
+
const labels = name.split('.');
|
|
4
|
+
if (labels.length !== 2 || labels[1] !== 'eth')
|
|
5
|
+
throw new Error('Currently only .eth TLD registrations are supported');
|
|
6
|
+
const controller = await contracts.getEthRegistrarController();
|
|
7
|
+
const _resolver = await contracts.getPublicResolver(undefined, resolverAddress);
|
|
8
|
+
const generatedParams = makeRegistrationData({
|
|
9
|
+
name,
|
|
10
|
+
resolver: _resolver,
|
|
11
|
+
...params,
|
|
12
|
+
});
|
|
13
|
+
return controller.populateTransaction.register(...generatedParams, {
|
|
14
|
+
value,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export default async function ({ contracts }, name, { duration, value, }) {
|
|
2
|
+
const labels = name.split('.');
|
|
3
|
+
if (labels.length !== 2 || labels[1] !== 'eth')
|
|
4
|
+
throw new Error('Currently only .eth TLD renewals are supported');
|
|
5
|
+
const controller = await contracts.getEthRegistrarController();
|
|
6
|
+
return controller.populateTransaction.renew(labels[0], duration, { value });
|
|
7
|
+
}
|
|
@@ -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
|
}
|