@ensdomains/ensjs 3.0.0-alpha.41 → 3.0.0-alpha.43
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/getContractAddress.js +4 -4
- package/dist/cjs/functions/commitName.js +2 -3
- package/dist/cjs/functions/createSubname.js +2 -8
- package/dist/cjs/functions/getDecryptedName.js +111 -0
- package/dist/cjs/functions/getHistory.js +14 -7
- package/dist/cjs/functions/getNames.js +10 -6
- package/dist/cjs/functions/getOwner.js +28 -15
- package/dist/cjs/functions/getPrice.js +6 -6
- package/dist/cjs/functions/getProfile.js +11 -5
- package/dist/cjs/functions/getWrapperData.js +4 -5
- package/dist/cjs/functions/renewNames.js +13 -20
- package/dist/cjs/functions/{burnFuses.js → setFuses.js} +24 -6
- package/dist/cjs/functions/wrapName.js +9 -25
- package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +2 -2
- package/dist/cjs/generated/factories/BulkRenewal__factory.js +2 -2
- package/dist/cjs/generated/factories/DNSRegistrar__factory.js +2 -2
- package/dist/cjs/generated/factories/DNSSECImpl__factory.js +2 -2
- package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +2 -2
- package/dist/cjs/generated/factories/ENSRegistry__factory.js +2 -2
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +8 -57
- package/dist/cjs/generated/factories/Multicall__factory.js +2 -2
- package/dist/cjs/generated/factories/NameWrapper__factory.js +92 -71
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +2 -2
- package/dist/cjs/generated/factories/PublicResolver__factory.js +85 -2
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +2 -2
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +2 -2
- package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +2 -2
- package/dist/cjs/generated/factories/Root__factory.js +2 -2
- package/dist/cjs/generated/factories/SHA1Digest__factory.js +2 -2
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +2 -2
- package/dist/cjs/generated/factories/SHA256Digest__factory.js +2 -2
- package/dist/cjs/generated/factories/StaticMetadataService__factory.js +2 -2
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +2 -2
- package/dist/cjs/generated/factories/UniversalResolver__factory.js +69 -4
- package/dist/cjs/index.js +6 -4
- package/dist/cjs/utils/ccip.js +3 -3
- package/dist/cjs/utils/consts.js +3 -1
- package/dist/cjs/utils/fuses.js +218 -53
- package/dist/cjs/utils/hexEncodedName.js +2 -0
- package/dist/cjs/utils/labels.js +14 -8
- package/dist/cjs/utils/normalise.js +2 -2
- package/dist/cjs/utils/recordHelpers.js +4 -3
- package/dist/cjs/utils/registerHelpers.js +11 -25
- package/dist/cjs/utils/subgraph-types.js +16 -0
- package/dist/cjs/utils/wrapper.js +3 -3
- package/dist/esm/contracts/getContractAddress.mjs +4 -4
- package/dist/esm/functions/commitName.mjs +2 -3
- package/dist/esm/functions/createSubname.mjs +2 -2
- package/dist/esm/functions/getDecryptedName.mjs +96 -0
- package/dist/esm/functions/getHistory.mjs +14 -7
- package/dist/esm/functions/getNames.mjs +10 -6
- package/dist/esm/functions/getOwner.mjs +26 -13
- package/dist/esm/functions/getPrice.mjs +2 -2
- package/dist/esm/functions/getProfile.mjs +10 -4
- package/dist/esm/functions/getWrapperData.mjs +4 -5
- package/dist/esm/functions/renewNames.mjs +13 -20
- package/dist/esm/functions/setFuses.mjs +30 -0
- package/dist/esm/functions/wrapName.mjs +9 -19
- package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.mjs +1 -1
- package/dist/esm/generated/factories/BulkRenewal__factory.mjs +1 -1
- package/dist/esm/generated/factories/DNSRegistrar__factory.mjs +1 -1
- package/dist/esm/generated/factories/DNSSECImpl__factory.mjs +1 -1
- package/dist/esm/generated/factories/DefaultReverseResolver__factory.mjs +1 -1
- package/dist/esm/generated/factories/ENSRegistry__factory.mjs +1 -1
- package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +7 -56
- package/dist/esm/generated/factories/Multicall__factory.mjs +1 -1
- package/dist/esm/generated/factories/NameWrapper__factory.mjs +91 -70
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.mjs +1 -1
- package/dist/esm/generated/factories/PublicResolver__factory.mjs +84 -1
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.mjs +1 -1
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.mjs +1 -1
- package/dist/esm/generated/factories/ReverseRegistrar__factory.mjs +1 -1
- package/dist/esm/generated/factories/Root__factory.mjs +1 -1
- package/dist/esm/generated/factories/SHA1Digest__factory.mjs +1 -1
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.mjs +1 -1
- package/dist/esm/generated/factories/SHA256Digest__factory.mjs +1 -1
- package/dist/esm/generated/factories/StaticMetadataService__factory.mjs +1 -1
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.mjs +1 -1
- package/dist/esm/generated/factories/UniversalResolver__factory.mjs +68 -3
- package/dist/esm/index.mjs +6 -4
- package/dist/esm/utils/ccip.mjs +2 -2
- package/dist/esm/utils/consts.mjs +3 -1
- package/dist/esm/utils/fuses.mjs +218 -53
- package/dist/esm/utils/hexEncodedName.mjs +2 -0
- package/dist/esm/utils/labels.mjs +11 -8
- package/dist/esm/utils/normalise.mjs +1 -1
- package/dist/esm/utils/recordHelpers.mjs +2 -1
- package/dist/esm/utils/registerHelpers.mjs +10 -18
- package/dist/esm/utils/subgraph-types.mjs +0 -0
- package/dist/esm/utils/wrapper.mjs +2 -2
- package/dist/types/functions/commitName.d.ts +0 -1
- package/dist/types/functions/createSubname.d.ts +2 -2
- package/dist/types/functions/getDecryptedName.d.ts +9 -0
- package/dist/types/functions/getHistory.d.ts +1 -1
- package/dist/types/functions/getNames.d.ts +3 -3
- package/dist/types/functions/getOwner.d.ts +1 -0
- package/dist/types/functions/getPrice.d.ts +1 -1
- package/dist/types/functions/getProfile.d.ts +1 -0
- package/dist/types/functions/getRecords.d.ts +1 -0
- package/dist/types/functions/getWrapperData.d.ts +44 -5
- package/dist/types/functions/registerName.d.ts +1 -1
- package/dist/types/functions/renewNames.d.ts +5 -6
- package/dist/types/functions/setFuses.d.ts +7 -0
- package/dist/types/functions/types.d.ts +8 -4
- package/dist/types/functions/wrapName.d.ts +3 -3
- package/dist/types/generated/ETHRegistrarController.d.ts +13 -36
- package/dist/types/generated/NameWrapper.d.ts +97 -52
- package/dist/types/generated/PublicResolver.d.ts +50 -1
- package/dist/types/generated/UniversalResolver.d.ts +79 -32
- package/dist/types/generated/factories/UniversalResolver__factory.d.ts +15 -0
- package/dist/types/index.d.ts +60 -9
- package/dist/types/static.d.ts +1 -1
- package/dist/types/utils/consts.d.ts +1 -0
- package/dist/types/utils/fuses.d.ts +115 -45
- package/dist/types/utils/hexEncodedName.d.ts +1 -0
- package/dist/types/utils/labels.d.ts +2 -1
- package/dist/types/utils/registerHelpers.d.ts +7 -25
- package/dist/types/utils/subgraph-types.d.ts +284 -0
- package/dist/types/utils/wrapper.d.ts +1 -1
- package/package.json +5 -5
- package/src/contracts/getContractAddress.ts +4 -4
- package/src/functions/commitName.test.ts +0 -3
- package/src/functions/commitName.ts +1 -2
- package/src/functions/createSubname.ts +5 -6
- package/src/functions/getDecryptedName.test.ts +49 -0
- package/src/functions/getDecryptedName.ts +119 -0
- package/src/functions/getExpiry.ts +1 -1
- package/src/functions/getHistory.ts +59 -25
- package/src/functions/getNames.test.ts +2 -2
- package/src/functions/getNames.ts +26 -13
- package/src/functions/getOwner.test.ts +62 -3
- package/src/functions/getOwner.ts +33 -13
- package/src/functions/getPrice.ts +2 -2
- package/src/functions/getProfile.test.ts +7 -0
- package/src/functions/getProfile.ts +13 -4
- package/src/functions/getWrapperData.test.ts +11 -45
- package/src/functions/getWrapperData.ts +8 -6
- package/src/functions/registerName.test.ts +3 -3
- package/src/functions/registerName.ts +1 -1
- package/src/functions/renewNames.ts +18 -24
- package/src/functions/setFuses.test.ts +240 -0
- package/src/functions/setFuses.ts +44 -0
- package/src/functions/types.ts +8 -4
- package/src/functions/wrapName.test.ts +8 -7
- package/src/functions/wrapName.ts +11 -25
- package/src/generated/ETHRegistrarController.ts +12 -79
- package/src/generated/NameWrapper.ts +155 -99
- package/src/generated/PublicResolver.ts +123 -0
- package/src/generated/UniversalResolver.ts +157 -16
- package/src/generated/factories/BaseRegistrarImplementation__factory.ts +1 -1
- package/src/generated/factories/BulkRenewal__factory.ts +1 -1
- package/src/generated/factories/DNSRegistrar__factory.ts +1 -1
- package/src/generated/factories/DNSSECImpl__factory.ts +1 -1
- package/src/generated/factories/DefaultReverseResolver__factory.ts +1 -1
- package/src/generated/factories/ENSRegistry__factory.ts +1 -1
- package/src/generated/factories/ETHRegistrarController__factory.ts +7 -56
- package/src/generated/factories/Multicall__factory.ts +1 -1
- package/src/generated/factories/NameWrapper__factory.ts +91 -70
- package/src/generated/factories/P256SHA256Algorithm__factory.ts +1 -1
- package/src/generated/factories/PublicResolver__factory.ts +84 -1
- package/src/generated/factories/RSASHA1Algorithm__factory.ts +1 -1
- package/src/generated/factories/RSASHA256Algorithm__factory.ts +1 -1
- package/src/generated/factories/ReverseRegistrar__factory.ts +1 -1
- package/src/generated/factories/Root__factory.ts +1 -1
- package/src/generated/factories/SHA1Digest__factory.ts +1 -1
- package/src/generated/factories/SHA1NSEC3Digest__factory.ts +1 -1
- package/src/generated/factories/SHA256Digest__factory.ts +1 -1
- package/src/generated/factories/StaticMetadataService__factory.ts +1 -1
- package/src/generated/factories/TLDPublicSuffixList__factory.ts +1 -1
- package/src/generated/factories/UniversalResolver__factory.ts +68 -3
- package/src/index.ts +15 -14
- package/src/static.ts +1 -1
- package/src/utils/ccip.ts +2 -2
- package/src/utils/consts.ts +1 -0
- package/src/utils/fuses.ts +299 -102
- package/src/utils/hexEncodedName.ts +3 -0
- package/src/utils/labels.ts +13 -11
- package/src/utils/normalise.ts +1 -1
- package/src/utils/recordHelpers.ts +2 -1
- package/src/utils/registerHelpers.ts +14 -42
- package/src/utils/subgraph-types.ts +312 -0
- package/src/utils/wrapper.ts +2 -2
- package/dist/cjs/utils/generateFuseInput.js +0 -40
- package/dist/esm/functions/burnFuses.mjs +0 -12
- package/dist/esm/utils/generateFuseInput.mjs +0 -15
- package/dist/types/functions/burnFuses.d.ts +0 -3
- package/dist/types/utils/generateFuseInput.d.ts +0 -3
- package/src/functions/burnFuses.test.ts +0 -148
- package/src/functions/burnFuses.ts +0 -16
- package/src/utils/generateFuseInput.ts +0 -13
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { BigNumberish } from '@ethersproject/bignumber/lib/bignumber';
|
|
2
1
|
import type { PublicResolver } from '../generated';
|
|
3
|
-
import {
|
|
2
|
+
import { CombinedFuseInput } from './fuses';
|
|
4
3
|
import { RecordOptions } from './recordHelpers';
|
|
5
|
-
export declare const MAX_INT_64: bigint;
|
|
6
4
|
export declare type BaseRegistrationParams = {
|
|
7
5
|
owner: string;
|
|
8
6
|
duration: number;
|
|
@@ -10,16 +8,14 @@ export declare type BaseRegistrationParams = {
|
|
|
10
8
|
resolverAddress?: string;
|
|
11
9
|
records?: RecordOptions;
|
|
12
10
|
reverseRecord?: boolean;
|
|
13
|
-
fuses?:
|
|
14
|
-
wrapperExpiry?: BigNumberish;
|
|
11
|
+
fuses?: CombinedFuseInput['child'];
|
|
15
12
|
};
|
|
16
13
|
export declare type RegistrationParams = Omit<BaseRegistrationParams, 'resolverAddress'> & {
|
|
17
14
|
name: string;
|
|
18
15
|
resolver: PublicResolver;
|
|
19
16
|
};
|
|
20
|
-
export declare type CommitmentParams = Omit<RegistrationParams, 'secret'
|
|
17
|
+
export declare type CommitmentParams = Omit<RegistrationParams, 'secret'> & {
|
|
21
18
|
secret?: string;
|
|
22
|
-
wrapperExpiry?: BigNumberish;
|
|
23
19
|
};
|
|
24
20
|
export declare type RegistrationTuple = [
|
|
25
21
|
name: string,
|
|
@@ -29,31 +25,17 @@ export declare type RegistrationTuple = [
|
|
|
29
25
|
resolver: string,
|
|
30
26
|
data: string[],
|
|
31
27
|
reverseRecord: boolean,
|
|
32
|
-
|
|
33
|
-
wrapperExpiry: BigNumberish
|
|
34
|
-
];
|
|
35
|
-
export declare type CommitmentTuple = [
|
|
36
|
-
labelhash: string,
|
|
37
|
-
owner: string,
|
|
38
|
-
duration: number,
|
|
39
|
-
resolver: string,
|
|
40
|
-
data: string[],
|
|
41
|
-
secret: string,
|
|
42
|
-
reverseRecord: boolean,
|
|
43
|
-
fuses: string,
|
|
44
|
-
wrapperExpiry: BigNumberish
|
|
28
|
+
ownerControlledFuses: number
|
|
45
29
|
];
|
|
46
30
|
export declare const randomSecret: () => string;
|
|
47
|
-
export declare const makeCommitmentData: ({ name, owner, duration, resolver, records, reverseRecord, fuses,
|
|
31
|
+
export declare const makeCommitmentData: ({ name, owner, duration, resolver, records, reverseRecord, fuses, secret, }: Omit<RegistrationParams, "secret"> & {
|
|
48
32
|
secret?: string | undefined;
|
|
49
|
-
wrapperExpiry?: BigNumberish | undefined;
|
|
50
33
|
} & {
|
|
51
34
|
secret: string;
|
|
52
|
-
}) =>
|
|
35
|
+
}) => RegistrationTuple;
|
|
53
36
|
export declare const makeRegistrationData: (params: RegistrationParams) => RegistrationTuple;
|
|
54
|
-
export declare const _makeCommitment: (params:
|
|
37
|
+
export declare const _makeCommitment: (params: RegistrationTuple) => string;
|
|
55
38
|
export declare const makeCommitment: ({ secret, ...inputParams }: CommitmentParams) => {
|
|
56
39
|
secret: string;
|
|
57
40
|
commitment: string;
|
|
58
|
-
wrapperExpiry: BigNumberish;
|
|
59
41
|
};
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
export declare type Maybe<T> = T | null;
|
|
2
|
+
export declare type Exact<T extends {
|
|
3
|
+
[key: string]: unknown;
|
|
4
|
+
}> = {
|
|
5
|
+
[K in keyof T]: T[K];
|
|
6
|
+
};
|
|
7
|
+
export declare type MakeOptional<T, K extends keyof T> = Omit<T, K> & {
|
|
8
|
+
[SubKey in K]?: Maybe<T[SubKey]>;
|
|
9
|
+
};
|
|
10
|
+
export declare type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {
|
|
11
|
+
[SubKey in K]: Maybe<T[SubKey]>;
|
|
12
|
+
};
|
|
13
|
+
/** All built-in and custom scalars, mapped to their actual values */
|
|
14
|
+
export declare type Scalars = {
|
|
15
|
+
ID: string;
|
|
16
|
+
String: string;
|
|
17
|
+
Boolean: boolean;
|
|
18
|
+
Int: number;
|
|
19
|
+
Float: number;
|
|
20
|
+
Bytes: string;
|
|
21
|
+
BigInt: string;
|
|
22
|
+
};
|
|
23
|
+
export declare type Domain = {
|
|
24
|
+
__typename?: 'Domain';
|
|
25
|
+
id: Scalars['ID'];
|
|
26
|
+
name?: Maybe<Scalars['String']>;
|
|
27
|
+
labelName?: Maybe<Scalars['String']>;
|
|
28
|
+
labelhash?: Maybe<Scalars['Bytes']>;
|
|
29
|
+
parent?: Maybe<Domain>;
|
|
30
|
+
subdomains: Array<Domain>;
|
|
31
|
+
subdomainCount: Scalars['Int'];
|
|
32
|
+
resolvedAddress?: Maybe<Account>;
|
|
33
|
+
owner: Account;
|
|
34
|
+
resolver?: Maybe<Resolver>;
|
|
35
|
+
ttl?: Maybe<Scalars['BigInt']>;
|
|
36
|
+
isMigrated: Scalars['Boolean'];
|
|
37
|
+
createdAt: Scalars['BigInt'];
|
|
38
|
+
events: Array<DomainEvent>;
|
|
39
|
+
registration?: Maybe<Registration>;
|
|
40
|
+
wrappedDomain?: Maybe<WrappedDomain>;
|
|
41
|
+
};
|
|
42
|
+
export declare type DomainEvent = {
|
|
43
|
+
id: Scalars['ID'];
|
|
44
|
+
domain: Domain;
|
|
45
|
+
blockNumber: Scalars['Int'];
|
|
46
|
+
transactionID: Scalars['Bytes'];
|
|
47
|
+
};
|
|
48
|
+
export declare type Transfer = DomainEvent & {
|
|
49
|
+
__typename?: 'Transfer';
|
|
50
|
+
id: Scalars['ID'];
|
|
51
|
+
domain: Domain;
|
|
52
|
+
blockNumber: Scalars['Int'];
|
|
53
|
+
transactionID: Scalars['Bytes'];
|
|
54
|
+
owner: Account;
|
|
55
|
+
};
|
|
56
|
+
export declare type NewOwner = DomainEvent & {
|
|
57
|
+
__typename?: 'NewOwner';
|
|
58
|
+
id: Scalars['ID'];
|
|
59
|
+
parentDomain: Domain;
|
|
60
|
+
domain: Domain;
|
|
61
|
+
blockNumber: Scalars['Int'];
|
|
62
|
+
transactionID: Scalars['Bytes'];
|
|
63
|
+
owner: Account;
|
|
64
|
+
};
|
|
65
|
+
export declare type NewResolver = DomainEvent & {
|
|
66
|
+
__typename?: 'NewResolver';
|
|
67
|
+
id: Scalars['ID'];
|
|
68
|
+
domain: Domain;
|
|
69
|
+
blockNumber: Scalars['Int'];
|
|
70
|
+
transactionID: Scalars['Bytes'];
|
|
71
|
+
resolver: Resolver;
|
|
72
|
+
};
|
|
73
|
+
export declare type NewTtl = DomainEvent & {
|
|
74
|
+
__typename?: 'NewTTL';
|
|
75
|
+
id: Scalars['ID'];
|
|
76
|
+
domain: Domain;
|
|
77
|
+
blockNumber: Scalars['Int'];
|
|
78
|
+
transactionID: Scalars['Bytes'];
|
|
79
|
+
ttl: Scalars['BigInt'];
|
|
80
|
+
};
|
|
81
|
+
export declare type WrappedTransfer = DomainEvent & {
|
|
82
|
+
__typename?: 'WrappedTransfer';
|
|
83
|
+
id: Scalars['ID'];
|
|
84
|
+
domain: Domain;
|
|
85
|
+
blockNumber: Scalars['Int'];
|
|
86
|
+
transactionID: Scalars['Bytes'];
|
|
87
|
+
owner: Account;
|
|
88
|
+
};
|
|
89
|
+
export declare type NameWrapped = DomainEvent & {
|
|
90
|
+
__typename?: 'NameWrapped';
|
|
91
|
+
id: Scalars['ID'];
|
|
92
|
+
domain: Domain;
|
|
93
|
+
blockNumber: Scalars['Int'];
|
|
94
|
+
transactionID: Scalars['Bytes'];
|
|
95
|
+
name: Scalars['String'];
|
|
96
|
+
fuses: Scalars['Int'];
|
|
97
|
+
owner: Account;
|
|
98
|
+
expiryDate: Scalars['BigInt'];
|
|
99
|
+
};
|
|
100
|
+
export declare type NameUnwrapped = DomainEvent & {
|
|
101
|
+
__typename?: 'NameUnwrapped';
|
|
102
|
+
id: Scalars['ID'];
|
|
103
|
+
domain: Domain;
|
|
104
|
+
blockNumber: Scalars['Int'];
|
|
105
|
+
transactionID: Scalars['Bytes'];
|
|
106
|
+
owner: Account;
|
|
107
|
+
};
|
|
108
|
+
export declare type FusesSet = DomainEvent & {
|
|
109
|
+
__typename?: 'FusesSet';
|
|
110
|
+
id: Scalars['ID'];
|
|
111
|
+
domain: Domain;
|
|
112
|
+
blockNumber: Scalars['Int'];
|
|
113
|
+
transactionID: Scalars['Bytes'];
|
|
114
|
+
fuses: Scalars['Int'];
|
|
115
|
+
};
|
|
116
|
+
export declare type ExpiryExtended = DomainEvent & {
|
|
117
|
+
__typename?: 'ExpiryExtended';
|
|
118
|
+
id: Scalars['ID'];
|
|
119
|
+
domain: Domain;
|
|
120
|
+
blockNumber: Scalars['Int'];
|
|
121
|
+
transactionID: Scalars['Bytes'];
|
|
122
|
+
expiryDate: Scalars['BigInt'];
|
|
123
|
+
};
|
|
124
|
+
export declare type Registration = {
|
|
125
|
+
__typename?: 'Registration';
|
|
126
|
+
id: Scalars['ID'];
|
|
127
|
+
domain: Domain;
|
|
128
|
+
registrationDate: Scalars['BigInt'];
|
|
129
|
+
expiryDate: Scalars['BigInt'];
|
|
130
|
+
cost?: Maybe<Scalars['BigInt']>;
|
|
131
|
+
registrant: Account;
|
|
132
|
+
labelName?: Maybe<Scalars['String']>;
|
|
133
|
+
events: Array<RegistrationEvent>;
|
|
134
|
+
};
|
|
135
|
+
export declare type RegistrationEvent = {
|
|
136
|
+
id: Scalars['ID'];
|
|
137
|
+
registration: Registration;
|
|
138
|
+
blockNumber: Scalars['Int'];
|
|
139
|
+
transactionID: Scalars['Bytes'];
|
|
140
|
+
};
|
|
141
|
+
export declare type NameRegistered = RegistrationEvent & {
|
|
142
|
+
__typename?: 'NameRegistered';
|
|
143
|
+
id: Scalars['ID'];
|
|
144
|
+
registration: Registration;
|
|
145
|
+
blockNumber: Scalars['Int'];
|
|
146
|
+
transactionID: Scalars['Bytes'];
|
|
147
|
+
registrant: Account;
|
|
148
|
+
expiryDate: Scalars['BigInt'];
|
|
149
|
+
};
|
|
150
|
+
export declare type NameRenewed = RegistrationEvent & {
|
|
151
|
+
__typename?: 'NameRenewed';
|
|
152
|
+
id: Scalars['ID'];
|
|
153
|
+
registration: Registration;
|
|
154
|
+
blockNumber: Scalars['Int'];
|
|
155
|
+
transactionID: Scalars['Bytes'];
|
|
156
|
+
expiryDate: Scalars['BigInt'];
|
|
157
|
+
};
|
|
158
|
+
export declare type NameTransferred = RegistrationEvent & {
|
|
159
|
+
__typename?: 'NameTransferred';
|
|
160
|
+
id: Scalars['ID'];
|
|
161
|
+
registration: Registration;
|
|
162
|
+
blockNumber: Scalars['Int'];
|
|
163
|
+
transactionID: Scalars['Bytes'];
|
|
164
|
+
newOwner: Account;
|
|
165
|
+
};
|
|
166
|
+
export declare type WrappedDomain = {
|
|
167
|
+
__typename?: 'WrappedDomain';
|
|
168
|
+
id: Scalars['ID'];
|
|
169
|
+
domain: Domain;
|
|
170
|
+
expiryDate: Scalars['BigInt'];
|
|
171
|
+
fuses: Scalars['Int'];
|
|
172
|
+
owner: Account;
|
|
173
|
+
name?: Maybe<Scalars['String']>;
|
|
174
|
+
};
|
|
175
|
+
export declare type Account = {
|
|
176
|
+
__typename?: 'Account';
|
|
177
|
+
id: Scalars['ID'];
|
|
178
|
+
domains: Array<Domain>;
|
|
179
|
+
wrappedDomains?: Maybe<Array<WrappedDomain>>;
|
|
180
|
+
registrations?: Maybe<Array<Registration>>;
|
|
181
|
+
};
|
|
182
|
+
export declare type Resolver = {
|
|
183
|
+
__typename?: 'Resolver';
|
|
184
|
+
id: Scalars['ID'];
|
|
185
|
+
domain?: Maybe<Domain>;
|
|
186
|
+
address: Scalars['Bytes'];
|
|
187
|
+
addr?: Maybe<Account>;
|
|
188
|
+
contentHash?: Maybe<Scalars['Bytes']>;
|
|
189
|
+
texts?: Maybe<Array<Scalars['String']>>;
|
|
190
|
+
coinTypes?: Maybe<Array<Scalars['BigInt']>>;
|
|
191
|
+
events: Array<ResolverEvent>;
|
|
192
|
+
};
|
|
193
|
+
export declare type ResolverEvent = {
|
|
194
|
+
id: Scalars['ID'];
|
|
195
|
+
resolver: Resolver;
|
|
196
|
+
blockNumber: Scalars['Int'];
|
|
197
|
+
transactionID: Scalars['Bytes'];
|
|
198
|
+
};
|
|
199
|
+
export declare type AddrChanged = ResolverEvent & {
|
|
200
|
+
__typename?: 'AddrChanged';
|
|
201
|
+
id: Scalars['ID'];
|
|
202
|
+
resolver: Resolver;
|
|
203
|
+
blockNumber: Scalars['Int'];
|
|
204
|
+
transactionID: Scalars['Bytes'];
|
|
205
|
+
addr: Account;
|
|
206
|
+
};
|
|
207
|
+
export declare type MulticoinAddrChanged = ResolverEvent & {
|
|
208
|
+
__typename?: 'MulticoinAddrChanged';
|
|
209
|
+
id: Scalars['ID'];
|
|
210
|
+
resolver: Resolver;
|
|
211
|
+
blockNumber: Scalars['Int'];
|
|
212
|
+
transactionID: Scalars['Bytes'];
|
|
213
|
+
coinType: Scalars['BigInt'];
|
|
214
|
+
addr: Scalars['Bytes'];
|
|
215
|
+
};
|
|
216
|
+
export declare type NameChanged = ResolverEvent & {
|
|
217
|
+
__typename?: 'NameChanged';
|
|
218
|
+
id: Scalars['ID'];
|
|
219
|
+
resolver: Resolver;
|
|
220
|
+
blockNumber: Scalars['Int'];
|
|
221
|
+
transactionID: Scalars['Bytes'];
|
|
222
|
+
name: Scalars['String'];
|
|
223
|
+
};
|
|
224
|
+
export declare type AbiChanged = ResolverEvent & {
|
|
225
|
+
__typename?: 'AbiChanged';
|
|
226
|
+
id: Scalars['ID'];
|
|
227
|
+
resolver: Resolver;
|
|
228
|
+
blockNumber: Scalars['Int'];
|
|
229
|
+
transactionID: Scalars['Bytes'];
|
|
230
|
+
contentType: Scalars['BigInt'];
|
|
231
|
+
};
|
|
232
|
+
export declare type PubkeyChanged = ResolverEvent & {
|
|
233
|
+
__typename?: 'PubkeyChanged';
|
|
234
|
+
id: Scalars['ID'];
|
|
235
|
+
resolver: Resolver;
|
|
236
|
+
blockNumber: Scalars['Int'];
|
|
237
|
+
transactionID: Scalars['Bytes'];
|
|
238
|
+
x: Scalars['Bytes'];
|
|
239
|
+
y: Scalars['Bytes'];
|
|
240
|
+
};
|
|
241
|
+
export declare type TextChanged = ResolverEvent & {
|
|
242
|
+
__typename?: 'TextChanged';
|
|
243
|
+
id: Scalars['ID'];
|
|
244
|
+
resolver: Resolver;
|
|
245
|
+
blockNumber: Scalars['Int'];
|
|
246
|
+
transactionID: Scalars['Bytes'];
|
|
247
|
+
key: Scalars['String'];
|
|
248
|
+
value?: Maybe<Scalars['String']>;
|
|
249
|
+
};
|
|
250
|
+
export declare type ContenthashChanged = ResolverEvent & {
|
|
251
|
+
__typename?: 'ContenthashChanged';
|
|
252
|
+
id: Scalars['ID'];
|
|
253
|
+
resolver: Resolver;
|
|
254
|
+
blockNumber: Scalars['Int'];
|
|
255
|
+
transactionID: Scalars['Bytes'];
|
|
256
|
+
hash: Scalars['Bytes'];
|
|
257
|
+
};
|
|
258
|
+
export declare type InterfaceChanged = ResolverEvent & {
|
|
259
|
+
__typename?: 'InterfaceChanged';
|
|
260
|
+
id: Scalars['ID'];
|
|
261
|
+
resolver: Resolver;
|
|
262
|
+
blockNumber: Scalars['Int'];
|
|
263
|
+
transactionID: Scalars['Bytes'];
|
|
264
|
+
interfaceID: Scalars['Bytes'];
|
|
265
|
+
implementer: Scalars['Bytes'];
|
|
266
|
+
};
|
|
267
|
+
export declare type AuthorisationChanged = ResolverEvent & {
|
|
268
|
+
__typename?: 'AuthorisationChanged';
|
|
269
|
+
id: Scalars['ID'];
|
|
270
|
+
resolver: Resolver;
|
|
271
|
+
blockNumber: Scalars['Int'];
|
|
272
|
+
transactionID: Scalars['Bytes'];
|
|
273
|
+
owner: Scalars['Bytes'];
|
|
274
|
+
target: Scalars['Bytes'];
|
|
275
|
+
isAuthorized: Scalars['Boolean'];
|
|
276
|
+
};
|
|
277
|
+
export declare type VersionChanged = ResolverEvent & {
|
|
278
|
+
__typename?: 'VersionChanged';
|
|
279
|
+
id: Scalars['ID'];
|
|
280
|
+
resolver: Resolver;
|
|
281
|
+
blockNumber: Scalars['Int'];
|
|
282
|
+
transactionID: Scalars['Bytes'];
|
|
283
|
+
version: Scalars['BigInt'];
|
|
284
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BigNumber } from '@ethersproject/bignumber
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
2
|
import { ENSArgs } from '../index';
|
|
3
3
|
export declare type Expiry = string | number | Date | BigNumber;
|
|
4
4
|
export declare const MAX_EXPIRY: BigNumber;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ensdomains/ensjs",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.43",
|
|
4
4
|
"description": "ENS javascript library for contract interaction",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.mjs",
|
|
@@ -68,10 +68,9 @@
|
|
|
68
68
|
"traverse": "^0.6.6"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"ethers": "^5.7.2",
|
|
72
71
|
"@ensdomains/buffer": "^0.0.13",
|
|
73
|
-
"@ensdomains/ens-contracts": "^0.0.
|
|
74
|
-
"@ensdomains/ens-test-env": "0.3.
|
|
72
|
+
"@ensdomains/ens-contracts": "^0.0.16",
|
|
73
|
+
"@ensdomains/ens-test-env": "0.3.7",
|
|
75
74
|
"@ethersproject/abi": "^5.6.4",
|
|
76
75
|
"@ethersproject/abstract-provider": "^5.7.0",
|
|
77
76
|
"@ethersproject/abstract-signer": "^5.7.0",
|
|
@@ -98,6 +97,7 @@
|
|
|
98
97
|
"dotenv": "^16.0.0",
|
|
99
98
|
"esbuild": "^0.15.6",
|
|
100
99
|
"eslint-plugin-jest": "^27.0.1",
|
|
100
|
+
"ethers": "^5.7.2",
|
|
101
101
|
"ganache": "^7.4.0",
|
|
102
102
|
"glob": "^8.0.3",
|
|
103
103
|
"hardhat": "2.10.2",
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
},
|
|
134
134
|
"scripts": {
|
|
135
135
|
"tenv": "ens-test-env -a",
|
|
136
|
-
"denv": "pnpm tenv start -ns -nb --extra-time 11368000",
|
|
136
|
+
"denv": "pnpm tenv start -ns -nb --extra-time 11368000 --verbosity 1",
|
|
137
137
|
"generate-types": "ts-node scripts/runTypechain.ts",
|
|
138
138
|
"generate-abis": "hardhat export-abi",
|
|
139
139
|
"start": "ts-node --files src/index.test.ts",
|
|
@@ -20,19 +20,19 @@ const addresses: Record<
|
|
|
20
20
|
'1': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
|
|
21
21
|
'3': '0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8',
|
|
22
22
|
'4': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
|
|
23
|
-
'5': '
|
|
23
|
+
'5': '0xb7A1f9e633fdeaAa2ec44bE00a61a7Db9a733D70',
|
|
24
24
|
},
|
|
25
25
|
Multicall: '0xcA11bde05977b3631167028862bE2a173976CA11',
|
|
26
26
|
NameWrapper: {
|
|
27
27
|
'1': '0x0000000000000000000000000000000000000000',
|
|
28
28
|
'3': '0xF82155e2a43Be0871821E9654Fc8Ae894FB8307C',
|
|
29
29
|
'4': '0x0000000000000000000000000000000000000000',
|
|
30
|
-
'5': '
|
|
30
|
+
'5': '0xEe1F756aCde7E81B2D8cC6aB3c8A1E2cE6db0F39',
|
|
31
31
|
},
|
|
32
32
|
PublicResolver: {
|
|
33
33
|
'1': '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41',
|
|
34
34
|
'3': '0x13F0659Ee6bb7484C884FEeFb7F75C93951ef837',
|
|
35
|
-
'5': '
|
|
35
|
+
'5': '0x2800Ec5BAB9CE9226d19E0ad5BC607e3cfC4347E',
|
|
36
36
|
},
|
|
37
37
|
ENSRegistry: {
|
|
38
38
|
'1': '0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e',
|
|
@@ -43,7 +43,7 @@ const addresses: Record<
|
|
|
43
43
|
ReverseRegistrar: {
|
|
44
44
|
'1': '0x084b1c3C81545d370f3634392De611CaaBFf8148',
|
|
45
45
|
'3': '0x806246b52f8cB61655d3038c58D2f63Aa55d4edE',
|
|
46
|
-
'5': '
|
|
46
|
+
'5': '0x9a879320A9F7ad2BBb02063d67baF5551D6BD8B0',
|
|
47
47
|
},
|
|
48
48
|
UniversalResolver: {
|
|
49
49
|
'1': '0x74E20Bd2A1fE0cdbe45b9A1d89cb7e0a45b36376',
|
|
@@ -31,7 +31,6 @@ describe('commitName', () => {
|
|
|
31
31
|
expect(popTx).toBeTruthy()
|
|
32
32
|
expect(customData).toHaveProperty('secret')
|
|
33
33
|
expect(customData).toHaveProperty('commitment')
|
|
34
|
-
expect(customData).toHaveProperty('wrapperExpiry')
|
|
35
34
|
|
|
36
35
|
const tx = await provider.getSigner().sendTransaction(popTx)
|
|
37
36
|
await tx.wait()
|
|
@@ -47,11 +46,9 @@ describe('commitName', () => {
|
|
|
47
46
|
owner: accounts[1],
|
|
48
47
|
addressOrIndex: accounts[1],
|
|
49
48
|
secret,
|
|
50
|
-
wrapperExpiry: 100000,
|
|
51
49
|
})
|
|
52
50
|
await tx.wait()
|
|
53
51
|
expect(tx.customData).toBeTruthy()
|
|
54
|
-
expect(tx.customData!.wrapperExpiry).toBe(100000)
|
|
55
52
|
expect(tx.customData!.secret).toBe(secret)
|
|
56
53
|
|
|
57
54
|
const controller = await ensInstance.contracts!.getEthRegistrarController()!
|
|
@@ -22,7 +22,7 @@ export default async function (
|
|
|
22
22
|
undefined,
|
|
23
23
|
resolverAddress,
|
|
24
24
|
)
|
|
25
|
-
const { secret, commitment
|
|
25
|
+
const { secret, commitment } = makeCommitment({
|
|
26
26
|
name,
|
|
27
27
|
resolver,
|
|
28
28
|
...params,
|
|
@@ -33,7 +33,6 @@ export default async function (
|
|
|
33
33
|
customData: {
|
|
34
34
|
secret,
|
|
35
35
|
commitment,
|
|
36
|
-
wrapperExpiry,
|
|
37
36
|
},
|
|
38
37
|
}
|
|
39
38
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { BigNumber } from '@ethersproject/bignumber
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber'
|
|
2
2
|
import { keccak256 as solidityKeccak256 } from '@ethersproject/solidity'
|
|
3
3
|
import { ENSArgs } from '..'
|
|
4
|
-
import {
|
|
5
|
-
import generateFuseInput from '../utils/generateFuseInput'
|
|
4
|
+
import { CombinedFuseInput, encodeFuses } from '../utils/fuses'
|
|
6
5
|
import { namehash } from '../utils/normalise'
|
|
7
6
|
import { Expiry, makeExpiry, wrappedLabelLengthCheck } from '../utils/wrapper'
|
|
8
7
|
|
|
@@ -14,7 +13,7 @@ type BaseArgs = {
|
|
|
14
13
|
|
|
15
14
|
type NameWrapperArgs = {
|
|
16
15
|
contract: 'nameWrapper'
|
|
17
|
-
fuses?:
|
|
16
|
+
fuses?: CombinedFuseInput
|
|
18
17
|
expiry?: Expiry
|
|
19
18
|
} & BaseArgs
|
|
20
19
|
|
|
@@ -70,8 +69,8 @@ export default async function (
|
|
|
70
69
|
|
|
71
70
|
const generatedFuses =
|
|
72
71
|
'fuses' in wrapperArgs && wrapperArgs.fuses
|
|
73
|
-
?
|
|
74
|
-
:
|
|
72
|
+
? encodeFuses(wrapperArgs.fuses)
|
|
73
|
+
: 0
|
|
75
74
|
|
|
76
75
|
return nameWrapper.populateTransaction.setSubnodeRecord(
|
|
77
76
|
parentNodehash,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ENS } from '../index'
|
|
2
|
+
import setup from '../tests/setup'
|
|
3
|
+
|
|
4
|
+
let ensInstance: ENS
|
|
5
|
+
|
|
6
|
+
beforeAll(async () => {
|
|
7
|
+
;({ ensInstance } = await setup())
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
describe('getDecryptedName', () => {
|
|
11
|
+
it('should decrypt a wrapped name with on-chain data', async () => {
|
|
12
|
+
const result = await ensInstance.getDecryptedName(
|
|
13
|
+
'[9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658].wrapped-with-subnames.eth',
|
|
14
|
+
)
|
|
15
|
+
expect(result).toBeDefined()
|
|
16
|
+
expect(result).toBe('test.wrapped-with-subnames.eth')
|
|
17
|
+
})
|
|
18
|
+
it('should decrypt a name via namehash lookup', async () => {
|
|
19
|
+
const result = await ensInstance.getDecryptedName(
|
|
20
|
+
'[f81b517a242b218999ec8eec0ea6e2ddbef2a367a14e93f4a32a39e260f686ad].eth',
|
|
21
|
+
)
|
|
22
|
+
expect(result).toBeDefined()
|
|
23
|
+
expect(result).toBe('test123.eth')
|
|
24
|
+
})
|
|
25
|
+
it('should decrypt a name via labelhash lookup', async () => {
|
|
26
|
+
const result = await ensInstance.getDecryptedName(
|
|
27
|
+
'[4d2920c35d976f8478bee89292ba85074d1bbea73f1571363b41a1629e1bac68].with-unknown-subnames.eth',
|
|
28
|
+
)
|
|
29
|
+
expect(result).toBeDefined()
|
|
30
|
+
expect(result).toBe('aaa123.with-unknown-subnames.eth')
|
|
31
|
+
})
|
|
32
|
+
it('should partially decrypt a name when allowIncomplete is true', async () => {
|
|
33
|
+
const result = await ensInstance.getDecryptedName(
|
|
34
|
+
'[7bffb6e3ebf801bbc438fea5c11d957ba49978bdc8d52b71cba974139d22edea].[6c14e1739568670447af1d5af8a571008f7a582068af18bcd7ac2dbc13bb37c1].eth',
|
|
35
|
+
true,
|
|
36
|
+
)
|
|
37
|
+
expect(result).toBeDefined()
|
|
38
|
+
expect(result).toBe(
|
|
39
|
+
'[7bffb6e3ebf801bbc438fea5c11d957ba49978bdc8d52b71cba974139d22edea].with-unknown-subnames.eth',
|
|
40
|
+
)
|
|
41
|
+
})
|
|
42
|
+
it('should not partially decrypt a name when allowIncomplete is false', async () => {
|
|
43
|
+
const result = await ensInstance.getDecryptedName(
|
|
44
|
+
'[7bffb6e3ebf801bbc438fea5c11d957ba49978bdc8d52b71cba974139d22edea].[6c14e1739568670447af1d5af8a571008f7a582068af18bcd7ac2dbc13bb37c1].eth',
|
|
45
|
+
false,
|
|
46
|
+
)
|
|
47
|
+
expect(result).toBeUndefined()
|
|
48
|
+
})
|
|
49
|
+
})
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { hexStripZeros } from '@ethersproject/bytes'
|
|
2
|
+
import { ENSArgs } from '../index'
|
|
3
|
+
import { hexDecodeName } from '../utils/hexEncodedName'
|
|
4
|
+
import {
|
|
5
|
+
checkIsDecrypted,
|
|
6
|
+
decodeLabelhash,
|
|
7
|
+
getEncryptedLabelAmount,
|
|
8
|
+
isEncodedLabelhash,
|
|
9
|
+
} from '../utils/labels'
|
|
10
|
+
import { namehash } from '../utils/normalise'
|
|
11
|
+
|
|
12
|
+
const raw = async (
|
|
13
|
+
{ contracts }: ENSArgs<'contracts'>,
|
|
14
|
+
name: string,
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
+
allowIncomplete?: boolean,
|
|
17
|
+
) => {
|
|
18
|
+
const nameWrapper = await contracts?.getNameWrapper()!
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
to: nameWrapper.address,
|
|
22
|
+
data: nameWrapper.interface.encodeFunctionData('names', [namehash(name)]),
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const generateNameQuery = (labels: string[]) => {
|
|
27
|
+
let query = ''
|
|
28
|
+
|
|
29
|
+
for (let i = 0; i < labels.length; i += 1) {
|
|
30
|
+
const label = labels[i]
|
|
31
|
+
if (isEncodedLabelhash(label)) {
|
|
32
|
+
query += `
|
|
33
|
+
label${i}: domains(where: { labelhash: "${decodeLabelhash(
|
|
34
|
+
label,
|
|
35
|
+
).toLowerCase()}", labelName_not: null }) {
|
|
36
|
+
labelName
|
|
37
|
+
}
|
|
38
|
+
`
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return query
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const decode = async (
|
|
46
|
+
{ contracts, gqlInstance }: ENSArgs<'contracts' | 'gqlInstance'>,
|
|
47
|
+
data: string,
|
|
48
|
+
name: string,
|
|
49
|
+
allowIncomplete: boolean = false,
|
|
50
|
+
) => {
|
|
51
|
+
if (data !== null) {
|
|
52
|
+
const nameWrapper = await contracts?.getNameWrapper()!
|
|
53
|
+
try {
|
|
54
|
+
const result = nameWrapper.interface.decodeFunctionResult('names', data)
|
|
55
|
+
if (hexStripZeros(result['0']) !== '0x') {
|
|
56
|
+
const decoded = hexDecodeName(result['0'])
|
|
57
|
+
if (decoded && decoded !== '.') return decoded
|
|
58
|
+
}
|
|
59
|
+
} catch (e: any) {
|
|
60
|
+
console.error('Error decoding name: ', e)
|
|
61
|
+
return
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (checkIsDecrypted(name)) return name
|
|
66
|
+
// if the name isn't wrapped, try to fetch the name from an existing Domain entity
|
|
67
|
+
// also try to fetch the label names from any Domain entities that have a corresponding labelhash
|
|
68
|
+
const labels = name.split('.')
|
|
69
|
+
const decryptedNameQuery = gqlInstance.gql`
|
|
70
|
+
query decodedName($id: String!) {
|
|
71
|
+
namehashLookup: domains(where: { id: $id }) {
|
|
72
|
+
name
|
|
73
|
+
}
|
|
74
|
+
${generateNameQuery(labels)}
|
|
75
|
+
}
|
|
76
|
+
`
|
|
77
|
+
|
|
78
|
+
const decryptedNameResult = await gqlInstance.client.request(
|
|
79
|
+
decryptedNameQuery,
|
|
80
|
+
{
|
|
81
|
+
id: namehash(name),
|
|
82
|
+
},
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
if (!decryptedNameResult) return
|
|
86
|
+
|
|
87
|
+
const namehashLookupResult = decryptedNameResult?.namehashLookup[0]?.name
|
|
88
|
+
let bestResult: string | undefined = namehashLookupResult
|
|
89
|
+
if (namehashLookupResult && checkIsDecrypted(namehashLookupResult)) {
|
|
90
|
+
return namehashLookupResult
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const { namehashLookup: _, ...labelNames } = decryptedNameResult
|
|
94
|
+
if (Object.keys(labelNames).length !== 0) {
|
|
95
|
+
for (const [key, value] of Object.entries<[{ labelName?: string }]>(
|
|
96
|
+
labelNames,
|
|
97
|
+
)) {
|
|
98
|
+
if (value.length && value[0].labelName) {
|
|
99
|
+
labels[parseInt(key.replace('label', ''))] = value[0].labelName
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const labelLookupResult = labels.join('.')
|
|
103
|
+
if (
|
|
104
|
+
!namehashLookupResult ||
|
|
105
|
+
getEncryptedLabelAmount(namehashLookupResult) >
|
|
106
|
+
getEncryptedLabelAmount(labelLookupResult)
|
|
107
|
+
)
|
|
108
|
+
bestResult = labelLookupResult
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!bestResult || (!allowIncomplete && !checkIsDecrypted(bestResult))) return
|
|
112
|
+
|
|
113
|
+
return bestResult
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export default {
|
|
117
|
+
raw,
|
|
118
|
+
decode,
|
|
119
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BigNumber } from '@ethersproject/bignumber
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber'
|
|
2
2
|
import { keccak256 as solidityKeccak256 } from '@ethersproject/solidity'
|
|
3
3
|
import { ENSArgs } from '..'
|
|
4
4
|
import { namehash } from '../utils/normalise'
|